通过前面两篇博客的介绍,相信大家对ROS的通讯机制已经有了一个基本的认识,本篇博客我们将学习ROS中的另一种通讯机制–参数服务器。与前两种通信方式不同,参数服务器也可以说是特殊的“通信方式”。特殊点在于参数服务器是节点存储参数的地方、用于配置参数,全局共享参数。参数服务器使用互联网传输,在节点管理器中运行,实现整个通信过程。
参数服务器,作为ROS中另外一种数据传输方式,有别于topic和service,它更加的静态。参数服务器维护着一个数据字典,字典里存储着各种参数和配置。
何为字典,其实就是一个个的键值对,我们小时候学习语文的时候,常常都会有一本字典,当遇到不认识的字了我们可以查部首查到这个字,获取这个字的读音、意义等等,而这里的字典可以对比理解记忆。键值kay可以理解为语文里的“部首”这个概念,每一个key都是唯一的,参照下图:
每一个key不重复,且每一个key对应着一个value。也可以说字典就是一种映射关系,在实际的项目应用中,因为字典的这种静态的映射特点,我们往往将一些不常用到的参数和配置放入参数服务器里的字典里,这样对这些数据进行读写都将方便高效。
参数服务器的维护方式非常的简单灵活,总的来讲有三种方式:
- 命令行维护
- launch文件内读写
- node源码
其实在ROS Master中就存在一个参数服务器Parameter Server,它是一个全局字典,用来保存各个节点的配置参数,每个节点都是可以访问的,并且会返回需要得到的值。
现在我们来介绍参数服务器的使用方法,首先依然是创建我们的功能包,经过前面两篇博客的介绍,相信大家对这些基本的操作已经很熟悉了:
cd ~/catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs
完成之后如下图:
YAML文件用来保存各种参数,而且这样可以更加方便进行管理。
rosparam的一些常用命令如下:
这里依旧以小海龟为例,可以查看其中的各种选项,可以去试一试,查看这些命令的用法:
rosparam is a command-line tool for getting, setting, and deleting parameters from the ROS Parameter Server.
Commands:
rosparam set set parameter
rosparam get get parameter
rosparam load load parameters from file
rosparam dump dump parameters to file
rosparam <