ROS初学(二):ROS的三种基本通信机制(来自赵虚左老师)

一、综述

ROS引入通信机制,是为了实现ROS节点(进程)之间的通信。利用ROS进程的分布式框架,可以使得每个进程独立的工作,甚至分布于不同的主机工作。机器人上的各种传感器,比如雷达、GPS等,需要传递数据以实现对机器人的合理控制,进程通信的实现则是其中传输数据的关键。

ROS的基本通信方式将分为三种:

1.话题通信(发布订阅模式)

2.服务通信(请求响应模式)

3.参数服务器(参数共享模式)

接下来将会详细介绍三种通信方式的理论模型

二、话题通信

话题通信,一般就是指:一个节点发布消息,另一个节点订阅该消息。适用于不断更新的、少逻辑处理的数据传输场景。

1.话题通信的三个角色

话题通信涉及到三个角色。

Talker(发布者)

负责像订阅者发布数据。

Listener(订阅者)

负责接收发布者的数据。

ROS Master(管理者)

负责保管发布者和订阅者注册的信息,并匹配话题相同的发布者与订阅者,帮助发布者与订阅者建立连接。

2.话题通信建立的流程

下图就是话题通信建立的示意图,摘抄自课程笔记。

step0:

发布者在管理者处注册,其中包含所发布消息的话题名称。管理者会将节点的注册信息加入到注册表中。

step1:

订阅者在管理者处注册,包含需要订阅消息的话题名称。管理者会将节点的注册信息加入到注册表中。

step2:

管理者根据注册表中的发布者、订阅者的话题名称进行匹配,并将发布者的地址信息告诉订阅者。

step3:

订阅者向发布者发送连接请求,传输订阅的话题名称、消息类型以及通信协议(TCP/UDP)。

step4:

发布者响应订阅者的请求,并发送自身的 TCP 地址信息。

step5:

 订阅者根据步骤4 返回的消息使用 TCP 与发布者建立网络连接。

step6:

连接建立以后,发布者向订阅者发送信息。

3.注意事项及说明

1.step0与step1没有先后顺序的要求,即发布者和订阅者的启动没有先后的要求

2.只有当发布者和订阅者的话题名称相同时才能进行话题通信

3.发布者和订阅者可以有多个

4.发布者和订阅者关闭以后就不再需要管理者,即使管理者关闭,话题通信仍能进行。

5.在代码编写中,我们关注的一般是话题、消息传输的格式等等,而发布者和订阅者所建立连接的过程是被封装好的。

三、服务通信

服务通信是基于请求响应模式的,是一种应答机制。也即: 一个节点A向另一个节点B发送请求,B接收处理请求并产生响应结果返回给A。一般用于偶然的、对时时性有要求、有一定逻辑处理需求的数据传输场景。

1.服务通信的三个角色

和话题通信相似,服务通信也有三个角色

client(客户端)

负责向服务端发送请求,并接收服务端发送的数据。

server(服务端)

负责接收处理请求,并对客户端做出响应。

ROS Master(管理者)

负责保管客户端和服务端注册的信息,并匹配话题相同的客户端与服务端,帮助客户端与服务端建立连接。

2.服务通信建立的流程

下图就是服务通信建立的示意图,摘抄自课程笔记。

step0:

服务端启动,在管理者处注册,其中包含提供的服务的名称。管理者会将节点的注册信息加入到注册表中。

step1:

客户端启动,在管理者处注册,其中包含请求的服务的名称。管理者会将节点的注册信息加入到注册表中。

step2:

管理者根据服务端和客户端的服务名称进行匹配,并将服务端的地址信息告知客户端。

step3:

客户端与服务端进行网络连接,并发送有关请求。

step4:

服务端处理请求数据,产生响应并发送给客户端。

3.注意事项

1.客户端请求被处理时,要保证服务端已经启动

2.服务端和客户端都可以存在多个

四、参数服务器

参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据。参数服务器一般用于存储一些多节点共享的数据,类似于全局变量。

1.参数服务器的三个角色

ROS Master (管理者)

管理者作为一个公共的容器保存数据

Talker (参数设置者)

参数设置者往容器中存储数据

Listener (参数调用者)

 参数调用者读取容器中所需的数据

2.参数服务器实现步骤

如图所示,是参数服务器的模型

 

step1:

参数设置者向参数服务器发送参数(包括参数名与参数值),ROS Master 将参数保存到参数列表中。

step2:

参数调用者向参数服务器发送参数查找请求,请求中包含要查找的参数名。

step3:

ROS Master 根据步骤2请求提供的参数名查找参数值,并将查询结果发送给参数调用者。

3.参数可以使用的数据类型

  • 32-bit integers

  • booleans

  • strings

  • doubles

  • iso8601 dates

  • lists

  • base64-encoded binary data

  • 字典

4.注意事项

1.参数服务器不再是talker与listener之间传输数据

2.参数服务器不是为高性能而设计的,因此最好用于存储静态的非二进制的简单数据

  • 18
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 古月居 ROS2 课件是一套关于ROS2框架的教育教学材料。ROS(Robot Operating System)是一个开放源代码的机器人操作系统,用于实现机器人软件开发的一种框架。ROS2是ROS的下一代版本,具有更强大的功能和更高的性能。 古月居ROS2课件主要包括以下内容: 1. ROS2概述:介绍ROS2的起源、发展和应用领域,让学习者了解ROS2的基本概念和优势。 2. ROS2架构:详细介绍ROS2的架构和组件,包括节点(Node)、话题(Topic)、服务(Service)、行为(Action)等,帮助学习者理解ROS2的基本工作原理。 3. ROS2通信:讲解ROS2中的通信机制,包括发布/订阅模型、服务调用等,让学习者掌握ROS2消息传递的方法。 4. ROS2工具:介绍ROS2常用工具的使用方法,如rqt、rviz等,帮助学习者进行ROS2程序的开发和调试。 5. ROS2开发:引导学习者使用ROS2进行实际开发,包括创建ROS2包、编写节点、发布和订阅消息、调用服务等,让学习者具备实际应用ROS2的能力。 通过学习古月居ROS2课件,学习者可以系统地学习ROS2的理论知识和实践技能,掌握ROS2的基本概念、架构和通信机制,能够使用ROS2进行机器人软件开发和相关研究。这对于想要从事机器人领域的学生、工程师以及科研人员来说,是一份非常有价值的教材。 ### 回答2: 古月居 ROS2课件是一个针对ROS2使用的教学资料。ROS(机器人操作系统)是一种用于开发机器人软件的开源框架。而ROS2是ROS的第代版本,相较于ROS1有许多改进和优化。 古月居ROS2课件内容丰富,从入门到进阶,涵盖了ROS2的各个方面。首先,课件会介绍ROS2的概念和优势。相比ROS1,ROS2在分布式计算、实时性、可靠性和安全性等方面有所提升,这些优势将被详细讲解和说明。 其次,课件会介绍ROS2的基本操作和常用工具。学习者将了解如何创建ROS2的工作空间,如何使用ROS2的包管理工具来安装和管理软件包,以及如何编译和运行ROS2程序。此外,课件还会介绍ROS2中常用的调试工具和可视化工具,帮助学习者更好地理解和调试他们自己的ROS2应用程序。 然后,课件会详细介绍ROS2的通信机制和节点之间的交互。学习者将了解ROS2中的发布/订阅模式和客户端/服务器模式,并学习如何通过ROS2的通信机制来实现节点之间的数据传输和服务调用。 最后,课件还会涵盖一些高级主题,如ROS2的参数服务器、消息定义、时间同步和ROS2与其他框架的集成等。这些主题将帮助学习者更全面地了解ROS2的功能和扩展性,为他们在实际的机器人项目中应用ROS2提供更多的思路和指导。 总的来说,古月居ROS2课件是一个系统全面的教学资料,适用于对ROS2感兴趣的初学者和有一定ROS1基础的开发者。通过学习该课件,学习者将掌握ROS2的基本概念和操作技能,能够使用ROS2开发和运行自己的机器人应用程序。 ### 回答3: 古月居ros2课件是一套关于使用ROS2进行软件开发的教学资料。ROS2(Robot Operating System 2)是一个开放源代码的机器人操作系统,它提供了一套工具和库,用于帮助开发者构建和控制机器人系统。 这套课件旨在为学习ROS2的人员提供详细的指导和教学材料。它包括了ROS2的基础知识、安装和配置ROS2环境的步骤,以及ROS2使用的常见工具和一些示例项目的介绍。 课件首先介绍了ROS2的概念和架构,使学习者对ROS2的整体框架有一个清晰的理解。然后,课件详细讲解了如何在不同的操作系统上安装和配置ROS2,包括Linux和Windows。 接着,课件介绍了ROS2中常用的一些工具,例如ROS2包管理工具(colcon),ROS2消息通信库(rclcpp),ROS2消息调试工具(rqt)等。它们是开发ROS2应用程序所必需的工具,通过学习它们的使用方法,学习者可以更好地理解和应用ROS2的功能。 此外,课件还包含了一些基于ROS2的示例项目,如机器人导航、目标检测和路径规划等。这些示例项目帮助学习者将所学知识应用到实际的机器人开发中,提升他们的实践能力。 总的来说,古月居ROS2课件是一份全面而易于理解的ROS2教学资料,对于想要学习和应用ROS2的开发者来说,它将提供很大的帮助和指导。无论是初学者还是有一定ROS经验的开发者,都可以通过这份课件快速入门和深入了解ROS2的开发。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值