机器人操作系统ROS原理及应用 课件 12 ROS话题与消息_第1页
机器人操作系统ROS原理及应用 课件 12 ROS话题与消息_第2页
机器人操作系统ROS原理及应用 课件 12 ROS话题与消息_第3页
机器人操作系统ROS原理及应用 课件 12 ROS话题与消息_第4页
机器人操作系统ROS原理及应用 课件 12 ROS话题与消息_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ROS话题与消息在之前建立的turtlesim例子中,键盘控制节点(turtle_teleop_key)和仿真节点(turtulesim_node)以某种方式进行对话使海龟响应按键操作。ROS节点之间进行通信所利用的最重要的机制就是消息传递(发布/订阅)。2024/11/292ROS消息在ROS中,消息就是数据,有组织地存放在话题里。消息传递的理念是:当一个节点想要分享信息时,它就会发布(publish)消息到对应的一个或者多个话题;当一个节点想要接收信息时,它就会订阅(subscribe)它所需要的一个或者多个话题。ROS节点管理器负责确保发布节点和订阅节点能找到对方;而且消息是直接地从发布节点传递到订阅节点,中间并不经过节点管理器转交。2024/11/293ROS消息话题的通信是通过节点间发送ROS消息实现的。为了使发布者(turtle_teleop_key)和订阅者(turtulesim_node)进行通信,发布者和订阅者必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面消息的类型决定的。2024/11/294ROS消息使用rostopicecho查看话题数据(消息)内容$rostopicecho/turtle1/cmd_vel

需要按键控制乌龟节点移动才看得到数据变化2024/11/295查看话题数据(消息)内容使用rostopicecho查看话题数据(消息)内容$rostopicecho/turtle1/cmd_vel每当/teleop_turtle接收到按键信息时,将会显示类似右图的结果。输出中的每一个“---”线表示一个消息的结束以及另一个消息的起始linear:线速度angular:角速度2024/11/296查看话题数据(消息)内容$rostopichz/turtle1/cmd_vel$rostopicbw/turtle1/cmd_vel第一条命令输出每秒发布的消息数量第二条命令输出每秒发布消息所占的字节量这些命令主要用于调试,它们提供了一种简单的方法来验证这些消息确实有规律地在向这些特定的话题发布2024/11/297查看话题发布频率、带宽rostopicinfo/turtle1/cmd_vel输出了该话题的消息类型。Type在文本输出中表示数据类型。理解消息的类型很重要,因为它决定了消息的内容。也就是说,一个话题的消息类型能告诉你该话题中每个消息携带了哪些信息,以及这些信息是如何组织的2024/11/298查看消息类型要想查看某种消息类型的详情,使用类似下面的命令:rosmsgshow#显示消息的说明描述rosmsglist#列出所有消息

rosmsgmd5#显示消息的md5码rosmsgpackage#列出单个包中的消息rosmsgpackages#列出包含消息的软件包2024/11/299rosmsg消息管理命令rosmsgshow消息类型

例如:rosmsgshowturtlesim/Color

其输出为:

uint8ruint8guint8brosmsgshow可以帮助理解通过话题传输的数据类型的具体构成,即变量类型及变量名称(结构体)2024/11/2910使用rosmsgshow查看消息类型(详情)rosmsgshowturtlesim/Color输出的格式是域(field)的列表,每行一个元素。每一个域由基本数据类型(例如int8、bool、或者string)以及域名称定义。turtlesim/Color包含三个无符号8位整型变量r,g和b。任何话题的消息只要是turtlesim/Color类型,都由上述三个域的值定义。2024/11/2911使用rosmsgshow查看消息类型(详情)rosmsgshowgeometry_msgs/Twistgeometry_msgs/Twist

是ROS中常用消息类型。该消息类型对应/turtle1/cmd_vel话题geometry_msgs/Twist

消息包含六个成员,并且以两个向量的形式组织,分别为linear

angular(线速度和角速度)。其中每个数值都是基本数据类型float64,即每个数值都是64位浮点型数据2024/11/2912使用rosmsgshow查看消息类型(详情)线速度值为正时沿相应的轴正向移动,值为负时反向移动角速度值为正时沿相应的轴逆时针转动,值为负时顺时针转动2024/11/2913linear和angular(线速度和角速度)ROS复合域是由简单的一个或者多个子域组合而成,其中的每一个子域可能是另一个复合域或者独立的域,而且它们一般也都由基本数据类型组成常见的例子:

geometry_msgs/Twist表示线速度和角速度std_msgs/Header序列号,时间戳以及坐标系等信息sensor_msgs/NavSatFix表示单个GPS的定位数据sensor_msgs/LaserScan表示激光雷达数据2024/11/2914使用rosmsgshow查看消息类型(详情)和ROS里其他的程序一样,每个消息类型都属于一个特定的包。消息类型名总会包含一个斜杠,斜杠前面的名字是包含它的包turtlesim/Color消息类型按如下方式分解:turtlesim+Color⇒turtlesim/Color

功能包名类型名称消息类型2024/11/2915理解消息类型的命名rostopicpub可以把数据发布到当前某个正在广播的话题上$rostopicpub-1

/turtle1/cmd_velgeometry_msgs/Twist--'[2.0,0.0,0.0]''[0.0,0.0,1.8]‘

rostopicpub

参数

话题消息类型消息值以上命令会发送一条消息给turtlesim,告诉它以2.0大小的线速度沿x轴正向移动和1.8大小的角速度绕z轴逆时针转动。

该命令执行一次,画一段圆弧2024/11/2916使用rostopicpub发布消息空格$rostopicpub-r1/turtle1/cmd_velgeometry_msgs/Twist--'[2.0,0.0,0.0]''[0.0,0.0,1.8]'

r表示重复执行消息发布1次(只能是1)

以上命令会发送消息给turtlesim,告诉它以2.0大小的线速度沿x轴正向移动和1.8大小的角速度绕z轴逆时针转动。该命令重复执行,每秒执行一次,画一个圆平面图形中,geometry_msgs/Twist类型的数据线速度只有x,y轴有效,角速度只有z轴有效2024/11/2917使用rostopicpub发布消息rostopicpub另一种用法:输入

rostopicpub-r1/turtle1/cmd_vel后按tab补全消息类型然后再按一次tab补全消息格式然后移动光标修改线速度的x分量、角速度的z分量2024/11/2918使用rostopicpub发布消息重复执行,频率为1赫兹执行一次2024/11/2919使用rostopicpub发布消息2024/11/2920rostopicpub常用的角速度值弧度角度值

180°3.14159263/4135°2.356194492/3120°2.0943951/290°1.570796326/360°1.04719755/445°0.78539816/630°0.5235987/1215°0.2617993873/2270°4.71238898画半圆rostopicpub-1/turtle1/cmd_velgeometry_msgs/Twist--'[3,0,0]''[0,0,-3.1415926]'逆时针旋转90°

rostopicpub-1/turtle1/cmd_velgeometry_msgs/Twist--'[0,0,0]''[0,0,1.5707963]'画圆弧rostopicpub-1/turtle1/cmd_velgeometry_msgs/Twist--'[3,0,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论