《ROS机器人操作系统基础》 课件 项目五 话题通信机制的实现.pptx

《ROS机器人操作系统基础》 课件 项目五 话题通信机制的实现.pptx

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

任务一话题通信机制基础概述;任务一

话题通信机制基础概述;1.?掌握话题通信机制的原理和特点

2.?了解话题通信机制的消息类型

3.?了解话题通信机制在机器人系统中的应用;一、话题通信机制的原理和特点

项目二任务三已经初步介绍了话题通信机制的基本原理。话题通信机制定义了一种发布/订阅模式,在这种模式下,一个节点可以作为消息的发布者,将数据发布到特定的话题上;而其他节点可以作为订阅者,通过订阅相应的话题来接收发布者发送的消息。;150;二、话题通信机制的消息类型

话题通信可以支持多种消息类型,包括字符串型、整型、浮点型、数组型等以及这些类型组合而成的结构体,且ROS允许用户创建自定义的消息类型。ROS提供了标准消息(std_msgs)以及常用消息类型(包括geometry_msgs、sensor_msgs、nav_msgs等),用户可以直接调用这些消息,ROS的消息类型见下表。;152;153;三、话题通信机制在机器人系统中的应用

话题通信机制在机器人系统中有广泛的应用。例如,在自主移动机器人系统中,摄像头、激光雷达等感知节点将感知到的环境数据发布到相应的话题上,导航节点通过订阅这些话题,获取环境数据并进行路径规划、避障等操作。又如,在机器人控制系统中,机器人控制节点可以通过发布控制命令的话题,向执行器节点发送控制指令,实现机器人的运动控制、姿态调整等功能。此外,多个机器人之间可以通过话题通信实现协作与协调。;任务二

使用话题通信机制实现节点通信;1.?掌握节点发布话题函数的用途和使用方法

2.?掌握节点订阅话题函数的用途和使用方法

3.?能创建节点文件和节点程序并编写相应的代码,实现节点话题通信;一、节点发布话题函数

节点发布话题的方法非常简单,只需使用rospy.publisher()函数即可创建一个发布者。;发布者创建完成后,使用publish()函数即可发布消息到话题中,代码如图所示。需要注意的是,发布的消息类型需要与创建发布者时的消息类型一致。创建发布者“pub”指定的消息类型为字符串型,则使用publish()函数时也要用字符串型数据。;二、节点订阅话题函数

订阅话题时需要使用rospy.subscriber()函数创建一个订阅者,由于接收到消息后需要处理消息,所以订阅者应有一个回调函数(可以作为参数传递的函数),当订阅者接收到话题的数据时,会调用一次回调函数对数据进行处理。;当指定的话题中输入消息时,将会调用回调函数。示例中回调函数的作用是获取消息并将消息输出到终端中,代码如图所示。;rospy.loginfo()函数可以将括号内的消息作为日志消息输出,也可以输出到终端中,订阅者接收到消息后,可以在终端中查看消息。

String类型的消息数据在data属性中,所以若要获取String类型的消息数据,需要读取回调函数形参的data属性,即data.data。;任务三

使用话题通信机制控制小海龟移动;1.?掌握话题消息类型和数据结构的查看方法

2.?掌握话题消息数据的赋值方法

3.?能使用话题通信机制控制小海龟移动;一、话题消息类型和数据结构的查看

在编写的节点与其他节点进行话题通信前,需要明确话题的名称以及话题的消息类型。以小海龟为例,小海龟节点订阅“/turtle1/cmd_vel”话题,并根据话题中的速度指令进行移动,可以通过rostopicinfo命令查看该话题的具体消息,命令如下(执行命令前需要启动turtlesim_node节点):

$rostopicinfo/turtle1/cmd_vel;运行后可以得到以下消息:

Type:geometry_msgs/Twist

Publishers:None

Subscribers:

*/turtlesim(http://ubuntu:35923/)

由以上信息可知,话题“/turtle1/cmd_vel”的消息类型为geometry_msgs/Twist,使用rosmsgshow命令可以查看这个消息的具体数据结构,具体命令如下:

$rosmsgshowgeometry_msgs/Twist;运行后可以得到以下消息:

geometry_msgs/Vector3linear

float64x

float64y

float64z

geometry_msgs/Vector3angular

float64x

float64y

float64z;geometry_msgs/Twist消息类型包含两个geometry_msgs/Vector3类型的变量:一个是linear(线速度),另一个是angular(角速度

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档