Innehållsförteckning:
- Steg 1: Material
- Steg 2: Installera Linaro i Dragonboard 410c
- Steg 3: Steg 2: Installera bibliotek och ladda ner källkoden från GitHub
- Steg 4: Konfigurera AWS IoT Core, DynamoDB
- Steg 5: Konfigurera Twilio och Dweet API: er
- Steg 6: Utmaningar
- Steg 7: Resultat och framtida arbete
- Steg 8: Referenser
Video: Cambus - System för datainsamling på stadsbuss: 8 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Bland de problem och svårigheter som är kända inom kollektivtrafiken saknar befolkningen information i realtid och med minst självförtroende. Överbeläggningen av kollektivtrafikbussar driver bort användare, som föredrar att använda sina egna fordon, trots att de fortfarande är i trafik i timmar. Om information i realtid, till exempel antalet bussar, är lättillgänglig för en användare kan han välja om han ska vänta på nästa buss eller att ta sig runt med buss eller använda ett eget fordon. Valmöjligheten gör kollektivtrafiken till ett mer attraktivt alternativ för användaren.
Att räkna eller uppskatta människor inomhus kan göras på många sätt, bland vilka de vanligaste är:
- Termiska bilder;
- Datorsyn;
- Ansiktsräknare;
Bland de många svårigheterna att uppskatta personer i en miljö som använder datorsyn är de viktigaste:
- Tillslutningar av människor;
- Inverterande belysning;
- Statisk ocklusion, det vill säga människor bakom objekt;
- Kameravinkel till miljö;
En utmaning för detta projekt är att känna till kamerans rätta vinkel som bäst hjälper till att subtrahera bildens bakgrund, liksom den variabla ljusstyrkan under dagen inne i bussen.
Förslagets huvudsyfte är att skapa en robust och konfigurerbar modell för att uppskatta överbeläggning och göra resultaten tillgängliga för befolkningen via smartphones.
Steg 1: Material
Materialet som behövs för projektet är följande:
1 x Dragon Board 410c;
1 x USB -kamera;
1 x Smartphone Android;
Steg 2: Installera Linaro i Dragonboard 410c
Följ instruktionerna på länken nedan för att installera Linaro 17.09 på DragonBoard 410c. Vi rekommenderar att du installerar Linaro 17.09 för kärnstöd för GPS.
www.96boards.org/documentation/consumer/dr…
Steg 3: Steg 2: Installera bibliotek och ladda ner källkoden från GitHub
Cambus har en modulär arkitektur och koddesign. Det är möjligt att koda din egen maskininlärningsalgoritm, byta till annan molntjänst och skapa egna användarprogram.
För att köra cambus -projektet måste du först ladda ner källkoden från github (https://github.com/bmonteiro00/cambus). Installera python (Cambus var läge att köra på version 2.7 och> 3.x) och följande bibliotek med 'pip' (sudo apt-get install python-pip). Det kommer att behövas för att installera ett gäng bibliotek i Linaro -systemet (Det rekommenderas också att skapa ett virtuellt miljö - pip install virtualenv - för att isolera Cambus -systemet från SO). Installera följande bibliotek:
- pip installera paho-mqtt
- pip installera numpy
- pip installera opencv-python
- pip installera opencv-contrib-python
- pip installera twilio
- pip installera matplotlib
Huvudprogrammet var indelat i klasser:
- CamBus - huvudklassen;
- Sensor - en klass för att erhålla data som GPS -position, temperatur, Co2.
- Motklass med bildbehandlingsalgoritm.
Se till att alla bibliotek har installerats och kör python CamBus_v1.py.
Steg 4: Konfigurera AWS IoT Core, DynamoDB
Vi använde AWS IoT -kärnan som en MQTT -mäklare med TLS och X509 och NoSQL och DynamoDB för att logga data. Du måste skapa ett konto på https://aws.amazon.com/free.). Därefter måste du följa stegen nedan för att skapa en sak och integrera med Dynamo:
docs.aws.amazon.com/iot/latest/developergu…
Steg 5: Konfigurera Twilio och Dweet API: er
Twilio SMS -tjänsten inrättades också. Se webbadressen nedan för instruktioner för att slutföra detta steg:
www.twilio.com/docs/iam/api/account
Integrationen mellan Android -appen och systemet gjordes via REST med hjälp av Dweet -plattformen. Ingen registrering krävs.
dweet.io/
Steg 6: Utmaningar
Under vår utveckling mötte vi många utmaningar, från OpenCV -tekniker till AWS -plattform. Vi bestämde oss för att koda med Python för att spara tid på att utvecklas i C/C ++. Under vår utveckling endast de grundläggande Opencv -metoderna som:
• cv2. GaussianBlur (..)
• cv2.tröskel (..)
• cv2.morphologyEx (..)
• cv2.contourArea (..)
• cv2.findContours (..)
Dessa grundläggande metoder var inte tillräckligt för att uppnå en bra kvalitet för att upptäcka människor. Scenarier med skakig video ML (Machine Learning) användes. Så vi bestämde oss för att använda OpenCV -maskininlärningsbiblioteket och vi fick ett annat problem för att hitta en bra datainmatning för ML -algoritmen var ett problem som vi tillbringade många dagar. Vi har använt OpenCV SVM -algoritm men inte fungerat. Vi använde OpenCV Naive Bayses och den här fungerade OK. Vi har försökt använda Tensorflow och CNN neurala nätverk, men vi fick det inte att hända för tillfället. CNN använder mycket processorkraft, något som vi inte hade. Att använda OpenCV ML och grunderna i OpenCV -metoder hjälpte oss att nå en bra upptäcktshastighet. Ändå måste vi för varje typ av vídeo anpassa parametrarna för OpenCV för att nå en bra upptäcktsfrekvens och undvika falska positiva effekter. I mitten av dessa två månader utvecklade vi vår första idé att göra ett centrum för datainsamling inte endast antalet passagerare och GPS -plats. Vi bestämde oss för att inte samla in data med andra sensorer som temperatur och så vidare. Vi skapade en.ini -fil för att parametrisera applikationen och göra den konfigurerbar. På filen Cambus.ini kan du konfigurera programmet på många sätt.
Steg 7: Resultat och framtida arbete
Som du kan se i videon fungerar räknaren exakt. De blå linjerna markerar ingångsgränsen och den röda linjen utgångsgränsen. I det här fallet användes en video för att simulera eftersom vi inte kunde distribuera den till en buss.
Tänk på att vissa förändringar måste göras i ditt tillstånd om videostorlek, kameravinkel, ljusstyrka etc. Varje typ av video måste vara dess egna parametrar anpassning såsom opencv -kärnans sugningsbakgrund och så vidare.
Ändra även variabler på cambus.ini, vilket indikerar MQTT -mäklare och så vidare.
Vi överväger i framtida implementeringar att lägga till sensorer, till exempel temperatur, luftfuktighet och CO2 i systemet. Tanken är att få data runt städerna som gör dem tillgängliga för samhället.
Följande räknar vi upp nästa steg som du kan för att förbättra projektet:
- Skriv om koden med C/C ++;
- Förbättra ML -algoritmen;
- Omfaktor pythonkod;
- Utplacering i en buss;
Vi vill tacka Embarcados och Qualcomm för allt stöd som ges.
Samarbetspartners:
Bruno Monteiro - [email protected]
Kleber Drobowok - [email protected]
Vinicius de Oliveira - [email protected]
Steg 8: Referenser
[1]
[2]
[3]
[4]
[5]
Rekommenderad:
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
EKG -logger - en bärbar hjärtmonitor för långsiktig datainsamling och analys: 3 steg
EKG Logger - en bärbar hjärtmonitor för långsiktig datainsamling och analys: Första utgåvan: oktober 2017 Senaste version: 1.6.0Status: Stabil Svårighet: Hög Förutsättning: Arduino, Programmering, Hårdvarubyggnad Unikt arkiv: SF (se länkar nedan) Support: Endast forum, ingen PMECG Logger är en bärbar hjärtmonitor för långa
Datainsamling och datavisualiseringssystem för en MotoStudent elektrisk racercykel: 23 steg
Datainsamling och datavisualiseringssystem för en MotoStudent elektrisk racercykel: Ett datainsamlingssystem är en samling hårdvara och programvara som samarbetar för att samla in data från externa sensorer, lagra och bearbeta den efteråt så att den kan visualiseras grafiskt och analyseras, låta ingenjörerna göra
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?