文章目录
- 一、通信接口
-
- 1.通信接口的概念
- 2.通信接口的核心代码
- 二、动作
-
- 动作的概念
- 2.动作的核心代码
- 三、参数
- 总结
一、通信接口
1.通信接口的概念
一个完整的机器人由不同的节点组成,不同的节点需要通信,只有相互匹配才能建立连接。
ROS有三种常用的通信机制,即主题、服务和行动。各种节点可以通过定义的每个通信接口有机地连接在一起。
通过以上学习,我们知道不同的节点可以使用不同的编程语言,ROS该系统将这些接口设计成与语言无关的接口,需要在特定的文件中定义传输的数据类型,并在编译成功后自动生成相应的接口C 、Python语言中的数据结构等。
2.通信接口的核心代码
bool get # 获取目标位置的指令 --- int32 x # 目标X坐标 int32 y # Y坐标的目标
若要获得获取图像的中心坐标,- - -”分割线以上的部分表示获取目标位置的指令,get为true如果我们需要一个位置,服务端会反馈这个x、y坐标,即- - -分割线以下部分的定义。
二、动作
动作的概念
动作是ROS另一种通信机制。目的是便于管理机器人完整行为的过程。类似于服务,动作也是客户端和服务端模型,比如客户端发送动作的目标,机器人想做什么,服务器端执行动作过程。 控制机器人实现运动目标,并在执行周期中反馈运动状态。与服务一样,它也是一对多通信和同步通信。
2.动作的核心代码
bool enable # 定义动作目标,表示动作开始的指令 --- bool finish # 定义动作结果,表示是否成功执行 --- int32 state # 定义动作反馈意味着当前执行的位置
动作部分的代码是话题和服务的结合。
三、参数
参数是ROS机器人系统中的全球字典可以在多个节点中共享数据。
ROS参数由键值对组成:
例: 名称:显示亮度:60%
ROS支持的参数值类型如下:
- bool 和bool[ ],例如,我们可以控制雷达控制节点,开始扫描和停止扫描。
- int64 和int64[ ],整形手术表示一个数字,意思可以自己定义,这里我们可以用来表示李四节点写小说的周期值
- float64 和float64[ ],浮点类型可以表示小数类型的参数值
- string 和string[ ],字符串可用于表示雷达控制节点中的真实雷达ip地址
- byte[ ],字节数组可用于表示图片、点云数据等信息
监控和修改参数将是后续的实用工具——Rqt中继续分析。
总结
话题是单向的,不需要等服务端上线,直接发,数据实时性比较高。 传感器数据传输频率高,实时性强,一般采用主题实现。 服务是双向的,客户端发送请求后,服务端有响应,可以了解服务端的处理结果。 服务通常用于强调服务特性和反馈的场景。 参数是基于服务的节点设置。 动作适用于基于主题和服务的需要实时反馈的场景。