博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ROS机器人程序设计(原书第2版)2.4.14 动态参数
阅读量:6519 次
发布时间:2019-06-24

本文共 1148 字,大约阅读时间需要 3 分钟。

2.4.14 动态参数

ROS的另一个功能是动态重配置应用。通常情况下,当你正在编写一个新节点,你只能以数据初始化节点内的变量。如果你想从外部节点动态地改变这些值,你可以使用参数服务器、服务或主题。如果你使用一个PID节点来控制一个电动机,则应该使用动态重配置

应用。

在本节中,你将学习如何配置一个包含此功能的基本节点。添加必要的内容到CMakeLists.txt和package.xml文件。

为了使用动态重配置,你需要写一个配置文件并保存在你功能包的cfg文件夹中,创建一个文件夹和新文件如下:

 

在chapter2.cfg文件中添加如下代码:

 

代码解释:

 

以上代码初始化ROS并导入参数生成器:

 

以上代码初始化参数生成器,通过它我们可以开始用下面的代码行添加参数:

 

以上代码加入不同的参数类型并设置默认值、描述、范围等,参数有如下内容:

 

name 参数的名称

type 参数值的类型

level 一个传递给回调的位掩码

description 一个描述参数

default 节点启动的初始值

min 参数最小值

max 参数最大值

参数的名称必须唯一,参数值必须在最小和最大的范围内:

 

最后一行生成必要的文件并退出程序。注意.cfg文件是用Python写的。本书的实例代码主要使用C++编写,但有时会使用Python代码片段。

因为文件将由ROS执行,所以需要改变文件的权限,我们将使用chmod a + x使文件可由任何用户执行和运行,如下所示:

 

打开CMakeList.txt,加入下面代码:

 

 

现在,我们要写具有动态重配置支持的新节点。在src文件夹中创建一个新文件如下:

 

在文件中写入如下代码段:

 

这里进行代码解释,注意一些重要的行:

 

这些行包括ROS头文件、参数服务器以及我们先前创建的config文件。

 

 

回调函数将输出参数的新值。这是参数访问的方式,例如config.int_param。参数的名称必须与example2.cfg配置文件相同:

 

初始化服务器,忽略chapter2_Config配置文件:

 

现在,我们向服务器发送回调函数。当服务器得到重新配置请求,它会调用回调函数。

一旦我们完成以上讲解的步骤,我们需要在CMakeLists.txt文件中添加如下代码:

 

现在,你必须编译并运行节点和动态重配置界面(Dynamic Reconfigure GUI),如下:

 

在你执行最后一行命令后,你会看到一个新窗口,通过它你可以动态重配置节点的参数,如下图所示:

 

每当你通过滑块、文本框等调整参数时,你可以在命令行看到正在运行的节点的这些改变,如下图所示:

 

通过动态重配置,你可以更高效地开发和测试节点。与硬件一起配合使用这个程序是不错的选择。你将在接下来的章节中学习到更多内容。

转载地址:http://gvgfo.baihongyu.com/

你可能感兴趣的文章
从南到北 我国东部沿海安防产业现状分析
查看>>
紫光联合大基金等成立长江存储 注资189亿元
查看>>
存储初创公司Datera带着Amazon EBS走出隐身模式
查看>>
纵观视频监控市场这几个方面值得关注
查看>>
北大访问教授吴霁虹:如何把握AI产业化机遇并建立竞争优势 | CITE 2017
查看>>
BEC攻击再现:一封邮件从大学骗走190万美元
查看>>
护城河加速坍塌 ,SaaS领域正面临资本出逃?
查看>>
LINUX 常用命令整理
查看>>
【云周刊】第134期:阿里云发布ECS企业级产品家族 19款实例族涵盖173个应用场景...
查看>>
iOS 位枚举
查看>>
关注ERP之根,基础数据的准备
查看>>
2015年全球专业视频监控市场增长暴跌仅为1.9%
查看>>
中兴计划2017年泰国收入实现50%的增长
查看>>
德国禁止Facebook利用WhatsApp用户信息:没法律基础
查看>>
全球太阳能产业掣肘在哪儿?
查看>>
“灾备全生态”全揭秘
查看>>
大数据助力新乡旅游走向智慧发展
查看>>
华为不顾脸面自曝“黑幕”:系统性公开反省十大内耗难题
查看>>
互联网之下 安防行业市场还远远没有触及天花板
查看>>
极进网络将收购斑马技术的无线局域网业务并获蓝筹客户
查看>>