Читать книгу Roboter mit ROS - Murat Calis - Страница 6
1ROS – Robot Operating System
ОглавлениеDas Robot Operating System wurde entwickelt, um das Rad nicht jedes Mal neu zu erfinden. Es stehen etliche Pakete für ROS zur Verfügung, sodass Treiberentwicklungen der Vergangenheit angehören und man schneller mit den höheren Schichten der Robotik beginnen kann. Dazu gehören Gesichtserkennung, Objekterkennung, autonomes kollisionsfreies Fahren, Kartografierung, Spracherkennung und kollisionsfreie Kinematik, um nur einige zu nennen. Mittlerweile ist ROS ein De-facto-Standard in der Robotik. Die NASA verwendet ROS für Robonaut2 auf der ISS1, um nur ein prominentes Beispiel zu nennen. ROS hat mittlerweile über 7,5 Millionen Codezeilen. Der Linux-Kernel 4.14 hat ca. 25 Millionen Zeilen. Wenn wir zehn bis 20 Jahre in die Zukunft schauen, sollte niemand mehr die hardwarenahen Schichten eines Roboters programmieren müssen.
Das Robot Operating System ist nicht, wie es der Name andeutet, ein Betriebssystem. ROS wird wie ein gewöhnliches Programm auf einem Betriebssystem installiert. Nach der Installation von ROS können eigene Robotik-Programme die Funktionalität und Bibliotheken von ROS nutzen.
ROS ist ein Robotik-Framework, basierend auf dem publish/subscribe-Prinzip. Darin kommunizieren Programme über ein Nachrichtensystem miteinander, vergleichbar der Interprozesskommunikation in herkömmlichen Anwendungen. Der Vorteil ist, dass der Absturz eines Programms nicht zwingend das gesamte ROS-System zum Absturz bringt.
ROS-Nachrichten werden per TCPROS, einem Protokoll basierend auf TCP/IP, übertragen und können mit Wireshark mitgelesen werden. Dies erleichtert nicht nur die Fehlersuche in verteilten ROS-Anwendungen, sondern ermöglicht auch einen Einblick in die Kommunikation zwischen den sogenannten ROS-Knoten.
Ein ROS-Netzwerk ist praktisch ungeschützt gegen Verbindungen aus dem lokalen Netzwerk, da es keine Authentifizierungsmöglichkeit wie bei HTTP gibt. Es ist daher empfehlenswert, ein VPN oder OpenVPN zum Schutz der Netzwerkkommunikation einzurichten.
Ursprünglich wurde ROS unter dem Namen Switchyard am Stanford Artificial Intelligence Laboratory entwickelt und später von Willow Garage weiterentwickelt, die auch den PR2-Roboter konstruiert haben. Seit April 2012 ist die Open Source Robotics Foundation (OSRF) für ROS verantwortlich. Über 3.000 Software-Pakete gibt es bereits.
Mittlerweile ist ROS unter dem Begriff ROS-Industrial auch in der Produktion und in namhaften Robotern im Einsatz. Je mehr ROS in der industriellen Fertigung eingesetzt wird, desto mehr entsteht ein Bedarf an Spezialisten, die sich mit ROS auskennen.
Die skizzierten Eigenschaften von ROS bringen mit sich, dass ROS nichts für schwache Mikrocontroller ist. Wer einen Roboter bauen möchte, der Hindernissen ausweichen kann, braucht kein Robot Operating System. Dazu genügen ein Infrarotsensor, ein Arduino mit etwas Programmierlogik und ein fahrbarer Untersatz. Die Zeit, die man zum Erlernen des ROS-Systems benötigt, würde weit über die Zeit hinausgehen, die wir für die Entwicklung des eben genannten Roboters benötigen.
Meine ersten Erfahrungen mit ROS machte ich, als mein Bioloid-Premium Humanoide mit ROS aufgerüstet werden sollte. Nach langen Recherchen, welche Computerplattform es nun werden sollte, lag der Raspberry Pi 2012 auf meinem Tisch. Damals wurde der Kleinstrechner von ROS nicht unterstützt und man war gezwungen, die ROS-Dateien von Quellcode in Maschinencode zu kompilieren. Auf einem Raspberry Pi mit 256 MB RAM und mit einem wegen diverser Abstürze während des Kompilierens nicht übertakteten 700-MHz-Prozessor ist das eine langwierige Angelegenheit. Nachdem auch OpenCV für die Gesichtserkennung kompiliert war, trat die Ernüchterung bei drei bis vier Bildern pro Sekunde ein.
Die meiste Zeit programmiere ich auf einem separaten, leistungsstarken Entwicklungsrechner und teste die Ergebnisse dann auf dem kleinen Pi. So ist das auch heute noch, mit dem Unterschied, dass der Raspberry Pi zwischendurch von einem Odroid U3 und dieser aktuell von einem Odroid XU4 abgelöst wurde. Die Leistung hat sich innerhalb von fünf Jahren gefühlt verzehnfacht, denn es laufen mittlerweile sehr leistungshungrige ROS-Pakete auf dem Einplatinenrechner wie Navigation, MoveIt! und OpenCV mit akzeptablen sieben Bildern pro Sekunde.
Der Trend zu leistungsstarken Einplatinenrechnern wird weitergehen. Schon stehen Kleinstcomputer mit Intel-Atom-Prozessoren, wie der Intel Joule zur Verfügung. Der Intel NUC zählt dabei nicht zu den Kleinstrechnern, ist aber ein beliebter Robotik-Rechner mit akzeptabler Größe, in welchem Ubuntu und ROS gut zusammenspielen.
In den folgenden Kapiteln lernen wir Schritt für Schritt ROS kennen, indem wir:
ROS installieren
ROS-Grundlagen besprechen
ROS-Hilfswerkzeuge einsetzen