Utilisation de l’outil de ligne de commande ros2 param

Les paramètres dans ROS 2 peuvent être obtenus, définis, répertoriés et décrits via un ensemble de services, comme décrit dans the concept document. L’outil de ligne de commande ros2 param est un wrapper autour de ces appels de service qui facilite la manipulation des paramètres à partir de la ligne de commande.

liste de paramètres ros2

Cette commande listera tous les paramètres disponibles sur un nœud donné, ou sur tous les nœuds détectables si aucun nœud n’est donné.

Pour obtenir tous les paramètres sur un nœud donné :

ros2 param list /my_node

Pour obtenir tous les paramètres sur tous les nœuds du système (cela peut prendre beaucoup de temps sur un réseau compliqué) :

ros2 param list

obtenir le paramètre ros2

Cette commande obtiendra la valeur d’un paramètre particulier sur un nœud particulier.

Pour obtenir la valeur d’un paramètre sur un nœud :

ros2 param get /my_node use_sim_time

jeu de paramètres ros2

Cette commande définira la valeur d’un paramètre particulier sur un nœud particulier. Pour la plupart des paramètres, le type de la nouvelle valeur doit être le même que le type existant.

Pour définir la valeur d’un paramètre sur un nœud :

ros2 param set /my_node use_sim_time false

La valeur transmise sur la ligne de commande est en YAML, ce qui permet d’utiliser des expressions YAML arbitraires. Cependant, cela signifie également que certaines expressions seront interprétées différemment de ce à quoi on pourrait s’attendre. Par exemple, si le paramètre my_string sur le nœud my_node est de type string, ce qui suit ne fonctionnera pas :

ros2 param set /my_node my_string off

C’est parce que YAML interprète « off » comme un booléen, et my_string est un type de chaîne. Cela peut être contourné en utilisant la syntaxe YAML pour définir explicitement les chaînes, par exemple :

ros param set /my_node my_string '!!str off'

De plus, YAML prend en charge les listes hétérogènes, contenant (par exemple) une chaîne, un booléen et un entier. Cependant, les paramètres ROS 2 ne prennent pas en charge les listes hétérogènes, donc toute liste YAML qui a plusieurs types sera interprétée comme une chaîne. En supposant que le paramètre my_int_array sur le nœud my_node est de type tableau d’entiers, ce qui suit ne fonctionnera pas :

ros param set /my_node my_int_array '[foo,off,1]'

Le paramètre de type chaîne suivant fonctionnerait :

ros param set /my_node my_string '[foo,off,1]'

suppression du paramètre ros2

Cette commande supprimera un paramètre d’un nœud particulier. Cependant, notez que cela ne peut supprimer que les paramètres dynamiques (pas les paramètres déclarés). Voir le document de concept pour plus d’informations.

ros2 param delete /my_node my_string

param ros2 décrit

Cette commande fournira une description textuelle d’un paramètre particulier sur un nœud particulier :

ros2 param describe /my_node use_sim_time

vidage des paramètres ros2

Cette commande imprimera tous les paramètres d’un nœud particulier dans un format de fichier YAML. La sortie de cette commande peut ensuite être utilisée pour réexécuter le nœud avec les mêmes paramètres ultérieurement :

ros2 param dump /my_node

chargement des paramètres ros2

Cette commande chargera les valeurs des paramètres d’un fichier YAML dans un nœud particulier. C’est-à-dire que cette commande peut recharger les valeurs lors de l’exécution qui ont été déchargées par ros2 param dump :

ros2 param load /my_node my_node.yaml