Remapeo de Argumentos mediante linea de comandos

Vea también:

  1. roslaunch/XML/remap explanation and examples

  2. Names

Remapeando Argumentos

Cualquier ROS name dentro de un node se puede reasignar cuando es inicializado en la línea de comandos. Esta es una característica poderosa de ROS que le permite lanzar el mismo nodo bajo múltiples configuraciones desde la línea de comandos. Todos los nombres de recursos se pueden reasignar. Esta característica de ROS le permite diferir asignaciones de nombres complejos a la carga real del tiempo de ejecución del sistema.

Los argumentos de reasignación se pueden pasar a cualquier nodo y utilizar la sintaxis name:=new_name. Por ejemplo, para configurar el nodo talker para publicar en /wg/chatter en lugar de en chatter:

rosrun rospy_tutorials talker chatter:=/wg/chatter

Resolvemos los argumentos antes de hacer el emparejamiento. El efecto de esto es que está reasignando un nombre completo, mientras que antes las reasignaciones solo se aplicaban a una cadena específica. Por ejemplo, donde foo:=bar anteriormente solo coincidía con la cadena exacta foo, también coincidirá con /<node_namespace>/foo. Después de la resolución, se usa una coincidencia de cadena directa, por lo que no puede usarla para reasignar partes de los nombres, es decir, foo:=bar coincidirá con foo o /<node_namespace>/foo, pero no coincidirá con foo/baz. La única excepción a esto es cuando se usa searchParam, que mantiene el comportamiento anterior. Esto se debe a que "searchParam" en sí mismo funciona con nombres no resueltos.

Ejemplos

Node Namespace

Remapping Argument

Matching Names

Final Resolved Name

/

foo:=bar

foo, /foo

/bar

/baz

foo:=bar

foo, /baz/foo

/baz/bar

/

/foo:=bar

foo, /foo

/bar

/baz

/foo:=bar

/foo

/baz/bar

/baz

/foo:=/a/b/c/bar

/foo

/a/b/c/bar

Las diversas bibliotecas ROS brindan soporte al cliente para eliminar fácilmente los argumentos de reasignación de su propio análisis de argumentos.

"Empujando hacia abajo"

El ROS_NAMESPACE variable de entorno le permite cambiar el espacio de nombres de un nodo que se está lanzando, lo que reasigna efectivamente todos los nombres en ese nodo. Como todos los nodos se inician en el espacio de nombres global, esto en efecto "lo empuja hacia abajo" en un espacio de nombres secundario. Cambiar el espacio de nombres de un nodo es un mecanismo sencillo para integrar código, ya que todos los nombres dentro del nodo (nombre del nodo, temas, servicios y parámetros) se modificarán.

NOTA: para que esta característica funcione correctamente, es importante que su programa evite el uso de nombres globales y, en su lugar, utilice nombres relativos y privados.

Asignación de parámetros de nodo

Puede asignar parámetros privados para un nodo directamente desde la línea de comandos usando un solo subrayado _ como prefijo. Por ejemplo,

rosrun rospy_tutorials talker _param:=1.0

establece ~ param en 1.0. ROS usa la sintaxis YAML para determinar el tipo de parámetro.

Teclas especiales

  • __name

    • __name es una palabra clave reservada especial para" el nombre del nodo ". Le permite reasignar el nombre del nodo sin tener que saber su nombre real. Solo se puede utilizar si el programa que se está iniciando contiene un nodo.

    __log

    • __log es una palabra clave reservada que designa la ubicación en la que se debe escribir el archivo de registro del nodo. Por lo general, no se recomienda el uso de esta palabra clave; se proporciona principalmente para que la utilicen herramientas ROS como roslaunch.

    __ip y __hostname

    • __ip y __hostname son sustitutos de ROS_IP y ROS_HOSTNAME. Por lo general, no se recomienda el uso de esta palabra clave, ya que se proporciona para casos especiales en los que no se pueden establecer variables de entorno.

    __master

    • __master es un sustituto de ROS_MASTER_URI. Por lo general, no se recomienda el uso de esta palabra clave, ya que se proporciona para casos especiales en los que no se pueden establecer variables de entorno.

    __ns

    • __ns es un sustituto de ROS_NAMESPACE. Por lo general, no se recomienda el uso de esta palabra clave, ya que se proporciona para casos especiales en los que no se pueden establecer variables de entorno.

Nombres privados

También puede proporcionar asignación para parámetros de nodos privados. La tecla "from" debe tener el prefijo ~. Consulte este hilo con ejemplo de trabajo para obtener más detalles.

Wiki: es/RemapeoDeArgumentos (last edited 2021-08-12 11:11:37 by JuanEduardoRiva)