世界智能大会下的世界智能驾驶挑战赛组织方推荐:“华为MDC是面向自动驾驶领域的计算平台。MDC拥有自研CPU和AI芯片,联合车规级AUTOSAR平台,促进自动驾驶领域的快速发展。”
Autoware的代码看得博主头疼,换换口味,这篇博客不讲技术工程实现细节,谈些宏观些的概念。其实抬头看看也是很重要的,虽然技术细节才是理论化为实践的关键,但一直埋头干技术细节,大方向跑偏了最后也是失败。
下面为大家介绍华为MDC智能驾驶计算平台,下面的PPT是博主根据MDC智能驾驶开发者课程参考着做的,讲解词也是根据教学视频加上查阅资料前后总结来的。下面是对比图,还是挺像的哈哈(但博主是用来教学的,而且指出了来源喲~)
自动驾驶汽车的工作原理,是通过摄像机、激光雷达、毫米波雷达、超声波等车载传感器来感知周围的环境,依据所获取的信息进行决策判断,由适当的工作模型来制定相应的策略,如预测本车与其他车辆、行人等在未来一段时间内的运动状态,并进行避免碰撞路径规划。在规划好路径之后,接下来需要控制车辆沿着期望的轨迹行驶。自动驾驶涉及到传感器环境感知、高精地图/GPS精准定位、V2X信息通信、多种数据融合、决策与规划算法运算、运算结果的电子控制与执行等过程,在此过程中需要一个强劲的“大脑”来统一实时分析、处理海量的数据与进行复杂的逻辑运算,对计算能力的要求非常高。一般认为,L2需要的计算力<10TOPS(1TOPS代表处理器每秒钟可进行一万亿次(10^12)操作),L3需要的计算力为30~60TOPS,L4需要的计算力>100TOPS,L5需要的计算力目前未有明确定义(有预测需要至少1000TOPS),目前的计算平台仅能满足部分L3、L4级别的自动驾驶所需。
L1级:辅助驾驶
车辆对方向盘和加减速中的一项操作提供驾驶,人类驾驶员负责其他驾驶动作。
L2级:部分自动驾驶
车辆对方向盘和加减速中的多项操作提供驾驶,人类驾驶员负责其他驾驶动作。
L3级:条件自动驾驶
由车辆完成大部分驾驶操作,人类驾驶员需要集中注意力以备不时之需。
L4级:高度自动驾驶
由车辆完成所有驾驶操作,人类驾驶员不需要集中注意力,但限定道路和环境条件。
L5级:完全自动驾驶
由车辆完成所有驾驶操作,人类驾驶员不需要集中注意力,不限定道路和环境。
在未来,每一辆汽车都将是一个装在车轮上的移动数据中心(Mobile Data Center,MDC)。针对自动驾驶对计算平台的需求,华为推出MDC解决方案,其中集成了华为自研的Host CPU芯片、AI芯片、ISP芯片(一种图像处理芯片),并通过底层的软硬件一体化调优,在时间同步、传感器数据精确处理、多节点实时通信、最小化底噪、低功耗管理、快速安全启动等方面领先业界。
MDC智能驾驶计算平台总体包含四个部分:第一个部分是硬件平台,第二个部分是平台软件,第三个部分是工具链,第四个部分是安全平台,分为功能安全和信息安全,功能安全指的是“自动驾驶车硬件出现问题后,避免车辆失控,能保证安全停车”,信息安全指的是“车联网数据传输过程中的信息安全” 。不同的解决方案合作伙伴(就是在硬件和底层驱动及服务的基础上开发感知决策等应用模块的开发者)可以基于华为的MDC智能驾驶计算平台去部署不同的应用软件,去满足不同应用场景的要求。
这里面有几个概念跟大家详细介绍一下:
MDC智能驾驶计算平台内部包含了两个核心芯片,其中第一颗是CPU处理器,它是基于华为自研的ARM处理器,鲲鹏920s,12核,2.0GHz,7nm制程,最大功耗55W。另外一个核心芯片是AI处理器,它是华为自研的昇腾310处理器,基于达芬奇AI架构,可以提供16TOPS@INT8(八位整数精度(int8)下处理器的性能达到16tops,1TOPS代表处理器每秒钟可进行一万亿次(10^12)操作)的算力,12nm制程,最大功耗8W。
下面那个是MDC硬件的内部逻辑架构图,左边是传感器,中间是MDC,右边是整车的一些其他的电子控制单元ECU和信息娱乐模块。
传感器有摄像头、GPS、激光雷达、毫米波雷达、超声波雷达。摄像头是通过GMSL接口接入、组合定位可以通过UART(串口)接入,激光雷达是通过ETH(以太网)接入,毫米波雷达和超声波雷达通过CAN接入。
MDC内部分为2两大模块,第一个是计算单元,第二个是安全MCU模块。
计算单元内部包括四大模块:CPU模块、图像处理、AI处理、数据交换。
接着看右边,其中HMI(人机交互接口),通过FPD-LINK接口从MDC智能驾驶计算平台读取数据,环视摄像头数据传入MDC后通过拼接可以形成环视图,处理完成后可以把一个环视的显示通过FPD-LINK输出到HMI显示给乘员。
接着是ETH(以太网接口)连接到4G网络,车联网系统等。
CAN接口可以对接底盘的一些ECU,包括转向和动力的ECU。
不同传感器接口不同,根据硬件的设计,传感器的数据传输路径分为三大部分,首先是CAN和UART(串口)的接口,这类接口的传感器比如说毫米波雷达,车身底盘和GPS,一般是通过CAN或者串口接入到MCU,,再由MCU子系统封装成SOME/IP消息发布到host子系统,(防盗标记:zhengkunxian)业务是部署在host子系统中的,比如说决策规划、感知识别等模块的算法。Host是ARM(Advanced RISC Machine)架构服务器级的CPU(Central Processing Unit)Kunpeng鲲鹏920,具有强大的计算能力。Host子系统内部各个节点之间的通讯方式为DDS。
接着看ETH(车载以太接口,换种说法就是网口),以太接口是可以直通到host子系统的,目前使用以太接口的传感器主要还是激光雷达,因为激光雷达的数据量比较大,并且业务应用可以直接获取到激光雷达的裸数据,所以不用封装成SOME/IP的消息发布后再去读取数据,直接用socket就行了。
最后是GSML接口,主要是接入摄像头,摄像头数据一般是原始图像数据,需要经过ISP的处理之后才能给自动驾驶算法使用。而且考虑到图像数据占据的储存空间还有传输时需要的带宽都比较大,为了提升传输的性能降低延时,目前MDC是使用DDS这种传输方式发布给业务应用的。
MDC(Mobile Data Center)可用于二次发开的芯片有Host(Kunpeng鲲鹏920)和Mini(Ascend昇腾 310)。Host是ARM(Advanced RISC Machine)(防盗标记:zhengkunxian)架构服务器级的CPU(Central Processing Unit),具有强大的计算能力;Mini是Ascend架构的图形处理芯片,MDC有4个Mini,分别是Mini0、Mini1、Mini2、Mini3。需要使用GPU加速的功能软件(如图像处理节点)应部署在Mini上,其他节点可部署在Host上。
通过下面两个业务应用的流程图可以知道,MDC的host子系统内基于AP(AUTOSAR Adaptive Platform)的通信方式有两个,DDS和SOME/IP(Scalable Service-OrientedMiddleware over IP)。
这个是MDC开发平台提供的各种配套的软件服务,其实这个很容易理解,就像买电脑预装了windows操作系统,windows操作系统就是给你的软件服务,在这个windows上面我们可以开发别的应用,比如我们开发了QQ。
这里面有几点讲一下:
什么是中间件?之前介绍的AUTOSAR 也是中间件。举个通俗的例子,我比较喜欢举例子,这样方便理解和记忆。
比如办公室里面有一个部长,一个科长,一堆科员。部长安排工作,比如写汇报材料,会把任务布置给科长,科长安排科员干活。部长不用知道科员是怎么写汇报材料的,他和科员之间隔了科长,他只要调用科长写汇报材料的接口,科长会通过自己的方式比如安排哪两个科员一起写个材料,就可以获得一个写好的材料,然后部长就可以拿去做其他的应用比如申项目。这样做有什么好处呢?好处就是对于部长而言,科员不论怎么变,他只要抓住科长就行了,其他不用管。而我们做的就是部长的活,开发应用层,抓住MDC提供的API就行了,底层不用管。
这也就是中间件的作用。连接操作系统层和应用程序层,将不同操作系统提供应用的接口标准化,协议统一化,屏蔽具体操作的细节,使应用的开发和运行与操作系统无关,实现其独立性,极大程度上减轻了开发者的负担。
工具链的概念之前跟大家介绍过了。为什么提供这个工具链呢?主要是因为自动驾驶研发的门槛确实是比较高的,从设计开发整个流程对人员的要求很高,为降低门槛,华为提供了完整的工具链。MDC工具链旨在提供个性化、标准化、多元化的开发工具集合。后面会详细介绍工具链怎么使用。
MDC平台工具链是面向MDC平台的智能驾驶应用开发工具集,主要由三个工具组成,分别是用于AI应用开发的Mind Studio,用于系统配置的MDC Manifest Configurator,最后是用于代码集成开发的MDC Development Studio。
回到MDC智能驾驶平台,MDC工具链旨在提供高效便捷、灵活开放、安全可信的工具。
使用MDC工具链进行开发时,各个工具之间需要进行如图所示的组网,首先需要有一台linux的服务器,在服务器上可以部署Mind Studio的服务端,以及安装MDC的交叉编译环境。(交叉编译是在一个平台上生成另一个平台上的可执行代码。)然后本地开发环境上需要准备一个windows开发的环境和一个ubuntu系统(防盗标记:zhengkunxian)的开发环境。Windows系统上的开发环境可以安装MMC和MDS,以及使用浏览器查看Mind Studio的界面,在ubuntu环境上可以安装MDS和交叉编译环境以及同样的使用浏览器查看Mind Studio的界面。目前MMC还未推出ubuntu版本。然后linux服务器、windows开发环境、ubuntu开发环境,与MDC单板连接在一个小的局域网内。这样使用MDS进行远程运行调试的时候就可以直接将应用部署到MDC单板上去运行。
这是一种最基本的局域网组网方式,使用一台交换机,加MDC,ubuntu本地开发环境,windows本地开发环境,和linux服务器组成一个局域网。
本地开发环境通过一个固定的IP地址就可以访问MDC上的host或mini,Host是ARM(Advanced RISC Machine)架构服务器级的CPU(Central Processing Unit)Kunpeng鲲鹏920,具有强大的计算能力;Mini是Ascend架构的图形处理芯片Ascend昇腾 310,MDC有4个Mini。需要使用GPU加速的功能软件(如图像处理节点)应部署在Mini上,其他节点可部署在Host上。
ubuntu本地开发环境上安装的是linux版的MDS和交叉编译环境,windows本地开发环境上安装的是windows版的MDS,而交叉编译环境需要安装在linux编译服务器上。如果使用windows本地开发环境,由于windows版本的MDS不附带编译器,所以需要使用ssh将代码拷贝到linux编译服务器上进行编译。
如果使用ubuntu本地开发环境,则可通过安装MDS和交叉编译环境到本地进行本地编译,而不需要依赖额外的服务器。
MDC可以支持多用户同时使用,只需要所有开发者在同一个局域网内就行了。
由于MDC上的host和mini都是固定IP,并且IP所在的网段都是固定的192.168.1网段,如果开发者希望在10.25.0这样的大网段中也能访问MDC的话,应该怎么做呢?
其实可以使用一台具备双网卡的电脑,同时接入大网和连接MDC,然后使用端口映射工具将这台电脑特定的大网端口映射到MDC的host和mini需要使用到的端口上。
最后了解下在MDC平台上使用MDC工具链进行应用软件集成的方式:
这张图展示的应用ABCD,可以认为是使用上述开发流程开发完成的智能驾驶应用。P:发布;R:接收。
至此初识MDC结束,这个东西就是个工具,重要的还是业务代码,就是决策规划、感知识别这些的功能模块的实现。
继续研究Autoware去了~
补充:虽然是工具,但是却是非常重要的,没有工具怎么实现功能,尤其我们国家崛起被西方各种堵截,啥都得能自给自足才行呀。吾辈当自强!