<<TableOfContents(3)>> 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 | paquetes]] y [[Pilas | 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` ''. {{{ export ROS_PACKAGE_PATH=/home/user/ros/ros-pkg:/another/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. = Variables del entorno de datos del sistema = == ROS_HOME == 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`). == 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. == ROS_TEST_RESULTS_DIR == Directorio en el que se deben escribir los resultados de las pruebas. == ROS_CACHE_TIMEOUT == (Vea [[http://docs.ros.org/independent/api/rospkg/html/rospack.html#efficiency-considerations|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`. = Variables de entorno Bash adicionales = == ROS_LOCATIONS == `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: {{{ export ROS_LOCATIONS="rospkg=/path/to/rospkg:stairpkg=/path/to/stairpkg" }}} Estas claves se pueden utilizar en herramientas como roscd. == ROS_WORKSPACE == `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`. = Variables de entorno del nodo = == ROS_IP/ROS_HOSTNAME == `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', '' no '' afecta la dirección enlazada real ya que los componentes ROS se enlazan a todas las interfaces de red disponibles. Si el valor se establece en localhost, el componente ROS se vinculará solo a la interfaz de bucle invertido. Esto evitará que los componentes remotos puedan comunicarse con su componente local. == ROS_NAMESPACE == `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. == ROSCONSOLE_CONFIG_FILE == 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. == Formato de salida de la consola == 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: {{{ export ROSCONSOLE_FORMAT='[${severity}] [${time}]: ${message}' }}} 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 analizadas[[http://docs.ros.org/api/rosconsole/html/namespaceros_1_1console.html#a002c0a7a505520666bc6e9362677fd93|en el código fuente]]. == ROS_PYTHON_LOG_CONFIG_FILE == 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 = Variables de compilado de entorno del sistema = Para comprender mejor estas variables de entorno, consulte la sección sobre [[ROS/BuildSystem | Sistema de compilado ROS]]. == ROS_BOOST_ROOT == `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` == ROS_PARALLEL_JOBS == 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: {{{ export ROS_PARALLEL_JOBS='-j8 -l8' }}} Alternativamente, puede usar la marca `-j` con un argumento para ejecutar hasta 8 trabajos en paralelo, independientemente de la carga del sistema: {{{ export ROS_PARALLEL_JOBS=-j8 }}} Recomendamos '' 'encarecidamente' '' usar la marca `-l` para establecer un límite de paralelismo dependiente de la carga del sistema. El paralelismo excesivo en una construcción grande puede agotar la memoria del sistema. 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. == ROS_LANG_DISABLE == 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 '' 'catkin' '', debe enumerar los nombres de los generadores de mensajes que deben ignorarse, por ejemplo: {{{ export ROS_LANG_DISABLE=genlisp }}} Para los paquetes compilados con '' 'rosbuild' '' necesita enumerar los nombres de los generadores de mensajes '' así como '' las bibliotecas cliente que deben ignorarse, por ejemplo: {{{ export ROS_LANG_DISABLE=genlisp:roslisp }}} 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. == ROS_OS_OVERRIDE == Formato: "OS_NAME:OS_VERSION_STRING:OS_CODENAME" Forzara la deteccion de Ubuntu Bionic: {{{ export ROS_OS_OVERRIDE=ubuntu:18.04: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.