Contents
Was ist ROS?
ROS ist ein Open Source, Meta-Betriebssystem für deinen Roboter. Es stellt Dienste zur Verfügung, welche du von einem Betriebssystem erwartest: Hardwareabstraktion, Gerätetreiber, Utilityfunktionen, Interprozesskommunikation und Paketmanagment. Des Weiteren sind Werkzeuge und Bibliotheken für das Beziehen, Builden, Schreiben und Ausführen von Code über mehrere Computer vorhanden. ROS kann in einigen Aspekten mit anderen Roboterframeworks verglichen werden. Dazu gehören: Player, YARP, Orocos, CARMEN, Orca, MOOS sowie Microsoft Robotics Studio.
Der ROS Laufzeitgraph ist ein Peer-to-Peer Netzwerk von Prozessen, welche via die ROS Kommunikationsinfrastruktur lose gekoppelt sind. ROS stellt verschiedene Kommunikationsarten zur Verfügung.
Die synchrone Kommunikation über Services (ähnlich einem Remote Procedure Call)
Asynchrones Streamen über Topics
Datenspeicher auf dem Parameter Server
Details sind im Konzept zu finden.
ROS ist kein Echtzeit Framework obwohl es möglich ist ROS mit Echtzeitkomponenten zu vereinen. Der PR2 Roboter von Willow Garage verwendet pr2_etherCAT, welches Nachrichten zwischen ROS und Echtzeitprozessen austauscht. Des Weiteren besteht eine nahtlose Integration zum Orocos Framework
Ziele
Viele fragen sich worin sich ROS von anderen Roboter Frameworks unterscheidet. Diese Frage ist schwer zu beantworten, da ROS nicht zum Ziel hat ein Framework mit den meisten Funktionen zu sein. Stattdessen ist der Hauptzweck von ROS die Wiederverwendung von Code in der Roboterforschung und -entwicklung. ROS ist ein verteiltes System von Prozessen (Nodes), welches die lose Kopplung von individuellen Komponenten ermöglicht. Für die einfache Handhabung und Verteilung werden diese in Paketen und Stacks organisiert. ROS unterstützt zudem den Zusammenschluss von Code Repositories, wodurch auch die Zusammenarbeit über verteilte Infrastrukturen ermöglicht wird. Dieses Design, vom Dateisystem bis zur Community, ermöglicht unabhängige Entscheidungen bezüglich Entwicklung und Implementierung, welche mit Hilfe der ROS Infrastrukturwerkzeuge vereint werden können.
Weitere Zielsetzungen:
- Thin: Für ROS geschriebener Code soll auch mit anderen Roboter Frameworks verwendet werden können. ROS wurde bereits erfolgreich mit anderen Systemen kombiniert (darunter OpenRAVE, Orocos, Player).
- ROS-agnostic libraries: Das bevorzugte Entwicklungsvorgehen ist Bibliotheken mit klaren Schnittstellen zu schreiben, welche nicht an ROS gebunden sind.
Language independence: Das ROS Framework kann einfach in jeder modernen Programmiersprache implementiert werden. Es bestehen Implementierungen in Python, C++ und Lisp, für Java und Lua existieren experimentelle Bibliotheken.
Easy testing: ROS verfügt über ein eingebautes Unit- und Integrationtest Framework rostest.
- Scaling: ROS funktioniert in grossen Laufzeitumgebungen sowie auch für grosse Entwicklungsprozesse.
Betriebssysteme
Zurzeit läuft ROS nur auf Unix-basierten Plattformen. Die Software wird hauptsächlich für Ubuntu und Mac OS X getestet, die Community hat jedoch auch Hilfestellung für Fedora, Gentoo und andere Linux Systeme geleistet.
Eine Portierung für Microsoft Windows ist möglich, jedoch noch im experimentellen Stadium.
Releases
Das ROS Kernsystem wird zusammen mit nützlichen Werkzeugen und Bibliotheken regelmässig als ROS Distribution ausgeliefert. Diese ähnelt einer Linuxdistribution und stellt ein Set kompatibler Software zur Verfügung.
Mithilfe
Weil ROS unter einer Open Source Lizenz steht, hoffen wir, dass du dir Gedanken darüber machst an ROS mitzuwirken. Mehr Informationen dazu findest du unter Contributing.