Von Ubuntu22.04 oder Juni 2025, die offizielle Basis nicht mehr Upgrade-Unterstützung ROS1, empfahl die Verwendung von ROS2-System, ROS 2 in der Architektur, Echtzeit-, Sicherheits-und Öko-Erweiterung deutlich besser als die ROS 1, wenn das neue Projekt Entwicklung wird empfohlen, ROS2 direkt verwenden, aber wenn Sie zu migrieren, um Kompromiss zwischen den vorhandenen Ressourcen und langfristige Gewinne. Detaillierte Ubuntu Version Unterstützung Beziehung siehe Link (ROS und Ubuntu unterschiedliche Versionen der Beziehung) , den folgenden Vergleich der beiden Rahmenwerke zu analysieren:
| ROS 2 Version | Ubuntu-Version | LTS oder nicht | Freigabezeit |
| Jazzy | 24.04 (Noble) | Ja (LTS) | 2024 |
| Kilted | 24.04(Noble) | Nein | 2025-05 |
Geschichte und Entwicklung
- ROS1: Entwickelt von der Stanford University und Willow Garage, mit Schwerpunkt auf Forschung und Prototyping.
- ROS2: Das Projekt wurde 2014 gestartet und zielt auf die industrielle Robotik mit DDS-Middleware ab, um Echtzeitfähigkeit, plattformübergreifende Unterstützung und Sicherheit zu verbessern.
Schlussfolgerung: ROS1 ist besser für Forschung und Prototyping geeignet, während ROS2 ideal für den industriellen und kommerziellen Einsatz ist.
2. Systemarchitektur
| Dimension | ROS1 | ROS2 |
| Zentrale Architektur | Annahme einer zentralisierten Architektur, die sich auf einen Master-Knoten (Knotenmanager) stützt, um die Knotenregistrierung und -kommunikation zu erreichen. | Verteilte Architektur, direkte Kommunikation zwischen den Knoten, keine Notwendigkeit für einen Master, Unterstützung eines dynamischen Entdeckungsmechanismus. |
| Kommunikationsmodell | Angepasstes Kommunikationssystem auf der Grundlage des TCP/UDP-Protokolls, das Probleme wie Verzögerungen, Paketverluste und die Unfähigkeit zur Verschlüsselung aufweist. | Standardisiertes Kommunikationsprotokoll auf der Grundlage von DDS, das Echtzeit, Verschlüsselung und plattformübergreifende Interaktion unterstützt. |
| Verlässlichkeit | Verlässt sich auf TCP für Peer-to-Peer-Kommunikation, anfällig für Paketverluste | Eine zuverlässige Übertragung wird durch QoS-Richtlinien (z. B. Reliable) gewährleistet. |
| Kompilierungssystem | Verwendet die Kompilierungssysteme rosbuild (early) und catkin. | Einführung eines neuen Kompilierungssystems zur Unterstützung einer flexibleren Verwaltung von Abhängigkeiten und der Erstellung in mehreren Sprachen. |
3. Benutzererfahrung
| Dimension | ROS1 | ROS2 |
| Lernkurve | Reichhaltige Community-Ressourcen und ausgereifte Dokumentation, geeignet für den Einstieg. | Neue Funktionen erhöhen den Lernaufwand (z. B. DDS-Konfiguration, Echtzeit-Debugging), sind aber langfristig besser wartbar. |
| Kosten der Migration | ROS-1-Projekte müssen die Kommunikationslogik, die Knotenverwaltung und das Kompilierungssystem überarbeiten, um auf ROS 2 zu migrieren. | Migrationswerkzeuge (z.B. ros1_bridge) sind verfügbar, um zwischen ROS 1- und ROS 2-Knoten zu interagieren. |
| Fehlersuche und Toolchain | Mit Werkzeugen wie roslaunch und rviz ist der Debugging-Prozess eher traditionell. | Neues Start-Framework (mit Unterstützung der Python-Konfiguration), integriertes Logging-System und bessere Testwerkzeuge. |
| Gemeinschaft und Ökologie | Das Ökosystem ist groß, aber einige Funktionen sind aufgrund architektonischer Beschränkungen schwer zu erweitern. | Neue Funktionen lassen sich leichter integrieren (z. B. eine tiefere Integration mit Gazebo und Webtechnologien), und das Ökosystem wird weiter ausgebaut. |
4. Vergleich der Schlüsseltechnologie
| Dimension | ROS1 | ROS2 |
| Kommunikation zwischen den Knoten | Die Peer-to-Peer-Kommunikation wird durch die Master-Registrierung hergestellt. | Die Knoten werden automatisch erkannt und kommunizieren direkt über DDS miteinander. |
| Nachrichtenübermittlung | Verwendet einen benutzerdefinierten Nachrichtentyp (.msg) und stützt sich auf die roscpp/rospy-Implementierung. | Generieren Sie mehrsprachige Nachrichten auf der Grundlage von IDL (Interface Definition Language) für eine bessere Kompatibilität. |
| Fehlertoleranz | Ein Ausfall des Masters kann zum Zusammenbruch des gesamten Systems führen. | Verteilte Architektur zur Vermeidung eines einzigen Ausfallpunkts, Knoten können dynamisch beitreten/ austreten. |
5. Unterschiede in der Syntax
| Dimension | ROS1 | ROS2 |
| Syntax für die Knotenerstellung | Verwendet ros::NodeHandle, um Knoten zu verwalten, verlässt sich auf roscore, um den zentralisierten Manager zu starten. | Verwenden Sie rclcpp::Node oder rclpy::Node, um Knoten direkt ohne roscore zu erstellen, unterstützt verteilte Architektur. |
| Kommunikationsmechanismus | Basierend auf einem angepassten TCP/UDP-Protokoll, um die Kommunikation zu erreichen, muss die Knotenregistrierung und -erkennung manuell verwaltet werden. | Auf der Grundlage des DDS-Standards (Data Distribution Service) erkennen die Knoten automatisch einander und kommunizieren miteinander. |
| Definition der Nachricht | Verwenden Sie die .msg-Datei, um den Nachrichtentyp zu definieren, und verlassen Sie sich auf die roscpp/rospy-Implementierung. | Verwenden Sie IDL (Interface Definition Language), um mehrsprachige Nachrichten für eine bessere Kompatibilität zu erzeugen. |
| Dateien starten | Verwenden Sie XML, um eine .launch-Datei zu schreiben, eine einzige Funktion, die schwer dynamisch zu konfigurieren ist. | Verwendung von Python zum Schreiben der Datei .launch.py, Unterstützung dynamischer Logik (z. B. bedingte Beurteilung, Parameterübergabe). |
6. Unterschiede in der tatsächlichen Nutzung
| Dimension | ROS1 | ROS2 |
| Unterstützung mehrerer Sprachen | Unterstützt vor allem C++ und Python, andere Sprachen müssen angepasst werden. | Erweiterte Unterstützung für zusätzliche Sprachen (z. B. Rust, Java) und sprachübergreifende Kompatibilität über die Interface Definition Language (IDL). |
| Kompilierungssystem | Es basiert auf dem Catkin-Kompilierungssystem, das die strikte Einhaltung der Arbeitsbereichsstruktur erfordert. | Verwenden Sie das ament Build-System für eine flexiblere Verwaltung von Abhängigkeiten und mehrsprachige Builds. |
| Unterstützung in Echtzeit | Schlechte Echtzeitleistung, die den Anforderungen der industriellen Echtzeitsteuerung nur schwer gerecht wird. | Verbesserung der Unterstützung für Echtzeitsysteme (z.B. bietet rclcpp in ROS 2 Echtzeit-Thread-Scheduling). |
| Sicherheit | Fehlen von nativen Verschlüsselungs- und Authentifizierungsmechanismen. | Unterstützt DDS-Sicherheitserweiterungen (DDS-Security), um Authentifizierung, Datenverschlüsselung und Zugriffskontrolle zu ermöglichen. |
| Plattformübergreifende Unterstützung | Läuft hauptsächlich auf Linux-Systemen mit begrenzter Unterstützung für Windows/MacOS. | Unterstützt mehrere Plattformen wie Linux, Windows, macOS, RTOS usw. und unterteilt die Plattformen klar in Tier 1 (aktiv von der offiziellen Regierung unterstützt) und Tier 2 (von der Community unterstützt), um die systemübergreifende Kompatibilität zu verbessern. |
| Tools zur Fehlersuche | Das Protokollierungssystem, das sich auf traditionelle Werkzeuge wie roslaunch und rviz stützt, ist relativ einfach. | Bereitstellung eines integrierten Protokollierungssystems (z. B. RCLCPP_INFO), Unterstützung von Python-Skripten und bessere Testwerkzeuge. |
| Fehlertoleranz | Ein Ausfall der Hauptleitung kann das gesamte System zum Erliegen bringen. | Verteilte Architektur zur Vermeidung eines einzigen Ausfallpunkts, Knoten können dynamisch beitreten/ austreten. |
7. Typische Anwendungsszenarien
- ROS 1: Bildung, Forschungsprojekte (z. B. mobile Roboternavigation, SLAM), Szenarien, die keine hohe Echtzeit und Sicherheit erfordern. Wenn das Projekt ausgereift ist und keine Echtzeit-, Sicherheits- oder plattformübergreifenden Funktionen erfordert und auf eine große Anzahl ökologischer Ressourcen von ROS 1 angewiesen ist, sollten Sie weiterhin ROS 1 verwenden.
- ROS 2: Industrieautomatisierung, autonomes Fahren, Drohnen und andere Szenarien, die eine hohe Echtzeit-, Sicherheits- und plattformübergreifende Unterstützung erfordern, sowie die langfristige Wartung von Großprojekten (z. B., Lieferroboter, IndustrieroboterMedizinroboter). Projekte, die eine industrietaugliche Stabilität, Echtzeitsteuerung, sichere Verschlüsselung oder plattformübergreifenden Einsatz erfordern, sind ROS 2 vorzuziehen.
8. Hardware- und Plattformkompatibilität
- ROS1: Unterstützt vor allem Linux (Ubuntu).
- ROS2: Unterstützt nativ Linux, Windows, macOS und eingebettete Plattformen.
9. Ökosystem und Unterstützung durch die Gemeinschaft
- ROS1: Große Anzahl von Paketen und eine aktive Gemeinschaft.
- ROS2: Schnell wachsendes Ökosystem, aber die Anzahl der Pakete holt noch auf.
Schlussfolgerung: ROS1 hat ein ausgereiftes Ökosystem, während ROS2 schnell aufholt.
10. Kosten für Migration und Upgrade
- Die APIs sind nicht kompatibel, so dass der Code neu geschrieben werden muss.
- Die Treiber müssen möglicherweise angepasst werden; ros1_bridge kann bei der schrittweisen Migration helfen.
Schlussfolgerung: Die Migrationskosten sind beträchtlich, aber die Risiken können durch schrittweise Aufrüstungen verringert werden.
11. Sicherheit und Industriestandards
- ROS1: Keine nativen Sicherheitsmechanismen.
- ROS2: Entspricht den DDS-Sicherheitsstandards und kann OPC UA und TSN integrieren.
Schlussfolgerung: ROS2 ist besser für sicherheitskritische und industrielle Anwendungen geeignet.
Zukünftige Trends und Fahrplan
- ROS1Noetic ist die letzte Version, die bis 2025 beibehalten wird.
- ROS2verfolgt eine Long Term Support (LTS)-Strategie mit aktiven Funktionsaktualisierungen.
Schlussfolgerung: Der Trend geht eindeutig in Richtung ROS2.
Schlussfolgerung und Empfehlungen
Für Forscher oder Anfängerbleibt ROS1 eine ausgereifte und stabile Wahl; für industrielle Nutzer oder kommerzielle Teams, Die Vorteile von ROS2 in Bezug auf verteilte Systeme, Echtzeitleistung und Sicherheit sind von langfristigem Wert.
Umsetzbare Ratschläge: Beurteilen Sie die ROS-Version frühzeitig in der Projektplanung und treffen Sie Entscheidungen auf der Grundlage der Reife des Ökosystems und der Fähigkeiten des Teams.
