Contents
Hay muchas variables de entorno que puede configurar para afectar el comportamiento de ROS. De estos, los más importantes de entender son ROS_MASTER_URI, ROS_ROOT y ROS_PACKAGE_PATH ya que se usan comúnmente en el sistema y se mencionan con frecuencia en la documentación.
Las variables de entorno cumplen una variedad de roles en ROS:
Encontrando paquetes: En primer lugar, ROS_ROOT y ROS_PACKAGE_PATH permiten a ROS localizar paquetes y pilas en el sistema de archivos. También debe configurar el PYTHONPATH para que el intérprete de Python pueda encontrar bibliotecas ROS.
Effecting a Node runtime: * Hay varias variables de entorno ROS que afectan la forma en que se ejecuta un nodo. ROS_MASTER_URI es una variable de entorno importante que le dice a un Nodo dónde está el Master. ROS_IP y ROS_HOSTNAME afectan la dirección de red de un Nodo y ROS_NAMESPACE te permite cambiar el nombre de su espacio de trabajo ROS. ROS_LOG_DIR le permite establecer el directorio donde se escriben los archivos de registro. Muchos de estos también pueden ser anulados por Remapping Arguments, que tienen prioridad sobre las variables de entorno.
Estas variables de entorno y más se describen con mayor detalle a continuación.
Variables de entorno ROS requeridas
La mayoría de los sistemas también tendrán configurado ROS_PACKAGE_PATH, pero las únicas variables de entorno requeridas para ROS son ROS_ROOT, ROS_MASTER_URI y PYTHONPATH. De forma predeterminada, estos se configuran automáticamente mediante la compilacion de /opt/ros/ROSDISTRO/setup.bash. (Reemplace ROSDISTRO con la distribución ROS deseada, por ejemplo, índigo o kinetic).
ROS_ROOT
ROS_ROOT establece la ubicación donde se instalan los paquetes principales de ROS.
export ROS_ROOT=/home/user/ros/ros export PATH=$ROS_ROOT/bin:$PATH
ROS_MASTER_URI
ROS_MASTER_URI es una configuración obligatoria que indica a los nodos dónde pueden ubicar al master. Se debe establecerse en el URI XML-RPC del master. Se debe tener mucho cuidado al usar localhost, ya que eso puede conducir a comportamientos no deseados con nodos lanzados de forma remota.
export ROS_MASTER_URI=http://mia:11311/
PYTHONPATH
ROS requiere que su PYTHONPATH esté actualizado, ¡incluso si no programa en Python! 'Muchas herramientas de infraestructura ROS se basan en Python y necesitan acceso al paquete roslib para arrancar.
export PYTHONPATH=$PYTHONPATH:$ROS_ROOT/core/roslib/src
Variables de entorno PATH adicionales
ROS_PACKAGE_PATH
ROS_PACKAGE_PATH es una variable de entorno opcional; pero muy común. Esta le permite agregar más paquetes ROS desde la fuente a su entorno. ROS_PACKAGE_PATH puede estar compuesto por una o más rutas separadas por el separador de ruta estándar de su sistema operativo (por ejemplo, ':' en sistemas similares a Unix). Estas rutas "ordenadas" le dicen al sistema ROS dónde buscar más paquetes ROS. Si hay varios paquetes con el mismo nombre, ROS elegirá primero el que aparece en ROS_PACKAGE_PATH . Tenga en cuenta que cada entrada en ROS_PACKAGE_PATH se busca de forma recursiva y que por lo tanto se encontrarán todos los paquetes ROS debajo de la ruta nombrada. Con la introducción de catkin, la necesidad de actualizar manualmente ROS_PACKAGE_PATH se vuelve obsoleta y solo es necesaria para la compatibilidad con versiones anteriores de los paquetes rosbuild.
De forma predeterminada, ROS escribe datos en ~/.ros. Esta ubicación se puede cambiar configurando un ROS_HOME opcional. También puede cambiar la ubicación de ciertos directorios individuales en ~/.ros (por ejemplo, ROS_TEST_RESULTS_DIR, ROS_LOG_DIR).
De forma predeterminada, ROS escribe archivos de registro internos en ROS_HOME/log. Si esta ubicación no es accesible para ROS, o si desea que los archivos de registro se escriban en otro lugar, establezca ROS_LOG_DIR en esa ruta.
Directorio en el que se deben escribir los resultados de las pruebas.
(Vea rospack's api doc para mas detalle). rospack vuelve a analizar los archivos package.xml y reconstruye el árbol de dependencias en cada ejecución. Sin embargo, mantiene una caché de directorios de paquetes en ROS_ROOT/.rospack_cache. Este caché se actualiza cada vez que hay un error de caché o cuando el caché tiene 60 segundos de antigüedad. Puede cambiar este tiempo de espera configurando la variable de entorno ROS_CACHE_TIMEOUT, en segundos. Configure este en 0.0 para forzar una reconstrucción de caché en cada invocación de rospack.
ROS_LOCATIONS es una variable de entorno opcional que proporciona nombres con clave para ubicaciones útiles. Es una lista separada : de pares de clave-ubicación. Cada par de clave-ubicación está separado por un =. Por ejemplo: Estas claves se pueden utilizar en herramientas como roscd.
ROS_WORKSPACE es introducido por las herramientas rosinstall / rosws, es configurado por setup.sh que es generado por estas herramientas al crear un espacio de trabajo. Apunta a la carpeta del espacio de trabajo y el comando rosws lo utiliza como destino predeterminado del comando. La herramienta roscd en fuerte también se cambió para usar esa variable cuando se llama sin argumentos. Anteriormente, se había predeterminado para cambiar a ROS_ROOT.
ROS_IP y ROS_HOSTNAME son una variable de entorno opcional que establece la dirección de red declarada de un Nodo ROS o herramienta. Las opciones son mutuamente excluyentes, si ambas están configuradas, ROS_HOSTNAME tendrá prioridad. Utilice ROS_IP si está especificando una dirección IP, y ROS_HOSTNAME si está especificando un nombre de host. Cuando un componente ROS informa un URI al ROS_MASTER u otros componentes, se utilizará este valor. Esta configuración solo es necesaria en situaciones en las que tiene varias direcciones para una computadora y necesita forzar ROS a una en particular. Con la excepción de 'localhost', ROS_NAMESPACE le permite "bajar recursivamente" un nodo en un espacio de nombres. Todos los nombres del nodo se resolverán en relación con este valor, incluidos los nombres reasignados.
Esta es una variable de entorno específica de roscpp. rosconsole le permite definir su propio archivo de configuración que será utilizado por log4cxx, definido por la variable de entorno ROSCONSOLE_CONFIG_FILE. Cualquier cosa definida en este archivo de configuración anulará el archivo de configuración predeterminado. Vea http://ros.org/doc/api/rosconsole/html/index.html para mas información.
rosconsole le permite especificar cómo le gustaría que se muestre su salida en la salida de la consola a través de la variable de entorno ROSCONSOLE_FORMAT. El valor predeterminado es equivalente a: Vea http://ros.org/doc/api/rosconsole/html/index.html para obtener más información sobre este paquete en general. Puede ver la lista de cadenas de formato analizadasen el código fuente.
Esto es específico de rospy, rosmaster, roslaunch y rostest. Para estas herramientas, puede definir su propio archivo de configuración logging de Python para usar en lugar del archivo de configuración predeterminado, que se almacena en $ ROS_ROOT/config/python_logging.conf. Para mas informacion, vea la documentación de Python correspondiente a logging: http://docs.python.org/library/logging.html
Para comprender mejor estas variables de entorno, consulte la sección sobre Sistema de compilado ROS.
ROS_BOOST_ROOT es una variable de entorno opcional que le permite anular dónde buscar impulso. Si ROS_BOOST_ROOT no está configurado, por defecto usa ROS_BINDEPS_PATH
El valor de esta variable, si se establece, se pasa a "make" al compilar paquetes. La idea es permitirle explotar al máximo una máquina multiprocesador. Por ejemplo, si tiene 8 procesadores / núcleos y desea ejecutar tantos trabajos en paralelo como sea posible, siempre que la carga del sistema sea inferior a 8, al limitar los trabajos a 8, evita que se sobrepasen en el momento del inicio: Alternativamente, puede usar la marca -j con un argumento para ejecutar hasta 8 trabajos en paralelo, independientemente de la carga del sistema: Recomendamos Qué carga del sistema es aceptable para usted depende de cuántos núcleos tenga: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages Entonces 8 podría ser adecuado para una máquina con 8 núcleos.
Una lista de nombres de paquetes separados por dos puntos para generadores de mensajes / bibliotecas cliente que deben deshabilitarse. La generación de mensajes no ocurrirá para los idiomas de esta lista. Para paquetes compilados con Para los paquetes compilados con Al ignorar los generadores de mensajes con rosbuild, el paso de configuración de CMake mostrará una advertencia de que la biblioteca cliente (por ejemplo, roslisp) no es un generador de mensajes conocido. Esta advertencia se puede ignorar con seguridad. Tenga en cuenta que antes de deshabilitar un idioma, primero debe estar muy seguro de que ninguno de los códigos que está utilizando requiere los enlaces de ese idioma.
Formato: "OS_NAME:OS_VERSION_STRING:OS_CODENAME" Forzara la deteccion de Ubuntu Bionic: Si se define, esto anulará la detección automática de un sistema operativo. Esto puede ser útil al depurar dependencias de rosdep en plataformas extrañas o ajenas, cuando las plataformas son realmente muy similares y podrían necesitar ser forzadas o, por supuesto, si la autodetección falla. export ROS_PACKAGE_PATH=/home/user/ros/ros-pkg:/another/path
Variables del entorno de datos del sistema
ROS_HOME
ROS_LOG_DIR
ROS_TEST_RESULTS_DIR
ROS_CACHE_TIMEOUT
Variables de entorno Bash adicionales
ROS_LOCATIONS
export ROS_LOCATIONS="rospkg=/path/to/rospkg:stairpkg=/path/to/stairpkg"
ROS_WORKSPACE
Variables de entorno del nodo
ROS_IP/ROS_HOSTNAME
ROS_NAMESPACE
ROSCONSOLE_CONFIG_FILE
Formato de salida de la consola
export ROSCONSOLE_FORMAT='[${severity}] [${time}]: ${message}'
ROS_PYTHON_LOG_CONFIG_FILE
Variables de compilado de entorno del sistema
ROS_BOOST_ROOT
ROS_PARALLEL_JOBS
export ROS_PARALLEL_JOBS='-j8 -l8'
export ROS_PARALLEL_JOBS=-j8
ROS_LANG_DISABLE
export ROS_LANG_DISABLE=genlisp
export ROS_LANG_DISABLE=genlisp:roslisp
ROS_OS_OVERRIDE
export ROS_OS_OVERRIDE=ubuntu:18.04:bionic