Cuprins:

Cambus - Sistem de colectare a datelor pe autobuzul urban: 8 pași
Cambus - Sistem de colectare a datelor pe autobuzul urban: 8 pași

Video: Cambus - Sistem de colectare a datelor pe autobuzul urban: 8 pași

Video: Cambus - Sistem de colectare a datelor pe autobuzul urban: 8 pași
Video: DOCUMENTAR RECORDER. 30 de ani de democrație 2024, Noiembrie
Anonim
Cambus - Sistem de colectare a datelor pe autobuzul urban
Cambus - Sistem de colectare a datelor pe autobuzul urban

Printre problemele și dificultățile cunoscute în transportul public, populația nu are informații în timp real și cu cea mai mică asertivitate. Supraaglomerarea autobuzelor de transport public îi alungă pe utilizatori, care preferă să-și folosească propriile vehicule, chiar dacă sunt încă în trafic ore în șir. Dacă informațiile în timp real, cum ar fi numărul de autobuze, sunt ușor accesibile unui utilizator, acesta poate alege dacă să aștepte următorul autobuz sau să se deplaseze cu autobuzul sau să folosească un vehicul propriu. Puterea de alegere face ca transportul public să fie o opțiune mai atractivă pentru utilizator.

Numărarea sau estimarea persoanelor în interior se poate face în mai multe moduri, printre care cei mai frecvent angajați sunt:

  • Imagini termice;
  • Viziune computerizată;
  • Contor de față;

Printre diferitele dificultăți de a estima oamenii într-un mediu care utilizează viziunea pe computer, principalele sunt:

  • Ocluziile oamenilor;
  • Iluminare inversă;
  • Ocluzia statică, adică oamenii din spatele obiectelor;
  • Unghiul camerei cu mediul;

O provocare pentru acest proiect este de a cunoaște unghiul corect al camerei care va ajuta cel mai bine la scăderea fundalului imaginii, precum și luminozitatea variabilă în timpul zilei în interiorul autobuzului.

Obiectivul principal al propunerii este de a crea un model robust și configurabil pentru a estima supraaglomerarea și a pune la dispoziția populației rezultatele prin intermediul smartphone-urilor.

Pasul 1: Materiale

Materialul necesar proiectului este următorul:

1 x Dragon Board 410c;

1 x cameră USB;

1 x smartphone Android;

Pasul 2: Instalați Linaro în Dragonboard 410c

Instalați Linaro în Dragonboard 410c
Instalați Linaro în Dragonboard 410c
Instalați Linaro în Dragonboard 410c
Instalați Linaro în Dragonboard 410c

Urmând instrucțiunile de pe linkul de mai jos pentru a instala Linaro 17.09 pe DragonBoard 410c. Vă recomandăm să instalați Linaro 17.09 pentru suportul kernel pentru GPS.

www.96boards.org/documentation/consumer/dr…

Pasul 3: Pasul 2: Instalați bibliotecile și descărcați codul sursă din GitHub

Pasul 2: Instalați biblioteci și descărcați codul sursă de pe GitHub
Pasul 2: Instalați biblioteci și descărcați codul sursă de pe GitHub

Cambus are o arhitectură modulară și design de cod. Este posibil să vă codificați propriul algoritm de învățare automată, să treceți la alt serviciu cloud și să creați propriile aplicații de utilizator.

Pentru a rula proiectul cambus, mai întâi trebuie să descărcați codul sursă de pe github (https://github.com/bmonteiro00/cambus). Instalați python (Cambus era modul să ruleze pe versiunea 2.7 și> 3.x) și următoarele biblioteci folosind „pip” (sudo apt-get install python-pip). Va fi necesar să instalați o grămadă de biblioteci în sistemul Linaro (De asemenea, se recomandă crearea unui mediu virtual - pip install virtualenv - pentru a izola sistemul Cambus de SO). Vă rugăm să instalați următoarele biblioteci:

  • pip instala paho-mqtt
  • pip instalează numpy
  • pip instalează opencv-python
  • pip instalează opencv-contrib-python
  • pip instalează twilio
  • pip instalează matplotlib

Programul principal a fost împărțit în clase:

  • CamBus - clasa principală;
  • Senzor - o clasă pentru a obține date precum poziția GPS, temperatura, Co2.
  • Contor - clasă cu algoritm de procesare a imaginilor.

Asigurați-vă că toate bibliotecile au fost instalate și executați python CamBus_v1.py.

Pasul 4: Configurarea AWS IoT Core, DynamoDB

Configurarea AWS IoT Core, DynamoDB
Configurarea AWS IoT Core, DynamoDB
Configurarea AWS IoT Core, DynamoDB
Configurarea AWS IoT Core, DynamoDB
Configurarea AWS IoT Core, DynamoDB
Configurarea AWS IoT Core, DynamoDB

Am folosit nucleul AWS IoT ca broker MQTT cu TLS și X509 și NoSQL și DynamoDB pentru a înregistra date. Va trebui să creați un cont la https://aws.amazon.com/free.). Apoi, veți urma pașii de mai jos pentru a crea un lucru și a vă integra cu Dynamo:

docs.aws.amazon.com/iot/latest/developergu…

Pasul 5: Configurați API-urile Twilio și Dweet

Configurați API-urile Twilio și Dweet
Configurați API-urile Twilio și Dweet
Configurați API-urile Twilio și Dweet
Configurați API-urile Twilio și Dweet

De asemenea, a fost înființat serviciul Twilio SMS. Consultați adresa URL de mai jos pentru instrucțiuni pentru a finaliza acest pas:

www.twilio.com/docs/iam/api/account

Integrarea dintre aplicația Android și sistem a fost făcută prin intermediul REST, a folosit platforma Dweet. Nu este necesară înscrierea.

dweet.io/

Pasul 6: Provocări

În timpul dezvoltării noastre, ne-am confruntat cu multe provocări, începând de la tehnicile OpenCV până la platforma AWS. Am decis să codificăm cu Python pentru a economisi timp dezvoltând în C / C ++. În timpul dezvoltării noastre, numai metodele de bază Opencv, cum ar fi:

• cv2. GaussianBlur (..)

• cv2.threshold (..)

• cv2.morphologyEx (..)

• cv2.contourArea (..)

• cv2.findContours (..)

Aceste metode de bază nu au fost suficiente pentru a atinge o calitate bună în detectarea oamenilor. S-au folosit scenarii cu ML video instabil (Machine Learning). Deci, am decis să folosim biblioteca OpenCV de învățare automată și am primit o altă problemă deoarece găsirea unei date de intrare bune pentru algoritmul ML a fost o problemă pe care am petrecut-o multe zile. Am folosit algoritmul OpenCV SVM, dar nu am funcționat. Am folosit OpenCV Naive Bayses și acesta a funcționat OK. Am încercat să folosim rețelele neuronale Tensorflow și CNN, totuși nu am reușit să se întâmple pentru moment. CNN folosește multă putere de procesare, ceva ce nu aveam. Folosirea OpenCV ML și metodele de bază OpenCV ne-au ajutat să atingem o rată bună de detectare a oamenilor. Cu toate acestea, pentru fiecare tip de video trebuie să adaptăm parametrii OpenCV pentru a atinge o rată bună de detectare a persoanelor și pentru a evita falsurile pozitive. La mijlocul acestor două luni am dezvoltat prima noastră idee de a face un centru de colectare a datelor, nu numai numărul de pasageri și locația GPS. Am decis să nu colectăm date folosind alți senzori precum temperatura și așa mai departe. Am creat un fișier.ini pentru a parametrica aplicația și a o face configurabilă. Pe fișierul Cambus.ini puteți configura aplicația în mai multe moduri.

Pasul 7: Rezultate și lucrări viitoare

După cum puteți vedea în videoclip, contorul funcționează cu precizie. Liniile albastre marchează limita de intrare și linia roșie limita de ieșire. În acest caz, un videoclip a fost folosit pentru a simula, deoarece nu am putut să-l implementăm pe un autobuz.

Rețineți că trebuie făcute unele modificări ale stării dvs. în ceea ce privește dimensiunea videoclipului, unghiul camerei, luminozitatea etc. Fiecare tip de videoclip trebuie să fie adaptarea parametrilor proprii, cum ar fi fundalul de aspirare a nucleului opencv și așa mai departe.

Vă rugăm, de asemenea, să modificați variabilele la cambus.ini, indicând brokerul MQTT și așa mai departe.

Avem în vedere implementările viitoare să adăugăm senzori, de exemplu, temperatura, umiditatea și CO2 în sistem. Ideea este de a obține date în jurul orașelor, punându-le la dispoziția comunității.

În continuare enumerăm următorii pași pe care îi puteți face pentru a îmbunătăți proiectul:

  • Re-scrieți codul folosind C / C ++;
  • Îmbunătățiți algoritmul ML;
  • Re-factorizați codul python;
  • Implementarea într-un autobuz;

Dorim să mulțumim Embarcados și Qualcomm pentru tot sprijinul acordat.

Colaboratori:

Bruno Monteiro - [email protected]

Kleber Drobowok - [email protected]

Vinicius de Oliveira - [email protected]

Pasul 8: Referințe

[1]

[2]

[3]

[4]

[5]

Recomandat: