Skip to content

autonomoussystemsengineering/amiro_jevois

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 

Repository files navigation

AMiRo_Jevois

Ziel dieses Projektes ist es, eine Demo Applikation für die Anbindung der Jevois smart machine vision camera für den AMiRo zu implementieren. Dabei wird die Jevois Kamera über eine serielle Schnittstelle mit dem Cognition Board des AMiRo verbunden. Implementiert werden zwei Demo Applikationen:

  1. ArUco Marker Tracking (Multi Marker und Single Marker Tracking)
  2. Obstacle Avoidance mittels Optical Flow

Repo Aufbau:

  1. Jevois_AMiRo: Software für den AMiRo inklusive cmake List
  2. Jevois_Software_Changes: Geändertes Jevois Programm für das Obstacle Avoidance mittels Optical Flow (Änderung von OpticalFlow).
  3. media: ArUco Marker und Dokumentationen

Jevois Vorbereitung

  • Jevois Software auf SD-Card flashen: Anleitungen und Software finden sich auf der Website und im Repo. Dabei die Änderung im OpticalFlow berücksichtigen.

Vorbereitung

  1. AMiRo_Jevois Repo auf Rechner clonen
  2. Einrichtung der Cross-Compiler Umgebung mit poky-glibc-x86_64-meta-toolchain-openrobotix-cortexa8hf-vfp-neon-toolchain-openrobotix-1.7.2.sh auf dem Rechner. Das benötigte shell script liegt im ks-temp Ordner.
  3. Sourcen des Cross-Compilers:
source /opt/poky/1.7.2/environment-setup-cortexa8hf-vfp-neon-poky-linux-gnueabi
  1. Im Ordner Jevois_AMiRo des AMiRo_Jevois Repo das cmake ausführen:
cmake .
  1. Das erstellte Makefile ausführen:
make
  1. Das AMiRo Cognition Board über die serielle Schnittstelle starten (z.B. mittels gtkterm) und einloggen mit
  • Benutzer: root
  • pw: amiropower
  1. Das AMiRo Cognition Board über ein Micro-USB Kabel mit dem Rechner verbinden und Netzwerk einrichten
  2. Die drei Programme jevoisAruco_SingleTracker, jevoisAruco_MultiStationTracker und jevoisOpticalFlow können nun auf das Cognition Board über eine SSH-Schnittstelle kopiert werden. Dazu vorher über die serielle Schnittstelle die IP-Adresse des Cognition Boards herausfinden (standardmäßig ist diese 192.168.1.1):
scp jevoisAruco_SingleTracker root@192.168.1.1:~
scp jevoisAruco_MultiStationTracker root@192.168.1.1:~
scp jevoisOpticalFlow root@192.168.1.1:~
  1. Über eine SSH-Verbidnung mit dem Cognition Board verbinden:
ssh root@192.168.1.1
  1. Programme können nun auf dem AMiRo ausgeführt werden

ArUco Marker Tracking

In diesem Demo Programm wird ein 4x4 ArUco Marker getrackt (ArUco Generator). Dabei gibt es zwei Programme, welche mit folgenden Parametern gestartet werden:

./jevoisAruco_SingleTracker P_linear P_angular desired_dist desired_Marker_ID start_Marker_ID
./jevoisAruco_MultiStationTracker P_linear P_angular desired_dist start_Marker_ID
  • P_linear: Konstante für Regler zum Annähern an den Marker, bis gewünschte Distanz erreicht ist (Default Single Tracking: 500)
  • P_angular: Konstante für Regler zum mittig Ausrichten an den Marker (Default Single Tracking: 5000)
  • desired_dist: Abstand in mm, welcher zum getrackten Marker eingehalten wird (Default Single Tracking: 300)
  • desired_Marker_ID: Zu Trackende Marker ID (Default Single Tracking: 42)
  • start_Marker_ID: Marker ID, welche für den Start des Programms nötig ist (Default Single Tracking: 0)

Das Single Marker Tracking sucht im Umfeld nach einem gezielten Marker (Default ID:42) und hält beim Auffinden dieses, eine konstante Distanz zu diesem ein. Das Multi Station Marker fährt eine bestimmte Anzahl an Marker in einer vorgegebenen Reihenfolge an, bis der letzte Marker erreicht ist. Die anzufahrenden Marker sind dabei mit ihrer ID in einem Array desired_Marker_ID_Stations im Programmcode angelegt.

Die wahre Markergröße (in mm) kann dabei im Code von jevoisAruco_SingleTracker.cpp und jevoisAruco_MultiStationTracker.cpp in folgender Zeile geändert werden:

system("echo setpar markerlen 94 > /dev/ttyACM0");

Das Marker Tracking auf der Jevois Kamera wird mit folgender Zeile konfiguriert:

system("echo setmapping 5 > /dev/ttyACM0");

Die Nummer des Mappings, muss dabei der entsprechenden Ausgabe der Jevois Kamera für das Marker Tracking entsprechen. Dies kann herausgefunden werden, indem über die serielle Schnittstelle z.B. mit:

screen /dev/ttyACM0

Der Befehl:

listmappings

eingegeben wird.

Obstacle Avoidance mittels Optical Flow

In diesem Demo Programm wird eine Hindernisserkennung und -vermeidung mittels optischen Flusses umgesetzt. Als Grundlage dient das Paper A Bio-Inspired Model for Visual Collision Avoidance on a Hexapod Walking Robot von Meyer et al. Das Programm kann mit folgenden Parametern ausgeführt werden:

./jevoisOpticalFlow n0 g k v alpha
  • n0: Threshold (Default: 37,5)
  • g: Gain (Default: 5,0)
  • k: Verstärkungsfaktor für AMiRo Motor (Default: 3000000)
  • v: lineare Geschwindigkeit des AMiRo (Default: 120000)
  • alpha: Tiefpass Konstante (Default: 0,2)

Das Programm ist in jevoisOpticalFlow.cpp hinterlegt.

Der Optical Flow Algorithmus auf der Jevois Kamera wird mit folgender Zeile konfiguriert:

system("echo setmapping 9 > /dev/ttyACM0");

Die Nummer des Mappings, muss dabei der entsprechenden Ausgabe der Jevois Kamera für den Optical Flow entsprechen. Dies kann herausgefunden werden, indem über die serielle Schnittstelle z.B. mit:

screen /dev/ttyACM0

Der Befehl:

listmappings

eingegeben wird.

Hinweise

Wenn die Programme auf dem Cognition Board per SSH gestartet werden und das USB Kabel anschließend entfernt wird, kann es zu Programmabbrüchen bei drahtloser Ausführung des Applikation kommen. Um dies zu umgehen, sollten die Programme per serieller Schnittstelle gestartet werden

Entwickler/Autoren/Verantwortliche

About

AMiRo Jevois Demo Software

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published