Estás leyendo la documentación para una versión de desarrollo. Para la última versión publicada, por favor revisa Humble.
Comprender los Parámetros
Objetivo: Aprenda a obtener, configurar, guardar y recargar parámetros en ROS 2.
Nivel del Tutorial: Principiant
Tiempo: 5 minutos
Contenido
Historial
Un parámetro es un valor de configuración de un nodo. Puedes pensar en los parámetros como configuraciones de nodo. Un nodo puede almacenar parámetros como enteros, flotantes, booleanos, cadenas y listas. En ROS 2, cada nodo mantiene sus propios parámetros. Para obtener más información sobre los parámetros, puedes consultar el documento de conceptos.
Requisitos previos
Este tutorial utiliza el paquete turtlesim.
Como siempre, no olvides ejecutar source
con el archivo de setup en cada nueva terminal que abra.
Tareas
1 Configuración
Inicia los dos nodos de turtlesim, /turtlesim
y /teleop_turtle
.
Abra una nueva terminal y ejecute:
ros2 run turtlesim turtlesim_node
Abre otra terminal y ejecuta:
ros2 run turtlesim turtle_teleop_key
2 ros2 param list
Para ver los parámetros que pertenecen a sus nodos, abre una nueva terminal e introduce el comando:
ros2 param list
Verás los espacios de nombres de los nodos, /teleop_turtle
y /turtlesim
, seguidos de los parámetros de cada nodo:
/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
Cada nodo tiene el parámetro use_sim_time
; no es exclusivo de turtlesim.
Según sus nombres, parece que los parámetros de /turtlesim
determinan el color de fondo de la ventana de turtlesim usando valores de color RGB.
Para determinar el tipo de un parámetro, puede usar ros2 param get
.
3 ros2 param get
Para mostrar el tipo y el valor actual de un parámetro, use el comando:
ros2 param get <node_name> <parameter_name>
Por ejemplo, para ver el valor actual del parámetro background_g
de /turtlesim
, ejecuta:
ros2 param get /turtlesim background_g
Lo que devolverá el valor:
Integer value is: 86
Now you know background_g
holds an integer value.
Ahora sabes que background_g
tiene un valor entero.
Si ejecutas el mismo comando en background_r
y background_b
, obtendrás los valores 69 y 255, respectivamente.
4 ros2 param set
Para cambiar el valor de un parámetro en tiempo de ejecución, usa el comando:
ros2 param set <node_name> <parameter_name> <value>
Cambiemos el color de fondo de /turtlesim
:
ros2 param set /turtlesim background_r 150
La terminal debería devolver el mensaje:
Set parameter successful
Y el fondo de la ventana de turtlesim debería cambiar de color:
Establecer parámetros con el comando set
solo los cambiará en su sesión actual, no de forma permanente.
Sin embargo, puedes guardar tu configuración y volver a cargarla la próxima vez que inicie un nodo.
5 ros2 param dump
Puedes ver todos los parámetros y sus valores actuales de un nodo usando el comando:
ros2 param dump <node_name>
El comando se imprime en la salida estándar (stdout) de forma predeterminada, pero también puede redirigir los valores de los parámetros a un archivo para guardarlos más adelante.
Para guardar la configuración actual de los parámetros de /turtlesim
en el archivo turtlesim.yaml
, introduce el comando:
ros2 param dump /turtlesim > turtlesim.yaml
Encontrarás un nuevo archivo en el directorio de trabajo en el que se está ejecutando tu terminal. Si abres este archivo, verá el siguiente contenido:
/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
Guardar los parámetros resulta útil si deseas volver a cargar el nodo con los mismos parámetros en el futuro.
6 ros2 param load
Puedes cargar parámetros desde un archivo a un nodo actualmente en ejecución usando el comando:
ros2 param load <node_name> <parameter_file>
Para cargar el archivo turtlesim.yaml
generado con ros2 param dump
en los parámetros del nodo /turtlesim
, introduce el comando:
ros2 param load /turtlesim turtlesim.yaml
La terminal devolverá el mensaje:
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
Nota
Los parámetros de solo lectura solo se pueden modificar al inicio y no después, por eso hay algunas advertencias para los parámetros “qos_overrides”.
7 Cargar archivo de parámetros al iniciar el nodo
Para iniciar el mismo nodo usando los valores de parámetros guardados, ejecuta:
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
Este es el mismo comando que utilizas para iniciar turtlesim, con las banderas añadidas --ros-args
y --params-file
, seguidas del archivo que desea cargar.
Intentá detener el nodo turtlesim en ejecución, e intenta volver a cargarlo con tus parámetros guardados usando:
ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml
La ventana de turtlesim debería aparecer como de costumbre, pero con el fondo morado que configuraste anteriormente.
Nota
Cuando se usa un archivo de parámetros al inicio de un nodo, todos los parámetros serán actualizados, incluyendo los de solo lectura.
Resumen
Los nodos tienen parámetros para definir sus valores de configuración predeterminados. Puedes obtener y establecer valores de parámetros desde la línea de comandos. También puedes guardar la configuración de los parámetros en un archivo para volver a cargarlos en una sesión futura.
Pasos siguientes
Volviendo a los métodos de comunicación de ROS 2, en el próximo tutorial aprenderás sobre acciones.