Hallo zusammen,
die USB-Kameras wurden uns nun endlich geliefert und so haben wir sie Anfang der dieser Woche an euch senden lassen. Wir hoffen, dass mittlerweile die Kameras angekommen sind und möchten euch hier die notwendigen Schritte zur Einbindung in NodeRED näher bringen.
Ihr benötigt dafür lediglich einen USB-Stick mit einer Datei, welche euch vom SPE-Team per Link in einer Mail zur Verfügung gestellt wird. Die USB-Kamera sollte ab dem dritten Schritt am Roboter angeschlossen sein.
Schritt 0: Vorbereitungen
Download der Image-Datei und ziehen auf einen USB-Stick. Anschließendes Einstecken des Sticks in das IOT2050 eures Roboters.
Zur Installation wird die Kommandozeile des Roboters bedient werden müssen. Hierfür stehen folgende beiden Optionen bereit:
- SSH-Verbindung über einen anderen Rechner
- Direkt per Monitor + Tastatur am IOT2050
Schritt 1: Ermitteln des USB Sticks
Zunächst könnt ihr den neu eingesteckten USB-Stick mit dem Linux-Befehl fdisk -l
näher anschauen. Eine Ausgabe kann wie folgt aussehen und zeigt uns dem Namen des USB-Sticks:
Disk /dev/sda: 29.7 GiB, 31914983424 bytes, 62333952 sectors
Disk model: Multiple Reader
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 62333951 62325760 29.7G c W95 FAT32 (LBA)
In diesem Beipsiel ist der Name unseres USB-Sticks als /dev/sda1
zu lesen.
Schritt 2: Einbinden des USB Sticks
Nachdem wir nun den Namen unseres USB-Sticks kennen, können wir damit einen Ordner auf unserem Computer mit diesem USB-Stick verbinden. Lasst uns dafür einen Ordner mit zB mkdir /medie/iotbot_usb
im Heimverzeichnis des Computers erstellen. Anschließend können wir mit dem mount-Befehl den USB-Stick mit diesem Ordner verbinden. Für unser Beispiel folgt der Befehl zu:
mount /dev/sda1 /media/iotbot_usb
Lasst uns diese Verbindung überprüfen, indem wir mit cd /media/iotbot_usb/
in den Ordner wechseln und mit einem ls
die Inhalte ausgeben. Nun sollten wir die auf dem USB-Stick befindliche Datei auch in unserem Ordner sehen können:
iotbot_camera.tar
Nun können wir mit dem Befehl cp iotbot_camera.tar /root/workspace/
diese Datei in unseren Ordner “workspace” kopieren, um sie anschließend zu installieren. Lasst uns dafür anschließend in diesen Ordner wechseln: cd /root/workspace/
.
Schritt 3: Installation der Datei
Immer noch im “workspace”-Ordner befindend, können wir mit folgendem Befehl unsere Image-Datei lokal installieren:
docker load < iotbot_camera.tar
Dieser Schritt kann einige Minuten in Anspruch nehmen und gibt uns während seiner Ausführung bis zum Schluss kein Feedback in der Kommandozeile.
Schritt 3: Erstes Starten unserer neuen Applikation
Um nun aus diesem Installierten Abbild eine laufende Applikation zu kreieren, müssen wir mit folgenden Befehl eine Instanz davon initial starten:
docker run --cpus=“1” --privileged --network host --group-add dialout -v /dev:/dev --name iotbot_cam iotbot_camera
Für nähere Informationen hierzu kann bei Interesse auf die Dokumentation dieser Technologie (Docker) zurückgegriffen werden.
Damit unsere Applikation auch bei jedem weiteren Starten des Roboters gestartet wird, können wir nun diese Instanz des Programms automatisch starten lassen:
docker update --restart always iotbot_cam
Nach diesem Schritt sollte die weiße LED der Kamera eine Verbindung signalisieren und wir können mit der Implementierung in NodeRED starten.
Schritt 4: Implementierung in NodeRED
Für die Darstellung des Videos ist eine Konvertierung der Videodaten notwendig, welche ihr mit der Erweiterung node-red-node-base64 über euren Palettenmanger nachrüsten könnt.
Unser Video ist nun als Stream zur Verfügung gestellt, auf den wir mit folgendem Flow zugreifen können. Bindet ihn über die “import” Funktion des NodeRED-Editors ein.
[{"id":"68afafc7.7d87b8","type":"tab","label":"POV Kamera","disabled":false,"info":""},{"id":"f58c6826.b948e","type":"inject","z":"68afafc7.7d87b8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"0.25","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":150,"y":60,"wires":[["7ab21610.1cc368"]]},{"id":"824c9ee8.fbf378","type":"ui_template","z":"68afafc7.7d87b8","group":"1c70d4cd.325c0b","name":"Display image","order":1,"width":"15","height":"15","format":"\n<img alt=\"Videostream\" src=\"data:image/jpg;base64,{{msg.payload}}\" />\n","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","className":"","x":680,"y":60,"wires":[[]]},{"id":"7ab21610.1cc368","type":"http request","z":"68afafc7.7d87b8","name":"","method":"GET","ret":"bin","paytoqs":"body","url":"http://localhost:8080/snapshot?topic=/image_raw","tls":"","persist":false,"proxy":"","authType":"","x":330,"y":60,"wires":[["8b0563b7.9a1cf"]]},{"id":"8b0563b7.9a1cf","type":"base64","z":"68afafc7.7d87b8","name":"","action":"","property":"payload","x":500,"y":60,"wires":[["824c9ee8.fbf378"]]},{"id":"1c70d4cd.325c0b","type":"ui_group","name":"LiveVideo","tab":"df07ccac.714e9","order":1,"disp":false,"width":"35","collapse":false},{"id":"df07ccac.714e9","type":"ui_tab","name":"LiveVideo","icon":"dashboard","disabled":false,"hidden":false}]
In eurem NodeRED-Editor sollte der Flow wie folgt eingebunden worden sein.
Schritt 5: Videostream in der Bedienoberfläche
Navigiert nun in eurem Browser zur grafischen Bedienoberfläche und überprüft die Darstellung des Videos.
Meldet euch gerne hier bei Schwierigkeiten. Viel Erfolg!