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

很久没有写博客了,CSDN无故非法删了我第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 RT是Apollo平台下一种基于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的标准主要针对MCU、SWC设计、ECU软件、RTOS操作系统,随着智能化、电动化、高性能,Linux操作系统等需求,就把早期的Autosar改名AutosarCP,提出新标准---- Adaptive Platform AUTOSAR,通过一个表格进行对比,基本体现了AutosarAP的新特点:

|--------|-------------------------|----------------------|
| 对比 | AuotsarCP | AuotsarAP |
| 操作系统 | OSEK、RTOS | Linux、QNX |
| 开发语言 | 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,对车企来说几百万对于一个项目而言也不是多的大事,没必要当你的小白鼠。

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

相关推荐
winds~1 小时前
自动驾驶-轨迹拼接
人工智能·机器学习·自动驾驶
m0_5157904118 小时前
【mmengine】配置器(config)(入门)读取与使用
自动驾驶
电气_空空2 天前
自动驾驶汽车横向控制方法研究综述
人工智能·自动驾驶·汽车·毕业设计·毕设
地平线开发者2 天前
征程6 工具链常用工具和 API 整理(含新手示例)
算法·自动驾驶
学步_技术2 天前
自动驾驶系列—自动驾驶发展史介绍
人工智能·机器学习·计算机视觉·自动驾驶·sae
驱动起爆大师x_x3 天前
《Ubuntu20.04环境下的ROS进阶学习8》
linux·笔记·单片机·嵌入式硬件·学习·机器人·自动驾驶
学步_技术3 天前
自动驾驶系列—深度剖析自动驾驶芯片SoC架构:选型指南与应用实战
人工智能·架构·自动驾驶·soc·芯片
驱动起爆大师x_x3 天前
《Ubuntu20.04环境下的ROS进阶学习7》
linux·笔记·学习·机器人·自动驾驶
学步_技术3 天前
自动驾驶系列—自动驾驶MCU架构全方位解析:从单核到多核的选型指南与应用实例
单片机·mcu·架构·自动驾驶
Ai173163915794 天前
NVIDIA 的 Blackwell 架构:解析 B100、B200 和 GB200
服务器·人工智能·机器学习·自动驾驶·电脑·ai写作·gpu算力