Gestensteuerung eines Roboters auf dem Nvidia Jetson Nano

In diesem Video wird ein Teil der Installation der quelloffenen ComputerVision Bibliothek OpenCV in der aktuellen Version 4.1.2 auf dem Nvidia Jetson Nano gezeigt. Die Version ist erst seit kurzem freigegeben und wird noch nicht auf der Hauptseite von opencv.org angezeigt, findet sich aber unter https://github.com/opencv/opencv/tree/4.1.2. Nach erfolgreichem kompilieren wird anhand eines simplen Beispiels gezeigt, wie man mit Hilfe eines neuronalen Netzwerkes und einer Kamera eine einfache, aber funktionierende Gestensteuerung für einen Roboter bauen kann.

Das Projekt kann in der Basisversion von https://github.com/mit-han-lab/temporal-shift-module heruntergeladen werden. Das im Video Beispiel wurde von mir erweitert, um damit einen einfachen Roboter zu steuern.

Eine gute Schritt-für-Schritt Anleitung für das Original-Projekt findet sich auf https://github.com/mit-han-lab/temporal-shift-module/tree/master/online_demo.

Die von mir gemachten Modifikationen zur Robotersteuerung gibt es auf Anfrage.

Jetson Nano, InMoov and playing with motors

Today you can see some of my recent experiments with motors running on the Jetson Nano , an old but dirty cheap grbl board and other fun stuff.

Jetson Nano connected to the InMoov robot arm through a PCA9685 servo motor driver

All projects you can see in this video are low powered and battery driven. The examples are kept simple to

  1. Jetson Nano connected to the InMoov robot arm through a PCA9685 servo motor driver.
  2. Stepper driver motors connected to a grbl board. Can be controlled via bluetooth, usb cable or telnet
  3. Stepper driver motors connected to three external stepper motor driver boards controlled via touch screen connected to an esp32

For the first example I wrote a quick and simple python script moving the robots thumb and fingers

Artificial intelligence on a single board computer

With the new single board computer „Jetson Nano“ from nvidia it is possible to make this little thing really „see“ and detect things.

This 99.00 $ sbc is able to recognise the real world and process the things it sees in nearly realtime. For such a little thing it is astonishing what you can do nowadays: only with a dirty cheap usb webcam and a more dirty cheap computer running on 5V.

What you can see here are some examples from the open source Computer Vision software OpenCV version 4.1.1 written in python exectuted directly on the Jetson Nano. The usb camera is watching TV (soccer, of course :-))

On the monitor connected to the Jetson Nano via HDMI you can see the images being processed by OpenCV 4.1.1. The samples can be found in the (… surprise, surprise) opencv’s samples/python folder.

If you are interested in how to get OpenCV 4.1.1 installed on the Nano: Here we go

Have fun.

Cross compile OpenCV in a virtual machine and send it via ssh to a single board arm computer

This is the first very, very basic approach to create a complete cross compile pipeline to download OpenCV from github into a virtual machine on your host, cross compile the soures and send the binaries to a single board arm computer.

You can download the sources via

There is a readme with some basic instructions on seting up this fully automated pipeline via some basic bash scripts. These files will be replaced with some better routines and a little tutorial on how to setup everthing to get it running during next week.

OpenCV 4.1.1 + Debian Buster (Armbian 64-bit) auf dem Odroid-C2

Nachdem die Düsseldorfer Verwaltung offensichtlich mit den jüngsten Vorfällen im Rheinbad komplett überfordert ist und als Antwort auf Randale im Schwimmbad dazu übergeht, künstliche Intelligenz (Gesichtserkennung) einzusetzen, um die bösen Kinder und Jugendlichen vom Randalieren abzuhalten, habe ich beschlossen, ein kleines Projekt an den Start zu schieben, mit dem sich JEDER auch mit wenig Geld einen Einplatinenrechner mit künstlicher Intelligenz bauen kann.

Das erste Ergebnis ist heute fertig geworden:

Ein Odroid-C2 Einplatinencomputer, der in die Hosentasche passt.

Die Software reizt diesen 5 Volt Kleinrechner komplett aus: Ein 64-bit Linux namens Armbian, auf dem ein brandaktuelles OpenCV (Software für „smarte“ Gesichtserkennung und noch viel mehr) installiert ist.

Den Speicher des Odroiden habe ich mittels Swap-Speicher von 1GB auf 4GB erhöht, um OpenCV direkt auf dem Rechner kompilieren zu können.

Morgen gibt es ein Tutorial zum Thema „Künstliche Intelligenz“ und Gesichtserkennung im Zusammenhang mit Einplatinenrechnern. Auf meinem kürzlich erworbenen Raspberry Pi 4 in der 2GB Version läuft diese Software natürlich auch bereits.

3D-Drucker-Software auf dem Raspberry Pi 4B

Heute ist ein Experiment gelungen, das bisher wenig Freude breitet hat:
RepetierHost auf dem Raspberry Pi.
Ja, ihr habt richtig gelesen: RepetierHost, nicht etwa RepetierServer 🙂
Bisher war das eigentlich nur schwer machbar und wenig sinnvoll, da es noch viele Dinge an den Vorgängermodellen des Rasperry Pi 4 gab, die ein halbwegs flüssiges arbeiten mit dieser feinen Software aus Willich, Germany, verhindert haben.
Mein RPI v.4 hat 2GB Ram und kann schon halbwegs flüssig optisch darstellen, was passiert.

RepetierHost mit Slic3r auf dem Raspberry Pi 4b

Was geht bereits jetzt?

  1. repetierHost auf Raspbian installieren und starten.
  2. Slic3r von git installieren und starten.
  3. Slic3r in repetierHost einbinden und Konfigurationen (config-bundles) vom „richtigen“ Rechner benutzen.
  4. repetierHost per USB mit dem 3D-Drucker verbinden und …DRUCKEN!!!

Das alles passiert über eine VNC-verbindung, mit der ich den RPI4-Desktop per VNC-Viewer auf meinen Rechner oder Tablet hole und von dort aus arbeite. Es sollte noch einfacher werden, wenn man per Touchscreen via HDMI arbeiten kann.

Natürlich läuft auch OctoPi aus den Git-Quellen bereits bei mir auf dem RPI4 (inklusive RPI2-Webcam). Aber Repetierhost ist eine Software, mit der ich seit Jahren arbeite und die dank ihrer vielen Konfigurationsmöglichkeiten zum Profi-Drucker für Heimwerker (Maker) dazu gehört 😉

Verwendete Hardware:

  • Raspberry Pi Version 4B mit 2GB Ram
  • Original Raspberry Pi Stromversorgung (Leistung hat ihren Preis)
  • Lüfter auf dem RPI4 (er wird sonst beim Kompilieren einfach zu heiß).
  • Raspberry Pi Version 2B mit Raspicam. Separate Kamera, da diese auch als Helmkamera beim Mountainbiken Verwendung findet.
  • Flsun Cube 3D-Drucker (DIY-Eigenbau-Kit aus …China, woher sonst?)

Verwendete Software:
-Repetierhost Version 2.1.6
-Slic3r aus Git-Quellen Version 3.1-dev (Developer-Version, unstabil)

Frisch kompilierter Slic3r

Auffälligkeiten:
Meldung vom RepetierHost beim Versuch, die grafische Ansicht zu verändern:

13:31:00.331 : Disabled additional filament drawing for better framerates and to protect print quality.
13:31:00.332 : You can disable this in Config->Preferences->Basic Settings->Behaviour.

Grund: zu wenig Speicher für die Grafikdarstellung. Werde in den nächsten Tagen mal an den GPU-Einstellungen des RPI4 schrauben und schauen, ob sich etwas verändert.
Ansonsten: Das Druckergebnis ist SUUUUPER;-)

Sollte jemand Interesse daran haben, wie das funktioniert, schreibe ich (ausnahmsweise) auch mal ein kleines HowTo dazu.

Have fun.