Un nouvel outil open source permet aux développeurs ROS 2 de voir quel transport Fast DDS est réellement utilisé par chaque topic. Baptisé fastdds_transport_viz, il distingue notamment UDP, TCP, la mémoire partagée et le partage de données sans copie, puis explique les raisons de chaque choix.
Le projet a été présenté le 6 septembre sur Open Robotics Discourse par son développeur, qui publie le code et la documentation sous licence Apache-2.0. L’objectif est de rendre observable une couche souvent difficile à diagnostiquer : le chemin emprunté par les messages entre chaque émetteur et chaque récepteur d’un système robotique ROS 2.
Prédire puis mesurer le transport Fast DDS
Dans ROS 2, le middleware DDS assure les échanges entre les nœuds. Selon la configuration, deux processus peuvent communiquer par UDPv4, UDPv6, TCP, mémoire partagée ou « data-sharing », un mécanisme qui évite une copie des données. Une configuration inattendue peut augmenter la latence ou le trafic réseau sans être immédiatement visible dans les outils habituels.
fastdds_transport_viz exploite les données de découverte Fast DDS pour prédire le transport utilisé par chaque paire writer-reader. Il indique aussi pourquoi ce transport a été retenu, avec des codes associés aux localisateurs disponibles et aux paramètres de qualité de service. Aucun changement n’est nécessaire sur les nœuds observés pour cette première analyse.
Avec l’option --stats, l’outil utilise en plus le module de statistiques Fast DDS. Il mesure alors le trafic réellement observé, le débit utile, la latence entre l’écriture et la notification, ainsi que les pertes et retransmissions. Une contradiction entre la prédiction et la mesure est signalée.
Une commande ROS 2 et un visualiseur web
L’interface principale prend la forme de la commande ros2 transport list. Les résultats peuvent être filtrés par topic ou par nœud, détaillés paire par paire, suivis en direct avec le mode --watch ou exportés en JSON. Un visualiseur web affiche ensuite les relations sous forme de tableau ou de graphe.
Le programme inspecte également l’état de la mémoire partagée du système. Il relève sa capacité, les segments Fast DDS, les ports et les historiques de data-sharing, y compris certains fichiers devenus orphelins. Cette fonction peut aider à distinguer un problème de découverte d’un défaut de configuration du transport.
Le développeur indique avoir vérifié le projet sur ROS 2 Jazzy, Kilted et Rolling, sur des machines x86_64 et arm64. Les essais comprennent notamment deux hôtes physiques, dont un Jetson Orin NX relié en Wi-Fi. Humble est aussi pris en charge, mais seulement pour la prédiction, car sa version de Fast DDS ne fournit pas le module statistique nécessaire.
Des limites clairement documentées
Le champ d’action reste volontairement étroit. L’outil fonctionne uniquement sous Linux avec rmw_fastrtps_cpp. Cyclone DDS, Connext, rmw_fastrtps_dynamic_cpp et SROS2 ne sont pas couverts. Le processus doit également partager le même domaine DDS, les mêmes variables d’environnement et les mêmes espaces réseau et IPC que les nœuds observés.
Les mesures de débit et de latence ne constituent pas un benchmark complet. Elles reflètent les statistiques internes de Fast DDS sur une courte période et ne remplacent pas un test de charge ou une mesure de bout en bout. Le projet ajoute par ailleurs deux participants DDS, filtrés de son propre affichage.
Notre analyse
Ce nouvel outil répond à un problème concret pour les intégrateurs de robots : comprendre pourquoi des messages qui devraient rester en mémoire partagée passent sur le réseau, ou pourquoi deux nœuds ne communiquent pas selon le chemin attendu. Son intérêt dépendra désormais de son adoption et de sa robustesse sur de grandes architectures. Sa publication sous licence Apache-2.0, ses sorties JSON et la documentation de ses limites facilitent toutefois son évaluation dans des bancs de test ROS 2.
