ROS steht für „Robot Operating System“ (Robotik-Betriebssystem) und ist ein flexibles Open Source „Framework“.
Ein Framework ist ein Gerüst für die vielen kleinen Bestandteile eines Codes. Es kann als eine Art „Vorprogrammierung“ verstanden werden, die verschiedene Funktionen und Elemente bereits enthält und das Programmieren somit erleichtert. [1]
Das ROS-Framework wurde entwickelt, um die Entwicklung von Robotersoftware zu erleichtern. Obwohl der Name „Betriebssystem“ suggeriert, dass es sich um ein klassisches Betriebssystem handelt, ist ROS eher eine Sammlung von Tools, Bibliotheken und Konventionen, die die Entwicklung, das Testen und den Betrieb von Robotersoftware unterstützen.
ROS wurde ins Leben gerufen, um der Tendenz der Robotikforschung entgegenzuwirken, ständig „das Rad neu zu erfinden“. Lange war es in der Robotikforschung so, dass jede Forschungsgruppe über ein eigenes Framework verfügte, das verschiedene Aspekte der Robotik abdeckte. Ob Lösungen für die präzise Steuerung der Roboterbewegungen, die sichere Navigation im Umfeld, die Berechnung komplexer kinematischer Bewegungen oder spezialisierte Treiber für die Robotikhardware und die Sensorschnittstellen – die Lösungen waren da, wurden aber nicht geteilt oder waren schwer integrierbar. Durch das gemeinsame Framework wurde es möglich, Forschungsarbeit effizienter zu gestalten und sich auf die Entwicklung innovativer Lösungen zu konzentrieren, ohne dabei grundlegende Funktionen wiederholt neu entwickeln zu müssen.
Komponenten
ROS besteht aus einer Vielzahl von Softwaremodulen, darunter Bibliotheken, verschiedene Frameworks, Treiber und Tools. Diese Komponenten sind in Paketen organisiert, die verschiedene Funktionen abdecken, wie z.B. Bildverarbeitung, Bewegungssteuerung, Sensordatenverarbeitung und mehr.
ROS Versionen
Aktuellster release (stand August 2023): Noetic Ninjemys (ROS) Iron Irwini (ROS 2)
Programmiersprachen und Werkzeuge
ROS unterstützt verschiedene Programmiersprachen, darunter C++, Python und mehr. Dies ermöglicht es Entwicklern, in ihrer bevorzugten Sprache zu arbeiten. Es bietet eine breite Palette von Werkzeugen zur Unterstützung der Entwicklungs- und Testphase. Dazu gehören Simulationsumgebungen wie Gazebo, Werkzeuge zur Visualisierung von Daten, Debugging-Tools und mehr.
Last but not least: Die ROS-Community
ROS hat durch Robotik-Konferenzen und zugehörigem Merchandise eine ausgesprochen aktive und wachsende Entwicklergemeinschaft.
ROS gilt als das umfangreichste Open Source Robotik Framework, das von einer dynamischen und vielfältigen Gemeinschaft getragen wird. Mit mehr als 300 aktiven Kontributoren und Programmierern sowie über 2000 Mitgliedern auf der Mailingliste bildet ROS eine lebendige Plattform für den Austausch von Wissen und Lösungen. Diskussionen und Hilfestellungen finden auf dem ROS Discourse Forum statt, einer Online-Plattform unter: https://discourse.ros.org/. Jährlich wird eine neue ROS-Distribution veröffentlicht, die neueste Funktionen und Verbesserungen bringt. ROS rühmt sich mit der größten weltweiten Community in der Robotik, die größer ist als die der andere existierenden Robotik-Frameworks. Diese Community umfasst zahlreiche aktive Gruppen, die kontinuierlich an der Entwicklung von Treibern, Werkzeugen und Algorithmen arbeiten. Es existieren viele ROS-Pakete, die aktiv unterstützt und gewartet werden, was zu einer stabilen und wachsenden Plattform für die Entwicklung von Robotersoftware führt.
ROS vs. ROS 2
ROS (Robot Operating System) und ROS 2 sind zwei aufeinanderfolgende Versionen des Robotik-Betriebssystems. Die ursprüngliche Version von ROS (1.x) wurde entwickelt, um die gemeinsame Entwicklung von Robotersoftware zu erleichtern. Es war jedoch nicht von Anfang an auf Skalierbarkeit und industrielle Anforderungen ausgerichtet. ROS 2 wurde entwickelt, um die Schwächen von ROS zu überwinden. Es legt mehr Wert auf Skalierbarkeit, Zuverlässigkeit, Sicherheit und Interoperabilität. ROS 2 wurde unter Berücksichtigung von Industriestandards und verschiedenen Anwendungsbereichen entworfen. Zusammenfassend zielt ROS 2 darauf ab, die Schwächen von ROS zu überwinden und eine leistungsfähigere, flexiblere und besser skalierbare Plattform für die Entwicklung von Robotersoftware zu bieten. Je nach den Anforderungen des jeweiligen Projekts und den unterstützten Funktionen kann entweder ROS oder ROS 2 die bessere Wahl sein.
Die Hauptunterschiede liegen in:
Kommunikation: ROS: ROS verwendet eine Middleware namens „roscpp“ (C++) und „rospy“ (Python) für die Kommunikation zwischen Modulen. Diese Middleware hatte einige Einschränkungen in Bezug auf Skalierbarkeit und Zuverlässigkeit.
ROS 2: ROS 2 verwendet eine modulare Middleware (rclcpp für C++ und rclpy für Python), die das DDS (Data Distribution Service) Protokoll verwendet. Diese Middleware ist besser an die Anforderungen von verteilten und zuverlässigen Systemen angepasst.
Interoperabilität: ROS: ROS hat begrenzte Interoperabilität zwischen verschiedenen ROS-Distributoren und war nicht immer einfach mit anderen Kommunikationsprotokollen oder Frameworks zu integrieren.
ROS 2: ROS 2 wurde von Anfang an mit Interoperabilität im Hinterkopf entwickelt. Es erleichtert die Integration mit anderen Frameworks und ermöglicht die Kommunikation zwischen ROS 2-Distributoren sowie zwischen ROS 2 und nicht-ROS-Systemen.
Sicherheit: ROS: ROS hat nur begrenzte Sicherheitsfunktionen und war möglicherweise anfällig für potenzielle Sicherheitsrisiken.
ROS 2: ROS 2 legt mehr Wert auf Sicherheit und bietet Funktionen wie sichere Kommunikation und Benutzerrechteverwaltung.
Skalierbarkeit: ROS: ROS kann Schwierigkeiten bei der Skalierung von Systemen aufweisen, die viele Knoten und Kommunikationsaktivitäten hatten.
ROS 2: ROS 2 wurde mit Skalierbarkeit im Sinn entwickelt und ermöglicht die effiziente Handhabung von Systemen mit vielen Knoten und Kommunikationsanforderungen.
Echtzeitfähigkeit: ROS: ROS hat begrenzte Echtzeiteigenschaften und war nicht für streng echtzeitkritische Anwendungen geeignet.
ROS 2: ROS 2 enthält Unterstützung für echtzeitfähige Anwendungen und kann in Kombination mit Echtzeitbetriebssystemen verwendet werden.
Die Echtzeitfähigkeit eines Betriebssystems bezieht sich auf dessen Reaktionsfähigkeit, die es dem System ermöglicht, alle anstehenden Aufgaben und Funktionen unter jeglichen Zu- und Umständen zuverlässig erledigen zu können. „In Echtzeit“ ist also eine variable Größe, die sich an jeweiligen Anforderungen orientiert. [2]
Vorteile
ROS zeichnet sich als herausragendes Robotik-Framework aus, das eine effiziente Lösung für eine Vielzahl von Herausforderungen bietet. Es ermöglicht die Entwicklung von unabhängigen Modulen und dadurch die klare Trennung dieser, was z. B. das Starten, Stoppen und Überwachen dieser Komponenten erleichtert. Fähigkeit zur Kommunikation zwischen Robotern über Netzwerke sowie die Möglichkeit der Datenabstraktion sind zentrale Merkmale von ROS. Durch die Standardisierung von Schnittstellen zwischen den Modulen können Entwickler vorhandene Software für verschiedene Projekte wiederverwenden, was die Entwicklungszeit reduziert. Die Stärke von ROS liegt nicht zuletzt in seiner aktiven und vielfältigen Gemeinschaft, bestehend aus Forschern und Industrieexperten, die ihr Wissen auf der Plattform wiki.ros.org (ROS) bzw. docs.ros.org (ROS2) teilen. ROS bietet eine beeindruckende Vielfalt an vorgefertigten Komponenten und Werkzeugen, die adaptiert und genutzt werden können. Dies trägt nicht nur zur Zeitersparnis bei, sondern ermöglicht auch potenzielle Kosteneinsparungen. Durch die Verfügbarkeit von Hardware-Treibern, Algorithmen und Tools wird die Entwicklungsarbeit erleichtert. Die Nutzung von Open-Source-Software kann den Zeitaufwand reduzieren und die Entwicklungsgeschwindigkeit signifikant erhöhen.
Nachteile
Es ist wichtig zu beachten, dass ROS zwar ein leistungsstarkes Werkzeug ist, aber nicht für alle Herausforderungen eine Lösung bietet. Es ist beispielsweise nicht für harte Echtzeitanforderungen geeignet. Zudem ist es nicht auf jedem System verfügbar und möglicherweise nicht für jede spezifische Anwendung geeignet. Trotz der Nutzung von ROS erfordert die effektive Anwendung nach wie vor solide Programmierkenntnisse. Obwohl über 1900 Pakete verfügbar sind, sollte man sich bewusst sein, dass nicht alle reibungslos funktionieren oder ausreichend dokumentiert sind. Einige Pakete werden möglicherweise nicht aktiv gewartet. Darüber hinaus lassen sich auch nicht alle technischen Herausforderungen, die bei der Entwicklung von Robotiksystemen auftreten können, mit der Nutzung von ROS lösen. Eine sorgfältige Abwägung der Anforderungen und Möglichkeiten ist daher unerlässlich.
Off the shelf ROS Produkte
Mobile Industry Robots (MiR) Amazon Robotics
Mehrere Firmen im Bereich Autonomes Fahren: Aptive nuTonomy, Voyage
Viele Hersteller bieten außerdem eigene ROS-Treiber an. U.a. Universal Robots
Franka Emika
SICK
Schunk
Referenzen
[1] N. Hery-Moßmann. (2023, November 3). Was ist ein Framework? – einfach erklärt. [Online]. Verfügbar: https://praxistipps.chip.de/was-ist-ein-framework-einfach-erklaert_41348. [Abruf Mai 2, 2024].
[2] Springer. (2005). Echtzeit, Echtzeitsysteme, Echtzeitbetriebssysteme. [Online]. Verfügbar: https://link.springer.com/chapter/10.1007/3-540-27522-3_3. [Abruf Mai 2, 2024].
Weiterführende Links