码迷,mamicode.com
首页 > 其他好文 > 详细

rosparam param env arg 的用法

时间:2017-11-11 13:03:21      阅读:423      评论:0      收藏:0      [点我收藏+]

标签:links   val   bst   var   als   方式   pre   连接   variable   

原文:http://www.rosclub.cn/post-172.html

launch file 中可能会同时出现这么几个概念 param、rosparam、arg、env

launch file 中可能会同时出现这么几个概念 param、rosparam、arg、env

本文解释他们的区别

launch时roslaunch首先检查roscore是否已经启动

如果没有则启动roscore

roscore会做三件事:

 1、启动master节点,该节点是隐藏的,用于通过消息名查询目标节点,实现消息、服务在各个节点之间的连接

 2、启动parameter server,用于设置与查询参数

 3、启动日志节点,记录所有消息收发和stdout、stderr

目前roscore暂不会加入其他功能。

其中parameter server参数服务器,可以方便地通过设置参数来改变节点的行为

参数服务器内的参数是以key,value的形式交互

其中key可以加前缀作为命名空间构成多级参数

参数的访问有三种方式:

命令行:

rosparam set / rosparam get

launch文件:

param / rosparam

API:

roscpp: ros::param::set / ros::param::get
rospy: set_param / get_param

ROS中,param特指在参数服务器parameter server中存储的参数

在launch文件中有两个相关的标签:<param>、<rosparam>

<param>标签可用于直接设置参数,也可以从文件中读取

<rosparam>标签用于从yaml文件中读取并设置参数

roslaunch发现<param>和<rosparam>标签后会调用rosparam包来实现设置

<arg>标签给launch文件内部设置参数

通过<arg>标签设置的参数仅在launch文件内有效

<arg>标签有三种设置参数的方式:

  1、直接用此标签设置

  2、用此标签声明,用roslaunch命令确定其值

  3、用此标签声明,在include本launch文件的父launch文件中确定其值

只有一种使用方式:通过launch文件内部的substitution args来使用:$(arg foo)

arg的整个设置到解析仅在roslaunch解析launch文件过程中使用

完成整个启动过程后即刻失效

<env>标签用于设置环境变量

此处“环境变量”是指linux系统的进程环境变量

设置了<env>的node对应的进程可观察到此环境变量

可以通过getenv函数读取

ros也提供了跨平台函数ros::get_environment_variable来读取环境变量

需要注意的是此法设置的环境变量是进程的环境变量,在运行roslaunch的shell上是echo不出来的

可以先rosnode info查看节点进程的pid,例如是12345

cat /proc/12345/evniron | tr ‘\0’ ‘\n’

来查看进程的环境变量

注意:launch文件的substitution args: $(env ENVIRONMENT_VARIABLE)

用于查询当前shell环境变量是无法查询<env>设置的进程环境变量的

故<env>无法改变launch的行为,只能通过getenv或ros::get_environment_variable来改变节点的行为

 

参考链接

http://wiki.ros.org/roscore

http://wiki.ros.org/Parameter%20Server

http://wiki.ros.org/roslaunch

http://wiki.ros.org/roslaunch/XML

http://wiki.ros.org/roslaunch/XML/param

http://wiki.ros.org/roslaunch/XML/rosparam

http://wiki.ros.org/rosparam

http://wiki.ros.org/roslaunch/XML/env

rosparam param env arg 的用法

标签:links   val   bst   var   als   方式   pre   连接   variable   

原文地址:http://www.cnblogs.com/marty86/p/7818658.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!