Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Internet der Dinge-Technologie

ROS 2 und DDS Interoperabilität: Praktischer Leitfaden für nahtlose Integration

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:

ROS 2 und DDS Interoperabilität: Praktischer Leitfaden für nahtlose Integration

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.

ROS 2 und DDS Interoperabilität: Praktischer Leitfaden für nahtlose Integration

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:

ROS 2 und DDS Interoperabilität: Praktischer Leitfaden für nahtlose Integration

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.

  1. Definieren Sie erlaubte Transports in USER_QOS_PROFILES.xml durch Hinzufügen eines <transport_builtin> Mask innerhalb von <participant_qos>:
<participant_qos> <transport_builtin> <mask>UDPV4|SHMEM</mask> </transport_builtin> </participant_qos> 
  1. Erstellen Sie eine NDDS_DISCOVERY_PEERS Datei 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.

ROS 2 und DDS Interoperabilität: Praktischer Leitfaden für nahtlose Integration

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

  1. Umfassender Leitfaden zur Lasermarkierung: Arten, Vorteile und Anwendungen
  2. OpenDDS vs. RTI Connext DDS: Die richtige Data Distribution Service Lösung wählen
  3. ROS2 LiDAR-Daten mit RTI Recording Service und DDS wiedergeben
  4. ROS2 Bouncy Bolson fügt kostenloses RTI Connext DDS hinzu: Konnektivität & Diagnostik boosten
  5. ROS Roboter: Terminal-gesteuerte Navigation auf Raspberry Pi
  6. Rapid Manufacturing: Produktion für kundenspezifische und Kleinserien-Teile beschleunigen
  7. IoT revolutioniert Field Service: Predictive Maintenance & höherer ROI
  8. Industrial IoT Platform Buyer's Guide: Experten-Tipps & Entscheidungs-Checkliste
  9. PCB-Steifverstärker (Stiffener) meistern: Kompletter Leitfaden für Flex-PCBs
  10. Experten-Vor-Ort-Service & Reparaturen für schwere Maschinen – Schneller wieder arbeitsfähig