简介:
ROS、ROS2、Apollo作为目前自动驾驶行业和机器人行业最常用的系统方案,他们有哪些不同呢?下面针对各系统的特性、系统框架以及通信方式加以介绍。
特性区分:
ROS特性:
1、节点间的数据传递通过内存复制,大量的系统资源浪费在通讯上,实时性不能保证(通信基于TCP实现,实时性差,系统开销大)
2、节点通过mater管理,一旦master崩溃,整个系统都将崩溃
3、OS:仅支持Linux
4、应用层:支持python2,对python3不友好
ROS2特性:
1、引入了数据分发服务(data distribution service,DDS)通信协议,可以以零拷贝的方式传递消息,节省了CPU和内存资源,同时增加了消息的实时性;各个节点可以直接通过DDS进行节点通讯的
实时性;各个节点可以直接通过DDS进行节点通讯,各个节点都是平等的,可以1对1,1对多,多对多进行通信。
2、托管启动,用户可以指定节点启动顺序
3、去除了ros master这个中心节点管理器,改进了ROS对master节点的依赖。
4、OS:支持Linux,Windows、Mac,嵌入式RTOS
5、应用层:支持python2、python3;改进编译系统(catkin到ament);可以使用相同的API在进程间和进程内通讯(ROS2除了将进程内通信自己来做以外,其他都使用DDS来实现)
6、Topic机制还是存在,只是改变了很多命令参数
DDS通信协议简介:
总结来看,数据分发服务,就是为整体系统通信提供一个可适配的通信中间件,根据通信双方的关系选择最有效的通信方式
APollo特性:
Apollo Cyber RT 是一个百度为自动驾驶开发的一个开源、高性能的运行时框架,专为自动驾驶场景而设计。针对自动驾驶的高并发、低延迟、高吞吐量进行了大幅优化,相对于ROS主要有以下特性:
1、引入component概念,实现了模块的封装
2、引入协程,无锁对象,实现高性能通信以及可配置的任务调度