精通ROS机器人编程(原书第3版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.7 使用ROS参数

在对机器人编程时,我们可能需要定义机器人参数来调整控制算法,比如机器人控制器获得标准比例-积分-微分控制器的P、I和D。当参数数量增加时,我们可能需要将它们存储为文件。在某些情况下,这些参数必须在两个或多个程序之间共享。在这种情况下,ROS提供了一个参数服务器,这是一个共享服务器,其中所有ROS节点都可以从该服务器访问参数。节点可以从参数服务器读取、写入、修改和删除参数值。

我们可以将这些参数存储在一个文件中,并将其加载到服务器中。服务器可以存储多种数据类型,甚至可以存储字典。程序员还可以设置参数的范围,比如设置为只能由该节点访问或所有节点都可以访问。

参数服务器支持以下XMLRPC数据类型:

●32位整型

●布尔值

●字符串

●双精度浮点型

●ISO8601日期型

●列表

●基于64位编码的二进制数据

我们还可以在参数服务器上存储字典。如果参数的数量很大,我们可以使用YAML文件来保存它们。以下是YAML文件参数定义的示例:

rosparam工具可用于从命令行获取和设置ROS参数。以下是使用ROS参数的命令。

●rosparam set [parameter_name] [value]:在给定参数中设置一个值。

●rosparam get [parameter_name]:从给定参数中检索一个值。

●rosparam load [YAML file]:ROS参数可以保存到YAML文件中。它可以使用此命令将它们加载到参数服务器中。

●rosparam dump [YAML file]:将现有ROS参数转储到YAML文件中。

●rosparam delete [parameter_name]:删除给定的参数。

●rosparam list:列出现有的参数名称。

当使用dyamic_reconfigure包执行使用这些参数的节点时,可以动态更改这些参数(http://wiki.ros.org/dynamic_reconfigure)。