ROS学习笔记(二):消息通信

在这里插入图片描述在这里插入图片描述

话题

话题是单向的异步的通信机制。单个发布者可与多个订阅者进行通信,单个订阅者也可在某个话题上与多个发布者进行通信,即只要是基于同一个话题的发布者和订阅者节点,它们之间都可以进行通信,故可实现1:1、1:N、N:1和N:N通信。

topic1
topic2
topic1
topic2
pub1
sub/pub
sub1
pub2
sub2

msg文件是用于话题的消息文件,扩展名为*.msg。

//custommsg.msg
数据类型 message

服务

服务是双向的同步的通信机制。服务是一次性的消息通信,当服务的请求和响应完成后,两个连接的节点将被断开,换句话说,就是当客户端发起数据请求时,客户端节点与服务器节点建立连接,客户端接收到数据响应后就断开与服务器节点的连接。

响应
请求
server
client

srv文件是服务使用的消息文件,扩展名为*.srv。与msg文件的主要区别为:使用三个连字符(—)作为分隔符,其中,分隔符上面是请求数据,下面是响应数据。

//customsrv.srv
数据类型 request
---
数据类型 response

动作

动作是双向的异步的通信机制。与服务服务器不同,动作服务器收到目标请求后直到结果响应所需的时间较长,且中途会有反馈数据发送至动作客户端,还可在任意时刻发送取消目标的命令。

结果
反馈
目标
server
client

action文件是动作中使用的消息文件,扩展名为*.action。与msg和srv文件的主要区别在于:三个连字符(—)在两个地方用作分隔符,上面是目标数据,中间是结果数据,最后是反馈数据。

//customaction.action
数据类型 goal
---
数据类型 result
---
数据类型 feedback

数据类型

名称 ROS C++ python
布尔 bool uint8_t bool
短整型 int16 int16_t int
整型 int32 int32_t int
长整型 int64 int64_t long
单精度浮点数 float32 float float
双精度浮点数 float64 double float
字符串 string std::string str
时间戳 time ros::Time rospy.Time
数组 uint8[] std::vector bytes

猜你喜欢

转载自blog.csdn.net/qq_42386127/article/details/98600731