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)。