当前位置: 首页 > news >正文

(ros//EnvironmentVariables)ros环境变量

 (ros//EnvironmentVariables)ros环境变量

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依赖性时,当平台很相似可能需要强制,或自动检测失败时,很有用。

相关文章:

  • ROS移植机器人小车:小车主机与从机电脑的通信
  • Linux查看版本和系统信息
  • ROS移植机器人小车: rikirobot试运行
  • Linux+Grub启动引导修复错误:Gnu Grub Version 2.04 Minimal BASH-like editing is supported...
  • Ubuntu下安装指定版本的cmake包
  • Ubuntu20.04编译安装Opencv4.5.5安装包报错:Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
  • Ubuntu20.04编译安装Opencv4.5.5
  • Linux如何查看内核版本并安装内核头文件linux-headers-generic
  • Linux中如何安装特定的gcc版本
  • Ubuntu 20.04 源码编译Paddle2.2.2
  • Ubuntu20.04源码编译PaddleOCR2.4
  • OpenCV导入时报错 ImportError: numpy.core.multiarray failed to import
  • OpenVINO2022.1+open_model_zoo例程的编译与使用
  • OpenCV cv::plugin::impl::DynamicLib::libraryLoad load ..opencv_core_parallel_tbb45 =>FAILED
  • OpenVINO之text_detection_demo
  • 《剑指offer》分解让复杂问题更简单
  • 【React系列】如何构建React应用程序
  • Bytom交易说明(账户管理模式)
  • CSS盒模型深入
  • ES6之路之模块详解
  • Github访问慢解决办法
  • JWT究竟是什么呢?
  • magento 货币换算
  • Mocha测试初探
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • python大佬养成计划----difflib模块
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 区块链技术特点之去中心化特性
  • 十年未变!安全,谁之责?(下)
  • 使用putty远程连接linux
  • 算法-图和图算法
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信小程序填坑清单
  • 用jquery写贪吃蛇
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​虚拟化系列介绍(十)
  • #define用法
  • $L^p$ 调和函数恒为零
  • (70min)字节暑假实习二面(已挂)
  • (WSI分类)WSI分类文献小综述 2024
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (万字长文)Spring的核心知识尽揽其中
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net framework4与其client profile版本的区别
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET关于 跳过SSL中遇到的问题
  • .NET和.COM和.CN域名区别
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)