ROS 2 ist eine erstklassige, benutzerfreundliche Software für Einsteiger im Roboterbau. Sie ist ein Upgrade von ROS 1 und bietet Verbesserungen für die heutigen Anforderungen. Zu den wichtigsten Funktionen gehören die Unterstützung von Echtzeitbetrieb und eine erhöhte Sicherheit. Dies hilft Anfängern, häufige Probleme beim Einrichten eines Robotersystems zu vermeiden.
Wichtigste Punkte:
-
Für den Einstieg in die Einrichtung von Robotersystemen ist ROS 2 ein komplexes Robotersoftware-Framework mit verbesserter Sicherheit, Echtzeitfähigkeit und plattformübergreifender Unterstützung.
-
Die kompatibelsten Ubuntu LTS-Versionen für die Installation von ROS 2 sind 22.04 oder 24.04, und stabile Distributionen wie Jazzy Jalisco sind eine gute Option.
-
Grundlegende Konzepte wie ROS 2-Knoten, -Themen und -Nachrichten ermöglichen es Ihrem ersten ROS 2-Projekt, problemlos zu kommunizieren.
-
ROS 2 bietet in Testumgebungen eine gute Echtzeitleistung. Für kritische Aufgaben kann jedoch eine zusätzliche Konfiguration erforderlich sein. Anfänger sollten in der Regel mit Python (rclpy) beginnen, da es einfacher ist.
-
Der Einstieg erfolgt durch die Verwendung einfacher Terminalbefehle, das Ausführen von Verifizierungstests und das Erstellen eigener Pakete mit colcon. Gehen Sie bei den komplexeren Teilen der DDS-Middleware behutsam vor.
Der Einstieg in die Robotik mag anfangs etwas komplex erscheinen, doch ROS 2 ist ein leistungsstarkes System, das den Prozess deutlich vereinfacht. Diese Einsteigeranleitung zu ROS 2 führt Sie durch die Einrichtung Ihres ersten Robotersystems. Wir behandeln alle Schritte, von der Installation bis hin zum Betrieb eines einfachen Projekts. Egal, ob Sie am Wochenende basteln oder gerade erst mit Robotersoftware beginnen – ROS 2 bietet eine flexible Struktur zum Entwickeln und Steuern Ihrer Roboter.
Warum ROS 2? Die Evolution der Robotik-Software
Das Robot Operating System (ROS) bildet die Grundlage vieler neuer Projekte im schnelllebigen Bereich der Robotik. Doch warum überhaupt ROS? Beim Bau eines Roboters müssen Sensoren, Motoren und Navigation gesteuert und die reibungslose Kommunikation aller Komponenten sichergestellt werden. Das ist eine gewaltige Aufgabe. ROS bietet hier eine standardisierte Lösung für Robotik-Software. Es spart Entwicklern enorm viel Zeit, da sie auf vorgefertigte Komponenten und Tools zurückgreifen können, die sie einfach wiederverwenden können.
Die allererste ROS-Version (heute ROS 1 genannt) war bei ihrer Veröffentlichung im Jahr 2007 ein Riesenerfolg. Doch mit dem Fortschritt der Robotik traten ihre Grenzen immer deutlicher zutage. Genau deshalb wurde ROS 2 entwickelt. Es erschien 2017 und wird seitdem kontinuierlich aktualisiert. Für alle, die ein neues Projekt starten, ist ROS 2 die beste Wahl, da es die gravierendsten Probleme von ROS 1 behoben hat.
Lassen Sie uns die wichtigsten Vorteile von ROS 2 gegenüber ROS 1 im Detail betrachten:
-
Verbesserte Sicherheit: ROS 1 bot nur wenige integrierte Sicherheitsfunktionen. Dies stellte in vernetzten Umgebungen ein Risiko dar. ROS 2 beinhaltet nun Sicherheitsfunktionen wie Authentifizierung und Verschlüsselung. Dadurch ist Ihr Robotersystem besser vor Hackern geschützt.
-
Echtzeitfunktionen : Eine enorme Verbesserung ist die Unterstützung von Echtzeitprozessen in ROS 2. ROS 1 hatte Schwierigkeiten mit zeitkritischen Aufgaben. ROS 2 ist für Anwendungen wie autonomes Fahren und Fabrikroboter konzipiert, bei denen Verzögerungen inakzeptabel sind. Dies wird durch verbesserte Middleware und die Zusammenarbeit mit Echtzeitbetriebssystemen erreicht.
-
Funktioniert auf vielen Systemen: ROS 1 war üblicherweise nur für Linux verfügbar. ROS 2 läuft nun unter Windows, macOS und sogar auf kleinsten eingebetteten Systemen. Diese Flexibilität ermöglicht es deutlich mehr Entwicklern, mit ROS 2 zu arbeiten.
Diese Verbesserungen machen ROS 2 zu einem leistungsstärkeren Software-Framework für Robotik. Wer sich mit ROS 2 beschäftigt, ist bestens für die Zukunft dieses Bereichs gerüstet. Beispielsweise setzen große Branchen wie das autonome Fahren und die Gesundheitsrobotik aufgrund der hohen Zuverlässigkeit auf ROS 2.
Um zu veranschaulichen, wie ROS 2 die Kommunikation strukturiert:
Dieses Diagramm veranschaulicht den mehrschichtigen Ansatz, wobei DDS den Datenfluss effizient steuert.
Schritt 1: Vorbereiten Ihrer Umgebung und Installieren von ROS 2
In dieser Einsteigeranleitung zu ROS 2 besteht die erste Herausforderung darin, das System zum Laufen zu bringen. Wenn Sie diese Schritte befolgen, wird es Ihnen leicht fallen. Wir konzentrieren uns auf die Installation, damit Ihr Robotersystem problemlos eingerichtet werden kann.
Empfohlenes Betriebssystem: Ubuntu für ROS 2
Für eine ROS-2-Installation ist Ubuntu die beste Wahl, da es einfach funktioniert und hervorragenden Community-Support bietet. Ubuntu 22.04 (Jammy Jellyfish) oder 24.04 (Noble Numbat) sind LTS-Versionen (Long-Term Support), die perfekt mit den ROS-2-Releases harmonieren. Daher sollten Sie diese Versionen verwenden. Jazzy Jalisco ist die aktuellste stabile Version von ROS 2 und funktioniert am besten mit Ubuntu 24.04. Die wichtigsten Gründe für Ubuntu? Es ist kostenlos, Open Source und bietet hervorragende Treiberunterstützung für Roboterhardware. Falls Sie Windows oder macOS verwenden, können Sie Ubuntu problemlos mit einer virtuellen Maschine wie VirtualBox ausführen.
Als Erstes sollten Sie sicherstellen, dass Ihr Computer die Mindestanforderungen erfüllt: Sie benötigen mindestens 4 GB RAM, 20 GB freien Festplattenspeicher und einen zuverlässigen Internetzugang. Gute Nachrichten für Linux-Neulinge: Die benutzerfreundliche Oberfläche von Ubuntu erleichtert den Einstieg in die ROS-2-Entwicklung erheblich.
Installationsanleitung: Die Terminalbefehle
Öffnen Sie Ihr Terminal (Strg+Alt+T unter Ubuntu) und folgen Sie diesen Befehlen zur Installation von ROS 2. Wir verwenden Jazzy als Beispieldistribution – ersetzen Sie diese, falls eine neuere verfügbar ist.
-
Richten Sie Ihre Quellenliste ein, um auf ROS 2-Pakete zuzugreifen:
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
-
Aktualisieren Sie Ihren Paketindex:
sudo apt update
-
Installieren Sie das vollständige ROS 2 Desktop-Paket:
sudo apt install ros-jazzy-desktop
-
Richten Sie Umgebungsvariablen ein, damit ROS 2 bei jedem Öffnen eines Terminals bereit ist:
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc source ~/.bashrc
Dieser Vorgang dauert in der Regel 10–20 Minuten, abhängig von Ihrer Internetverbindung. Sollten Probleme auftreten, überprüfen Sie die Kompatibilität Ihrer Ubuntu-Version in der offiziellen ROS-Dokumentation.
Hier ist ein Screenshot, wie das Terminal während der Installation aussehen könnte:
Verifizierung: Ausführen des Beispiels „Sprecher-Zuhörer“.
Um Ihre ROS 2-Konfiguration zu überprüfen, führen Sie die klassische Sprecher-Hörer-Demo aus. Diese testet die grundlegende Kommunikation in ROS 2.
-
Starten Sie in einem Terminal den Talker (Publisher):
ros2 run demo_nodes_cpp talker
-
Starten Sie in einem anderen Terminal den Listener (Subscriber):
ros2 run demo_nodes_cpp listener
Sie sollten nun Nachrichten wie „Hello World“ vom Sender zum Empfänger sehen. Wenn alles funktioniert, herzlichen Glückwunsch – Ihre ROS-2-Installation ist erfolgreich verifiziert! Falls nicht, überprüfen Sie bitte Ihre Umgebungseinstellungen oder installieren Sie die Abhängigkeiten neu.
Dieser Schritt ist in jeder Anfängeranleitung für ROS 2 von entscheidender Bedeutung, da er Vertrauen schafft, bevor man sich eingehender mit der Einrichtung von Robotersystemen befasst.
Schritt 2: Die Kernkonzepte von ROS 2 für Anfänger
Nachdem ROS 2 installiert ist, wollen wir seine Bausteine genauer betrachten. Diese Konzepte bilden das Rückgrat der ROS-2-Entwicklung und werden hier einfach und verständlich für Anfänger erklärt.
Knoten, Themen und Nachrichten
In ROS 2 ist ein Knoten wie ein kleines Programm, das eine bestimmte Aufgabe in Ihrem Robotersystem ausführt – vergleichbar mit einer Arbeiterbiene in einem Bienenstock. Knoten kommunizieren über Themen, die wie Kanäle zum Senden von Daten funktionieren. Beispielsweise könnte ein Sensorknoten Daten in einem „Temperatur“-Thema veröffentlichen, und ein anderer Knoten abonniert dieses, um darauf zu reagieren.
Nachrichten sind Datenpakete, die über Themen versendet werden. Sie haben standardisierte Strukturen, ähnlich einem Formular mit Feldern für Zahlen oder Zeichenketten. Eine einfache Analogie: Knoten sind Freunde, die chatten (veröffentlichen/abonnieren), Themen sind der Name des Gruppenchats und Nachrichten sind die ausgetauschten Texte.
Dieses Pub/Sub-Modell macht ROS 2 flexibel für Anfänger, die ihr erstes ROS 2-Projekt erstellen.
Dienste und Aktionen: Anfrage-Antwort-Kommunikation
Themen eignen sich hervorragend für kontinuierliche Datenströme, aber manchmal benötigt man eine direkte Frage-Antwort-Struktur. Hier kommen Dienste ins Spiel – sie arbeiten synchron, ähnlich wie ein Anruf bei einem Freund, bei dem man auf die Antwort wartet. Ein Client-Knoten sendet eine Anfrage an einen Server-Knoten, der diese verarbeitet und beantwortet.
Aktionen gehen bei längeren Aufgaben noch einen Schritt weiter und liefern dabei fortlaufend Feedback. Stellen Sie sich vor, Sie bestellen Essen: Sie legen ein Ziel fest (Bestellung), erhalten Statusaktualisierungen (Zubereitungsfortschritt) und schließlich das Ergebnis (Lieferung). Aktionen eignen sich perfekt für Anwendungen wie die Roboternavigation in ROS 2.
Diese sich ergänzenden Themen bieten Ihnen Werkzeuge für verschiedene Kommunikationsanforderungen in der Robotik-Software.
Die Middleware verstehen (DDS)
Das Herzstück von ROS 2 ist der DDS (Data Distribution Service). Er bildet die „Infrastruktur“, die den effizienten Datenaustausch zwischen den Knoten steuert. Im Gegensatz zum kundenspezifischen System von ROS 1 ist DDS ein Industriestandard der Object Management Group und gewährleistet Zuverlässigkeit, die automatische Knotenerkennung sowie die Unterstützung der Echtzeitfunktionen von ROS 2.
DDS ermöglicht verteilte Systeme, in denen Knoten beitreten oder das System verlassen können, ohne dass es zu Systemausfällen kommt – ideal für komplexe Robotersysteme. Anfänger müssen DDS kaum anpassen – es funktioniert sofort. Das Wissen, dass es die ROS-2-Knoten steuert, ist jedoch beim Skalieren hilfreich.
Hier ist eine Tabelle mit einer Zusammenfassung der wichtigsten ROS 2-Kommunikationstypen:
|
Konzept
|
Beschreibung
|
Anwendungsbeispiel
|
Vorteile
|
Nachteile
|
|
Themen
|
Asynchrones Pub/Sub für Streaming-Daten
|
Sensordatenübertragung
|
Effizient für kontinuierliche Aktualisierungen
|
Standardmäßig keine garantierte Lieferung
|
|
Dienstleistungen
|
Synchrone Anfrage/Antwort
|
Roboterstatus abfragen
|
Zuverlässige Anrufblockierung
|
Kann sich verzögern, wenn die Reaktion langsam ist
|
|
Aktionen
|
Zielorientiert mit Feedback
|
Lange Aufgaben wie Armbewegungen
|
Fortschrittsverfolgung
|
Komplexer in der Umsetzung
|
Schritt 3: Erstellen Sie Ihr erstes benutzerdefiniertes Paket und Ihren ersten Code
Jetzt wird es praktisch! In diesem Abschnitt unserer Einsteigeranleitung zu ROS 2 erstellen wir ein benutzerdefiniertes Paket für eine einfache Komponente eines Robotersystems, wie zum Beispiel einen einfachen Publisher-Knoten.
Arbeitsbereich und Paket erstellen
Ein ROS-2-Workspace ist ein Verzeichnis, in dem Sie Ihre Projekte organisieren. Verwenden Sie colcon, das Build-Tool für ROS 2.
-
Erstellen und Navigieren zu Ihrem Arbeitsbereich:
mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src
-
Generieren Sie ein Paket (z. B. mein_erstes_Paket):
ros2 pkg create --build-type ament_python my_first_package
Dadurch wird die Struktur mit den notwendigen Dateien eingerichtet. Colcon kann mehrere Pakete effizient erstellen.
Python vs. C++: Die richtige Sprache wählen
Für die ROS 2-Entwicklung haben Sie die Wahl: rclpy für Python oder rclcpp für C++.
-
rclpy (Python): Leichter für Anfänger – schnell zu schreiben und zu debuggen. Vorteile: Gut lesbarer Code, große Bibliotheken. Nachteile: Langsamer bei hohen Leistungsanforderungen.
-
rclcpp (C++): Schneller und effizienter, ideal für Echtzeitanwendungen. Vorteile: Bessere Kontrolle. Nachteile: Steilere Lernkurve.
Wenn Sie neu in diesem Bereich sind, beginnen Sie mit rclpy. Hier ist ein einfaches Beispiel für einen Python-Publisher-Knoten:
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
class SimplePublisher(Node):
def __init__(self):
super().__init__('simple_publisher')
self.publisher_ = self.create_publisher(String, 'chatter', 10)
timer_period = 1.0 # seconds
self.timer = self.create_timer(timer_period, self.timer_callback)
def timer_callback(self):
msg = String()
msg.data = 'Hallo, ROS 2!'
self.publisher_.publish(msg)
self.get_logger().info('Veröffentlichung: "%s"' % msg.data)
def main(args=None):
rclpy.init(args=args)
node = SimplePublisher()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
hauptsächlich()
Speichern Sie dies als publisher_node.py im Verzeichnis Ihres Pakets.
Der Build-Prozess: Colcon kompilieren und ausführen
Zurück im Stammverzeichnis Ihres Arbeitsbereichs:
colcon build --packages-select my_first_package
source install/setup.bash
source install/setup.bash
Führen Sie Ihren Knoten aus:
ros2 run my_first_package publisher_node.py
Hören Sie in einem anderen Terminal zu:
ros2 topic echo /chatter
Sie haben soeben Ihren ersten benutzerdefinierten ROS 2-Knoten erstellt und ausgeführt! Dies markiert den Beginn der Einrichtung Ihres Robotersystems.
Wie geht es weiter? Erkundung des ROS 2-Ökosystems
Sie haben die Grundlagen dieser Einsteigeranleitung zu ROS 2 kennengelernt – jetzt ist es Zeit für mehr. RViz 2 ist ein unverzichtbares Visualisierungstool, mit dem Sie die Daten Ihres Robotersystems in 3D darstellen können, beispielsweise Sensorwolken oder Robotermodelle.
Von hier aus können Sie den ROS 2 Navigation Stack für die Pfadplanung erkunden oder Hardware wie Arduino-Motoren integrieren. Für Echtzeitanwendungen sollten Sie RT_PREEMPT-Kernel in Betracht ziehen.
Ressourcen:
Experimentieren Sie weiter – das ROS 2-Ökosystem ist riesig, und Übung macht den Meister im Bereich Robotik-Software.