Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Technologie de l'Internet des objets

ROS2 + DDS :Un guide de terrain pour l'interopérabilité

Bien que ROS 2 soit conçu pour utiliser DDS comme cadre de connectivité (voir mon article de blog précédent - ROS 2 + DDS:When Ecosystems Merge pour plus d'informations), le processus d'intégration présente quelques bizarreries qui doivent être prises en compte pour un système DDS pur pour interagir de manière transparente avec un système ROS 2. Ce blog sert de guide pratique sur le terrain pour l'interopérabilité et couvre certains des problèmes connus depuis la version "Bouncy Bolson" (juillet 2018) de ROS 2 et comment les atténuer.

Mises à jour avec ROS 2

ROS 2 est un projet évolutif. Il peut y avoir des changements dans les futures versions de ROS 2 qui affectent davantage l'interopérabilité. Cela étant dit, rappelez-vous toujours que lorsque vous utilisez le rmw_connext_cpp couche sous ROS 2 - c'est toujours Connext DDS. La puissance et la flexibilité inhérentes aux bibliothèques Connext sont toujours disponibles, en utilisant les mêmes méthodes qu'une implémentation non ROS. Vous contrôlez votre système.

Voici un aperçu des paramètres qui peuvent affecter l'interopérabilité entre les systèmes DDS purs et ROS 2 (ROS 2 "Bouncy Bolson", sauf indication contraire) :

Noms des sujets et partitions

ROS 2 identifie l'espace de noms des données du sujet en l'encodant dans le nom ou la partition DDS du sujet. Les sujets de données utilisateur seront dans l'espace de noms « rt » (ROS Topic), encodé dans DDS comme :

Types de données de sujet

Lors de l'utilisation de la couche Connext RMW sous ROS2, vous avez peut-être remarqué que tous les sujets ROS2 « rt/* » sont signalés lors de la découverte comme ayant le même type de données :

Ce type de définition est inséré par la couche ROS2 rmw_connext_cpp pour représenter une sérialisation des données du sujet, même si les données du sujet sont inchangées. Lorsqu'une connexion est tentée avec un sujet DDS utilisant le type de données d'origine, une incompatibilité de QoS se produira, empêchant une connexion.

La solution la plus simple consiste à supprimer cette annonce de code de type des participants ROS2. Cela peut être fait en ajoutant un fichier USER_QOS_PROFILES.xml au répertoire utilisé pour lancer les participants ROS2. Ce fichier contient des paramètres QoS pour supprimer le code de type et le partage d'objet de type, tels que :

Notez que ce fichier définit également la fiabilité sur « Meilleur effort » - ce n'est qu'un exemple de point de départ.

Notez également que ce fichier QoS n'affecte que les participants ROS2 qui ont été lancés pour le même répertoire que le fichier QoS. Si nécessaire, chaque participant ROS2 pourrait avoir son propre fichier QoS personnalisé dans un répertoire séparé.

Sélection des transports

La connexion d'un système DDS à un système ROS2 peut entraîner des avertissements concernant des localisateurs/transports non adressables non installés. C'est le résultat du fait que les participants ont différentes listes de transports disponibles, comme le participant A(udpv4) découvrant le participant B(udpv4, udpv6) ; Un avertissement sera émis indiquant que le participant A ne pourra pas se connecter en utilisant udpv6.

La sélection de transport avec Connext RMW sous ROS2 utilise les mêmes méthodes que dans un système Connext uniquement :

  1. Définissez les transports autorisés dans le fichier USER_QOS_PROFILES.xml en les ajoutant à la section , comme dans :

    UDPV4|SHMEM

  2. Définissez les pairs initiaux (et activez/désactivez la multidiffusion) en ajoutant un fichier « NDDS_DISCOVERY_PEERS » au répertoire utilisé pour lancer l'application. Le fichier en texte brut doit contenir une liste séparée par des virgules des pairs souhaités pour la découverte, telle que : localhost, 192.168.1.12, shmem:// (cet exemple désactive la découverte multicast)

Sélection RMW dans ROS2

Assurez-vous de définir la variable d'environnement pour sélectionner Connext comme couche RMW sous ROS2 :

RMW_IMPLEMENTATION=rmw_connext_cpp

Cela peut également être passé sur la ligne de commande lors du lancement des applications ROS2, comme dans :

RMW_IMPLEMENTATION=rmw_connext_cpp ros2 lance demo_nodes_cpp talker

Support illimité

Certaines rubriques ROS2 utilisent des séquences et des chaînes illimitées. Les applications DDS qui cherchent à interagir à l'aide de ces sujets devront activer « Unbounded Support » dans le générateur de code DDS.

Regarder vers l'avenir avec RTI

Restez à l'écoute pour le prochain article de cette série, qui couvre une lacune cruciale (bien que temporaire) dans la gamme ROS2 :l'enregistrement et la relecture des données du sujet.

Si vous êtes prêt à faire partie de l'équipe de RTI et à améliorer vos systèmes de communication, contactez-nous dès aujourd'hui. Nos experts sont prêts à vous aider.


Technologie de l'Internet des objets

  1. Guide du marquage laser
  2. Logiciel DDS ouvert vs RTI DDS
  3. ROS2 + DDS :rejouer
  4. Robot ROS
  5. Guide de fabrication rapide
  6. En route avec l'IoT
  7. Guide d'achat d'une plateforme IoT industrielle
  8. Guide des raidisseurs de PCB
  9. Votre guide pour l'entretien et la réparation sur le terrain de la machinerie lourde