http://wiki.ros.org/ROS/EnvironmentVariables
ROS/ EnvironmentVariables
在ROS中,可以设置很多环境变量。最需要理解的是ROS_MASTER_URI,ROS_ROOT和ROS_PACKAGE_PATH,因为他们频繁的在系统和文件中被用到。
环境变量在ROS中有多重角色:
1 寻找packages(Finding packages ):
首先,ROS_ROOT和ROS_PACKAGE_PATH使ROS在系统文件(filesystem)中能够定位packages和stacks。同样必须设置PYTHONPATH,这样python解释器才能找到ROS库。
2 影响一个节点运行时间(Effecting a Node runtime ):
有几个环境变量会影响节点的运行。ROS_MASTER_URI是一个重要的环境变量来告诉节点Master(主机)在哪里。ROS_IP和ROS_HOSTNAME影响一个节点的网络地址,ROS_NAMESPACE能够让你改变命名空间。ROS_LOG_DIR可以让你设置日志文件写入的目录。这些也可以被映射参数覆盖,映射参数优先于环境变量。
3 修改构建系统(Modifying the build system):
ROS_BINDEPS_PATH,ROS_BOOST_ROOT,ROS_PARALLEL_JOBS和ROS_LANG_DISABLE影响在哪里寻找库,怎样构建他们,构建哪一个。
这些环境变量在下面将会有更详细的描述。
必需的ROS环境变量
大部分系统都要设置ROS_PACKGE_PATH,ROS只需要环境变量ROS_ROOT,ROS_MASTER_URI和PYTHONPATH。默认通过sourcing /opt/ros/fuerte/setup.bash来自动设置他们。
1. ROS_ROOT
ROS_ROOT设置ROS core包安装的位置。
export ROS_ROOT=/home/user/ros/ros export PATH=$ROS_ROOT/bin:$PATH
2. ROS_MASTER_URI
ROS_MASTER_URI是一个必需的设置来告诉节点在哪里定位master。应该设置master的XML-RPC URI。使用localhost时需要格外小心,因为远程启动节点可能会导致意想不到的结果。
export ROS_MASTER_URI=http://mia:11311/
3. PYTHONPATH
ROS需要PYTHONPATH更新,尽管你可能不用Python编程!很多ROS基础工具都依靠Python,需要连接到roslib包来bootstrapping。
export PYTHONPATH=$PYTHONPATH:$ROS_ROOT/core/roslib/src
其他的PATH环境变量
1. ROS_PACKAGE_PATH
ROS_PACKAGE_PATH是一个可选,但很常用的环境变量,能够让你从源添加更多的ROS包到当前环境。ROS_PACKAGE_PATH可以由一个或多个路径组成,路径之间由标准操作系统路径间隔符(在Unix类的系统中,用’:’)分隔。这些有序的路径告诉ROS系统到哪里搜索更多的ROS包。如果多个包有相同的名字,ROS会首先选择出现在ROS_PACKAGE_PATH的那个。
export ROS_PACKAGE_PATH=/home/user/ros/ros-pkg:/another/path
注意ROS_PACKAGE_PATH的每个条目都被重复查找-路径中提到的包都会被找到。
引入catkin后,ROS_PACKAGE_PATH过时了,只是用来与rosbuild包保持向后兼容。
系统数据环境变量
1. ROS_HOME
默认,ROS写数据到~/.ros。可以通过设置ROS_HOME来改变这个位置。也可以在~/.ros中更改某个目录的位置(例如,ROS_TEST_RESULTS_DIR,ROS_LOG_DIR)。
2. ROS_LOG_DIR
默认,ROS写内部日志文件到ROS_HOME/log。如果这个位置对ROS不可写,或者希望日志文件写到别的地方,设置ROS_LOG_DIR到其他路径。
3. ROS_TEST_RESULTS_DIR
测试结果要写到的目录。
其他的Bash环境变量
1. ROS_LOCATIONS
ROS_LOCATIONS是一个可选的环境变量,为有用的位置提供键名。它是key-location对的分隔列表。每个key-location对用一个=分隔。例如:
export ROS_LOCATIONS="rospkg=/path/to/rospkg:stairpkg=/path/to/stairpkg"
然后这些键就可以用一些工具了,如roscd。
2. ROS_WORKSPACE
ROS_WORKSPACE由工具rosinstall/rosws引进的,当创建一个workspace时,通过这些工具生成的setup.sh设置。它指向workspace的文件夹,通过使用rosws命令使用,作为命令的默认目标。
不带参数的调用时,fuerte中的roscd工具也改用这个变量。此前,它默认改变ROS_ROOT.
节点环境变量
1. ROS_IP/ROS_HOSTNAME
ROS_IP和ROS_HOSTNAME是可选的环境变量,用来设置ROS节点或工具的公开网地址。这两个选项是互斥的,如果两者都设置优先使用ROS_HOSTNAME。如果你指定一个IP地址,使用ROS_IP;如果制定一个主机名(a host name),使用ROS_HOSTNAME。当一个ROS成员报告URI给master或者其他成员,这个值就会被用到。这个设置只用在一台计算机有多个地址,需要强制ROS到特定的一个的情况。
除了’localhost’(本地主机),ROS成员绑定到所有可用的网络接口,他不影响实际绑定地址。如果这个值设定为本地主机,ROS成员只绑定在环回接口。这将会阻止远程成员与本地成员交流。
2. ROS_NAMESPACE
ROS_NAMESPACE可以让你推一个节点到一个命名空间。节点中的所有名字都会相对于这个值解析,包括映射名称。
3. ROSCONSOLE_CONFIG_FIE
这是一个roscpp指定环境变量。Rosconsole让你定义用在log4cxx的配置文件,通过环境变量ROSCONSOLE_CONFIG_FILE定义。在这个配置文件中有任何定义都会覆盖默认的配置文件。
4. Console Output Formatting 控制台输出格式
Rosconsole允许指定怎样通过环境变量ROSCONSOLE_FORMAT在控制台输出。默认等效于:
export ROSCONSOLE_FORMAT='[${severity}] [${time}]: ${message}'
5. ROS_PYTHON_LOG_CONFIG_FILE
特定 rospy, rosmaster, roslaunch, and rostest.对于这些工具,可以指定使用自己的Python logging配置文件来代替默认配置文件,它保存在$ROS_ROOT/config/python_logging.conf.
构建系统环境变量
为了更好的了解这些环境变量,请看ROS Build System部分。
1. ROS_BOOST_ROOT
ROS_BOOST_ROOT是一个可选的环境变量,能让你覆盖哪里去寻找激励。如果ROS_BOOST_ROOT不设置,默认使用ROS_BINDEPS_PATH。
2. ROS_PARALLEL_JOBS
这个变量的值,如果设置,构建包的时候会传递给make。目的是充分使用多处理器机器。例如,如果有8处理器/核,想尽可能多的运行并行任务,只要系统负荷小于8,通过限制任务为8,可以在启动时阻止过冲:
export ROS_PARALLEL_JOBS='-j8 -l8'
或者,可以使用-j标识带一个参数来并行运行最多8个任务,系统负载独立:
export ROS_PARALLEL_JOBS=-j8
强烈建议使用-l标识来设置并行系统相关限制。在一个大的构建中并行过多可能会耗尽系统内存。
可以接受多少系统负载取决于有多少内核。
3. ROS_LANG_DISABLE
消息生成器/客户端库包名称应禁用一个冒号分隔的列表。Message-generation will not happen for languages in this list.
用catkin构建的包需要需要列出应当被忽视的消息生成器的名字,例如:
export ROS_LANG_DISABLE=genlisp
用rosbuild构建的包需要列出应当被忽视的消息生成器及客户端库的名字,例如:
export ROS_LANG_DISABLE=genlisp:roslisp
当忽视掉消息生成器的rosbuild和CMake配置步骤,将会显示一个警告,客户端库(例如,roslisp)不是一个已知的消息生成器。这个警告可以安全的忽略掉。
注意,禁用语言之前,首先必须确定你使用的代码没有与这个语言绑定。
4. ROS_OS_OVERRIDE
格式:"OS_NAME:OS_VERSION_STRING",这将会强制检测Ubuntu Lucid:
export ROS_OS_OVERRIDE=ubuntu:10.04
如果定义,这将覆盖系统的自动检测。在外来平台上调试rosdep依赖性时,当平台很相似可能需要强制,或自动检测失败时,很有用。
email: [email protected]