Informatik Einführung in das ROS Robot Operating System Robotik / AMR / Sensorik Jan Bühler Mannheim, 17.10.2011 Hochschule Mannheim University of Applied Sciences
Inhalt 1.Aufgaben des ROS Robot Operating System IPC, Pakete (Packages), Stacks, Messages, Services, Nodes und Topics 2.Funktionalitäten Publisher und Subscriber 3.Vorhandene wichtige Stacks Navigation-Stack, Koordinatentransformationen über TF 4.ROS - Visualisierung rviz, rosbag, rxbag rxplot, rxgraph 5.Beispiel am Pioneer3dx - Roboter 6.Zusammenfassung
1. Aufgaben des ROS Robot Operating System Übersicht: Allgemeines über ROS Interprozesskommunikation (IPC) Paketverwaltung / Packages und Stacks Messages Services Nodes Topics
1. Aufgaben des ROS Allgemeines über ROS - Releases C TURTLE DIAMONDBACK ELECTRIC
1. Aufgaben des ROS Allgemeines über ROS - Facts Open Source Operating System für Roboter Es bietet die Funktionalitäten eines Betriebssystems Hardware-Abstraktion, Unterste Schicht Geräteverwaltung Nachrichtenverwaltung zwischen Prozessen Möglichkeit der gleichzeitigen Entw. und Ausf. auf mehreren Rechnern Momentan bester Support unter Ubuntu (Version ab 9 aufwärts) Steuerung der versch. Progr., die gleichzeitig auf dem Roboter ablaufen ROS IPC nicht direkt echtzeitfähig Bereitstellung von Anzeigetools Bietet Schnittstellen für Sensoren und Programme Kann sowohl in Python als auch in C++ geschrieben werden
1. Aufgaben des ROS Interprozesskommunikation (IPC) Problematik der Kommunikation zwischen verschiedenen Systemen des Roboters Problematik bei Mikrocontroller zu PC oder umgekehrt Problematik bei Mikrocontroller zu Mikrocontroller Lösung durch IPC mit TCP/IP Sicherheitseinstellung bei der Übertragung Anforderung an die Geschwindigkeit / Schnelligkeit der Kommunikation Koordination von Nachrichten durch zentralen Master
1. Aufgaben des ROS Paketverwaltung - Packages ROS ist durch Softwarepakete (sogn. Packages) aufgebaut Ein Package beinhaltet Laufzeitprozesse (Nodes) ROS abhängige Bibliotheken Datensätze Konfigurationsdateien 3 rd Party Software Libs usw. in der mainfest.xml definiert Packages sind dazu da um Code wiederverwendbar zu machen (code reuse)
1. Aufgaben des ROS Paketverwaltung - Stacks Sammlung von Paketen (Packages) Definiert in der Datei stack.xml Der Sinn ist, dass Stacks die Verteilung und Verwendbarkeit von Code vereinfachen Meist viele Packages ähnlicher Aufgaben in einem Stack verpackt
1. Aufgaben des ROS Message (msg) Messages werden verwendet um unter ROS Nachrichten zwischen Knoten und Topics auszutuaschen Dafür verwendet ROS eine einfache Beschreibung der Datentypen in Textdateien Durch diese Beschreibung kann für unterschidliche Sprachen Code autogeneriert werden Diese sind in.msg-dateien im msg- Unterverzeichnis eines ROS-Pakets abgelegt Eigene Message-Typen sind mit Paket Ressource-Namen bezeichnet Standard Messages sind mit std_msg/msg/string.msg bezeichnet
1. Aufgaben des ROS Service (srv) ROS verwendet eine eigene vereinfachte Service Description Language ("srv") für die Beschreibung von ROS Service-Typen Setzt direkt auf die ROS msg-format auf Ermöglicht die Anfrage / Antwort-Kommunikation zwischen den Knoten Service-Beschreibungen sind in.srv-dateien im srv- Unterverzeichnis eines Pakets gespeichert Service-Beschreibungen werden für die Verwendung mit dem Paket Ressource-Namen bezeichnet Z. B.: wird die Datei robot_srvs/srv/setjointcmd.srv als Service robot_srvs/setjointcmd bezeichnet
1. Aufgaben des ROS Nodes Der Nachrichtenaustausch findet bei Nodes durch 3 Möglichkeiten statt Parameter Server Topics Services Nodes werden wie in einem Graph angeordnet In einem System laufen viele Nodes Parallel Diese werden zu beginn gestartet Beispiele sind Nodes für: Laserscanner Kinect Pfadplanung usw.
1. Aufgaben des ROS Topics Topics verhalten sich wie ein virtuelles BUS-System Nodes können von Topics lesen (subscribe) Nodes können an Topics senden (publish) Es gibt keine Begrenzung wie viele Nodes publsih oder subscribe auf ein Topic machen
2. Wichtige Funktionalitäten Talker und Listener Publisher / Subscriber Publish data to topic Topic: /camera/depth/points Topic... Subscribe to topic Subscribe to topic Node: Object recognition Node: Obstacle avoidance
3. Vorhandene wichtige Stacks Übersicht: TF Koordinatentransformation Navigationstack URDF - Modelle
TF Koordinatentransformation Pioneer3dx-Bot Pr2-Bot
Navigationstack Wertet Sensordaten aus z.b.: Laserdaten Baut daraus mit gmapping (ebenfalls ein ROS-Stack) eine Begehbarkeitskarte Warum? Zur Kollisionsvermeidung Bei erfolgreicher Erstellung einer Map kann dann ein Ziel übergeben werden Pfadplanung durch Navigationstack Kollisionsvermeidung Reaktion auf sich ändernde Umgebung Aufbau einer globalen Karte
Navigationstack global map:
Navigationstack local map:
URDF - Modelle
4. ROS - Visualisierung Übersicht: rviz rosbag rxbag rxplot rxgraph
rviz Startbefehl: rosrun rviz rviz
rosbag Rosbag record hört auf den angegebenen Topics zu und zeichnet die Aktivität auf Rosbag play kann dies wiedergeben Gut zu Demonstrationszwecken Gut um Referenzdaten zu erzeugen
rxbag
rxplot
rxgraph
5. Beispiel am Pioneer3dx - Roboter
6. Zusammenfassung Was ist ROS? Wie wird Kommuniziert? Was ist TF? Was ist der Navigation Stack? Was gibt es für Visualisierungstools?
Präsentationsabschluss Danke für Ihre Aufmerksamkeit Robotik / AMR / Sensorik Jan Bühler Mannheim, 17.10.2011