ROS中参数的使用

  • Post author:
  • Post category:其他


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”

/>



版权声明:本文为lvmengzou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。