Inhaltsverzeichnis:

Cambus - System zur Datenerfassung im Stadtbus - Gunook
Cambus - System zur Datenerfassung im Stadtbus - Gunook

Video: Cambus - System zur Datenerfassung im Stadtbus - Gunook

Video: Cambus - System zur Datenerfassung im Stadtbus - Gunook
Video: Neu: M-Bus Extension I 2023 I 4K 2024, November
Anonim
Cambus - System zur Datenerfassung im Stadtbus
Cambus - System zur Datenerfassung im Stadtbus

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

Installieren Sie Linaro in Dragonboard 410c
Installieren Sie Linaro in Dragonboard 410c
Installieren Sie Linaro in Dragonboard 410c
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

Schritt 2: Installieren Sie Bibliotheken und laden Sie den Quellcode von GitHub herunter
Schritt 2: Installieren Sie Bibliotheken und laden Sie den Quellcode von GitHub herunter

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

Einrichten von AWS IoT Core, DynamoDB
Einrichten von AWS IoT Core, DynamoDB
Einrichten von AWS IoT Core, DynamoDB
Einrichten von AWS IoT Core, DynamoDB
Einrichten von AWS IoT Core, DynamoDB
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

Twilio- und Dweet-APIs einrichten
Twilio- und Dweet-APIs einrichten
Twilio- und Dweet-APIs einrichten
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: