Comprendre les paramètres

Objectif : Apprenez à obtenir, définir, enregistrer et recharger des paramètres dans ROS 2.

Niveau du tutoriel : Débutant

Durée : 5 minutes

Arrière-plan

Un paramètre est une valeur de configuration d’un nœud. Vous pouvez considérer les paramètres comme des paramètres de nœud. Un nœud peut stocker des paramètres sous forme d’entiers, de flottants, de booléens, de chaînes et de listes. Dans ROS 2, chaque nœud gère ses propres paramètres. Pour plus d’informations sur les paramètres, veuillez consulter le document conceptuel.

Conditions préalables

Ce didacticiel utilise le package turtlesim.

Comme toujours, n’oubliez pas de sourcer ROS 2 dans chaque nouveau terminal que vous ouvrez.

Tâches

1 Configuration

Démarrez les deux nœuds turtlesim, /turtlesim et /teleop_turtle.

Ouvrez un nouveau terminal et exécutez :

ros2 run turtlesim turtlesim_node

Ouvrez un autre terminal et exécutez :

ros2 run turtlesim turtle_teleop_key

2 liste de paramètres ros2

Pour voir les paramètres appartenant à vos nœuds, ouvrez un nouveau terminal et saisissez la commande :

ros2 param list

Vous verrez les espaces de noms des nœuds, /teleop_turtle et /turtlesim, suivis des paramètres de chaque nœud :

/teleop_turtle:
  qos_overrides./parameter_events.publisher.depth
  qos_overrides./parameter_events.publisher.durability
  qos_overrides./parameter_events.publisher.history
  qos_overrides./parameter_events.publisher.reliability
  scale_angular
  scale_linear
  use_sim_time
/turtlesim:
  background_b
  background_g
  background_r
  qos_overrides./parameter_events.publisher.depth
  qos_overrides./parameter_events.publisher.durability
  qos_overrides./parameter_events.publisher.history
  qos_overrides./parameter_events.publisher.reliability
  use_sim_time

Chaque nœud a le paramètre use_sim_time ; ce n’est pas unique à turtlesim.

D’après leurs noms, il semble que les paramètres de /turtlesim déterminent la couleur d’arrière-plan de la fenêtre turtlesim en utilisant les valeurs de couleur RVB.

Pour déterminer le type d’un paramètre, vous pouvez utiliser ros2 param get.

3 paramètres ros2 obtenir

Pour afficher le type et la valeur actuelle d’un paramètre, utilisez la commande :

ros2 param get <node_name> <parameter_name>

Découvrons la valeur actuelle du paramètre /turtlesim background_g :

ros2 param get /turtlesim background_g

Qui renverra la valeur :

Integer value is: 86

Vous savez maintenant que background_g contient une valeur entière.

Si vous exécutez la même commande sur background_r et background_b, vous obtiendrez respectivement les valeurs 69 et 255.

4 jeu de paramètres ros2

Pour modifier la valeur d’un paramètre lors de l’exécution, utilisez la commande :

ros2 param set <node_name> <parameter_name> <value>

Modifions la couleur de fond de /turtlesim :

ros2 param set /turtlesim background_r 150

Votre terminal doit renvoyer le message :

Set parameter successful

Et le fond de votre fenêtre turtlesim devrait changer de couleur :

../../../_images/set.png

La définition des paramètres avec la commande set ne les modifiera que dans votre session en cours, pas de façon permanente. Cependant, vous pouvez enregistrer vos paramètres et les recharger la prochaine fois que vous démarrez un nœud.

5 vidage des paramètres ros2

Vous pouvez afficher toutes les valeurs de paramètre actuelles d’un nœud à l’aide de la commande :

ros2 param dump <node_name>

La commande imprime sur la sortie standard (stdout) par défaut, mais vous pouvez également rediriger les valeurs des paramètres dans un fichier pour les enregistrer pour plus tard. Pour enregistrer votre configuration actuelle des paramètres de /turtlesim dans le fichier turtlesim.yaml, entrez la commande :

ros2 param dump /turtlesim > turtlesim.yaml

Vous trouverez un nouveau fichier dans le répertoire de travail dans lequel votre shell s’exécute. Si vous ouvrez ce fichier, vous verrez le contenu suivant :

/turtlesim:
  ros__parameters:
    background_b: 255
    background_g: 86
    background_r: 150
    qos_overrides:
      /parameter_events:
        publisher:
          depth: 1000
          durability: volatile
          history: keep_last
          reliability: reliable
    use_sim_time: false

Le vidage des paramètres est pratique si vous souhaitez recharger le nœud avec les mêmes paramètres à l’avenir.

6 chargement de paramètres ros2

Vous pouvez charger les paramètres d’un fichier vers un nœud en cours d’exécution à l’aide de la commande :

ros2 param load <node_name> <parameter_file>

Pour charger le fichier turtlesim.yaml généré avec ros2 param dump dans les paramètres du nœud /turtlesim, entrez la commande :

ros2 param load /turtlesim turtlesim.yaml

Votre terminal renverra le message :

Set parameter background_b successful
Set parameter background_g successful
Set parameter background_r successful
Set parameter qos_overrides./parameter_events.publisher.depth failed: parameter 'qos_overrides./parameter_events.publisher.depth' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.durability failed: parameter 'qos_overrides./parameter_events.publisher.durability' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.history failed: parameter 'qos_overrides./parameter_events.publisher.history' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.reliability failed: parameter 'qos_overrides./parameter_events.publisher.reliability' cannot be set because it is read-only
Set parameter use_sim_time successful

Note

Les paramètres en lecture seule ne peuvent être modifiés qu’au démarrage et pas après, c’est pourquoi il y a des avertissements pour les paramètres « qos_overrides ».

7 Charger le fichier de paramètres au démarrage du nœud

Pour démarrer le même nœud en utilisant vos valeurs de paramètre enregistrées, utilisez :

ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

C’est la même commande que vous utilisez toujours pour démarrer turtlesim, avec les drapeaux ajoutés --ros-args et --params-file, suivis du fichier que vous voulez charger.

Arrêtez votre nœud turtlesim en cours d’exécution afin que vous puissiez essayer de le recharger avec vos paramètres enregistrés, en utilisant :

ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml

La fenêtre de turtlesim devrait apparaître comme d’habitude, mais avec le fond violet que vous avez défini précédemment.

Note

Dans ce cas, les paramètres sont modifiés au démarrage, de sorte que les paramètres en lecture seule spécifiés prendront également effet.

Résumé

Les nœuds ont des paramètres pour définir leurs valeurs de configuration par défaut. Vous pouvez obtenir et définir les valeurs des paramètres depuis la ligne de commande. Vous pouvez également enregistrer les réglages des paramètres dans un fichier pour les recharger lors d’une prochaine session.

Prochaines étapes

Pour revenir aux méthodes de communication ROS 2, dans le prochain didacticiel, vous découvrirez actions.