ROS 2 en DDS Interoperabiliteit: Een Praktische Gids voor Naadloze Integratie
ROS 2 vertrouwt op DDS voor de onderliggende communicatielaag, maar het bereiken van foutloze interoperabiliteit tussen een native DDS deployment en ROS 2 kan nog steeds subtiele uitdagingen opleveren. Deze gids destilleert de praktische stappen en configuratietweaks die effectief zijn gebleken per de "Bouncy Bolson" (juli 2018) ROS 2 release, teams helpend om veelvoorkomende pitfalls te vermijden en de volledige kracht van Connext DDS binnen ROS 2 te benutten.
Huidige Staat van ROS 2
ROS 2 is een snel evoluerend framework, en toekomstige releases kunnen additionele interoperabiliteitsnuances introduceren. Echter, wanneer u ROS 2 draait met de rmw_connext_cpp RMW laag, gebruikt u nog steeds de native Connext DDS stack. Dat betekent dat u al Connext's geavanceerde features behoudt – zoals fijnmazige QoS controle en multi‑transport ondersteuning – terwijl u geniet van ROS 2's hogere‑level abstracties.
Belangrijkste Interoperabiliteitsinstellingen
Topic Namen & Partities
ROS 2 codeert de namespace van een topic in de topic naam of de DDS partitie. Alle ROS 2 gebruiker topics resideren in de "rt" (ROS Topic) namespace. In DDS wordt dit vertegenwoordigd als:
Topic Datatypes
Wanneer de Connext RMW laag actief is, adverteert ROS 2 elk "rt/*" topic met een generieke serialisatietype. Als resultaat zal een zuivere DDS applicatie die de originele, sterk getype data publiceert, een QoS mismatch ervaren en niet kunnen connecteren.
De meest voor de hand liggende remedie is om de automatische type‑code publicatie van ROS 2 deelnemers te onderdrukken. Voeg een USER_QOS_PROFILES.xml bestand toe aan de directory die uw ROS 2 nodes lanceert. Een minimale configuratie die de type code verbergt en type object sharing uitschakelt ziet er als volgt uit:
Voel u vrij om de betrouwbaarheidsinstelling aan te passen aan uw applicatie; het bovenstaande voorbeeld gebruikt "Best Effort" als startpunt.
Onthoud dat dit QoS bestand alleen van toepassing is op ROS 2 nodes gestart vanuit dezelfde directory. Als u geïsoleerde configuraties nodig heeft, plaats een dedicated USER_QOS_PROFILES.xml naast elke node's launch folder.
Transport Selectie
Wanneer een DDS systeem en een ROS 2 systeem hetzelfde netwerk delen, kunnen waarschuwingen over ontbrekende of niet‑ondersteunde transports (bijv. udpv6 niet beschikbaar op een deelnemer die alleen udpv4 ondersteunt) verschijnen. Om dergelijke waarschuwingen te vermijden en betrouwbare connectiviteit te garanderen, configureer transportvoorkeuren expliciet.
- Definieer de toegestane transports in
USER_QOS_PROFILES.xmldoor een<transport_builtin>mask toe te voegen binnen<participant_qos>:
<participant_qos> <transport_builtin> <mask>UDPV4|SHMEM</mask> </transport_builtin> </participant_qos>
- Creëer een
NDDS_DISCOVERY_PEERSbestand in de launch directory en lijst de peer adressen die u wilt ontdekken. Een komma‑gescheiden voorbeeld dat multicast discovery uitschakelt is:
localhost,192.168.1.12,shmem://
De RMW Laag Kiezen in ROS 2
Stel de RMW_IMPLEMENTATION omgevingsvariabele altijd in op rmw_connext_cpp voordat u ROS 2 nodes start:
export RMW_IMPLEMENTATION=rmw_connext_cpp
Of geef het inline door bij het lanceren van een node:
RMW_IMPLEMENTATION=rmw_connext_cpp ros2 run demo_nodes_cpp talker
Onbegrensde Sequences & Strings
Sommige ROS 2 topics bevatten onbegrensde sequences of strings. Als uw DDS applicatie deze topics moet consumeren of publiceren, schakel "Unbounded Support" in de DDS code generator in. Raadpleeg de RTI documentatie voor hoe u deze optie tijdens codegeneratie kunt togglen.
Volgende Stappen met RTI
We zullen een tijdelijke kloof in de huidige ROS 2 feature set – record en replay van topic data – behandelen in de volgende aflevering van deze serie. Ondertussen, als u klaar bent om een robuuste, DDS‑ondersteunde ROS 2 oplossing te deployen, neem contact op met onze RTI experts. We helpen u uw configuratie fijn af te stellen en time‑to‑market te versnellen.
Internet of Things-technologie
- Expert Zware Machine Veldservice & Ter Plekk Reparaties – Sneller Terug Aan Het Werk
- Uitgebreide Gids voor Lasermarkering: Typen, Voordelen en Toepassingen
- ROS Robot: Terminal-gecontroleerde Navigatie op Raspberry Pi
- Snelle Fabricage: Productie Versnellen voor Custom en Laag-volume Onderdelen
- PCB-verstevigers onder de knie krijgen: complete gids voor flex PCB's
- OpenDDS vs. RTI Connext DDS: De Juiste Data Distribution Service Oplossing Kiezen
- ROS2 LiDAR Data Replayen met RTI Recording Service en DDS
- ROS2 Bouncy Bolson Voegt Gratis RTI Connext DDS Toe: Connectiviteit & Diagnostiek Boosten
- Qt integreren met DDS: Schaalbare IoT-applicaties bouwen
- IoT Revolutioniseert Veldservice: Voorspellend Onderhoud & Hogere ROI
- Industrial IoT Platform Kopergids: Expert Tips & Beslissingschecklist