《精通ROS机器人编程(原书第2版) 》 —1.5.7 应用ROS参数

举报
华章计算机 发表于 2020/02/10 14:12:34 2020/02/10
【摘要】 本节书摘来自华章计算机《精通ROS机器人编程(原书第2版) 》 一书中第1章,第1.5.7节,作者是[印度]郎坦·约瑟夫(Lentin Joseph)[意大利]乔纳森·卡卡切(Jonathan Cacace),张新宇 张志杰 等译 。

1.5.7 应用ROS参数

对一个机器人进行编程时,我们可能必须定义机器人参数,如机器人控制器中的P、I、D参数。随着参数数量的增加,我们可能需要将这些参数存储在文件中。有时两个或多个程序需要共享这些参数。在这种情况下,ROS提供了一个参数共享服务器,所有的ROS节点都可以从该服务器访问参数。节点还可以通过参数服务器读取、写入、修改、删除参数值。

我们可以把这些参数存储在一个文件中,并将它们加载到参数服务器中。服务器可以存储各种各样的数据类型,甚至可以存储字典。用户还可以设置参数的范围,如该参数是否仅可以被某个节点访问,还是可以被所有节点访问。

ROS参数服务器支持如下的XMLRPC数据类型:

32位整型(32-bit integer)

布尔值(Boolean)

字符串(String)

双精度浮点型(Double)

ISO8601日期型(ISO8601 date)

列表(List)

基于64位编码的二进制数据(Base64-encoded binary data)

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

 image.png

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

$ rosparam set [parameter_name] [value]:该命令将为指定参数设置一个值。

$ rosparam get [parameter_name]:该命令将获取指定参数的参数值。

$ rosparam load [YAML file]:ROS参数可以存储在YAML文件中,用该命令可以将YAML文件加载到参数服务器。

$ rosparam dump [YAML file]:该命令将现有的ROS参数转储到YAML文件中。

$ rosparam delete [parameter_name]:该命令删除指定的参数。

$ rosparam list: 该命令列出所有的参数名称。

利用dynamic_reconfigure 软件包(http://wiki.ros.org/dynamic_reconfigure),在节点运行过程中,使节点参数可以动态更新。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。