À propos des statistiques de sujet

Aperçu

ROS 2 fournit la mesure intégrée des statistiques pour les messages reçus par n’importe quel abonnement. Permettre à un utilisateur de collecter des statistiques d’abonnement lui permet de caractériser les performances de son système ou d’aider au diagnostic de tout problème actuel.

Les mesures fournies sont l’âge du message reçu et la période du message reçu. Pour chaque mesure, les statistiques fournies sont la moyenne, le maximum, le minimum, l’écart type et le nombre d’échantillons. Ces statistiques sont calculées dans une fenêtre mobile.

Comment les statistiques sont calculées

Chaque ensemble de statistiques est calculé en temps constant et en mémoire constante à l’aide des utilitaires implémentés dans le package libstatistics_collector. Lorsqu’un nouveau message est reçu par un abonnement, il s’agit d’un nouvel échantillon à calculer dans la fenêtre de mesure en cours. La moyenne calculée est simplement une moyenne mobile. Le maximum, le minimum et le nombre d’échantillons sont mis à jour à la réception de chaque nouvel échantillon, tandis que l’écart type est calculé à l’aide de l’algorithme en ligne de Welford <https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Welford’s_online_algorithm>`__.

Types de statistiques calculées

  • Période de message reçu

    • Unités : millisecondes

    • Utilise l’horloge système pour mesurer la période entre les messages reçus

  • Âge du message reçu

    • Unités : millisecondes

    • Nécessite qu’un message ait un horodatage rempli dans le champ d’en-tête afin de calculer l’âge du message tel qu’il a été envoyé par un éditeur.

Comportement

Par défaut, les mesures des statistiques de sujet ne sont pas activées. Après avoir activé cette fonctionnalité pour un nœud spécifique via les options de configuration de l’abonnement, les mesures de l’âge des messages reçus et de la période des messages reçus sont activées pour cet abonnement spécifique.

Les données sont publiées sous la forme d’un statistics_msg/msg/MetricsMessage à une période configurable (par défaut 1 seconde) à un sujet configurable (par défaut /statistiques). Notez que la période de publication sert également de période de fenêtre de collecte d’échantillons.

Étant donné que la période de message reçu nécessite un horodatage de message dans un champ d’en-tête, des données vides sont publiées. Autrement dit, toutes les valeurs statistiques sont NaN si aucun horodatage n’est trouvé. La publication des valeurs NaN au lieu de ne pas publier du tout évite l’absence de problème de signal et vise à montrer explicitement qu’une mesure n’a pas pu être effectuée.

Le premier échantillon de chaque fenêtre pour la statistique de période de message reçu ne donne pas de mesure. En effet, le calcul de cette statistique nécessite de connaître l’heure à laquelle le message précédent est arrivé, de sorte que les échantillons suivants dans la fenêtre produisent des mesures.

Comparaison avec ROS 1

Semblable à ROS 1 Topic Statistics, l’âge et la période des messages sont calculés, mais du côté de l’abonnement. D’autres mesures ROS 1, par exemple le nombre de messages abandonnés ou le volume de trafic, ne sont actuellement pas fournies.

Soutien

Cette fonctionnalité est actuellement prise en charge dans ROS 2 Foxy pour C++ uniquement (rclcpp). Les travaux et améliorations futurs, tels que la prise en charge de Python, peuvent être trouvés ici.