前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS1云课→05消息类型

ROS1云课→05消息类型

作者头像
zhangrelay
发布2022-09-24 08:54:44
1K0
发布2022-09-24 08:54:44
举报

ROS1云课→04功能包


消息类似各类编程语言中的变量和常量等,ROS1中消息分为:

  1. 主题消息
  2. 服务消息
  3. 行动消息

主题消息

ROS1使用了一种简化的消息类型描述语言来描述ROS节点发布的数据值。通过这样的描述语言,ROS1能够使用多种编程语言生成不同类型消息的源代码。

ROS提供了很多预定义消息类型。如果创建了一种新的消息类型,那么就要把消息的类型定义放到功能包的msg/文件夹下。在该文件夹中,有用于定义各种消息的文件。这些文件都以.msg为扩展名。

消息类型必须具有两个主要部分:字段(fields )和常量(constants)。字段定义了要在消息中传输的数据类型,例如int32、float32、string或之前创建的新类型,如叫做type1和type2的新类型。常量用于定义字段的名称。

一个msg文件的示例如下:

  • int32 id
  • float32 vel
  • string name

颜色案例(rgb):

在下表中找到很多ROS消息所使用的标准数据类型:

Primitive type 基本类型

Serialization 序列化

C++ C++

Python Python

bool (1)

unsigned 8-bit int

uint8_t(2)

bool

int8

signed 8-bit int

int8_t

int

uint8

unsigned 8-bit int

uint8_t

int(3)

int16

signed 16-bit int

int16_t

int

uint16

unsigned 16-bit int

uint16_t

int

int32

signed 32-bit int

int32_t

int

uint32

unsigned 32-bit int

uint32_t

int

int64

signed 64-bit int

int64_t

long

uint64

unsigned 64-bit int

uint64_t

long

float32

32-bit IEEE float

float

float

float64

64-bit IEEE float

double

float

string

ascii string (4)

std::string

string

time

secs/nsecs signed 32-bit ints

ros::Time

rospy.Time

duration

secs/nsecs signed 32-bit ints

ros::Duration

rospy.Duration

ROS1消息中的一种特殊数据类型是报文头,主要用于添加时间戳、坐标位置等。报文头还允许对消息进行编号。通过在报文头内部附加信息,可以知道是哪个节点发出的消息,或者可以添加一些能够被ROS1处理的其他功能。

报文头类型包含以下字段:

  • uint32 seq
  • time stamp
  • string frame_id

可以通过下面命令查看消息的结构:

$ rosmsg show std_msgs/Header

在后续的课程中看到,正是通过报文头才能够记录当前机器人运行的时间戳和坐标位置。

在ROS1中有一些处理消息的工具。例如rosmsg命令行工具能够输出消息定义信息,并可以找到使用该消息类型的源文件。

在后面的课程中,将会学习如何使用正确的工具创建消息。

服务消息

ROS1使用了一种简化的服务描述语言来描述ROS的服务类型。这直接借鉴了ROS msg消息的数据格式,以实现节点之间的请求/响应通信。服务的描述存储在功能包的srv/子目录下.srv文件中。

若要调用服务,需要使用该功能包的名称及服务名称。例如,对于sample_package1/srv/sample1.srv文件,可以将它称为sample_package1/sample1服务。

ROS中有一些执行某些功能与服务的工具。rossrv工具能输出服务说明、.srv文件所在的功能包名称,并可以找到使用某一服务类型的源代码文件。

如果想要在ROS1中创建一个服务,可以使用服务生成器。这些工具能够从基本的服务说明中生成代码。你只需要在CMakeLists.txt文件中加一行gensrv()命令。

在后面的课程中,将会学习如何创建服务。



本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档