Die wichtigste Anlaufstelle für Fragen, welche irgendwie mit ROS zutun haben, ist das ROS-Wiki. Bitte darauf achten, dass sich die Tutorials / Anleitungen auf unsere Version bezieht. Eingesetzt wird aktuell das Betriebssystem Ubuntu 16.04 LTS (Xenial) mit ROS Kinetic Kame und dem Build-System catkin.
Übersicht der Links zum schnellen Zugriff:
- ROS-Wiki - Erste Anlaufstelle für Informationen bzgl. ROS
- Installationsanleitung unter Ubuntu
- Environment Variables - Hier ist auch die
ROS_MASTER_URI
zu finden - Network-Setup - Insbesondere die Einträge in der Hosts-Datei
- Environment Variables - Hier ist auch die
- VirtualBox - Software zur Virtualisierung von Betriebssystemen
- Introduction
- Concepts
- Nodes
- Topic
- Nachrichtentyp
- standardmäßige Datentypen -
common_msgs
stack - Packages
- Bag-File - Aufnahmetool
- RQT - Plugin-Framework mit hilfreichen Plugins
- RViz - Visualisierung
- Tutorials
Eine ROS Installation für Ubuntu existiert auf dem Roboter bereits. Für arbeiten am eigenen Laptop kann allerdings eine eigene Umgebung aufgesetzt werden. Anstelle einer nativen Installation kann dies auch in einer virtuellen Umgebung geschehen. Hierfür kann man die Virtualisierungsumgebung VirtualBox verwenden, wodurch sich Ubuntu wie ein art "Programm" starten lässt. Für die Installation von ROS ist die Variante "Desktop-Full Install" zu empfehlen.
Soll die eigene Umgebung mit dem Roboter kommunizieren sind im Wesentlichen zwei Dinge notwendig:
- Der Rechner, welcher als Master fungiert muss bekannt sein. Dies lässt sich mit dem Setzen einer Umgebungsvariable bewerkstelligen. Anstelle einer IP-Adresse, wird allerdings der "Name des Rechners" angegeben.
- Der logische Name muss sich zu einer IP-Adresse auflösen lassen. Dies geschieht nicht automatisch. Hierfür muss der Name explizit gesetzt werden. Hierfür wird am besten ein Eintrag (Punkt 2.3) in der "hosts" datei (z.B.
/etc/hosts
) hinzugefügt. Wichtig: Da sich beide Rechner finden müssen, muss man den Eintrag auf beiden Rechner hinzufügen.
Was ROS ist und welche Ziele verfolgt werden, ist in der Einführung festgehalten. Weiterführend werden auch die entsprechenden Konzepte von ROS beschrieben. Da dies doch recht technisch formuliert ist und sehr viele neue Informationen enthält, hier ein kurzer Einstieg.
Ein Roboter(-System) besteht aus mehren Funktionalitäten. Diese Funktionalitäten werden in eigenständigen Programmen abgebildet. In ROS werden solche Programme als "Nodes" bezeichnet und besitzen einen eigenen Namen. Nodes werden in Packages zusammengefasst, welche eine Organisationseinheit darstellen. Sollen mehrere Nodes miteinander kommunizieren, geschieht dies über einen Austausch von Nachrichten. Die Nachrichten haben dabei einen speziellen Nachrichtentyp, wie z.B. Boolean, Integer, String, etc. bei einfachen Nachrichtentypen. ROS unterstützt bereits standardmäßig Datentypen welche für Roboter-Systeme häufig benötigt werden. Der Austausch von Nachrichten findet über Nachrichtenkanäle statt, welche ebenfalls einen eigenen Namen besitzen. Solche Kanäle werden in ROS als "Topic" bezeichnet. Dieses Kommunikationsmodell wird auch "publish / subscribe pattern" bezeichnet. Alleine hierdurch ist es schon möglich, Informationen zwischen zwei Nodes auszutauschen, auch wenn diese sich auf unterschiedlichen Rechnern befinden. Das tatsächliche Übertragen und Empfangen der Daten wird dabei von ROS abgenommen und im Betrieb durch den ROS-Master gesteuert.
Mit den eben beschriebenen Mechanismen sollten sich die meisten Probleme lösen bzw. Funktionalitäten umsetzen lassen.
Darüber hinaus sind in ROS mehrere Werkzeuge verfügbar, welche die Arbeit unterstützen.
So können online mit dem Programm rosbag
Daten der Topics als Bag-File aufgezeichnet und später wieder offline abgespielt werden.
Mit RQT stehen viele Plugins (anzeigen der Topics sowie Nachrichten, plotten von Werten, etc.) als GUI zur Verfügung.
Und Visualisierungen (Karten, Punktewolken, Robotermodelle, ...) erhält man mit RViz.
Wer zum ersten mal mit ROS in Berührung kommt und noch immer verwirrt ist macht nichts falsch, das ist normal! Genau hierfür gibt es eine vielzahl von Tutorials welche einen Schritt für Schritt an die arbeit mit ROS heranführen. Die nachstehende Auswahl gilt als Empfehlung für den Einsteig.
- (1) Installing and Configuring Your ROS Environment
- (2) Navigating the ROS Filesystem
- (3) Creating a ROS Package
- (4) Building a ROS Package
- (5) Understanding ROS Nodes
- (6) Understanding ROS Topics
- (8) Using rqt_console and roslaunch
- (11) Writing a Simple Publisher and Subscriber (C++)
- (12) Writing a Simple Publisher and Subscriber (Python)
- (13) Examining the Simple Publisher and Subscriber
- (17) Recording and playing back data
- (19) Navigating the ROS wiki