ROS(4)参数
参考《机器人操作系统简析》
除了消息传递,ROS还提供另一种参数(parameters)机制用于获取节点的信息。其主要思想是使用集中参数服务器(parameterserver)维护一个变量集的值,包括整数、浮点数、字符串以及其他数据类型,每一个变量用一个较短的字符串标识。由于允许节点主动查询其感兴趣的参数的值,它们适用于配置那些不会随时间频繁变更的信息。
A.常用命令
查看参数列表使用下面的命令可以查看所有参数的列表rosparam list
查询参数 向参数服务器查询某个参数的值rosparamget parameter_name
检索给定命名空间中的每一个参数的值 rosparam get namespace
设置参数 : rosparam set parameter_nameparameter_value
创建和加载参数文件为了以YAML文件的形式存储命名空间中的所有参数,可以使用rosparam dump命令: rosparam dump filename namespace
B.需要引起高度注意的是,更新的参数值不会自动“推送”到节点。恰恰相反,如果节点关心它的一些或者所有参数是否改变,必须明确向参数服务器请求这些参数的值。对一个节点来说,可以请求参数服务器在参数更新后将新参数值发给它,这个功能可以通过ros::param::getCached命令替换ros::param::get来实现
C.ROS参数的C++接口是相当简单的
voidros::param::set(parameter_name, input_value);
boolros::param::get(parameter_name, output_value);
定义参数变量例如conststd::string PARAM_NAME = "~max_vel" ;
D. 启动文件中设置参数 可以使用param元素请求roslaunch设置参数值:
<paramname="param-name" value="param-value" />放于<node/>或<group/>中
**在文件中读取参数 最后,启动文件也支持 与rosparam load等价的命令,可以一次性从文件中加载多个参数:
<rosparamcommand="load" file="path-to-param-file" />
关于节点的一些补充:
Cmake文件的node可执行文件是rosrun 对象
ros::init(argc,argv,”nodename”),这边所取的名字是rosnode list 中显现的名字,即为节点的默认名字
个人习惯:可执行文件为xxx_node,init中命名xxx。