参数服务器概念
参数服务器(Parameter)是一种以共享的方式实现不同节点之间数据交互的通信模式,相当于是独立于所有节点的一个公共容器,所有的节点都可以上传数据,也都可以调用数据。
一般适用于存在数据共享的应用场景,存储一些多节点共享的数据,类似于全局变量。
理论模型

ROS Master作为公共容器保存参数,Talker向容器中设置参数,Listener可以获取参数。
流程
- Talker设置参数
- Listener获取参数
- ROS Master向Listener发送参数
与前面的话题通信、服务通信中介绍的类似,所有与ROS Master进行的通讯都是使用RPC协议
可用的数据类型
参数可使用数据类型:
- 32-bit integers
- booleans
- strings
- doubles
- iso8601 dates
- lists
- base64-encoded binary data
- 字典
注意
参数服务器不是为高性能而设计的,因此最好用于存储静态的非二进制的简单数据
代码操作
在C++中实现参数服务器的增删改查,可以通过两套API实现:ros::NodeHandle
和ros::param
数据的基本操作需求:增删改查
增和改是使用同一个API函数:
ros::NodeHandle::setParam("键",值)
ros::param::set("键",值)
修改时使用同一个键不同的值覆盖设置