Passer des arguments ROS aux nœuds via la ligne de commande

Tous les nœuds ROS prennent un ensemble d’arguments qui permettent de reconfigurer diverses propriétés. Les exemples incluent la configuration du nom/espace de noms du nœud, les noms de sujet/service utilisés et les paramètres sur le nœud. Tous les arguments spécifiques à ROS doivent être spécifiés après un drapeau --ros-args :

ros2 run my_package node_executable --ros-args ...

Pour plus de détails, voir ce document de conception.

Remappage du nom

Les noms au sein d’un nœud (par exemple, les sujets/services) peuvent être remappés en utilisant la syntaxe -r <ancien nom>:=<nouveau nom>. Le nom/espace de noms du nœud lui-même peut être remappé en utilisant -r __node:=<nouveau nom de nœud> et -r __ns:=<nouvel espace de noms de nœud>.

Notez que ces remappages sont des remappages « statiques », en ce sens qu’ils s’appliquent pendant toute la durée de vie du nœud. Le remappage « dynamique » des noms après le démarrage des nœuds n’est pas encore pris en charge.

Voir cette documentation de conception pour plus de détails sur les arguments de remappage (toutes les fonctionnalités ne sont pas encore disponibles).

Exemple

L’invocation suivante entraînera le démarrage du nœud talker sous le nom de nœud my_talker, en publiant sur le sujet nommé my_topic au lieu de la valeur par défaut de chatter. L’espace de noms, qui doit commencer par une barre oblique, est défini sur /demo, ce qui signifie que les sujets sont créés dans cet espace de noms (/demo/my_topic), par opposition à globalement (``/my_topic ``).

ros2 run demo_nodes_cpp talker --ros-args -r __ns:=/demo -r __node:=my_talker -r chatter:=my_topic

Passer des arguments de remappage à des nœuds spécifiques

Si plusieurs nœuds sont exécutés dans un même processus (par exemple, en utilisant Composition), les arguments de remappage peuvent être passés à un nœud spécifique en utilisant son nom comme préfixe. Par exemple, ce qui suit transmettra les arguments de remappage aux nœuds spécifiés :

ros2 run composition manual_composition --ros-args -r talker:__node:=my_talker -r listener:__node:=my_listener

L’exemple suivant modifiera à la fois le nom du nœud et remappera un sujet (les changements de nœud et d’espace de noms sont toujours appliqués avant le remappage du sujet) :

ros2 run composition manual_composition --ros-args -r talker:__node:=my_talker -r my_talker:chatter:=my_topic -r listener:__node:=my_listener -r my_listener:chatter:=my_topic

Configuration de l’enregistreur

Voir l’utilisation de l’argument --log-level dans la page de journalisation.

Paramètres

Réglage des paramètres directement depuis la ligne de commande

Vous pouvez définir les paramètres directement depuis la ligne de commande en utilisant la syntaxe suivante :

ros2 run package_name executable_name --ros-args -p param_name:=param_value

Par exemple, vous pouvez exécuter :

ros2 run demo_nodes_cpp parameter_blackboard --ros-args -p some_int:=42 -p "a_string:=Hello world" -p "some_lists.some_integers:=[1, 2, 3, 4]" -p "some_lists.some_doubles:=[3.14, 2.718]"

D’autres nœuds pourront récupérer les valeurs des paramètres, par exemple :

$ ros2 param list parameter_blackboard
a_string
qos_overrides./parameter_events.publisher.depth
qos_overrides./parameter_events.publisher.durability
qos_overrides./parameter_events.publisher.history
qos_overrides./parameter_events.publisher.reliability
some_int
some_lists.some_doubles
some_lists.some_integers
use_sim_time

Définition des paramètres à partir de fichiers YAML

Les paramètres peuvent être définis à partir de la ligne de commande sous la forme de fichiers yaml.

Voir ici pour des exemples de la syntaxe du fichier yaml.

Par exemple, enregistrez ce qui suit sous demo_params.yaml :

parameter_blackboard:
    ros__parameters:
        some_int: 42
        a_string: "Hello world"
        some_lists:
            some_integers: [1, 2, 3, 4]
            some_doubles : [3.14, 2.718]

Ensuite, déclarez les paramètres dans votre nœud avec declare_parameter ou declare_parameters (voir documentation pour signatures de fonction), ou configurer le nœud pour qu’il déclare automatiquement les paramètres s’ils ont été transmis via un remplacement de ligne de commande.

Exécutez ensuite ce qui suit :

ros2 run demo_nodes_cpp parameter_blackboard --ros-args --params-file demo_params.yaml

D’autres nœuds pourront récupérer les valeurs des paramètres, par exemple :

$ ros2 param list parameter_blackboard
a_string
qos_overrides./parameter_events.publisher.depth
qos_overrides./parameter_events.publisher.durability
qos_overrides./parameter_events.publisher.history
qos_overrides./parameter_events.publisher.reliability
some_int
some_lists.some_doubles
some_lists.some_integers
use_sim_time