Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Internet der Dinge-Technologie

ETSIIT Technische Herausforderung | Vom College-Studenten zum Unternehmer

Vor einem Jahr haben wir unsere Arbeit für die IV ETSIIT Technical Challenge (Video) aufgenommen. Wer sind wir? Nun, wir sind vier Studenten, die Elektrotechnik und Informatik an der Universität Granada in Spanien studieren.

Unser Team, Prometheus, hat die von RTI gesponserte Tech Challenge gewonnen. Für diese Herausforderung mussten Teams von vier oder fünf Studenten ein Produkt erstellen, um eine von einem externen Unternehmen vorgeschlagene Herausforderung zu lösen. Das Thema der diesjährigen Challenge war "Multi-Agent Video Distributed System".

Wir haben uns dieser Herausforderung gestellt, um praktische Erfahrungen zu sammeln. Ein Jahr nach der Tech Challenge sind wir alle noch Studenten, aber wir haben jetzt eine Geschäftsmöglichkeit recherchiert, das wettbewerbsfähige Produkt Locaviewer entworfen, eine Strategie entwickelt, um es auf dem Markt zu verkaufen, und einen funktionierenden Prototyp erstellt, zusätzlich zu den erforderlichen Kursarbeiten für unsere Abschlüsse.

Locaviewer

Die meisten Eltern mit Kindern im Kindergarten sorgen sich um die Gesundheit und den Fortschritt ihrer Kinder. Unser Produkt, Locaviewer, versucht Eltern zu ermöglichen, ihr Kind in Echtzeit zu verfolgen und zu sehen. Als Teil unseres Marketingplans haben wir ein Werbevideo erstellt. Unser Code wurde unter der MIT-Lizenz auf GitHub veröffentlicht.

Teamorganisation und Zeitplan

Das Projekt dauerte ungefähr 250 Stunden. Jede Woche trafen wir uns für mindestens 4 Stunden, mit Ausnahme des letzten Monats, in dem wir 20 Stunden pro Woche für das Projekt aufgewendet haben. Um effizienter zu sein, haben wir uns in zwei Teams aufgeteilt. Zwei Personen arbeiteten am Indoor-Bluetooth-Ortungsalgorithmus. Die anderen beiden konzentrierten sich auf eine Anwendung zum Aufnehmen, Kodieren/Dekodieren eines Videostreams und zum Teilen mit RTI Connext DDS.

Standortalgorithmus

Der erste und wichtigste Schritt unserer Lösung war die Standortbestimmung der Kinder im Kindergarten. Jedes Kind musste ein Armband mit einem Bluetooth-Gerät -Sensor- tragen, das kontinuierlich die Signalstärke meldete, empfangen ein Bluetooth-Gerät -Dongle-, das in den Zimmerwänden platziert wurde. Dieser Wert der empfangenen Signalstärke (RSSI) wird normalerweise in Dezibel (dB) gemessen. Wir haben die Beziehung zwischen RSSI und Entfernung bestimmt.

Abbildung2. Empirisches Messen von Bluetooth-Signalen nach Winkel und Entfernung.
Abbildung3. Locaviewer tragbar.

Die RSSI-Werte wurden an einen Minicomputer (Raspberry Pi oder MK802 III) übertragen, um einen Triangulationsalgorithmus auszuführen und den Standort des Kindes zu identifizieren. Da wir die Kameraposition kannten, wussten wir nach der Bestimmung der Position des Kindes, welche Kameras das Kind aufzeichneten und wählten die beste Kamera aus.

Abbildung4. Indoor-Triangulation.

Videoaufnahmeanwendung

Um Videos aufzunehmen, zu kodieren, zu dekodieren und zu visualisieren, haben wir GStreamer für Java verwendet. Wir haben andere Bibliotheken wie vlcj ausprobiert, aber sie unterstützten weder Raspberry Pi noch erfüllen sie die Echtzeitbeschränkungen unseres Systems. Nach einigen Recherchen haben wir GStreamer entdeckt, der mit Raspberry Pi funktioniert und den codierten Videopuffer problemlos in Echtzeit abrufen kann (mit AppSink und AppSource Elemente). Dadurch konnten wir es kapseln und an ein DDS-Thema senden. Wir haben mehrere Monate daran gearbeitet, sogar einen temporären Workaround mit HTTP-Streaming mit vlcj implementiert, bis wir uns auf unseren endgültigen Ansatz geeinigt haben.

Wir haben den Video-Encoder VP8 (WebM) verwendet. Da der Wrapper für Java nur mit GStreamer Version 0.10 funktioniert, konnten wir ihn nicht optimieren und mussten die Videodimensionen reduzieren. In unseren Tests wurde Raspberry Pi verwendet, aber wir planen, in der endgültigen Implementierung ein MK802 III-Gerät zu verwenden, da es den gleichen Preis, aber mehr Rechenleistung hat. Die endgültige Codierungskonfiguration war:

Abbildung5. GStreamer-Pipeline zum Aufnehmen, Kodieren und Abrufen von Videos.

Wir haben den folgenden Java-Code verwendet, um VP8-Encoder-Elemente zu erstellen.

Element codec =ElementFactory.make("vp8enc", null);codec.set("threads", 5);codec.set("max-keyframe-distance", 20);codec.set("speed", 5);Element capsDst =ElementFactory.make("capsfilter", null);capsDst.setCaps(Caps.fromString("video/x-vp8 profile=(string)2"));  

Clientseitig haben wir folgende Konfiguration verwendet:

Abbildung6. GStreamer-Pipeline zum Einstellen, Decodieren und Abspielen von Videos.

Wir haben den folgenden Java-Code verwendet, um VP8-Decoderelemente zu erstellen.

String caps ="video/x-vp8, width=(int)320, height=(int)240, framerate=15/1";Element capsSrc =ElementFactory.make(" capsfilter", null);capsSrc.setCaps(Caps.fromString(caps));Element queue =ElementFactory.make("queue2", null)Element codec =ElementFactory.make("vp8dec", null);Element convert =ElementFactory. make("ffmpegcolorspace", null); 

Wir haben auch die JPEG-Kodierung ausprobiert, aber dies war für die Echtzeitverwendung aufgrund der größeren Größe und der größeren Anzahl von Paketen nicht möglich.

DDS-Architektur

Der Publish-Subscribe-Ansatz war der Schlüssel zu unserer Lösung. Es ermöglichte uns, Daten zwischen vielen Clients auszutauschen, ohne uns um Netzwerk-Sockets oder -Verbindungen kümmern zu müssen. Wir mussten nur angeben, welche Art von Daten gesendet und empfangen werden sollen. Wir haben eine Wrapper-Bibliothek, DDStheus, erstellt, um die DDS-Nutzung in unserem System zu abstrahieren.

Abbildung7. Allgemeine DDS-Architektur des Systems.

Unsere endgültige Lösung bestand aus sechs Programmen mit drei gemeinsamen Themen. Wir haben verschiedene Programmiersprachen verwendet:

  1. Python funktioniert auf niedriger Stufe (HCI) mit Bluetooth-Geräten
  2. MATLAB/Octave zum Erstellen des Triangulationsskripts
  3. Java arbeitet mit RTI Connext DDS und grafischen Benutzeroberflächen

Wir mussten alle RSSI-Werte in einem Raum kennen. Wir haben ein Skript erstellt, um die Bluetooth-Dongles zu konfigurieren und die RSSI-Informationen zu erhalten. Diese Werte wurden über eine einfache Socket-Verbindung auf demselben Computer an ein Java-Programm gesendet. Die Java-Anwendung hat die Daten in den Sensordaten . veröffentlicht Thema. Es sendete die Kinder-ID (der Bluetooth-MAC-Sensor), die Bluetooth-Dongle-ID und -Position, den aktuellen Raum (als Schlüssel nach Raum filtern), RSSI-Wert und Ablaufzeit.

Abbildung8. Flussdiagramm des Sensorprogramms.

Nachdem die Kameras das Video aufgenommen und codiert haben, sendet das Java-Programm Gava das Video über die Videodaten Thema. Es hat die Kamera-ID als Schlüsselwert gesendet, um den Stream mit ContentFilteredTopic . zu filtern mit Kameraposition, Raum, codiertem Frame und Codec-Info.

Außerdem fügt die Anwendung die Kamera-ID, den Raum und die Kameraposition in den USER_DATA-QoS-Wert jedes Video-Publishers ein. Der Triangulations-Minicomputer könnte dann alle Kamerainformationen in einem Raum abrufen, indem er einfach Verlage entdeckt. Es könnte auch neue und defekte Kameras in Echtzeit erkennen und das Standortskript aktualisieren, um den Kameraauswahlalgorithmus zu verbessern.

Abbildung9. Flussdiagramm des Videoprogramms.

Im letzten Schritt haben wir die

[1] [2] 下一页

Internet der Dinge-Technologie

  1. Häufig gestellte Fragen aus unseren Remote Access-Webinaren
  2. Community College bietet fortgeschrittene Studenten der Verbundwerkstoffherstellung mehr Flexibilität
  3. Ein Kunde aus dem Libanon lernt, wie man eine CNC-Maschine bedient
  4. Unsere Kunden aus Jordanien besuchten unsere Fabrik
  5. Kunde aus Kanada hat unsere Fabrik besucht
  6. Unser Ingenieur ging nach Dubai, um technischen Support im Ausland zu leisten
  7. Kunde aus Katar besuchte unsere Fabrik im April 2017
  8. Unser Kunde aus Bengalen prüft unsere neu gebauten Holzbearbeitungsmaschinen
  9. Kunden aus Indien kamen in unsere Fabrik, um die Maschine zu inspizieren
  10. Besucher aus Korea für CNC-Fräsmaschine