Derzeit gibt es nur zwei Versionen der ROS-Middleware: ROS und ROS2. Die erste ROS-Version wird mitunter auch ROS1 genannt.
In diesem Artikel nennen wir diese erste Version „ROS“ und die zweite Version „ROS2“. Es scheint uns wichtig, darauf hinzuweisen, dass sich ROS2 derzeit in der Entwicklungsphase befindet. Einige Pakete wurden bereits freigegeben, aber die meisten davon sind noch nicht einsatzbereit. Zudem sind einige Funktionen von ROS2 noch nicht verfügbar.
Wir raten Ihnen, sich über die neuen Funktionen von ROS2 auf dem Laufenden zu halten und diese zu testen, bis eine stabile und komplette Version verfügbar ist.
Rückblick: Was ist ROS?
Das Robot Operating System (ROS) ist ein Set von Software-Bibliotheken und Open-Source-Tools, die die Entwicklung von Roboteranwendungen unterstützen.
Mit Treibern und hochmodernen Algorithmen sowie leistungsstarken Entwicklungstools ist ROS genau das, was Sie für Ihr nächstes Projekt im Bereich der Robotertechnik brauchen. Weitere Informationen finden Sie in unserem vorherigen Beitrag zu ROS , in dem Sie einen Überblick über ROS, die Kommunikationsprotokolle und verfügbaren Tools zur Optimierung Ihrer Entwicklungen erhalten.
Um ROS2 zu testen, muss zunächst Ubuntu installiert werden (falls dies noch nicht geschehen ist). Achten Sie auf die Ubuntu-Version, die Sie installieren, denn je nach Version kann das ROS/ROS2-Vertriebspaket variieren:
Ubuntu-Version | ROS-Vertriebspaket | ROS2-Vertriebspaket |
Ubuntu 16.04 — Xenial | Kinetic | Bouncy & Crystal |
Ubuntu 18.04 — Bionic | Melodic | Crystal & Dashing |
Ubuntu 19.04 — Disco | X | X |
Unter den verschiedenen obenstehenden Links finden Sie weitere Tutorials für die Installation von ROS . Wenn Sie ältere oder neuere Versionen testen möchten, können Sie Docker-Images verwenden. Docker erleichtert die Erstellung, Nutzung und Ausführung von Anwendungen unter Einsatz von Containern .
Die Container ermöglichen, eine Anwendung mit Systembibliotheken und anderen Abhängigkeiten zu packen. Docker funktioniert in etwa wie eine virtuelle Maschine . Aber anstatt ein komplettes virtuelles Betriebssystem zu erstellen, ermöglicht Docker den Anwendungen, denselben Linux-Kernel zu verwenden wie das System, mit dem sie betrieben werden.
Ein Docker-Container führt ein Docker-Image aus. Dies ist eine Datei, die aus mehreren Schichten von Bibliotheken und Abhängigkeiten besteht. Wir empfehlen Ihnen, bei Ihren Tests ROS2 Docker-Images zu verwenden, um Ihre ROS-Umgebung nicht zu destabilisieren.
Sobald Ubuntu auf Ihrem Computer läuft und ROS einsatzbereit ist, lesen Sie in den ROS-Tutorials nach, um eine Einführung in seine Funktionsweise zu erhalten.
Die Geschichte von ROS zur Erläuterung von ROS2
Die ROS-Umgebung wurde von Willow Garage für seinen Roboter PR2 entwickelt. Dies ist ein humanoider Roboter mit einer autonomen Navigation in einer bekannten Umgebung.
Damals wussten die Erfinder bereits, dass PR2 nicht der einzige Roboter auf dem Markt sein würde. Anstatt ein spezifisches Programm für den PR2 zu entwickeln, beschlossen sie, eine allgemeine und anpassbare Software zu implementieren, um nachträglich Verbesserungen oder Änderungen des Roboters zu integrieren.
Daher arbeiteten sie an einer Middleware, ROS, und definierten gleichzeitig Abstraktionsniveaus, die auch auf andere Roboter anwendbar waren. Einige der Spezifikationen des Roboters PR2 dienten dabei als Basis:
- Ein einziger Roboter
- Keine Echtzeit-Anforderungen
- Ausgezeichnete Netzwerkverbindung
- Maximale Flexibilität (kann sowohl auf einer mobilen Basis als auch auf Humanoiden betrieben werden)
Heute wird ROS nicht nur in PR2 und ähnlichen Robotern, sondern auch in mobilen Robotern jeder Größe, humanoiden Robotern , industriellen Roboterarmen , Landfahrzeugen im Freien und Luftfahrzeugen eingesetzt.
Seitdem wurde die Nutzung von ROS auf zahlreiche andere Bereiche ausgeweitet und ist nicht nur für die Universitätsforschung gedacht, für die das System ursprünglich entwickelt wurde.
Heute werden immer mehr ROS-Roboter von spezialisierten Herstellern auf den Markt gebracht und die Regierungsstellen investieren in ROS für eine Nutzung auf ihren eigenen Systemen.
Alle diese Anwendungen haben das ROS-System schließlich an seine Grenzen gebracht, das auf den Spezifikationen des PR2 aufgebaut wurde (siehe weiter oben). Daher hielt die Robotik-Gemeinschaft es für unverzichtbar, eine bessere Plattform zu entwickeln, die den neuen Anforderungen der modernen Roboter besser nachkommt:
- Teams von Robotern in Kooperation
- Mitgeführte Software auf kleinen elektronischen Karten
- Echtzeit-Systeme
- Instabile Netzwerke
- Produktionsumgebung
Ein weiterer Grund für die Einführung eines ROS2 ist die gleichzeitige Verbesserung der benutzerorientierten API-Schnittstelle. Somit wird es möglich sein, neue API-Schnittstellen zu entwickeln, bei denen die besten Erfahrungen der Robotik-Gemeinschaft mit den API-Schnittstellen der ersten Generation berücksichtigt werden.
Warum kann ROS nicht einfach verbessert werden?
Die oben beschriebenen Änderungen könnten tatsächlich in den Kern des existierenden Programmcodes integriert werden. Diese Option wurde auch in Betracht gezogen, aber diese zu intrusive Änderung des aktuellen ROS-Systems könnte zu schweren
Funktionsstörungen der von zahlreichen Mitgliedern der Robotik-Gemeinschaft entwickelten Anwendungen führen. ROS sollte unverändert bleiben, während ROS2 als ein Set von Paketen entwickelt werden sollte, das parallel dazu installiert werden könnte, ohne dass es zu Interferenzen mit ROS kommt.
Wer sollte künftig auf ROS2 umsteigen?
Wissenschaftler Außer wenn Sie eine Publikation zu den Leistungen und Funktionen von ROS2 planen, sollten Sie aktuell weiter mit ROS arbeiten.
Studenten | Sie sollten aufgrund eines Mangels an kompatiblen Paketen und aus globalen Stabilitätsgründen weiter mit ROS arbeiten. ROS2 wird in Kürze als Massenprodukt angeboten. ROS und ROS2 besitzen viele identische Konzepte, sodass Sie Ihr Wissen beim Umstieg auf ROS2 gut nutzen können. |
Lehrer | Sie sollten weiter ROS für den Unterricht nutzen, aber sich dennoch über die Neuheiten von ROS2 auf dem Laufenden halten. Wir empfehlen Ihnen jedoch, sich über die verschiedenen verfügbaren Tutorials mit ROS2 vertraut zu machen, um sich auf die Freigabe der endgültigen Version von ROS2 vorzubereiten. Wenn Sie eine Ausrüstung suchen, kann die Plattform TurtleBot3 eine interessante Option darstellen, da sie mit ROS und ROS2 kompatibel ist. |
Wissenschaftler | Außer wenn Sie eine Publikation zu den Leistungen und Funktionen von ROS2 planen, sollten Sie aktuell weiter mit ROS arbeiten. |
Unternehmen | Sie sollten tatsächlich in Betracht ziehen, sich auf ROS2 umzustellen, um die Menge der Programmcode-Übertragungen künftig zu reduzieren. Vertrauen Sie Ihre Projekte erfahrenen ROS-Benutzern an. |
Hersteller | Dies ist der richtige Zeitpunkt für eine Umstellung. ROS2 Dashing ist die erste LTS-Version. Jetzt ist es möglich, damit zu beginnen, die Treiber ohne Bedenken zu übertragen. |
Einige wichtige Unterschiede zwischen ROS und ROS2
Anwendung | ROS | ROS2 |
Plattform | Getestet auf Ubuntu Beibehalten auf anderen Linux-Versionen sowie auf OS X | Aktuell getestet und unterstützt auf Ubuntu Xenial, OS X EI Capitan sowie auf Windows 10 |
C++ | C++03 // nutzt nicht die Kapazitäten von C++11 bei seinen API-Schnittstellen | Nutzt hauptsächlich C+++11 Planen und beginnen Sie mit der Nutzung von C++14 und C+++17 |
Python | Ziel Python 2 | >= Python 3.5 |
Middleware | Personalisiertes Serialisierungsformat (Transportprotokoll + zentraler Feststellungsmechanismus) | Aktuell beruhen alle Implementierungen dieser Schnittstelle auf dem DDS-Standard. |
Synchronisierung von Dauer und Zeitmessung | Dauer und Zeittypen werden in Client-Bibliotheken definiert und in C++ und Python programmiert. | Diese Typen werden als Nachrichten definiert und sind somit in allen Programmiersprachen einheitlich. |
Komponenten mit Lebenszyklus | Jeder Knoten hat generell eine eigene Hauptfunktion. | Lebenszyklus kann bei Tools, wie z. B. roslaunch, verwendet werden, um ein System aus mehreren Komponenten deterministisch zu starten. |
Multi-Thread-Modell | Der Entwickler kann sich nur zwischen Mono-Thread- und Multi-Thread-Ausführung entscheiden. | Modelle mit Zwischenstufen der Ausführung sind erhältlich und personalisierte Ausführungsprogramme können einfach implementiert werden. |
Mehrfache Knoten | Es ist nicht möglich, mehr als einen Knoten in einem Prozess zu erstellen. | Es ist möglich, mehrere Knoten in einem Prozess zu erstellen. |
roslaunch | Die roslaunch-Dateien werden in XML definiert und besitzen sehr begrenzte Kapazitäten. | Die Startdateien werden in Python programmiert, sodass komplexere Logiken wie bedingte Anweisungen usw. verwendet werden können. |
Welcher DDS für ROS2?
ROS2 nutzt einen DDS (Data Distribution Service) für Bereitstellung und Empfang der Daten anstelle eines personalisierten Nachrichten-Managers. Dies ermöglicht eine Verbesserung der Übertragungsleistungen über DDS-Updates. Da DDS das Verhalten von ROS2 beeinflussen kann, sollten Sie unter den verschiedenen erhältlichen DDS-Tools die Version auswählen, die den Spezifikationen Ihres Projektes entspricht. Hier einige DDS-Systeme:
- FastRTPS/eProsima
- Vortex OpenSplice/ADLINK Technologie
- Connext/RTI
- CoreDX/Twin Oaks
- Cyclone DDS/Eclipse
Zusätzliche Informationen zu DDS finden Sie in den Abschnitten Rover Robotics und ROS2 auf DDS am Ende dieses Beitrags.
Knotenmanagement in ROS2
Eine der wichtigsten Funktionen von ROS2, die Verwaltung der Lebenszyklen von Knoten, ermöglicht eine bessere Kontrolle des ROS-Systemstatus. Somit kann roslaunch sicherstellen, dass alle Komponenten korrekt instanziert wurden, bevor eine Komponente beginnen kann, ihre Aktion auszuführen.
Dadurch können die Knoten während der Ausführung ebenfalls neu gestartet oder ersetzt werden. Dies ist eine wesentliche Eigenschaft für die Sicherheit des Roboters.
Implementierung von ROS2 — Plattform/Tutorials
Alle ROS-kompatiblen Roboter und Komponenten sind ebenfalls mit ROS2 kompatibel, sobald die Treiber, die Pakete und das SDK für eine Implementierung in ROS2 bereitgestellt werden. Robotis ist eines der ersten Unternehmen, das ein ROS2-System entwickelt hat.
In der Vergangenheit haben die Roboteringenieure dieses Unternehmens bereits ausgezeichnete Tutorials zum Erlernen von ROS auf dem ersten TurtleBot erstellt. Bei Entwicklung der neuesten Modelle TurtleBot3 Burger und TurtleBot3 Waffle Pi hat Robotis an einem Tutorial zur Einführung von ROS2 und Implementierung der Roboternavigation gearbeitet:
Robotis hat sein eigenes Paket für den TurtleBot3 entwickelt. Bei GitHub wurden die Wiki-Seiten und Open-Source-Codes verlinkt. Somit ist TurtleBot3 eine sehr gute Plattform für die ersten Schritte mit ROS2, sowohl für Anfänger als auch für erfahrene Entwickler. Wenn Sie noch über einen TurtleBot2 verfügen, können Sie ebenfalls ROS2 nutzen. Robotis hat auch ein ROS2-Demo für TurtleBot2 veröffentlicht.
Migration von ROS zu ROS2
Es gibt zwei verschiedene Möglichkeiten der Migration über ROS-Pakete:
- Migration des Quellcodes eines existierenden Pakets von ROS zu ROS2, wenn der Quellcode größtenteils identisch oder zumindest ähnlich bleiben soll.
- Implementierung derselben oder ähnlichen Funktionen aus einem ROS-Paket in ROS2, jedoch unter der Annahme, dass der Quellcode signifikant geändert wird.
Zum Zeitpunkt der Verfassung dieses Beitrags sind nur wenig Dokumentationen zum obenstehenden ersten Migrationstyp des Quellcodes verfügbar. Lesen Sie bitte diesen Beitrag Beitrag , der sich auf den zweiten oben erwähnten Fall bezieht und die zu befolgende Vorgehensweise zur Migration eines ROS-Pakets zu ROS2 beschreibt. Es geht jedoch hierbei nicht um eine schrittweise Migrationsanleitung, sondern eher um Hinweise für erfahrene Benutzer.
Ressourcen für ROS2-Middleware
Sie möchten noch mehr erfahren? Hier folgen einige nützliche Ressourcen, um den nächsten Schritt zu wagen!
Offizielle Ressourcen
- Startseite
- Tutorials
- Status der Funktionen
- Vertriebsfreigabe
- Installation
- Befehle
- GitHub
- ROS2 GitHub
- ROS2 Leistungsvergleich
- ROS2 Testleistungen
- Präsentation
- ROS auf DDS
Tutorials für ROS2
Das Unternehmen Rover Robotics hat sich mit ROS2 beschäftigt und auf seinem Blog ein Tutorial zu seinen letzten Entwicklungen mit Implementierung eines Navigationssystems in ROS2 veröffentlicht.
In diesem Artikel finden Sie zahlreiche nützliche Informationen zu den letzten Funktionsstörungen von ROS2, zu den Vor- und Nachteilen der verschiedenen DDS und zum Demo-Start sowie weitere Implementierungsempfehlungen.
Sie finden ebenfalls auf der Website „The Construct“ einige Beiträge zur Konfiguration von ROS2.
Gazebo , die bekannte Simulationsumgebung, ist auch auf ROS2 verfügbar. Sie finden weitere Informationen in diesem Beitrag . Sie können zudem auch den GitHub von Gazebo einsehen.
Für die neuesten Roboter TurtleBot3 Burger und TurtleBot Waffle Pi hat Robotis an einem Tutorial zur Einführung von ROS2 und Implementierung der Roboternavigation gearbeitet.
TurtleBot3 — GitHub Robotis hat sein eigenes Paket für den TurtleBot3 entwickelt. Bei GitHub wurden die Wiki-Seiten und Open-Source-Codes verlinkt.
Dieses Tutorial ist eine Einführung in die Nutzung von ROS2. TurtleBot3 ist ein sehr interessanter Roboter, wenn Sie ROS2 (oder ROS) kennenlernen möchten.
Wenn Sie noch über einen TurtleBot2 verfügen, können Sie ebenfalls ROS2 nutzen. Robotis hat auch ein ROS2-Demo für TurtleBot2 veröffentlicht.
Es ist sicherlich sinnvoll, in einen TurtleBot3 zu investieren, da er mit ROS und ROS2 kompatibel ist.