文章摘选自:
ROS与ROS2对比
1.ROS问题举例
ROS的设计目标是简化机器人的开发,如何简化呢?ROS为此设计了一整套通信机制(话题、服务、参数、动作)。
通过这些通信机制,ROS实现了将机器人的各个组件给的连接起来,在设计这套通信机制的时候就设计了一个叫做
Ros Master
的东西,所有节点(可以理解为某一个组件,比如:激光雷达)的通信建立必须经过这个主节点。
这种组合结构图如下:
一旦
Ros Master
主节点挂掉后,就会
造成整个系统通信的异常
,此时避障策略将会失效,如果机器人正在运行,碰到障碍物会径直装上去,机毁人亡!
除了不稳定这个问题,ROS还有很多其他地方存在着
问题
:
-
通信基于TCP实现,实时性差、系统开销大
-
对Python3支持不友好,需要重新编译
-
消息机制不兼容
-
没有加密机制、安全性不高
2.ROS与ROS2框架对比
所以在ROS2中,
首当其冲的将ROS的主节点干掉了
,这里放一张网上流传最广的ROS/ROS2架构图,接下来就会按照这篇架构图给大家讲解。
2.1 OS层
从原来的只支持linux平台变成了支持windows、mac甚至是嵌入式RTOS平台。
2.2 MiddleWare中间件层
那么
中间层
ROS2到底相对于ROS
做了哪些优化
呢?
采用DDS通信,使得ROS2的实时性、可靠性和连续性上都有了增强。
2.3 应用层
对于应用层来说ROS2也做了很大的改进,上面那张图没有体现出来。
ROS2进行改进有
:
-
Python2到Python3的支持
-
编译系统的改进(catkin到ament)
-
C++标准更新到c++11
-
可以使用相同 API 的进程间和进程内通信
3.ROS2新概念举例
-
可用Python编写的Launch文件
-
多机器人协同通信支持
-
支持安全加密通信
-
同一个进程支持多个节点、
-
支持Qos服务质量
-
支持节点生命周期管理
-
高效的进程间通信