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

         很久没有写博客了,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 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,对车企来说几百万对于一个项目而言也不是多的大事,没必要当你的小白鼠。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP打印输出设置

SAP打印输入有很多方式,适合不同的应用场景。 一.打印输出总体概览图 二.前台打印 这个是比较常见的,前端打印的出现减轻了管理员的工作量,用户可以选择自己电脑上的打印机输出,不需要所有打印机都在SAP平台中进行配置&#xff0…

【Next】动态路由、加载 UI 和流式传输

动态路由 动态段作为 params 属性传递给 layout、page、route 和 generateMetadata 函数。 /app/blog/[slug]/page.tsx export default function Page({params}: {params:{slug:string}}) {return <h1>Slug Page -- {params.slug}</h1> };/app/shop/[...slug]/pa…

(vue)el-select选择框加全选/清空/反选

(vue)el-select选择框加全选/清空/反选 <el-form-item label"批次"><el-selectv-model"formInline.processBatch"multiplecollapse-tagsfilterableplaceholder"请选择"style"width: 250px"no-data-text"请先选择企业、日…

常用的启发式算法有哪些

常用的启发式算法主要包括模拟退火算法&#xff08;SA&#xff09;、蚁群算法&#xff08;ACO&#xff09;、粒子群算法&#xff08;PSO&#xff09;、遗传算法&#xff08;GA&#xff09;、禁忌搜索算法&#xff08;TS&#xff09;以及超启发式算法&#xff08;Hyper-Heuristi…

Java使用documents4j将word和excel转pdf

pom.xml添加documents4j依赖 <!-- documents4j --> <dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.0.3</version> </dependency> <!-- documents4j 转 wor…

《Kubernetes部署篇:基于Kylin V10+ARM架构CPU+外部etcd使用containerd部署K8S 1.26.15容器版集群(一主多从)》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;企业级K8s集群运维实战 1、在当前实验环境中安装K8S1.25.14版本&#xff0c;出现了一个问题&#xff0c;就是在pod中访问百度网站&#xff0c;大…

Java基础知识总结(59)

&#xff08;1&#xff09;Set集合 Set也是集合中的一个容器&#xff0c;程序可以依次把若干个对象放进Set&#xff0c;但是Set无法保存元素添加的顺序&#xff0c; Set不允许包含相同的元素&#xff0c;如果把两个相同的元素加入同一个Set中&#xff0c;则添加失败&#xff0…

Openlayers动态刷新Arcgis MapServer服务图层

Openlayers动态刷新Arcgis MapServer服务图层 最近做一个图层编辑的功能&#xff0c;在前端新增一个图块之后需要刷新Arcgis切片服务&#xff0c;实时显示效果。刚开始使用source的refresh方法&#xff0c;结果不生效&#xff0c;后来在source上更新一个时间戳参数实现了刷新切…

UTS iOS插件

1、UTS插件无法出现 再uniapp x中使用时&#xff0c;必须给这个插件高度和宽度&#xff0c;否则出不来&#xff01; <uts-hello-view buttonText"点击按钮内容" style"width:375px;height: 375px;background-color: aqua;"></uts-hello-view>…

python后端相关知识点汇总(十二)

python知识点汇总十二 1、什么是 C/S 和 B/S 架构2、count(1)、count(*)、count(列名)有啥区别&#xff1f;3、如何使用线程池3.1、为什么使用线程池&#xff1f; 4、MySQL 数据库备份命令5、supervisor和Gunicorn6、python项目部署6.1、entrypoint.sh制作6.2、Dockerfile制作6…

vue 的报告页面,生成pdf,使用html2canvas , 下载pdf格式文件。多页分页下载

1. 新建一个js 文件 &#xff0c; 命名 为 html2canvas.js ,html2canvas 文件和jspdf.min.js 放同一目录下。下载文件已上传啦 2. 在vue 文件中引入html2canvas.js 文件 <script>import * as html2Canvas from ./html2canvas.js </script> 3 点击下载&#xff…

oracle insert操作分批量提交

对临时表做insert插入时没有做批量提交&#xff0c;可能会导致undo表空间撑爆&#xff0c;修改脚本对插数进行2万一次的批量提交&#xff0c;并且修改索引和同义词创建时间在插数操作结束后。 原语句&#xff1a; insert into 目标表 select * from 源表;改为2w次一提交&…

OpenCV基本图像处理操作(十)——图像特征harris角点

角点 角点是图像中的一个特征点&#xff0c;指的是两条边缘交叉的点&#xff0c;这样的点在图像中通常表示一个显著的几角。在计算机视觉和图像处理中&#xff0c;角点是重要的特征&#xff0c;因为它们通常是图像中信息丰富的区域&#xff0c;可以用于图像分析、对象识别、3D…

探索人工智能在医疗领域的革命性应用

人工智能&#xff08;AI&#xff09;正在全球范围内逐步改变医疗行业的面貌&#xff0c;从提高诊断精度到优化治疗方案&#xff0c;AI技术正成为医疗创新的核心驱动力。本文将深入探讨AI在医疗领域的应用&#xff0c;并通过一个具体的Python代码示例&#xff0c;展示如何利用机…

30天算法挑战赛,一天一个算法(第一天,二分查找)

二分查找 1. 板子 int left 0; int right n - 1; while (left < right) {int mid (right - left) / 2 left;if (nums[mid] < target) {left mid 1;} else {right mid - 1;}return left; }2. 应用题 1. 查找题单 在排序数组中查找元素的第一个和最后一个位置 搜…

JavaIO操作-File

1、File类 1.1 File类说明 存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永 久的保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件中.这些文件可以移动,传送,亦可以被其他程序使用.由于数据存储在文件中,所以我们需要学习一个和文件有密…

openharmony 编译源码及docker相关操作

目录 一、环境搭建: 二、编译链下载及相关配置 三、编译及版本烧录 一、环境搭建: 1、拉取docker镜像,openharmony。默认版本为ubuntu 18.04

DDoS攻击愈演愈烈,谈如何做好DDoS防御

DDoS攻击是目前最常见的网络攻击方式之一&#xff0c;各种规模的企业包括组织机构都在受其影响。对于未受保护的企业来讲&#xff0c;每次DDoS攻击的平均成本为20万美元。可见&#xff0c;我们显然需要开展更多的DDoS防御工作。除考虑如何规避已发生的攻击外&#xff0c;更重要…

【LeetCode热题100】【动态规划】零钱兑换

题目链接&#xff1a;322. 零钱兑换 - 力扣&#xff08;LeetCode&#xff09; 要拿硬币凑钱&#xff0c;硬币无限多&#xff0c;就是完全背包问题&#xff0c;定义dp[i]是要凑的钱i的硬币数&#xff0c;对于当前硬币来说&#xff0c;如果选择了这个硬币&#xff0c;要么要凑的…

【机器学习300问】72、神经网络的隐藏层数量和各层神经元节点数如何影响模型的表现?

评估深度学习的模型的性能依旧可以用偏差和方差来衡量。它们反映了模型在预测过程中与理想情况的偏离程度&#xff0c;以及模型对数据扰动的敏感性。我们简单回顾一下什么是模型的偏差和方差&#xff1f; 一、深度学习模型的偏差和方差 偏差&#xff1a;衡量模型预测结果的期望…