Erkundungsroboter

Orientierung

Motivation

Die Anwendungsbereiche der Simulation in modernen Industriesystemen reichen von Applikationen wie dem Digital Twin über autonome Transportsysteme bis hin zu Produktionsmaschinen. Die Simulation bietet ein kostengünstiges, sicheres und schnelles Analysetool, um Kosten, Stillstandszeiten und Transportzeiten zu minimieren. Dies geschieht durch das problemlose Testen verschiedener Algorithmen, Maschineneinstellungen oder Produktionsabläufe ohne dass das reale Setup geändert werden muss. Da Simulationen immer wichtiger und verbreiteter werden, ist es wichtig, sich damit auseinanderzusetzen. Der weit verbreitete Einsatz hat auch den Vorteil, dass für viele Betriebssysteme bereits fertige Software existiert. In dieser Onlineübung soll ein virtuelles Labyrinth durch die Simulation eines Roboters erkundet werden.

Lernvoraussetzung

  • Kenntnisse einer Programmiersprache sind erforderlich (C/C++, Python, ...).
  • Kentnisse über das Robot Operating System (ROS) sind erforderlich (ROS Tutorial).
  • Kenntnisse in der objektorientierten Programmierung werden empfohlen, sind aber nicht erforderlich.

Lernergebnisse

Nach Abschluss der Übung sind Sie in der Lage…

  • … mit der Simulationsumgebung GAZEBO in Kombination mit ROS zu arbeiten.
  • … ein Verständnis für die Datenstruktur in ROS zu entwickeln.
  • … ein simuliertes Labyrinth mit einem mobilen Roboter zu erkunden.
  • Die Grundlagen im nächsten Abschnitt
  • Die ROS wiki Seite: wiki.ros.org/

Wegweiser durch die Übung

Die folgenden Abschnitte dieser Seite geben einen kurzen Überblick über die Simulation, Installation und Übungsführung. Bevor mit der Onlineübung gestartet wird, wird ein Leitfaden benötigt, der HIER heruntergeladen werden kann. Das Dokument Manual.pdf enthält detaillierte Beschreibungen der einzelnen Schritte und soll somit während der gesamten Übungsdurchführung herangezogen werden. Auf dieser Webseite wird auch immer wieder auf diesen Leitfaden verwiesen. Für die Übung benötigt man zwischen 60 und 90 Minuten. Die konkrete Dauer hängt hier vom individuellen Lernfortschritt ab.
Folgende Aktivitäten/Tätigkeiten werden von Ihnen erwartet:

  • Im Baustein Grundlagen
    • erarbeiten der notwendigen Theorie.
  • Im Baustein Übung
    • lesen Sie sich die Rahmenbedingungen der Übung durch.
  • Im Baustein Anwendung
    • bekommen Sie eine Aufgabe gestellt.
  • Im Baustein Reflexion
    • erhalten Sie eine kurze Zusammenfassung der Ergebnisse.

Grundlagen

Simulationsbeschreibung

Dieses Kapitel stellt die Simulationsumgebung sowie den simulierten mobilen Roboter Turtlebot3 Burger vor.

Mobiler Roboter - Turtlebot3 Burger

Der Turtlebot3 Burger ist ein mobiler, kosteneffizienter, personalisierter Roboter, welcher über die von Robotis Bioloid entwickelte Open Source Software betrieben wird. Er ist mit allen benötigten Sensoren ausgesattet, um seine Umgebung zu kartographieren und darin zu arbeiten. Die folgende Abbildung zeigt die Komponenten des Turtlebot3 Burger.
Turtlebot3 Overview
Systemübersicht Turtlebot3 Burger modifiziert aus: https://www.slideshare.net/RobotisJapan/170520-10ros-tb3

Der 360°LIDAR wird während dieser Übung verwendet, um unter zuhilfe Nahme von gmapping eine Karte der Umgebung zu erstellen und sich gleichzeitig mit Hilfe der Advanced Monte Carlo Localization (AMCL) zu lokalisieren. Dies ist bekannt als das Simultaneous Localization and Mapping (SLAM) Problem.

Simulationsumgebung - GAZEBO

Die Robotersimulation ist ein unverzichtbares Werkzeug in der Toolbox jedes Robotikers. Ein gut entwickelter Simulator ermöglicht es, Algorithmen schnell zu testen, Roboter zu entwerfen, Regressionstests durchzuführen und KI-Systeme anhand realistischer Szenarien zu trainieren. Gazebo bietet die Möglichkeit, Populationen von Robotern in komplexen Innen- und Außenbereichen präzise und effizient zu simulieren. Eine robuste Physik-Engine, hochwertige Grafiken und komfortable programmatische und grafische Oberflächen stehen in GAZEBO zur Verfügung.
Diese Übung verwendet GAZEBO als physikalische Simulationsumgebung, um die oben genannten Aktoren und Sensoren des mobilen Roboters sowie ein automatisch erzeugtes Labyrinth zu simulieren. Die nächste Abbildung veranschaulicht eine laufende Simulation des Labyrinths und des mobilen Roboters. Zu beachten ist, dass beim Starten des Explorer-Knotens wie unten beschrieben (siehe 3. Setup) diese grafische Benutzeroberfläche von GAZEBO aus Performancegründen nicht geöffnet wird, sondern RVIZ zur Visualisierung der Sensormesswerte und der Umgebung geöffnet wird.
GAZEBO

Erkundungsalgorithmen

Dieses Kapitel stellt Pseucodes für die Erkundungsverfahren Rapidly Random Search Tree Exploration (RRT) sowie Wall Follow Exploration (WF) zur Verfügung. Selbsverständlich können diese Algorithmen bei der Anwendung der Onlineübung angepasst oder ausgetauscht werden. Unabhängig welcher Algorithmus verwendet wird, gilt es zu beachten, dass das LIDAR-System am Turtlebot3 Burger eine maximale Reichweite von 3,5 m aufweist.

Rapidly Random Search Tree Exploration

Im Allgmeinen ist das RRT Verfahren ein Suchalgorithmus, das stochastisch in hochdimensionalen Räumen nach möglichen Richtungen sucht. In der Robotik wird der Algorithmus und seine Variationen oft für Fortbewegungsplanung oder Erkundungsaufgaben verwendet. Der nachstehende Pseudocode gibt eine Übersicht über die benötigten Schritte, die zur Implementierung des RRT Verfahrens notwendig sind.
procedure RRT {
    for < itr <= MAXitr > {
        N = <n; get_position()i>        #N visited nodes as vector
        i ~ U(0,N)                      #Take random sample from LIDAR msg M
        P = gen_pose(M[i])              #Generate a pose using the sample and M
        p = transform_pose(P)           #Transform P to map coordinate frame
        if < compare_nodes(p; N) > {
            sendGoal(p)
            while < curr_time - start_time <= timeout > {
                wait_for_feedback()
            }
        }
    }
}

Wall Follow Exploration

Erkundungsstrategien unterscheiden sich im Ausmaß zu welchem die Erkundungsumgebung zur Steuerung der Erkundungsbewegungen verwendet wird. WF Verfahren basieren lediglich auf Distanzsensoren, die zum Erkunden der Umgebung die Entfernungen zu Wänden messen. Der nachstehende Pseudocode gibt eine Übersicht über die benötigten Schritte, die zur Implementierung des WF Verfahrens notwendig sind.
procedure FOLLOW_WALL {
	find_nearest_wall(M)		#Find the nearest wall using the LIDAR msg M
	drive_to_nearest_wall(M)	#Geometrically calculate the desired distance to the wall and publish it.
	while < itr <= MAXitr > {
		calc_next_pose()		#Here is the actual wall following executed
		itr++
	}
}

Übung

Download der benötigten Software

Docker

Diese Software wird unter Windows und MacOS benötigt. Nach dem Download der Software (HIER) kann sie wie gewohnt installiert werden.

X11-Server

Diese Software wird lediglich unter Windows benötigt und kann HIER heruntergeladen und anschließend installiert werden.

ROS Package

Dies ist eine zusätzliche Software (für alle Betriebssysteme erforderlich), die für die erfolgreiche Erstellung des Docker Containers benötigt wird und steht HIER zum Download zur Verfügung. Die Inhalte der komprimierten Datei (ROS_Gazebo.zip) werden im Leitfaden (Manual.pdf) in den Kapiteln 1.3, 1.4 sowie 1.5 beschrieben. Für die Installation sind folgende Schritte durchzuführen:
  • Extrahieren des Ordners
  • Doppelklick auf build_docker_container.bat

Starten der Software

Docker

Die Software wird einfach über das Programm Docker Desktop gestartet, was anschließend als Benachrichtigung angezeigt wird.
Der Startvorgang kann einige Zeit in Anspruch nehmen. Deshalb muss auf die Benachrichtigung bezüglich des erfolgreichen Startens gewartet werden.
Der aktuelle Status des Dockers kann ebenfalls im System Tray (Menübar unter MacOS) abgelesen werden.

X11-Server

Wie bereits beschrieben wird diese Software nur unter Windows benötigt. Dazu wird das Programm XLaunch gestartet. Danach erscheint ein Fenster mit Einstellungen, wobei die voreingestellten Einstellungen mit Klick auf Next übernommen werden können. Es können alle Voreinstellungen, bis das Fenster mit dem Titel Extra Settings erscheint, übernommen werden. In den Extraeinstellungen muss die abgebildete Konfiguration verwendet werden.
VcXsrv config
Abschlißend wird XLaunch mit Klick auf Finish gestartet. Zusätzlich muss beachtet werden, dass VcXsrv sowohl für öffentliche als auch für private Netwerke in der Firewall freigegeben ist.

ROS Package

Als letzter Schritt, bevor mit dem Programmieren begonnen werden kann, muss der Docker Container gestartet werden. Dies erfolgt über folgende Schritte:
  • Doppelklick auf run_docker.bat
  • Beim ersten Start benötigt Docker die Erlaubnis den Ordner catkin_ws in den Docker-Container zu mounten. Dies ist notwendig, um die Änderungen, die Sie am Code vornehmen, wenn der Container geschlossen wird, nicht zu verlieren.
  • Starten der Programmierung!

Erkunden des Labyrinths

Nachdem die notwendige Software sowohl installiert als auch gestartet wurde, kann die Simulation des Turtlebot3 Burger beginnen. Nachfolgend wird beschrieben, wie ein vorgefertigter Programmcode des ROS Packages zur Simulation der Umgebungserkundung gestartet wird.
Als erster Schritt muss ein Docker Container erzeugt werden. Anschließend kann die Simulation mit dem Befehl start-maze.sh gestartet werden. Nachdem die Worte "Finished maze generation, Press enter to start gazebo" am Terminalfenster erschienen sind, wird die ganze Simulation durch Bestätigen mit der Eingabetaste gestartet. Danach sollten einige Fenster erscheinen, die in der nächsten Abbildung dargestellt sind.
Geöffnete Fenster
Im Laufe der Zeit erkundet der mobile Roboter die Karte anhand einer exemplarischen Implementierung eines RRT Algorithmus. Die Erkundung des Labyrinths wird im nachfolgenden Video gezeigt.
Der Beispielcode funktioniert nur, bis der catkin_ws Arbeitsbereich zum ersten Mal gebaut wird, da dann die Binärdateien überschrieben werden. Implementieren und testen Sie Ihren Explorer-Algorithmus! Eine detaillierte Erklärung dazu finden Sie in der Datei example.hpp, welche sich im ROS-Package unter ROS_Gazebo\catkin_ws\src\fhtw_maze_explorer\include\fhtw_maze_explorer befindet.

Anwendung

Im vorigen Abschnitt wurde anhand einer Beispiellösung demonstriert, wie die Simulation korrekt gestartet wird. Das Endergebnis der Aufgabe, also das vollständige Labyrinth, kann dadurch vollständig ermittelt werden. Da der Algorithmus nicht zugänglich ist, soll nun ein selbstgeschriebener Algorithmus zur Erkundung des Labyrinths verwendet werden. Das Erkundungsverfahren ist dabei frei wählbar. Als zusätzliche Übung können auch die Laufzeiten verschiedener Verfahren miteinander verglichen werden.
Die folgende Beschreibung führt durch die notwendigen Schritte zum Erstellen und Testen neu implementierter Algorithmen.
  • Neue Algorithmen müssen in der Datei example.hpp, das im Verzeichnis /include/fhtw_explorer/ abgelegt ist, implementiert werden. Diese Datei überschreibt die Base Class Function, um den neuen Algorithmus verwenden zu können. Nähere Informationen befinden sich in der Datei als Kommentare.
  • Um den neuen Algorithmus aus der Datei example.hpp zu testen/starten, müssen folgende Befehle ausgeführt werden:
    1. cd /root/catkin_ws
      Befehl um ins catkin-Verzeichnis zu gelangen
    2. catkin_make
      Befehl um den Arbeitsbereich und das fhtw_maze_explorer Package zu generieren
    3. start-maze.sh [-Options]
      Befehl um den maze-Generator sowie GAZEBO, RVIZ und den ROS Node mit folgenden Optionen zu starten:
      -s: Labyrinthgröße 10x10
      -m: Labyrinthgröße 25x25
      -l: Labyrinthgröße 50x50
      -d: Debug des maze_explorer

Reflexion

Nach Abschluss der Übung sind Sie nun in der Lage…

  • … mit der Simulationsumgebung GAZEBO in Kombination mit ROS zu arbeiten.
  • … ein Verständnis für die Datenstruktur in ROS zu entwickeln.
  • … ein simuliertes Labyrinth mit einem mobilen Roboter zu erkunden.

Selbstevaluierung

Nachfolgend werden Fragen angezeigt, die Sie nach erfolgreicher Absolvierung der Onlineübung beantworten können. Die Lösung kann durch Klicken auf die Frage angezeigt werden.

Was ist der Unterschied zwischen Actions und Services in ROS?

Ein Action ist eine asynchroner Aktivität, die es erlaubt andere Dinge zu machen, bis das Ergebnis des Requests vorliegt. Im Gegensatz dazu handelt es sich bei Services um synchrone Aktivitäten. Es muss auf das Ergebnis gewartet werden, bis andere Dinge erledigt werden können. Deshalb wird auch bei Services von blocking und bei Actions von non-blocking Aktivitäten gesprochen.

Wie sind LaserScan Messages strukturiert?

LaserScan ist ein spezielles Format, das für Roboter mit Laserscannern eine einfache Methode zur Informationsaufbereitung bietet. Es handelt sich um einen Message-Typen, der folgendermaßen strukturiert ist:
  • Header header (Zeitstempel des ersten emittierten Laserstrahls)
  • float32 angle_min (Startwinkel des Scans)
  • float32 angle_max (Endwinkel des Scans)
  • float32 angle_increment (Zeit zwischen Messungen)
  • float32 scan_time (Zeit zwischen Scans)
  • float32 range_min (Minimale Distanz)
  • float32 range_max (Maximale Distanz)
  • float32[] ranges (Distanzbereichdaten)
  • float32[] intensities (Intensitätsdaten)

Wie funktioniert der Debug von ROS Nodes?

Da ROS Nodes als Prozesse mit einer PID im Betriebssystem laufen, kann der Debug mithilfe von Standardtools erfolgen. Beispielsweise kann das UNIX-Programm gdb verwendet werden.

Wie kann rosnode info beim Debuggen von ROS Nodes helfen?

Durch den Befehl rosnode info werden Informationen des übergebenen Nodes angezeigt. Es werden dabei ebenfalls Informationen zu Publications und Subscriptions ausgegeben.

Take-Home-Messages

  • Mithilfe von Docker-Containern können sehr einfach und ohne Installation Anwendungspakete als einfache Dateien transportiert und auf unterschiedlichen Systemen bereitgestellt werden.
  • Simulationen helfen dabei, Software für reale Hardware zu erstellen, was Kosten und Entwicklungszeit reduziert.
  • Es gibt verschiedene Algorithmen, die zur automatischen Umgebungs-Erforschung verwendet werden können. Diese unterscheiden sich sowohl in Komplexität als auch notwendiger Zeit für eine vollständige Kartierung.
  • LiDAR-Sensoren auf mobilen Robotern eignen sich optimal um umliegende Wände zu detektieren und damit Karten zu erstellen.
  • SLAM (Simultaneous Localization And Mapping) beschreibt die gleichzeitige Umgebungskartierung sowie Lokalisierung.

Weiterführende Themengebiete

This site uses cookies

Cookies help us to improve your browsing experience and analyze site traffic. Find out more on how we use cookies.
I accept cookies
I refuse cookies