Etiqueta <machine>

La etiqueta <machine> declara una máquina en la que puede ejecutar nodos ROS. No necesita esta etiqueta si está lanzando todos los nodos localmente. Se usa principalmente para declarar configuraciones SSH y variables de entorno ROS para máquinas remotas, aunque también puede usarla para declarar información sobre la máquina local.

Atributos

  • name="machine-name"

    • Nombre para asignar a la máquina. Esto corresponde al nombre usado para el atributo machine para las etiquetas <node>.

    address="blah.willowgarage.com"

    • Dirección de red / nombre de host de la máquina.

    env-loader="/opt/ros/fuerte/env.sh" New in Fuerte

    • Especifique el archivo de entorno en la máquina remota. El archivo de entorno debe ser un script de shell que establezca todas las variables de entorno requeridas, luego ejecute exec en los argumentos proporcionados. Para obtener un archivo de ejemplo, consulte el archivo env.sh que se proporciona con las instalaciones de Debian de ROS Fuerte. Vea a continuación un ejemplo de env-loader.

    default="true|false|never" (optional)

    • Establece esta máquina como predeterminada para asignar nodos. La configuración predeterminada solo se aplica a los nodos definidos más adelante en el mismo ámbito. NOTA: si no hay máquinas predeterminadas, se utiliza la máquina local. Puede evitar que se elija una máquina configurando default =" never ", en cuyo caso la máquina solo se puede asignar explícitamente.

    user="username" (optional)

    • Nombre de usuario SSH para iniciar sesión en la máquina. Puede omitirse si no es necesario.

    password="passwhat"(strongly discouraged)

    • Contraseña SSH. Se recomienda encarecidamente que configure las claves SSH y el agente SSH en su lugar para que pueda iniciar sesión con certificados.

    timeout="10.0" (optional)

    • Número de segundos antes de que roslaunch en esta máquina se considere que no se pudo iniciar. Por defecto, son 10 segundos. Si bien puede usar esta configuración para permitir conexiones más lentas, la necesidad de cambiar este parámetro es generalmente un síntoma de que su gráfico ROS general tendrá problemas de comunicación.

Los siguientes atributos están disponibles en ROS Electric y versiones anteriores:

  • ros-root="/path/to/ros/root/" (optional)

    • ROS_ROOT para la máquina. Por defecto, el conjunto ROS_ROOT en el entorno local.

    ros-package-path="/path1:/path2" (optional)

    • ROS_PACKAGE_PATH para maquina. Por defecto, el conjunto ROS_PACKAGE_PATH en el entorno local.

Elements

Solo para Electric y anteriores: Puede utilizar las siguientes etiquetas XML dentro de una etiqueta <machine>:

  • <env> Establezca una variable de entorno en todos los procesos iniciados en esta máquina.

Ejemplos

La sintaxis de la etiqueta <machine> es muy diferente en ROS Electric, así que preste atención al indicador de versión en los ejemplos siguientes.

Básica (Solo ROS Electric and anteriores)

El siguiente ejemplo a continuación muestra la configuración de un nodo "footalker" para ejecutar otra máquina. Además de anular ROS_ROOT y ROS_PACKAGE_PATH que usará la máquina, el ejemplo también establece una variable de entorno LUCKY_NUMBER en la máquina remota.

<launch>
  <machine name="foo" address="foo-address" ros-root="/u/user/ros/ros/" ros-package-path="/u/user/ros/ros-pkg" user="someone">
    <env name="LUCKY_NUMBER" value="13" />
  </machine>

  <node machine="foo" name="footalker" pkg="test_ros" type="talker.py" />

</launch>

Basic (ROS Fuerte y posterior) usando env-loader

<< Versión (Fuerte) >>

El siguiente ejemplo a continuación muestra la configuración de un nodo "footalker" para ejecutar otra máquina. Utiliza el archivo env-loader predeterminado que viene con Fuerte.

<launch>
  <machine name="foo" address="foo-address" env-loader="/opt/ros/fuerte/env.sh" user="someone"/>

  <node machine="foo" name="footalker" pkg="test_ros" type="talker.py" />

</launch>

A continuación se muestra un ejemplo de secuencia de comandos de env-loader. Reemplace /opt/ros/fuerte/setup.sh con un archivo de configuración diferente si desea utilizar una configuración de entorno diferente:

#!/bin/sh

. /opt/ros/fuerte/setup.sh
exec "$@"

Alternativamente, si prefiere obtener fuentes de un espacio de trabajo de rosws:

#!/usr/bin/env bash

source /home/username/path/to/workspace/setup.bash
exec "$@"

Wiki: es/roslaunch/XML/machine (last edited 2021-09-09 18:49:36 by JuanEduardoRiva)