Arucomover: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Mit Git repo verheiratet)
Zeile 46: Zeile 46:
  
 
== Arucodetetcion ==
 
== Arucodetetcion ==
ist ein Pythoncode, der von dieser Seier [[OpenCV_mit_Python]] inspiriert ist und in zwei Prozessen läuft.  
+
ist ein Pythoncode, der von dieser Seite [[OpenCV_mit_Python]] inspiriert ist und in zwei Prozessen läuft.  
Web und Arucodetecion.Damit der WebProzess die Arcuoposition über ein Websocket liefern kann, sind
+
Web und Arucodetecion.Damit der WebProzess die Arcuo Position über einen Websocket liefern kann, sind
 
beide über eine Managed Queue verbunden. Der Video Stream wird in ein Shared Memory
 
beide über eine Managed Queue verbunden. Der Video Stream wird in ein Shared Memory
geschrieben und vom Webprozess drausgeholt. Dies ist erst ab Python 3.8 möglich
+
geschrieben und vom Webprozess geholt. Dies ist erst ab Python 3.8 möglich !
 
Es wird davon ausgegangen, daß ein Camera Device 0 vorhanden ist. Sollte eine  
 
Es wird davon ausgegangen, daß ein Camera Device 0 vorhanden ist. Sollte eine  
 
Kalibrierung für eine bessere Erkennung notwendig sein, kann ein entsprechendes  
 
Kalibrierung für eine bessere Erkennung notwendig sein, kann ein entsprechendes  
 
Config File camera.json mit create_camera_config.py erstellt werden. Dies muss dann in den  
 
Config File camera.json mit create_camera_config.py erstellt werden. Dies muss dann in den  
vom Setup erstellten /USERHOME/arucodetection Folder kopiert werden
+
vom Setup erstellten /USERHOME/arucodetection Folder kopiert werden.
 +
Dort liegt auch eine config.json mit der sich die Camera, Auflösung usw. einstellen läßt.
 +
Es wird immer von einem DICT_6X6_50 Aruco Code ausgegangen.
 +
 
 +
Um zu testen ob alles funktioniert, stellt arucodetection.py eine entsprechende Webseite zur verfügung,
 +
die Websocket und Video Stream abfragt.
 +
 
 +
 
 +
[[Datei:Arucodetection.jpg |x300px ]]
  
 
== itsyBitsyM4==
 
== itsyBitsyM4==
 
die verwendeten libraries müssen im lib Folder vorhanden sein und eventuell nachinstalliert werden.
 
die verwendeten libraries müssen im lib Folder vorhanden sein und eventuell nachinstalliert werden.
Z.B. adafruit_bno055. Diese Müssen zur CircuitPython Version des M4 passen
+
Z.B. adafruit_bno055. Diese müssen zur CircuitPython Version des M4 passen.
 
+
code.py ist der Ausgeführte Code. Mitlerweile ist ein I2C Test in diesen eingebaut.
+
will man nur I2C testen, kann man code.py umbenennen. Dann wird automatisch main.py
+
aufgerufen, daß in einer Endlosschleife die angeschlossenen I2C devices abfragt
+
  
 +
code.py ist der Ausgeführte Code. I2C Test in diesen eingebaut. Alle Verfügbaren Kommands können
 +
mit ? abgefragt werden. Will man nur I2C testen, kann man code.py umbenennen. Dann wird automatisch main.py
 +
aufgerufen, daß in einer Endlosschleife die angeschlossenen I2C Devices abfragt.
  
 
== Hardware Evolution ==
 
== Hardware Evolution ==

Version vom 3. Juli 2021, 14:17 Uhr

Ziel

Ein kleiner Robot auf Basis eines Raspberry Pi soll selbstständig Aruco codes finden und anfahren können

Konzept

Ein Python Script benutzt die OpenCV Library um Arucos im Bild mit Position und Entfernung zu erkennen. Der Videostream und die Position mit Entfernung werden von dem Script zur Verfügung gestellt.

Ein Node-Red Flow Nimmt die Position auf und gibt Steurbefehle über an einen ItsyBitsy M3, der damit ein MotorShield steuert.

Angeschlossen aber nicht benutzt ist ein BNO055, der Sensordaten Liefert um z.B. die Positionsbestimmung zu verbessern.

Hier eine Übersicht

Arucomover konzept.jpg

Hier ein Schaltplan dazu

Arucomover diagram.jpg

Es soll aber trotzdem möglich sein, daß ein Benutzer eingreift,dafür die UI aus Node-Red heraus

Arucomoverui.png


setup

Aller Code und auch ein Setup können im https://github.com/hackffm/arucomover gefunden werden. es wird davon ausgegangen, daß das ganze auf einem Debian basiertem Linux läuft. Also Ubuntu oder Raspian. Im Setup Folder gibt es Skripte, die das allermeiste vorbereiten sollten. Das in der arucodetection verwendete Shared Memory ist erst ab Python 3.8 verfügbar. Auf einem RaspberryPi3 ist 3.7 default. Daher gibt es im Setup Folder ein entsprechendes Skript für den Pi. Vor der Ausführung muss das Swapfile vergrößert werden

sudo nano /etc/dphys-swapfile -> CONF_SWAPSIZE=1024

sudo /etc/init.d/dphys-swapfile restart

Ein gutes Netzteil vorrausgesetzt, läuft daß dann einige Zeit. Die übrigen Setup Skripte können, mit der richtigen Python Version dann ausgeführt werden. Der Schritt 2_setup_folders.sh installiert auch alle python requierements. Das kann auf eine PI 3 mehrere Stunden dauern.

Arucodetetcion

ist ein Pythoncode, der von dieser Seite OpenCV_mit_Python inspiriert ist und in zwei Prozessen läuft. Web und Arucodetecion.Damit der WebProzess die Arcuo Position über einen Websocket liefern kann, sind beide über eine Managed Queue verbunden. Der Video Stream wird in ein Shared Memory geschrieben und vom Webprozess geholt. Dies ist erst ab Python 3.8 möglich ! Es wird davon ausgegangen, daß ein Camera Device 0 vorhanden ist. Sollte eine Kalibrierung für eine bessere Erkennung notwendig sein, kann ein entsprechendes Config File camera.json mit create_camera_config.py erstellt werden. Dies muss dann in den vom Setup erstellten /USERHOME/arucodetection Folder kopiert werden. Dort liegt auch eine config.json mit der sich die Camera, Auflösung usw. einstellen läßt. Es wird immer von einem DICT_6X6_50 Aruco Code ausgegangen.

Um zu testen ob alles funktioniert, stellt arucodetection.py eine entsprechende Webseite zur verfügung, die Websocket und Video Stream abfragt.


Arucodetection.jpg

itsyBitsyM4

die verwendeten libraries müssen im lib Folder vorhanden sein und eventuell nachinstalliert werden. Z.B. adafruit_bno055. Diese müssen zur CircuitPython Version des M4 passen.

code.py ist der Ausgeführte Code. I2C Test in diesen eingebaut. Alle Verfügbaren Kommands können mit ? abgefragt werden. Will man nur I2C testen, kann man code.py umbenennen. Dann wird automatisch main.py aufgerufen, daß in einer Endlosschleife die angeschlossenen I2C Devices abfragt.

Hardware Evolution

BOM

Raspberry Pi 3
BNO055
MotorAeshield V2