Inhaltsverzeichnis:
- Schritt 1: Materialien
- Schritt 2: Installieren Sie Linaro in Dragonboard 410c
- Schritt 3: Schritt 2: Bibliotheken installieren und Quellcode von GitHub herunterladen
- Schritt 4: Einrichten von AWS IoT Core, DynamoDB
- Schritt 5: Twilio- und Dweet-APIs einrichten
- Schritt 6: Herausforderungen
- Schritt 7: Ergebnisse und zukünftige Arbeit
- Schritt 8: Referenzen
Video: Cambus - System zur Datenerfassung im Stadtbus - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Unter den Problemen und Schwierigkeiten, die im öffentlichen Verkehr bekannt sind, fehlt es der Bevölkerung an Echtzeitinformationen und das am wenigsten Durchsetzungsvermögen. Die Überfüllung der ÖPNV-Busse vertreibt Nutzer, die lieber mit dem eigenen Fahrzeug unterwegs sind, obwohl sie noch stundenlang im Verkehr sind. Stehen einem Nutzer Echtzeitinformationen, wie die Anzahl der Busse, leicht zur Verfügung, kann er wählen, ob er auf den nächsten Bus wartet, sich mit dem Bus fortbewegt oder ein eigenes Fahrzeug nutzt. Die Wahlfreiheit macht öffentliche Verkehrsmittel für den Nutzer attraktiver.
Das Zählen oder Schätzen von Personen in Innenräumen kann auf viele Arten erfolgen, von denen die am häufigsten verwendeten sind:
- Wärmebilder;
- Computer Vision;
- Gesichtszähler;
Unter den verschiedenen Schwierigkeiten, Menschen in einer Umgebung mithilfe von Computer Vision einzuschätzen, sind die wichtigsten:
- Einschlüsse von Menschen;
- Invertierende Beleuchtung;
- Statische Okklusion, dh Personen hinter Objekten;
- Kamerawinkel zur Umgebung;
Eine Herausforderung für dieses Projekt besteht darin, den richtigen Kamerawinkel zu kennen, der am besten bei der Subtraktion des Hintergrunds des Bildes sowie der variablen Helligkeit während des Tages im Bus hilft.
Das Hauptziel des Vorschlags besteht darin, ein robustes und konfigurierbares Modell zu erstellen, um die Überbelegung abzuschätzen und die Ergebnisse der Bevölkerung über Smartphones zur Verfügung zu stellen.
Schritt 1: Materialien
Das für das Projekt benötigte Material ist das nächste:
1 x Drachenbrett 410c;
1 x USB-Kamera;
1 x Android-Smartphone;
Schritt 2: Installieren Sie Linaro in Dragonboard 410c
Befolgen Sie die Anweisungen unter dem folgenden Link, um Linaro 17.09 auf dem DragonBoard 410c zu installieren. Wir empfehlen die Installation von Linaro 17.09 für die Kernel-Unterstützung für GPS.
www.96boards.org/documentation/consumer/dr…
Schritt 3: Schritt 2: Bibliotheken installieren und Quellcode von GitHub herunterladen
Cambus verfügt über eine modulare Architektur und ein modulares Code-Design. Es ist möglich, Ihren eigenen Algorithmus für maschinelles Lernen zu programmieren, zu einem anderen Cloud-Dienst zu wechseln und Ihre eigenen Benutzeranwendungen zu erstellen.
Um das cambus-Projekt auszuführen, müssen Sie zuerst den Quellcode von github herunterladen (https://github.com/bmonteiro00/cambus). Installieren Sie Python (Cambus war der Modus, um auf Version 2.7 und > 3.x zu laufen) und die folgenden Bibliotheken mit 'pip' (sudo apt-get install python-pip). Es wird benötigt, um eine Reihe von Bibliotheken im Linaro-System zu installieren (Außerdem wird empfohlen, eine virtuelle Umgebung zu erstellen - pip install virtualenv - um das Cambus-System vom SO zu isolieren). Bitte installieren Sie die folgenden Bibliotheken:
- pip install paho-mqtt
- pip install numpy
- pip install opencv-python
- pip install opencv-contrib-python
- pip installieren twilio
- pip install matplotlib
Das Hauptprogramm war in Klassen unterteilt:
- CamBus - die Hauptklasse;
- Sensor - eine Klasse, um Daten wie GPS-Position, Temperatur, Co2 zu erhalten.
- Counter - Klasse mit Bildverarbeitungsalgorithmus.
Stellen Sie sicher, dass alle Bibliotheken installiert wurden und führen Sie python CamBus_v1.py aus.
Schritt 4: Einrichten von AWS IoT Core, DynamoDB
Wir haben den AWS IoT-Core als MQTT-Broker mit TLS und X509 sowie NoSQL und DynamoDB zum Protokollieren von Daten verwendet. Sie müssen ein Konto unter https://aws.amazon.com/free erstellen.). Als Nächstes müssen Sie die folgenden Schritte ausführen, um ein Ding zu erstellen und in Dynamo zu integrieren:
docs.aws.amazon.com/iot/latest/developergu…
Schritt 5: Twilio- und Dweet-APIs einrichten
Auch der SMS-Dienst Twilio wurde eingerichtet. Anweisungen zum Ausführen dieses Schritts finden Sie unter der folgenden URL:
www.twilio.com/docs/iam/api/account
Die Integration zwischen der Android-App und dem System erfolgte über REST unter Verwendung der Dweet-Plattform. Keine Anmeldung erforderlich.
dweet.io/
Schritt 6: Herausforderungen
Während unserer Entwicklung standen wir vielen Herausforderungen gegenüber, angefangen von OpenCV-Techniken bis hin zur AWS-Plattform. Wir haben uns entschieden, mit Python zu programmieren, um Zeit bei der Entwicklung in C/C++ zu sparen. Während unserer Entwicklung wurden nur die grundlegenden Opencv-Methoden wie:
• cv2. GaussianBlur(..)
• cv2.threshold(..)
• cv2.morphologyEx(..)
• cv2.contourArea(..)
• cv2.findContours(..)
Diese grundlegenden Methoden reichten nicht aus, um eine gute Qualität bei der Erkennung von Personen zu erreichen. Szenarien mit verwackeltem Video ML (Machine Learning) wurden verwendet. Also entschieden wir uns, die OpenCV-Bibliothek für maschinelles Lernen zu verwenden, und wir bekamen ein weiteres Problem, da wir viele Tage damit verbrachten, eine gute Dateneingabe für den ML-Algorithmus zu finden. Wir haben den OpenCV SVM-Algorithmus verwendet, aber nicht funktioniert. Wir haben OpenCV Naive Bayses verwendet und dieses funktionierte OK. Wir haben versucht, neuronale Netze von Tensorflow und CNN zu verwenden, haben es jedoch vorerst nicht geschafft. CNN verwendet viel Rechenleistung, etwas, das wir nicht hatten. Mit OpenCV ML und den Grundlagen der OpenCV-Methoden haben wir eine gute Erkennungsrate von Personen erreicht. Trotzdem müssen wir für jede Art von Video die Parameter von OpenCV anpassen, um eine gute Erkennungsrate von Personen zu erreichen und Fehlalarme zu vermeiden nur die Anzahl der Passagiere und die GPS-Position. Wir haben uns entschieden, keine Daten mit anderen Sensoren wie Temperatur usw. zu sammeln. Wir haben eine.ini-Datei erstellt, um die Anwendung zu parametrisieren und konfigurierbar zu machen. In der Datei Cambus.ini können Sie die Anwendung auf viele Arten konfigurieren.
Schritt 7: Ergebnisse und zukünftige Arbeit
Wie Sie im Video sehen können, arbeitet der Zähler genau. Die blauen Linien markieren die Eingabegrenze und die rote Linie die Ausgabegrenze. In diesem Fall wurde ein Video zur Simulation verwendet, da wir es nicht für einen Bus bereitstellen konnten.
Beachten Sie, dass einige Änderungen an Ihren Bedingungen bezüglich Videogröße, Kamerawinkel, Helligkeit usw. vorgenommen werden müssen. Jeder Videotyp muss seine eigenen Parameter anpassen, wie zum Beispiel den Opencv-Kernel-Suctraction-Hintergrund und so weiter.
Bitte ändern Sie auch Variablen in cambus.ini, geben Sie MQTT-Broker usw. an.
Wir erwägen, bei zukünftigen Implementierungen Sensoren hinzuzufügen, beispielsweise für Temperatur, Feuchtigkeit und CO2 im System. Die Idee ist, Daten rund um die Städte zu sammeln und sie der Gemeinde zur Verfügung zu stellen.
Nachfolgend listen wir die nächsten Schritte auf, die Sie zur Verbesserung des Projekts durchführen können:
- Schreiben Sie den Code mit C/C++ neu;
- ML-Algorithmus verbessern;
- Python-Code neu faktorisieren;
- Einsatz in einem Bus;
Wir möchten Embarcados und Qualcomm für die geleistete Unterstützung danken.
Mitarbeiter:
Bruno Monteiro - [email protected]
Kleber Drobowok - [email protected]
Vinicius de Oliveira - [email protected]
Schritt 8: Referenzen
[1]
[2]
[3]
[4]
[5]
Empfohlen:
Anleitung zur nutzlosen Maschine: 21 Schritte (mit Bildern)
Anleitung zur nutzlosen Maschine: Die nutzlose Maschine ist eine Variation von Marvin Minskys "Ultimate Machine", die im Grunde eine Maschine ist, deren ultimatives Ziel es ist, sich selbst auszuschalten. Nach dem Aufbau werden Sie erstaunt sein, wie eine Maschine aus zwei Schaltern und einem Motor besteht und nicht
Einen Roboter zur Hindernisvermeidung bauen – wikiHow
Wie man einen Hindernisvermeidungsroboter macht: Der Hindernisvermeidungsroboter ist ein einfacher Roboter, der von einem Arduino betrieben wird und was er tut, ist, dass er nur herumstreift und Hindernissen ausweicht. Er erkennt die Hindernisse mit einem HC-SR04 Ultraschallsensor, d. h. wenn der Roboter ein Objekt in der Nähe von
TV-Fernbedienung wird zur RF-Fernbedienung -- NRF24L01+ Tutorial: 5 Schritte (mit Bildern)
TV-Fernbedienung wird zur RF-Fernbedienung || NRF24L01+ Tutorial: In diesem Projekt zeige ich Ihnen, wie ich den beliebten nRF24L01+ RF IC verwendet habe, um die Helligkeit eines LED-Streifens drahtlos über drei nutzlose Tasten einer TV-Fernbedienung einzustellen. Lass uns anfangen
Tutorial zur VM Ware-Installation für Windows: 11 Schritte
VM Ware-Installation für Windows-Tutorial: VM Ware ist eine Software, die es Schülern ermöglicht, drahtlos von ihrem PC aus auf das Laufwerk ihres Schulcomputers zuzugreifen. In diesem Tutorial erfahren Sie, wie Sie VM Ware auf Windows-Computern richtig installieren. Zusammenarbeit an diesem Projekt: Smith, Bernad
Anleitung zur Verwendung von LORA SX1278 RF433 – 3 Schritte
Tutorial So verwenden Sie LORA SX1278 RF433: In diesem Tutorial werden wir Ihnen beibringen, wie Sie LORA-SX1278 RF433 dazu bringen, miteinander zu kommunizieren