由格斯坦汽车、汽车公司、上海车展三方共同主办的sdvf2021第二届软件定义汽车峰会论坛暨autosar2021中国将于4月19-21日在上海举行,此次活动也将是2021上海车展的同步活动 这次会议邀请了北京未动科技有限企业研发vp肖猛先生在这次论坛上 [/S2// ]
未动科学技术成立于年,我们初期用自动驾驶视觉感知算法使自动驾驶领域发挥作用。 目前,我们的感知算法已经在很多oem上落地。 我们近一年来一直致力于高性能平台自动运行域控制器的基础软件和APP软件相关的开发。 我们也想提供与oem相关的产品和服务。
用高计算力域控制器实现高速公路的自动驾驶仪、驾驶员监控、自动停车、系统基础软件到应用处理方案的完善实现 在这次演讲中,首先说明两个方面。 一是根据场景提出了自动驾驶域控制器软件体系结构的鸟瞰图。 由于这种体系结构对中间件要求极高,因此在性能域中大量使用了ap autosar。 虽然ap autosar大部分是用c +开发的,但这样还有一个问题。 我们想就这些问题进行一些探讨。
这是l1和l2软件体系结构的典型拓扑形式,l2产品通常由一个功能和一个功能重叠而成,每个控制器都执行各自的事件。 例如,图下的4个控制器有前方摄像头、前方毫米波雷达、左右侧角雷达控制器,分别具有解决感知算法的能力和计算能力。 上面是停车和驾驶员的监视。 这两个系统架构比较接近。 因为都有高计算力的一部分用视觉ai解决的单元。 该体系结构对oem有利,可以将焦点集中在不同的公司上,但l3、l4这样的重叠方案存在问题。 我们去l3以上的时候,不能把这样的控制器一个个往上堆。 一方面是价格问题,另一方面各种计算力没有被充分利用。 例如,即使在变为低速时停车开始,前方照相机的计算力也会被浪费,无论是价格还是硬件上,都不可能按照功能设计不同的ecu进行堆叠。
这是我们绘制的高计算能力平台上的软件体系结构的鸟瞰图,从三个维度来看这个问题。 让我们来看看纵轴的“分工”这个维度。 这个维度分为两个域。 一个是mcu实时域,它首要负责实时解决。 第一个是性能域,执行对大多数ai算法和实时性没有要求的计算,通常是软实时的。
/ S2// S2// S2 /级别/ S2// S2 /级别/ S2// S2// S2// S2// S2 / 管理硬件计算、存储、io等各种资源,提供访问硬件资源的驱动程序和api接口,安排各种业务( process或task )的执行,解决io中断等。 该层没有与“车”相关的业务,与“车”没有直接关系,可以作为通用的计算机操作系统在其他不同领域使用。
l.bsw (这里借用cp autosar的bsw概念)层是用来处理汽车控制器的常见问题,也就是我们通常所说的中间件。 汽车控制器非常多、复杂,为了让控制器可以放入车内使用,大部分软件都是用于控制器满足汽车的电源管理标准、互联网管理标准、诊断标准、刷写规范。
车载控制器要求比通常的工业嵌入式系统具有更高的可靠性,除了计算机os之外,还需要附加针对存储、通信各方面的安全保护机制。 这些是所有车载控制器需要实现的能力。 并且,为了使控制器正常动作,还需要提供时钟同步、日志跟踪等服务,另一方面,该层需要向上层提供通信能力,包括总线数据的发送接收,并提供各软件模块之间的数据交换能力。 该层还根据计算机操作系统层提供的任务调度提供了更具体的任务包装器和更细粒度的任务执行管理机制 该层不进行“自动驾驶”相关业务,也可用于其他车载控制器的开发。
基于l.bsw层,实现自动驾驶软件框架l.fw。 l.fw这一层需要理解自动驾驶的相关含义,理解自动驾驶各种算法的含义概念和运行上的好处。 根据自动驾驶的含义可以分离出不同的软件框架模型。
每个软件框架可以将各种算法模块封装在不同的软件组件中,各种框架作为各种组件的执行载体装载,在各种组件中提供数据连接机制和机制 基础组件是用于运行框架的最小集合。 自动驾驶软件框架没有实现具体的“自动驾驶功能”,没有实现具体的自动驾驶算法,是“算法”的容器。
在名为l.apk的层中,可以分解具体的自动驾驶场景,分解为由帧层定义的不同组件类型,组合或扩展现有组件,将新组件放入框架中执行,然后执行 因此,每个功能组件都在框架层中运行,并基于统一体系结构实现l2、l3和l4的功能。 l.apk层包含各种各样的算法,有感知算法、控制算法,当然感知算法也进行算法的加速。
在另一个维度上,我喜欢切面这个词,它的意思是什么? 其中新闻安全、功能安全、性能统计,其实都在d轴、l轴中。 硬件层面有硬件的安全诉求和技术实现,操作系统、中间件在上各层级都有自己的功能安全解决方法。
分解为几个正交的三维,可以更清楚地理解自动驾驶的软件架构。
这是一个整体视角的故事,但也可以改变局部视角。 让我们单纯从算法的角度来看。 我们知道自动驾驶的核心是算法。 有感知算法、融合算法、控制算法等各种各样的算法。 这些算法确实是自动驾驶的核心。 但是,这些算法是如何组合的呢? 如果只是把算法做好了,就不能正确调度,也不能实现完美的功能。
本图从三个维度分析了算法所依赖的环境。 时间维度,一个算法有开始时间和结束时间的数据流,任何算法都需要输入,也提供输出; 资源维,算法在什么物理设备上执行?
这里可以看到三个平面各自的含义。 ft平面表示算法在一定时间内的数据流。 fr平面表示算法数据实际流动的物理或逻辑通道。 rt平面表示算法在一定时间内占用资源。 如何安排这个是软件框架需要处理的问题。
在软件框架中,我们把它分成了两大部分。 一部分是环境模型的框架,环境模型的概念并不新鲜,l2有各自的环境模型的实现。 当然,在积累l3、l4的功能时,我们需要统一的环境模型表现。 而且,它应该是一个意义从低级到高级逐渐上升的过程,越往下意味着越接近传感器的物理属性,越往上意味着越接近计划。 它赋予的实质上具有交通行驶意义的意义新闻,在l3以上的各种功能中被根据需要使用。
框架中的另一个是泛化的计划和执行。 我们经常谈论全球规划、路径规划、行为预测等各种名词,抽象地说,任何级别的自动驾驶语义都可以抽象为几个简单的要素。
一个是对环境的诉求( e )、计划或计划) plan ),是抽象的计划概念,计划的输出由某个执行机制执行) x )。 举个例子,上图的中间部分在抽象的意义上有环境的诉说、计划、执行。 问题空之间的a是“从北京开车去广州”。 在这个问题空之间,以前流传的意义上的局部计划在这里没有意义。 这是因为问题空之间的级别不同。 此时,对于环境来说,我们感兴趣的不是gps的某一点,而是北京的哪个地区。 按计划来说,我们考虑的事件是走哪个高速,再走几公里,从哪里出来的水平上进行计划。 但是,关于下面的问题空之间的b,开车通过某个十字路口时,这时对环境的要求变得更细致了,为了感知车道新闻、信号新闻、周边车辆新闻,减速、起步、如何通过十字路口 每个epx层次的分解实际上代表着数学的分形机制,各个层次的环境识别计划交给这个层次的执行机制,这个执行机制内部有更小粒度的epx体系。
所有l.fw层的开发都需要以牢固的中间件为基础。 在mcu开发中,cpautosar已经非常成熟,目前要实现更灵活的机制需要在性能域这种soa相关模式下进行,ap autosar是一个很好的处理方案。
但是,对于ap autosar将c +用于驾驶行业,我们感到敬畏。 事实上,c++14在这个领域做了很多工作,但不能保证程序员真的能写出优秀的c+代码。 这是微软和谷歌的两个数据,他们代码库所有严重安全漏洞的70%都与内存管理有关。 在汽车软件开发中,我们使用ap autosar标准中包含的许多工具来分解此代码。 里面有c +编程指南的特别章节,列出了很多规则。 请不要那样做。 请不要那样做。 越检查这些事件,就越能隐藏更深层次的错误。
还有一个非常现实的问题。 这些程序员来自哪里? 熟练的c++14程序员来自哪里? 这一年,大家在全国都在夺人。 因为人才只有这些,所以还没有培养出新的团体。 我们使用ap的时候,会发现有趣的问题。 大部分汽车软件的程序员来自哪里? 它是机械的、控制的和电子的,很少有计算机专家。 理由很简单。 因为学计算机的去了网上。 十年前,这些人不能制作汽车软件。 那个时候汽车都是mcu,所以c就可以了。 但是,使用ap autosar时需要大量的c+程序员。 这些c程序员可以迁移到c +,但是要想快速熟练使用,写无错误的代码太难了。
我的想法是什么? 我近一年来大力宣传在汽车软件中采用rust语言。 rust在近一年来知名度非常高。 我知道华为里面有一支非常强大的rust队,出了很多事,但是他们都保持沉默。
这里有一张显示rust在两个轴上的位置的图。 接下来是安全轴。 此安全性不是指功能安全性和新闻安全性,但与它们有关。 语言本身的安全性、程序本身的安全性的话题正在增加。 纵轴是性能轴,c +和c的是性能方面最高的,没有额外的开销。 例如,java是虚拟机语言,有虚拟机开销。 虚拟机的语言不能用于汽车。 因为要面对垃圾回收的问题。 也就是说,在某个时刻,整个程序世界都可以冻结,冻结之后才能回收内存。 各种语言必须经常在安全性和性能之间取得平衡,它可以通过c和c +逐个发挥硬件的性能,但有可能存在内存安全性低的问题。
rust所处的这个位置非常好,性能最好,安全性最好。 rust提供了一组用于在编译器级别防止内存安全错误的机制。 我为此写了一份复印件。 “图界rust的所有权和生命周期”。 这里有非常详细的说明。 这份复印件刊登在rust中文社区杂志上,连续三个月位居浏览量排行榜第一,里面有非常详细的图,说明全方位的情况。
将这样的新语言引入汽车,其实对很多人来说是非常激进的,但我不是没有做过这样的事件,而是已经成功地实施了这样的方法。 这是在完全自动停车项目中采用rust的轻型中间件。 橙色部分用rust编写,整个产品软件中出现很多错误不断修正,但只有这个模块是一块岩石,发行后没有发生过重大错误。
下一步,我们希望将ap autosar和rust很好地结合起来。 可以在ap autosar c++接口中打包rust接口,然后上层可以在rust中开发并提供相应的工具。 你刚才说c+程序员来自哪里? 在这里也一样,你遇到rust程序员是从哪里来的? 其实现在很多c+程序员、java程序员、go程序员都在向rust过渡。 rust的特点是方便了java、go程序员的迁移。 相反,他们转移到c++并不容易。
汽车软件行业在未来十年将需要大量的汽车软件人才,我们不能指望大家都在现有的库存人才中抢夺。 前天的晚宴上,有很多人在创新港附近,两三年间每一年都换一次工作,事件没有变化,工资翻了好几倍。 为了让更多的人投资汽车软件,需要更好的工具,更好的语言。 所以必须扩大汽车软件人才的来源。 在该方案体系中,希望这些层的学习者编写的程序在被编译器编译时具备基本的程序安全特征。
目前,未动科技正在致力于开发包括中间件在内的基础系统软件和自动驾驶APP软件,支持l3、l4自动驾驶落地。
以下是本届大会上未动科学技术的精彩瞬间。
标题:“北京未动科技肖猛:高安全高性能的自动驾驶中间件”
地址:http://www.0317jhgd.com//dfqcxw/15832.html