【3】ROS2学习——核心概念的学习Ⅱ(通信接口、动作、参数)



一、通信接口

1、通信接口的概念

一个完整的机器人是由一个个不同的节点组成的,不同的节点需要通信就会用到通信接口通信接口只有相互匹配,才可以建立连接。

ROS有三种常用的通信机制,分别是话题、服务、动作,通过每一种通信种定义的接口,各种节点才能有机的联系到一起。

经过上面的学习,我们知道,不同的节点可以使用不同的编程语言,ROS系统将这些接口设计成和语言无关,这要在特定的文件中定义好传递的数据类型,在编译成功后,会自动生成对应到C++、Python等语言里的数据结构。

2、通信接口的核心代码

bool get      # 获取目标位置的指令
---
int32 x       # 目标的X坐标
int32 y       # 目标的Y坐标

如果想要获取获取到图像的中心坐标,“- - -”分割线以上的部分表示获取目标位置的指令,get为true的话,就表示我们需要一次位置,服务端就会反馈这个x、y坐标了,即“- - -”分割线以下部分的定义。

二、动作

1、动作的概念

动作是ROS中另一个通信机制。目的就是便于对机器人某一完整行为的流程进行管理。和服务类似,动作也是客户端和服务端模型,如:客户端发送动作的目标,想让机器人干什么,服务器端执行动作过程, 控制机器人达到运动的目标,同时周期反馈动作执行过程中的状态。特点同服务一样,也是一对多通信和同步通信。动作是一种应用层的通信机制,其底层就是基于话题和服务来实现的。

2、动作的核心代码

接口定义:

bool enable     # 定义动作的目标,表示动作开始的指令
---
bool finish     # 定义动作的结果,表示是否成功执行
---
int32 state     # 定义动作的反馈,表示当前执行到的位置

动作部分的代码就是话题和服务的结合不在赘述。

三、参数

参数是ROS机器人系统中的全局字典,可以运行多个节点中共享数据。

ROS2参数是由键值对组成的:

例: 名字:显示器亮度,值:60%

ROS2支持的参数值的类型如下:

  1. bool 和bool[ ],布尔类型用来表示开关,比如我们可以控制雷达控制节点,开始扫描和停止扫描。
  2. int64 和int64[ ],整形表示一个数字,含义可以自己来定义,这里我们可以用来表示李四节点写小说的周期值
  3. float64 和float64[ ],浮点型,可以表示小数类型的参数值
  4. string 和string[ ],字符串,可以用来表示雷达控制节点中真实雷达的ip地址
  5. byte[ ],字节数组,这个可以用来表示图片,点云数据等信息

对参数的监控和修改,会在之后的实用工具——Rqt中继续分析。

总结

1. 话题
话题是单向的,而且不需要等待服务端上线,直接发就行,数据的实时性比较高。
频率高,实时性强的传感器数据的传递一般使用话题实现。
2. 服务
服务是双向的,客户端发送请求后,服务端有响应,可以得知服务端的处理结果。
频率较低,强调服务特性和反馈的场景一般使用服务实现。
3. 参数
参数是节点的设置,用于配置节点,原理基于服务。
4. 动作
动作适用于需要实时反馈的场景,原理基于话题和服务。

源码链接:链接:https://pan.baidu.com/s/1-_DWYXiloyIVW6uCmM50aQ 提取码:smn7

致谢:古月居ROS2入门教程。链接:https://book.guyuehome.com/

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值