ROS学习笔记27(ROS的环境变量)
您可以设置许多环境变量来影响ROS的⾏为。其中,最重要的是ROS_MASTER_URI,ROS_ROOT和ROS_PACKAGE_PATH,因为它们在系统中常⽤,并且在⽂档中经常提到。
环境变量在ROS中扮演各种⾓⾊:
查包:⾸先,ROS_ROOT和ROS_PACKAGE_PATH使ROS能够在⽂件系统中到和。您还必须设置PYTHONPATH,以便Python解释器可以到ROS库。
影响节点运⾏时:还有⼀些影响节点运⾏⽅式的 ROS环境变量。ROS_MASTER_URI是⼀个重要的环境变量,告诉⼀个节点,哪⼀个是Master。ROS_IP和ROS_HOSTNAME影响节点的⽹络地址,ROS_NAMESPACE允许您更改其命名空间。ROS_LOG_DIR允许您设置写⼊⽇志⽂件的⽬录。Many of these can be overridden by as well, which have precedence over environment variables.
修改构建系统:ROS_BINDEPS_PATH,ROS_BOOST_ROOT,ROS_PARALLEL_JOBS和ROS_LANG_DISABLE会影响到哪⾥到库的位置,库的构建⽅式以及构建哪⼀个库。
下⾯更详细地描述这些环境变量和更多。
必需的ROS环境变量
⼤多数系统也会设置ROS_PACKAGE_PATH,但ROS唯⼀需要的环境变量是ROS_ROOT,ROS_MASTER_URI和PYTHONPATH。默认情况下,这些是通过获取/opt/ros/fuerte/setup.bash⾃动为您设置的。
1 ROS_ROOT
ROS_ROOT设置ROS核⼼软件包的安装位置。
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=mia:11311/
3 PYTHONPATH
ROS要求更新您的PYTHONPATH,即使您不使⽤Python编程!许多ROS基础结构⼯具依赖于Python,需要访问包以进⾏引导。export PYTHONPATH=$PYTHONPATH:$ROS_ROOT/core/roslib/src
其他PATH环境变量
1 ROS_PACKAGE_PATH
ROS_PACKAGE_PATH是⼀个可选但⾮常常见的环境变量,允许您从source向环境添加更多ROS包。ROS_PACKAGE_PATH可以由⼀个或多个由标准OS路径分隔符分隔的路径组成(累死Unix系统上的':')。这些有序路径告诉ROS系统在哪⾥搜索更多的ROS包。如果有相同名称的多个包,ROS会选择上出现的⼀个ROS_PACKAGE_PATH 。
export ROS_PACKAGE_PATH=/home/user/ros/ros-pkg:/another/path
请注意,ROS_PACKAGE_PATH中的每个条⽬都是递归搜索的 - 将到命名路径下的所有ROS包。
随着catkin的引⼊,ROS_PACKAGE_PATH变得过时,并且仅为了向后兼容rosbuild包⽽保留。
系统数据环境变量
1 ROS_HOME
环境变量path误删有影响吗
默认情况下,ROS将数据写⼊〜/ .ros。可以通过设置ROS_HOME来更改此位置。You can also change the location of certain individual directories in ~/.ros (e.g. 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是⼀个可选的环境变量,它为有⽤的位置提供keyed names。它是:密钥位置对的分隔列表。每个密钥位置对由=分隔。例如:
export ROS_LOCATIONS="rospkg=/path/to/rospkg:stairpkg=/path/to/stairpkg"
然后可以在诸如roscd之类的⼯具中使⽤这些键名。
2 ROS_WORKSPACE
ROS_WORKSPACE由rosinstall/rosws⼯具引⼊,它由setup.sh设置,由创建⼯作区时这些⼯具⽣成。它指向⼯作空间的⽂件夹,并由rosws命令使⽤,并作为这个命令的默认⽬标。
fuerte中的roscd⼯具被更改为在没有参数的情况下调⽤时使⽤该变量。以前它默认改为ROS_ROOT。
节点环境变量
1 ROS_IP/ROS_HOSTNAME
ROS_IP和ROS_HOSTNAME是可选的环境变量,⽤于设置ROS 或⼯具的声明的⽹络地址。这两个是互斥的,如果两者都设置了
ROS_HOSTNAME将优先。使⽤ROS_IP如果你指定⼀个IP地址,并ROS_HOSTNAME⽤于指定主机名。当ROS组件向Master或其他组件报告URI时,将使⽤此值。仅当您有多个计算机地址并需要强制ROS到特定地址时才需要此设置。
With the exception of 'localhost', it does not affect the actual bound address as ROS components bind to all available network interfaces. If the value is set to localhost, the ROS component will bind only to the loopback interface.如果该值设置为localhost,则ROS组件将仅绑定到 loopback 接⼝,这将阻⽌远程组件与本地组件通信。
2 ROS_NAMESPACE
ROS_NAMESPACE允许您将节点push down到命名空间。节点中的所有名称都将相对于此值进⾏解析,包括重新映射的名称。
3 ROSCONSOLE_CONFIG_FILE
这是⼀个特定的环境变量。允许您定义的配置⽂件,该⽂件ROSCONSOLE_CONFIG_FILE环境变量定义。此配置⽂件中定义的任何内容都将覆盖默认配置⽂件。
4 控制台输出格式
rosconsole允许您通过ROSCONSOLE_FORMAT环境变量指定您希望其输出显⽰在控制台输出中的⽅式。默认值相当于:
export ROSCONSOLE_FORMAT='[${severity}] [${time}]: ${message}'
5 ROS_PYTHON_LOG_CONFIG_FILE
这特定于,,和。对于这些⼯具,您可以定义⾃⼰的Python ⽇志配置⽂件,⽽不是默认的配置⽂件,该⽂件存储在$ ROS_ROOT / config / f中。有关更多信息,请参阅Python ⽇志记录⽂档:
构建系统环境变量
为了更好地理解这些环境变量,请参阅。
1 ROS_BOOST_ROOT
ROS_BOOST_ROOT是⼀个可选的环境变量,可让您覆盖搜索boost的位置。如果未设置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 标志来设置与并⾏性相关的系统负载限制。⼤型构建中过多的并⾏性会耗尽系统内存。
因此8可能适⽤于具有8个核⼼的机器。
3 ROS_LANG_DISABLE
应禁⽤的客户端库的以冒号分隔的程序包名称列表。此列表中的包不会发⽣消息⽣成。例如:
export ROS_LANG_DISABLE = roslisp:rosjava
Groovy中的新功能 如果负责为特定语⾔⽣成消息的包使⽤catkin(对于Groovy中的⼤多数消息⽣成器都是如此),包名称应该是实际⽣成消息的包。例如:
export ROS_LANG_DISABLE = genlisp:genjava
请注意,在禁⽤语⾔之前,您应该⾸先确定您使⽤的所有代码都不需要该语⾔的绑定。
4 ROS_OS_OVERRIDE
格式:“OS_NAME:OS_VERSION_STRING”这将强制它检测Ubuntu Lucid:
export ROS_OS_OVERRIDE = ubuntu:10.04
如果已定义,则将覆盖OS的⾃动检测。当调试外来平台上的rosdep依赖关系,当平台实际上⾮常相似并且可能需要强制,或者当然⾃动检测失败时,这可能很有⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。