参数服务器概念

参数服务器(Parameter)是一种以共享的方式实现不同节点之间数据交互的通信模式,相当于是独立于所有节点的一个公共容器,所有的节点都可以上传数据,也都可以调用数据。

一般适用于存在数据共享的应用场景,存储一些多节点共享的数据,类似于全局变量。

理论模型

img

ROS Master作为公共容器保存参数,Talker向容器中设置参数,Listener可以获取参数。

流程

  1. Talker设置参数
  2. Listener获取参数
  3. ROS Master向Listener发送参数

与前面的话题通信、服务通信中介绍的类似,所有与ROS Master进行的通讯都是使用RPC协议

可用的数据类型

参数可使用数据类型:

  • 32-bit integers
  • booleans
  • strings
  • doubles
  • iso8601 dates
  • lists
  • base64-encoded binary data
  • 字典

注意

参数服务器不是为高性能而设计的,因此最好用于存储静态的非二进制的简单数据

代码操作

在C++中实现参数服务器的增删改查,可以通过两套API实现:ros::NodeHandleros::param

数据的基本操作需求:增删改查

增和改是使用同一个API函数:

  • ros::NodeHandle::setParam("键",值)
  • ros::param::set("键",值)

修改时使用同一个键不同的值覆盖设置