Sommario:

Cambus - Sistema di Raccolta Dati su Autobus Urbano: 8 Passi
Cambus - Sistema di Raccolta Dati su Autobus Urbano: 8 Passi

Video: Cambus - Sistema di Raccolta Dati su Autobus Urbano: 8 Passi

Video: Cambus - Sistema di Raccolta Dati su Autobus Urbano: 8 Passi
Video: Agricoltura 4.0: uso proficuo dei dati CANBUS e ISOBUS 2024, Dicembre
Anonim
Cambus - Sistema di Raccolta Dati su Autobus Urbano
Cambus - Sistema di Raccolta Dati su Autobus Urbano

Tra i problemi e le difficoltà conosciute nel trasporto pubblico, la popolazione manca di informazioni in tempo reale e con la minima assertività. Il sovraffollamento degli autobus del trasporto pubblico allontana gli utenti, che preferiscono utilizzare i propri mezzi, anche se sono ancora nel traffico per ore. Se le informazioni in tempo reale, come il numero di autobus, sono facilmente disponibili per un utente, può scegliere se attendere il prossimo autobus o spostarsi in autobus o utilizzare un proprio veicolo. Il potere di scelta rende il trasporto pubblico un'opzione più attraente per l'utente.

Il conteggio o la stima delle persone in ambienti chiusi può essere eseguito in molti modi, tra i quali i più comunemente utilizzati sono:

  • Immagini termiche;
  • Visione computerizzata;
  • Contatore facciale;

Tra le diverse difficoltà di stimare le persone in un ambiente utilizzando la computer vision, le principali sono:

  • Occlusioni di persone;
  • Illuminazione invertente;
  • Occlusione statica, cioè persone dietro oggetti;
  • Angolo della telecamera rispetto all'ambiente;

Una sfida per questo progetto è conoscere l'angolo corretto della telecamera che aiuterà al meglio nella sottrazione dello sfondo dell'immagine, così come la luminosità variabile durante il giorno all'interno dell'autobus.

L'obiettivo principale della proposta è creare un modello robusto e configurabile per stimare il sovraffollamento e rendere disponibili i risultati alla popolazione tramite smartphone.

Passaggio 1: materiali

Il materiale necessario per il progetto è il seguente:

1 x Dragon Board 410c;

1 x fotocamera USB;

1 x Smartphone Android;

Passaggio 2: installa Linaro in Dragonboard 410c

Installa Linaro in Dragonboard 410c
Installa Linaro in Dragonboard 410c
Installa Linaro in Dragonboard 410c
Installa Linaro in Dragonboard 410c

Seguendo le istruzioni al link sottostante per installare Linaro 17.09 sulla DragonBoard 410c. Si consiglia di installare Linaro 17.09 per il supporto del kernel per il GPS.

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

Passaggio 3: Passaggio 2: installa le librerie e scarica il codice sorgente da GitHub

Passaggio 2: installa le librerie e scarica il codice sorgente da GitHub
Passaggio 2: installa le librerie e scarica il codice sorgente da GitHub

Cambus ha un'architettura modulare e un design del codice. È possibile codificare il proprio algoritmo di apprendimento automatico, passare ad altri servizi cloud e creare le proprie applicazioni utente.

Per eseguire il progetto cambus, devi prima scaricare il codice sorgente da github (https://github.com/bmonteiro00/cambus). Installa python (Cambus era in modalità da eseguire su versione 2.7 e > 3.x) e le seguenti librerie usando 'pip' (sudo apt-get install python-pip). Sarà necessario installare un gruppo di librerie nel sistema Linaro (inoltre, si consiglia di creare un ambiente virtuale - pip install virtualenv - per isolare il sistema Cambus dal SO). Per favore, installa le seguenti librerie:

  • pip install paho-mqtt
  • pip install numpy
  • pip install opencv-python
  • pip install opencv-contrib-python
  • pip install twilio
  • pip install matplotlib

Il programma principale era suddiviso in classi:

  • CamBus: la classe principale;
  • Sensore - una classe per ottenere dati come posizione GPS, temperatura, Co2.
  • Counter - classe con algoritmo di elaborazione delle immagini.

Assicurati che tutte le librerie siano state installate ed esegui python CamBus_v1.py.

Passaggio 4: configurazione di AWS IoT Core, DynamoDB

Configurazione di AWS IoT Core, DynamoDB
Configurazione di AWS IoT Core, DynamoDB
Configurazione di AWS IoT Core, DynamoDB
Configurazione di AWS IoT Core, DynamoDB
Configurazione di AWS IoT Core, DynamoDB
Configurazione di AWS IoT Core, DynamoDB

Abbiamo utilizzato il core AWS IoT come broker MQTT con TLS e X509 e NoSQL e DynamoDB per registrare i dati. Dovrai creare un account su https://aws.amazon.com/free.). Successivamente, dovrai seguire i passaggi seguenti per creare una cosa e integrarti con Dynamo:

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

Passaggio 5: configurazione delle API Twilio e Dweet

Configura le API Twilio e Dweet
Configura le API Twilio e Dweet
Configura le API Twilio e Dweet
Configura le API Twilio e Dweet

È stato inoltre attivato il servizio SMS Twilio. Vedere l'URL di seguito per le istruzioni per completare questo passaggio:

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

L'integrazione tra l'app Android e il sistema è stata effettuata tramite REST utilizzando la piattaforma Dweet. Nessuna registrazione richiesta.

dweet.io/

Passaggio 6: sfide

Durante il nostro sviluppo abbiamo affrontato molte sfide, a partire dalle tecniche OpenCV alla piattaforma AWS. Abbiamo deciso di programmare con Python per risparmiare tempo sviluppando in C/C++. Durante il nostro sviluppo solo i metodi Opencv di base come:

• cv2. Sfocatura gaussiana(..)

• cv2.soglia(..)

• cv2.morfologiaEx(..)

• cv2.contourArea(..)

• cv2.findContours(..)

Questi metodi di base non erano sufficienti per raggiungere una buona qualità nel rilevamento delle persone. Sono stati utilizzati scenari con video traballante ML (Machine Learning). Quindi, abbiamo deciso di utilizzare la libreria di apprendimento automatico OpenCV e abbiamo riscontrato un altro problema perché trovare un buon input di dati per l'algoritmo ML era un problema che abbiamo impiegato molti giorni. Abbiamo usato l'algoritmo OpenCV SVM ma non ha funzionato. Abbiamo usato OpenCV Naive Bays e questo ha funzionato bene. Abbiamo provato a utilizzare le reti neurali Tensorflow e CNN, ma per ora non l'abbiamo realizzato. La CNN utilizza molta potenza di elaborazione, qualcosa che non avevamo. L'utilizzo di OpenCV ML e i metodi di base di OpenCV ci hanno aiutato a raggiungere un buon tasso di rilevamento delle persone. Tuttavia, per ogni tipo di video dobbiamo adattare i parametri di OpenCV per raggiungere un buon tasso di rilevamento delle persone ed evitare falsi positivi. Nel mezzo di questi due mesi abbiamo sviluppato la nostra prima idea di fare un centro di raccolta dati non solo il numero di passeggeri e la posizione GPS. Abbiamo deciso di non raccogliere dati utilizzando altri sensori come la temperatura e così via. Abbiamo creato un file.ini per parametrizzare l'applicazione e renderla configurabile. Sul file Cambus.ini puoi configurare l'applicazione in molti modi.

Passaggio 7: risultati e lavoro futuro

Come puoi vedere nel video, il contatore funziona correttamente. Le linee blu indicano il limite di input e la linea rossa il limite di output. In questo caso, è stato utilizzato un video per simulare perché non potevamo distribuirlo su un bus.

Tieni presente che è necessario apportare alcune modifiche alle tue condizioni riguardo alle dimensioni del video, all'angolo della telecamera, alla luminosità, ecc. Ogni tipo di video deve essere adattato ai propri parametri come lo sfondo di aspirazione del kernel opencv e così via.

Si prega di modificare anche le variabili su cambus.ini, indicando il broker MQTT e così via.

Consideriamo in future implementazioni di aggiungere sensori, ad esempio, temperatura, umidità e CO2 nel sistema. L'idea è quella di ottenere dati in giro per le città rendendoli disponibili alla comunità.

Di seguito elenchiamo i passaggi successivi che puoi migliorare il progetto:

  • Riscrivi il codice usando C/C++;
  • Migliora l'algoritmo ML;
  • Rifattorizzare il codice Python;
  • Distribuzione in un autobus;

Vorremmo ringraziare Embarcados e Qualcomm per tutto il supporto dato.

Collaboratori:

Bruno Monteiro - [email protected]

Kleber Drobowok - [email protected]

Vinicius de Oliveira - [email protected]

Passaggio 8: riferimenti

[1]

[2]

[3]

[4]

[5]

Consigliato: