自动驾驶(八十四)---------中间件对比分析

时间:2024-04-18 07:08:56

         很久没有写博客了,****无故非法删了我第82篇,让我很恼火,一直提不起兴趣重新写一遍第82篇。但回初心,知识需要用自己的语言输出,所以今天对比分析自动驾驶中间件:

1. 中间件介绍

        在自动驾驶架构中,中间件是重要部分,他是处在OS内核的上一层、功能软件的下一层的软件就是中间件,通用架构如下:

          从功能角度看,中间件的的作用有很多,我简单总结:

1. 通信模块:负责软件内部模块之间、车辆控制器间、外部系统等的通信
2. 诊断 :监测车辆系统和组件,识别故障、错误状态,包括 DID DTC
3. 任务调度:执行系统、状态管理、执行步调,负责任务的初始化、启动、停止等
4. Log 运行过程中各种操作、事件和消息的记录,用于问题回溯、分析
5. 时间 系统:为各软件模块提供精准的时间戳信息,支持数据融合,协同控制等;
6. Tools 数据包的录制、播放、监控等
7. Component :提供应用程序运行框架组件
8. 安全措施: Crypto Key 管理,提供通用密码 操作和安全 密钥管理的 API

        从以上角度看,自动驾驶系统中,中间件是很重要的软件内容,绝对不是DEMO阶段理解的进程IPC。不妨再从另外一个角度来看中间件的重要性,在一个量产项目中到底中间件能决定什么内容呢,我总结出以下几点:

1. 进程间通讯 :各个模块之间需要大量数据交换,高效的 IPC 通讯 是基础功能;
2. 算法模块 所有算法模块需要适配中间件的框架和接口等,组成数据链路
3. 数据 模块 内存数据组织、数采设备、数据存储、数据上传、保密机房、大数据处理都是基于中间件操作
4. 平台 化:通过对传感器、计算平台等资源进行抽象,统一接口、屏蔽硬件和底层的差异;
5. 功能安全认证:中间件作为重要的软件内容,好的中间件满足功能安全的等级要求。
6. 其他功能 任务启停、时间同步、基础算法等都和中间件有关 ;

         综上正反来看,中间件的重要性不言而喻,基本决定了整个系统的半壁*,值得好好分析一下:

2. ROS2                

        要说中间件,估计ROS更加有名,ROS是一个开源的、灵活的、用于编写机器人软件的框架,设计理念是模块化和分布式的。灵活的支持多种语言,采用分布式通讯,拥有强大的工具支持。

        ROS2相比ROS进行了改进,例如支持对设备,支持实时系统,没有Master节点限制,进行了规范的编程模型等,总之ROS2为自己向自动驾驶量产迈进了一步,但是量产需要包含但不限于上面节介绍的所有条件,所以ROS2依然无法摆脱浓厚的DEMO气质,离真正的自动驾驶量产还有很远。

        

 3. CyberRT

        都说百度起了个大早,赶了个晚集,但Apollo的开源,相关人员的大量毕业,还是为中国的自动驾驶打下了基础。为什么百度自动驾驶走不出来,我看是李彦宏还是没有极致的精神,内部官僚气息严重,可以理解的是:Google的Transformer作者全部离职,语言大模型也是赶了个晚集,自动驾驶不上不下,百度作为Google的学生,这样的结果也算一脉相承了。

        Cyber RTApollo平台下基于ROS开发框架,当时ROS2还没有推出,鉴于ROS1有很多缺点,例如:roscore的主节点限制;所以百度自研搞出来了CyberRT,确实比ROS离量产迈进一大步。

        CyberRT基于开源的DDS协议,又使用开源Protobuf进行消息的序列化和反序列化,针对量产做了大量工作:

        1.高性能:Cyber RT框架采用了多线程和多进程的并行计算模型,以实现高性能的并行数据处理和通信。

        2.实时性:Cyber RT框架提供了精确的时间同步和事件触发机制,支持实时数据处理和任务调度。

        3.可扩展性:Cyber RT框架采用模块化设计,允许用户通过组合和配置不同的模块来构建自定义应用程序

        4.工具支持:Cyber RT框架提供了一系列工具和库,包括可视化(Dreamview)调试工具、性能分析工具、日志记录和回放工具等,方便开发者进行开发和调优工作;

        5.有向无环图:算法模块通过有向无环图,配置任务间的逻辑关系。对于每个算法可以进行优先级、运行时间、使用资源等方面的配置。

        CyberRT是自动驾驶科技公司的温床,大部分科技公司的都是把CyberRT改个名,再接一个UBER开源的AVS可视化,就说自己自研中间件了,总之说自研中间件的科技公司基本都是缝合怪。

4. AutosarAP

        AUTOSAR(汽车开放系统架构),是由全球各大汽车整车厂、汽车零部件供应商、汽车电子软件系统公司联盟建立的一套标准协议。

        前期Autosar的标准主要针对MCUSWC设计、ECU软件、RTOS操作系统,随着智能化、电动化、高性能,Linux操作系统等需求,就把早期的Autosar改名AutosarCP,提出新标准---- Adaptive Platform AUTOSAR通过一个表格进行对比,基本体现了AutosarAP的新特点:

对比

AuotsarCP

AuotsarAP

操作系统

OSEKRTOS

LinuxQNX

开发语言

C

C++

芯片

MCU

SOC

通讯

基于信号 CAN/FD LIN FlexRay

SOME/IP SPI IPC 面向服务

实时性

微妙

毫秒

功能安全

ASILD

ASILB

应用

电源、制动等

智驾、座舱

        不难看出,AuotsarAP只是一套标准协议,任何人都可以自己按照标准来实现,下面介绍几家公司的产品和特点:

       1. Vector绝对是这个领域的大哥,以功能稳定和产品丰富著称,很多标准都是Vector牵头制定的,就是价格太高,是其他家的3-4倍,AutosarAP的产品一般1500W左右,而且是按项目收费,支持又不好,销售态度恶劣,我不推荐。

       2. Etas: 相比Vector 主打就是听劝,价格便宜 一般3/400W, 而且不限平台,支持又好,可惜质量一般,相信以后会慢慢提高,推荐指数****

       3. EB:价格适中,支持也一般,硬件供应商德赛一直使用,搞得占有率慢慢要起来。

       4. Mentor:产品也是质量一般,好在价格便宜,工具链也比较健全,比较看好

       5. TTTec:这家公司很少听到,但是他们的产品却起了好听的名字:motionwise,支持也不好,价格也没有优势,不推荐

再说国内:

       1. 东软睿驰:NeuSAR,这种国产软件很尴尬,东软以为自己可以卖软件,但是中间件却不同,车企愿意花钱买国外的AutoSar,所以搞出来的中间件根本卖不掉,只能自己用,自己的算法又基本玩玩,前景堪忧

       2. 普华基础:国家队,为了避免卡脖子自己搞的软件,一汽、上汽肯定用,其他就没停过了,好不好我也不说了

       3. 经纬恒润:早年代理过Vector,看到Vector数钱,估计眼红,自己做的就不是那么回事了,一句话四不像

       国内还有很多小公司自称自研了AutosarAP,没有接触,只是直觉感觉不靠谱吧,目前主机厂量产项目基本都是AutosarAP,偶尔也有用缝合怪的,那也是被科技公司绑架了,至少汽车厂商没有标榜用了自研中间件。

5. FastDDS

       DDS分布式通信规范,采用订阅/发布模型,提供多种QoS服务质量策略,以保障数据进⾏实时、⾼效、灵活地分发。ROS2和CyberRT都是基于DDS的规范来实现通讯功能,所以ePromise 公司基于DDS的规范,用C++实现了一套开源软件---FastDDS

       目前FastDDS是ROS2的LTS版本和大多数非 LTS 版本中支持的默认中间件,FastDDS已经有自己的完善的文档和社区,也能移植到各种平台,通讯性能也很不错,资源消耗低,目前主要是作为ROS2的插件来用。还是需要依托ROS2强大的工具链来配合。

6.  IceOryx

       冰羚是一种通信中间件,由Eclipse 基金会发布和维护. 特点就是内存共享,数据传输0拷贝,可以分为不同的访问权限,可以灵活配置,目前不说量产了,想广泛的DEMO还有很长的路要走。


       当下市场,科技公司眼里只有DEMO,不知量产深浅,敢于突破德国公司画的圈圈:什么功能安全、信息安全,又是诊断、又是任务管理的;统统不管,就想搞个大新闻,ROS2、CyberRT就敢量产,要是能换个壳,那就自称高级自研的中间件了,为了拿项目什么都敢说。

       Tier1也只有大型公司敢于布局,靠自己拿的其他项目,半卖半送中间件,看能不能量产起来,但是目前主机厂还是不给面子。

       当下主要的汽车厂还是只认AutoSARAP,对车企来说几百万对于一个项目而言也不是多的大事,没必要当你的小白鼠。

       最近看到科技公司老总总是大放厥词,就算你们的算法吊打老牌车企自研,但还是希望对量产要有敬畏之心,你所谓的端到端大模型也只是从老美摇尾乞怜来的,人家不开源你就翻白眼,纵观历史号称颠覆汽车百年工业历史的人物大有人在,又有几个做到了什么呢?