ROS中参数的使用

ROS Master 中有一个 Parameter  Server 

rosparam

列出当前参数列表

rosparam list

显示某个参数

rosparam get parameter_name

例如如下命令将读取参数/rosdistro的值

rosparam get /rosdistro

设置参数

rosparam set parameter_name parameter_value

该命令可以修改已有参数的值或者创建一个新的参数。

例如如下命令将设置参数/duck_colors/huey 的值

rosparam set /duck_colors/huey red

创建和加载参数文件

为了以yaml 文件的形式存储命名空间中的所有参数,可以使用

rosparam dump 命令:

rosparam dump filename namespace

与dump相反的命令是load 命令,它从一个文件中读取参数,并将他们添加到参数服务器:

rosparam load filename namespace

对于这些命令,命名空间参数是可选的,默认是全局命名空间(/)

使用 C++获取参数
 
使用 ROS 参数的 C++ 接口是相当简单的
 
void ros::param::set(parameter_name, input_value);
 
bool ros::param::get(parameter_name, output_value);
 
在这两种情况下,参数名是一个字符串,它可以是全局的、 相对的或者是私有的。
 
set 函数中的输入值 input_value 可以是 std::string、 bool int double 类型;
 
get 函数的输出值应该是上述某个类型的变量(通过引用传递)。如果参数值读取成功,则get 函数返回 true ;如果出现了问题,通常表示所请求的参数还没有被指定一个值,则该函数返回 false
为了查看函数的行为,让我们来看看下面两个实例。

 

在启动文件中设置参数
另外一种常用的参数设置方法是在启动文件中设置。
设置参数 可以使用 param 元素请求 roslaunch 设置参数值
<param name="param-name" value="param-value" />

 

下面的启动文件片段相 当于如下的 rosparam 命令集:
<group ns="duck_colors">
<param name="huey" value="red" />
<param name="dewey" value="blue" />
<param name="louie" value="green" />
<param name="webby" value="pink" />
</group>

 

相当于:

rosparam set /duck_colors/huey red
rosparam set /duck_colors/dewey blue
rosparam set /duck_colors/louie green
rosparam set /duck_colors/webby pink
 

 

设置私有参数 另一个可选方法是在节点元素中包含 param 元素。
<node . . . >
<param name="param-name" value="param-value" />
. . .
</node>
在该结构下,参数名将被当做该节点的私有名称
例:我们可以使用下面的代码启动 pubvel_with_max 节点,
并且正确设置其私有参数 max_vel
<node
pkg="agitr"
type="pubvel_with_max"
name="publish_velocity"
/>
<param name="max_vel" value="3" />
</node>
在文件中读取参数 最后,启动文件也支持 与 rosparam load 等价
的命令,可以一次性从文件中加载多个参数 7
<rosparam command="load" file="path-to-param-file" />
 
使用查找替换来指定功能包的相对路径是常见做法:
<rosparam
command="load"
file="$(find package-name)/param-file"
/>

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值