ROS 2 und DDS Interoperabilität: Praktischer Leitfaden für nahtlose Integration
ROS 2 basiert auf DDS für seine zugrundeliegende Kommunikationsschicht, doch fehlerfreie Interoperabilität zwischen einem nativen DDS Deployment und ROS 2 kann noch subtile Herausforderungen bergen. Dieser Leitfaden destilliert die praktischen Schritte und Konfigurations-Tweaks, die sich als effektiv erwiesen haben per „Bouncy Bolson“ (Juli 2018) ROS 2 Release, und hilft Teams, gängige Fallstricke zu vermeiden und die volle Kraft von Connext DDS innerhalb von ROS 2 zu nutzen.
Aktueller Stand von ROS 2
ROS 2 ist ein sich rasant entwickelndes Framework, und zukünftige Releases können zusätzliche Interoperabilitäts-Nuancen einführen. Wenn Sie ROS 2 jedoch mit dem rmw_connext_cpp RMW Layer ausführen, nutzen Sie weiterhin den nativen Connext DDS Stack. Das bedeutet, Sie behalten alle fortschrittlichen Connext Features – wie feingranulare QoS-Kontrolle und Multi-Transport-Support – während Sie ROS 2s Higher-Level-Abstraktionen genießen.
Schlüssel-Interoperabilitäts-Settings
Topic Names & Partitions
ROS 2 kodiert den Namespace eines Topics entweder im Topic-Namen oder in der DDS Partition. Alle ROS 2 User Topics residieren im „rt“ (ROS Topic) Namespace. In DDS wird dies dargestellt als:
Topic Data Types
Wenn der Connext RMW Layer aktiv ist, advertised ROS 2 jedes „rt/*“ Topic mit einem generischen Serialization Type. Als Resultat erfährt eine reine DDS Applikation, die den originalen, stark typisierten Datentyp publiziert, einen QoS Mismatch und kann nicht connecten.
Die einfachste Abhilfe ist, die automatische Type-Code-Publikation von ROS 2 Participants zu unterdrücken. Fügen Sie eine USER_QOS_PROFILES.xml Datei in das Verzeichnis hinzu, das Ihre ROS 2 Nodes launched. Eine minimal Konfiguration, die Type Code versteckt und Type Object Sharing deaktiviert, sieht so aus:
Fühlen Sie frei, das Reliability Setting an Ihre Applikation anzupassen; das obige Beispiel nutzt „Best Effort“ als Startpunkt.
Beachten Sie, dass diese QoS-Datei nur für ROS 2 Nodes gilt, die vom selben Verzeichnis gestartet werden. Wenn Sie isolierte Konfigurationen benötigen, platzieren Sie eine dedizierte USER_QOS_PROFILES.xml neben jedem Node-Launch-Ordner.
Transport Selection
Wenn ein DDS-System und ein ROS 2 System dasselbe Netzwerk teilen, können Warnungen über fehlende oder nicht unterstützte Transports (z. B. udpv6 nicht verfügbar auf einem Participant, der nur udpv4 unterstützt) auftreten. Um solche Warnungen zu vermeiden und zuverlässige Konnektivität zu gewährleisten, konfigurieren Sie Transport-Präferenzen explizit.
- Definieren Sie erlaubte Transports in
USER_QOS_PROFILES.xmldurch Hinzufügen eines<transport_builtin>Mask innerhalb von<participant_qos>:
<participant_qos> <transport_builtin> <mask>UDPV4|SHMEM</mask> </transport_builtin> </participant_qos>
- Erstellen Sie eine
NDDS_DISCOVERY_PEERSDatei im Launch-Verzeichnis und listen Sie die Peer-Adressen auf, die Sie entdecken möchten. Ein komma-getrenntes Beispiel, das Multicast Discovery deaktiviert:
localhost,192.168.1.12,shmem://
RMW Layer in ROS 2 wählen
Setzen Sie die RMW_IMPLEMENTATION Environment Variable immer auf rmw_connext_cpp vor Start der ROS 2 Nodes:
export RMW_IMPLEMENTATION=rmw_connext_cpp
Oder inline beim Launch eines Nodes übergeben:
RMW_IMPLEMENTATION=rmw_connext_cpp ros2 run demo_nodes_cpp talker
Unbounded Sequences & Strings
Einige ROS 2 Topics enthalten unbounded Sequenzen oder Strings. Wenn Ihre DDS Applikation diese Topics konsumieren oder publizieren muss, aktivieren Sie „Unbounded Support“ im DDS Code Generator. Referenzieren Sie die RTI Dokumentation, wie Sie diese Option während Codegenerierung togglen.
Nächste Schritte mit RTI
Wir werden eine temporäre Lücke im aktuellen ROS 2 Feature Set – Record und Replay von Topic Data – im nächsten Installment dieser Serie abdecken. In der Zwischenzeit, wenn Sie bereit sind, eine robuste, DDS-backed ROS 2 Lösung zu deployen, erreichen Sie unsere RTI Experten. Wir helfen Ihnen, Ihre Konfiguration feinzutunen und Time-to-Market zu beschleunigen.
Internet der Dinge-Technologie
- Umfassender Leitfaden zur Lasermarkierung: Arten, Vorteile und Anwendungen
- OpenDDS vs. RTI Connext DDS: Die richtige Data Distribution Service Lösung wählen
- ROS2 LiDAR-Daten mit RTI Recording Service und DDS wiedergeben
- ROS2 Bouncy Bolson fügt kostenloses RTI Connext DDS hinzu: Konnektivität & Diagnostik boosten
- ROS Roboter: Terminal-gesteuerte Navigation auf Raspberry Pi
- Rapid Manufacturing: Produktion für kundenspezifische und Kleinserien-Teile beschleunigen
- IoT revolutioniert Field Service: Predictive Maintenance & höherer ROI
- Industrial IoT Platform Buyer's Guide: Experten-Tipps & Entscheidungs-Checkliste
- PCB-Steifverstärker (Stiffener) meistern: Kompletter Leitfaden für Flex-PCBs
- Experten-Vor-Ort-Service & Reparaturen für schwere Maschinen – Schneller wieder arbeitsfähig