Sommario:
- Passaggio 1: materiali
- Passaggio 2: installa Linaro in Dragonboard 410c
- Passaggio 3: Passaggio 2: installa le librerie e scarica il codice sorgente da GitHub
- Passaggio 4: configurazione di AWS IoT Core, DynamoDB
- Passaggio 5: configurazione delle API Twilio e Dweet
- Passaggio 6: sfide
- Passaggio 7: risultati e lavoro futuro
- Passaggio 8: riferimenti
Video: Cambus - Sistema di Raccolta Dati su Autobus Urbano: 8 Passi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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
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
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
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
È 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:
Crea bellissimi grafici dai dati di Arduino in tempo reale (e salva i dati in Excel): 3 passaggi
Crea bellissimi grafici dai dati di Arduino in tempo reale (e salva i dati in Excel): a tutti noi piace giocare con la nostra funzione P…lotter nell'IDE di Arduino. Tuttavia, sebbene possa essere utile per le applicazioni di base, i dati vengono cancellati man mano che più si aggiungono punti e non è particolarmente gradevole alla vista. Il plotter Arduino IDE non
Antenna radioamatoriale sul tetto urbano: 8 passaggi (con immagini)
Antenna radioamatoriale sul tetto urbano: di recente ho installato un'antenna radioamatoriale sul tetto, in modo da poter ottenere un segnale migliore all'interno del mio appartamento, che non si trova su un piano alto. Come ultra principiante senza molti investimenti nell'hobby, era perfettamente accettabile dover salire sul tetto per
EAL - Raccolta dati GPS Industry 4.0 su auto Rc: 4 passaggi
EAL - Raccolta dati GPS Industry 4.0 su auto RC: in questo Instructable parleremo di come impostare un modulo GPS su un'auto RC e pubblicare i dati raccolti su una pagina Web per un facile monitoraggio. In precedenza abbiamo creato un'istruzione su come abbiamo realizzato la nostra auto RC, che può essere trovata qui. Questo sta usando th
Visualizzazione di temperatura e umidità e raccolta dati con Arduino ed elaborazione: 13 passaggi (con immagini)
Visualizzazione di temperatura e umidità e raccolta dati con Arduino ed elaborazione: Introduzione: questo è un progetto che utilizza una scheda Arduino, un sensore (DHT11), un computer Windows e un programma di elaborazione (scaricabile gratuitamente) per visualizzare i dati di temperatura e umidità in formato digitale e grafico a barre, visualizzare l'ora e la data ed eseguire un conteggio del tempo
Centro di raccolta dati sensore abilitato per IoT con ESP8266 e PubNub: 9 passaggi (con immagini)
Centro di raccolta dati del sensore abilitato per IoT con ESP8266 e PubNub: la maggior parte dei tutorial su ESP8266 è a livello di principiante (lampeggio remoto di un led) o troppo complessa per qualcuno che sta cercando qualcosa da migliorare e aggiornare sulle sue abilità di lampeggiamento del led. istruibile mira a colmare questa lacuna per creare