话题
话题是单向的异步的通信机制。单个发布者可与多个订阅者进行通信,单个订阅者也可在某个话题上与多个发布者进行通信,即只要是基于同一个话题的发布者和订阅者节点,它们之间都可以进行通信,故可实现1:1、1:N、N:1和N:N通信。
msg文件是用于话题的消息文件,扩展名为*.msg。
//custommsg.msg
数据类型 message
服务
服务是双向的同步的通信机制。服务是一次性的消息通信,当服务的请求和响应完成后,两个连接的节点将被断开,换句话说,就是当客户端发起数据请求时,客户端节点与服务器节点建立连接,客户端接收到数据响应后就断开与服务器节点的连接。
srv文件是服务使用的消息文件,扩展名为*.srv。与msg文件的主要区别为:使用三个连字符(—)作为分隔符,其中,分隔符上面是请求数据,下面是响应数据。
//customsrv.srv
数据类型 request
---
数据类型 response
动作
动作是双向的异步的通信机制。与服务服务器不同,动作服务器收到目标请求后直到结果响应所需的时间较长,且中途会有反馈数据发送至动作客户端,还可在任意时刻发送取消目标的命令。
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 |