ros2_pulse surveille les débits et les blocages d’un graphe ROS 2

Terminal montrant le tableau de bord ros2_pulse et ses alertes sur des topics ROS 2
pulse-top affiche les débits des topics, les nœuds actifs et les alertes produites par la sonde ros2_pulse.

Le projet ouvert ros2_pulse propose une sonde de supervision pour mesurer en direct les débits des topics, la présence des nœuds et les gels de boucles dans un graphe ROS 2. Son originalité est de couvrir aussi les échanges intraprocessus, sans reconstruire les applications ni ajouter de trafic DDS.

L’outil se charge avec LD_PRELOAD et s’appuie sur les points d’instrumentation que rclcpp appelle déjà. Il compte les publications et les réceptions, puis écrit des fenêtres de mesure dans un journal local. Un tableau de bord en terminal, pulse-top, rassemble ensuite les processus et affiche débits, alertes et dernières activités.

Observer sans créer un nouvel abonné ROS 2

Les outils classiques comme ros2 topic hz ou ros2 topic echo s’abonnent au topic observé. Cette méthode est simple, mais elle peut modifier le comportement du système, notamment lorsqu’un flux restait jusque-là entièrement intraprocessus. Le nouvel abonné peut déclencher une sérialisation et ajouter du calcul ou du trafic.

Les auteurs de ros2_pulse annoncent avoir mesuré, sur leur banc d’essai, 7 % d’un cœur pour ros2 topic hz et 31 % pour ros2 topic echo sur un flux de 100 kilo-octets à 50 Hz. L’observation d’un topic intraprocessus aurait augmenté de 52 % la consommation du processus publié dans leur test. Ces chiffres proviennent du projet lui-même et devront être reproduits sur d’autres architectures.

La sonde revendique environ 2 % du processeur de la charge de test à 4 900 messages par seconde. Son chemin de comptage évite les verrous et ne nécessite ni privilèges élevés, ni session de traçage, ni version modifiée de ROS 2.

Détecter un gel que la moyenne masque

Un simple débit moyen peut laisser passer un problème bref mais grave. Une boucle à 50 Hz qui se fige plusieurs centaines de millisecondes puis rattrape une partie de son retard peut encore respecter une moyenne acceptable sur une fenêtre de cinq secondes. Pour un contrôleur, ce silence suffit pourtant à provoquer une faute.

ros2_pulse permet donc de définir, en plus d’une plage de fréquence, un écart maximal entre deux messages. Les deux règles produisent des alertes distinctes. Un utilitaire, pulse-check, transforme ensuite l’état des journaux en code de sortie utilisable par un superviseur, systemd ou une chaîne d’intégration continue.

Un outil prometteur, encore à éprouver sur des flottes

Le projet prend en charge ROS 2 Humble, Jazzy et Kilted et publie son code sous licence Apache 2.0. Il cible d’abord les développeurs et exploitants qui veulent surveiller Nav2, MoveIt Servo, des contrôleurs ou des pipelines de perception sur leurs binaires existants.

La proposition est utile parce qu’elle vise un angle mort concret : superviser un système sans perturber fortement ce que l’on mesure. Son adoption dépendra de la stabilité du mécanisme d’interposition, de la compatibilité avec davantage de distributions et de validations indépendantes sur des robots en production. Les demandes d’intégration aux paquets ROS officiels sont annoncées, mais l’installation reste pour l’instant celle d’un projet communautaire.

Sources : dépôt officiel ros2_pulse et méthodologie de benchmark, consultés le 24 août 2026.

Le briefing RoboActu

L’essentiel de la robotique, une fois par semaine.

Une sélection courte des annonces, usages et robots à suivre.

Continuer sur ce sujet

Comparer les robots