[Documentation] [TitleIndex] [WordIndex

Esta página describe el formato XML utilizado para los archivos roslaunch .launch. Para obtener información sobre roslaunch, su funcionalidad y las herramientas relacionadas, consulte primero la página roslaunch.

Orden de evaluación

roslaunch evalúa el archivo XML en una sola pasada. Las inclusiones se procesan en orden transversal en profundidad. Las etiquetas se evalúan en serie y la última configuración gana. Por lo tanto, si hay varias configuraciones de un parámetro, se utilizará el último valor especificado para el parámetro.

Confiar en el comportamiento de anulación puede resultar riesgoso. No hay garantía de que una anulación se especifique correctamente (por ejemplo, si se cambia el nombre de un parámetro en un archivo incluido). En su lugar, se recomienda que el comportamiento de anulación se realice usando la configuración $(arg)/<arg>.

Argumentos de sustitución (substitution args)

Los atributos de etiqueta de Roslaunch pueden hacer uso de "argumentos de sustitución", que roslaunch resolverá antes de lanzar los nodos. Los argumentos de sustitución admitidos actualmente son:

Para remediar esta limitación, todos los comandos de sustitución también están disponibles como funciones dentro de eval:

. Para su comodidad, los argumentos también se resuelven implícitamente, es decir, las dos expresiones siguientes son idénticas:

Los argumentos de sustitución se resuelven actualmente en la máquina local. En otras palabras, las variables de entorno y las rutas de los paquetes ROS se establecerán en sus valores en su entorno actual, incluso para los procesos iniciados de forma remota.

Atributos if (si) y unless (a menos que)

Todas las etiquetas que incluyen o excluyen una etiqueta que evalúa un valor, admiten los atributos if y unless. "1" y "verdadero" se consideran valores verdaderos. "0" y "falso" se consideran valores falsos. Otros valores serán erróneos.

Etiquetas Referencias

Ejemplo .launch XML Config Files

NOTA: por convención, los archivos XML roslaunch se nombran con la extensión .launch, p. ej. ejemplo.launch.

Ejemplo Mínimo

El siguiente ejemplo muestra un script de configuración en su mínima expresión. Lanza un solo nodo 'talker' (hablador), que es parte del paquete 'rospy_tutorials'. Este nodo se iniciará en la máquina local utilizando el entorno ROS configurado actualmente (es decir, ROS_ROOT, etc.).

<launch>
  <node name="talker" pkg="rospy_tutorials" type="talker" />
</launch>

Ejemplo más avanzado

<launch>
  <!-- local machine already has a definition by default.
       This tag overrides the default definition with
       specific ROS_ROOT and ROS_PACKAGE_PATH values -->
  <machine name="local_alt" address="localhost" default="true" ros-root="/u/user/ros/ros/" ros-package-path="/u/user/ros/ros-pkg" />
  <!-- a basic listener node -->
  <node name="listener-1" pkg="rospy_tutorials" type="listener" />
  <!-- pass args to the listener node -->
  <node name="listener-2" pkg="rospy_tutorials" type="listener" args="-foo arg2" />
  <!-- a respawn-able listener node -->
  <node name="listener-3" pkg="rospy_tutorials" type="listener" respawn="true" />
  <!-- start listener node in the 'wg1' namespace -->
  <node ns="wg1" name="listener-wg1" pkg="rospy_tutorials" type="listener" respawn="true" />
  <!-- start a group of nodes in the 'wg2' namespace -->
  <group ns="wg2">
    <!-- remap applies to all future statements in this scope. -->
    <remap from="chatter" to="hello"/>
    <node pkg="rospy_tutorials" type="listener" name="listener" args="--test" respawn="true" />
    <node pkg="rospy_tutorials" type="talker" name="talker">
      <!-- set a private parameter for the node -->
      <param name="talker_1_param" value="a value" />
      <!-- nodes can have their own remap args -->
      <remap from="chatter" to="hello-1"/>
      <!-- you can set environment variables for a node -->
      <env name="ENV_EXAMPLE" value="some value" />
    </node>
  </group>
</launch>

Configurando parámetros

También puede establecer parámetros en el Parameter Server. Estos parámetros se almacenarán en el servidor de parámetros (parameter server) antes de que se inicien los nodos.

Puede omitir el atributo type si el valor no es ambiguo. Los tipos admitidos son str, int, double, bool. También puede especificar el contenido de un archivo utilizando los atributos textfile o binfile.

Ejemplo:

<launch>
  <param name="somestring1" value="bar" />
  <!-- force to string instead of integer -->
  <param name="somestring2" value="10" type="str" />

  <param name="someinteger1" value="1" type="int" />
  <param name="someinteger2" value="2" />

  <param name="somefloat1" value="3.14159" type="double" />
  <param name="somefloat2" value="3.0" />

  <!-- you can set parameters in child namespaces -->
  <param name="wg/childparam" value="a child namespace parameter" />

  <!-- upload the contents of a file to the server -->
  <param name="configfile" textfile="$(find roslaunch)/example.xml" />
  <!-- upload the contents of a file as base64 binary to the server -->
  <param name="binaryfile" binfile="$(find roslaunch)/example.xml" />

</launch>

2024-05-18 13:03