1 ROS存在的问题
- 一旦Ros Master主节点挂掉后,就会造成整个系统通信的异常,
- 通信基于TCP实现,实时性差、系统开销大
- 对Python3支持不友好,需要重新编译
- 消息机制不兼容
- 没有加密机制、安全性不高
2 ROS and ROS2架构对比
ROS和ROS2架构如下图所示:
2.1 OS层
从原来的只支持linux平台变成了支持windows、mac甚至是嵌入式RTOS平台。
2.2 MiddleWare中间件层
中间层ROS2到底相对于ROS做了哪些优化呢?
- 去中心化master,ROS和ROS2中间件不同之处在于,ROS2取消了master节点。
去中心化后,各个节点之间可以通过DDS的节点相互发现,各个节点都是平等的,且可以1对1、1对n、n对n进行互相通信。 - 不造通信的轮子,通信直接更换为DDS进行实现
采用DDS通信,使得ROS2的实时性、可靠性和连续性上都有了增强。
2.3 应用层
对于应用层来说ROS2也做了很大的改进,上面那张图没有体现出来。
ROS2进行改进有:
- Python2到Python3的支持
- 编译系统的改进(catkin到ament)
- C++标准更新到c++11
- 可以使用相同 API 的进程间和进程内通信
3 ROS2新概念例举
可用Python编写的Launch文件
多机器人协同通信支持
支持安全加密通信
同一个进程支持多个节点、
支持Qos服务质量
支持节点生命周期管理
高效的进程间通信