当前位置: 首页 > 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
  • #Java异常处理
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • .pyc 想到的一些问题
  • 【React系列】如何构建React应用程序
  • 2017-09-12 前端日报
  • CSS中外联样式表代表的含义
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • mysql外键的使用
  • PHP 7 修改了什么呢 -- 2
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Vue--数据传输
  • Web Storage相关
  • - 概述 - 《设计模式(极简c++版)》
  • 记一次删除Git记录中的大文件的过程
  • 日剧·日综资源集合(建议收藏)
  • 使用Gradle第一次构建Java程序
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 正则学习笔记
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​MySQL主从复制一致性检测
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #传输# #传输数据判断#
  • (Java)【深基9.例1】选举学生会
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (poj1.2.1)1970(筛选法模拟)
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (接口自动化)Python3操作MySQL数据库
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (四)汇编语言——简单程序
  • (推荐)叮当——中文语音对话机器人
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)平衡树
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET 材料检测系统崩溃分析
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法