初识华为MDC智能驾驶计算平台

初识华为MDC智能驾驶计算平台

前言

世界智能大会下的世界智能驾驶挑战赛组织方推荐:“华为MDC是面向自动驾驶领域的计算平台。MDC拥有自研CPU和AI芯片,联合车规级AUTOSAR平台,促进自动驾驶领域的快速发展。”

Autoware的代码看得博主头疼,换换口味,这篇博客不讲技术工程实现细节,谈些宏观些的概念。其实抬头看看也是很重要的,虽然技术细节才是理论化为实践的关键,但一直埋头干技术细节,大方向跑偏了最后也是失败

下面为大家介绍华为MDC智能驾驶计算平台,下面的PPT是博主根据MDC智能驾驶开发者课程参考着做的,讲解词也是根据教学视频加上查阅资料前后总结来的。下面是对比图,还是挺像的哈哈(但博主是用来教学的,而且指出了来源喲~)

初识华为MDC智能驾驶计算平台_第1张图片

背景

自动驾驶汽车的工作原理,是通过摄像机、激光雷达、毫米波雷达、超声波等车载传感器来感知周围的环境,依据所获取的信息进行决策判断,由适当的工作模型来制定相应的策略,如预测本车与其他车辆、行人等在未来一段时间内的运动状态,并进行避免碰撞路径规划。在规划好路径之后,接下来需要控制车辆沿着期望的轨迹行驶。自动驾驶涉及到传感器环境感知、高精地图/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智能驾驶计算平台_第2张图片

系统架构

MDC智能驾驶计算平台总体包含四个部分:第一个部分是硬件平台,第二个部分是平台软件,第三个部分是工具链,第四个部分是安全平台,分为功能安全和信息安全,功能安全指的是“自动驾驶车硬件出现问题后,避免车辆失控,能保证安全停车”,信息安全指的是“车联网数据传输过程中的信息安全” 。不同的解决方案合作伙伴(就是在硬件和底层驱动及服务的基础上开发感知决策等应用模块的开发者)可以基于华为的MDC智能驾驶计算平台去部署不同的应用软件,去满足不同应用场景的要求。

这里面有几个概念跟大家详细介绍一下:

  • BIOS:大家应该都有印象,是电脑启动时加载的第一个软件,它是一组固化到计算机内主板上一个ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,可从CMOS中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制
  • 微控制单元(Microcontroller Unit;MCU) :通常我们叫单片机
  • AUTOSAR :AUTomotive Open System Architecture的简称,中文翻译就是汽车开放系统架构。
    现在像华为这些公司开发自动驾驶都是用的AUTOSAR标准,AUTOSAR将汽车电子控制单元(ECU)的软件底层做了一个标准的封装。使得大家都能共用一套底层软件,只需要修改其中的一些参数,就可以匹配不同硬件,当然也可以匹配不同的应用层软件(防盗标记:zhengkunxian)。如此之后,用户只需要专心负责应用层功能开发即可,底层都交给AutoSAR工程师就行了。通俗而言,它的作用就是松耦合自动驾驶软件和车辆的电子控制单元(ECU),也就是硬件不管怎么变,应用层开发仍然调用那些API,不用管硬件的变化。
    AUTOSAR目前主要的有两个版本,Adaptive AUTOSARClassic AUTOSAR。 Classic
    AUTOSAR平台支持高安全性和高实时性的应用场景,因此对于深度嵌入式的软件功能需部署运行在经典平台上。 Adaptive AUTOSAR平台是随着汽车网联化的发展而发展起来的(防盗标记:zhengkunxian),可以支持大数据的并行处理,所以对于需要高性能运算的应用运行在Adaptive平台上。它与AUTOSAR经典平台一起,相互协作,相互补充,共同支持高度自动驾驶以及车联网相关的功能开发。
  • 工具链:工具链是一系列用于制作软件的工具。
    举个例子,就好比我们做作业,要用ppt看题目,用matlab跑仿真,然后将结果写成报告要用word,所以ppt、matlab、word就构成了工具链,题目从ppt转移到matlab变成代码,接着从matlab输出结果被你截图到word里面变成提交的作业,就是这些加工的工具形成一个链条完成写作业的任务。

初识华为MDC智能驾驶计算平台_第3张图片

硬件平台

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处理、数据交换

  • 数据交换模块主要负责其余各个模块的数据交互
  • 图像处理模块可以把摄像头的原始数据处理成YUV格式或者RGB格式。
  • AI处理模块主要用来做AI计算,主要是CNN计算,可以做摄像头的AI处理,或者摄像头和激光雷达一个前融合的AI计算,内存是64GB。
  • CPU模块主要提供一些整型计算,可以用来部署后融合、定位、规控等应用软件算法,内存是16GB。
  • MDC的内置储存是128GB的固态硬盘(SSD)

接着看右边,其中HMI(人机交互接口),通过FPD-LINK接口从MDC智能驾驶计算平台读取数据,环视摄像头数据传入MDC后通过拼接可以形成环视图,处理完成后可以把一个环视的显示通过FPD-LINK输出到HMI显示给乘员。

接着是ETH(以太网接口)连接到4G网络,车联网系统等。

CAN接口可以对接底盘的一些ECU,包括转向和动力的ECU。

初识华为MDC智能驾驶计算平台_第4张图片

数据传输

不同传感器接口不同,根据硬件的设计,传感器的数据传输路径分为三大部分,首先是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智能驾驶计算平台_第5张图片

平台软件

这个是MDC开发平台提供的各种配套的软件服务,其实这个很容易理解,就像买电脑预装了windows操作系统,windows操作系统就是给你的软件服务,在这个windows上面我们可以开发别的应用,比如我们开发了QQ。

这里面有几点讲一下:

  • 自适应软件服务:供上层自动驾驶应用调用的一些服务接口
  • 车控OS(操作系统):华为自研微内核操作系统-越影OS,越影OS使用华为鸿蒙操作系统微内核,鸿蒙微内核是跟linux兼容的,也就是在liux系统下开发的自动驾驶业务可以直接迁移到MDC软件平台上直接运行。
  • 自适应软件组件:华为自研的软件中间件,跟AUTOSAR 是兼容的,之间介绍了下AUTOSAR 的作用,就是用来软硬件松耦合用的中间件,这个华为自研的中间件也是这个作用。其中AI算子库里面包含各种人工智能模型,兼容tensorflow和caffe这些比较常见的做深度神经网络学习的中间件。

什么是中间件?之前介绍的AUTOSAR 也是中间件。举个通俗的例子,我比较喜欢举例子,这样方便理解和记忆。
比如办公室里面有一个部长,一个科长,一堆科员。部长安排工作,比如写汇报材料,会把任务布置给科长,科长安排科员干活。部长不用知道科员是怎么写汇报材料的,他和科员之间隔了科长,他只要调用科长写汇报材料的接口,科长会通过自己的方式比如安排哪两个科员一起写个材料,就可以获得一个写好的材料,然后部长就可以拿去做其他的应用比如申项目。这样做有什么好处呢?好处就是对于部长而言,科员不论怎么变,他只要抓住科长就行了,其他不用管。而我们做的就是部长的活,开发应用层,抓住MDC提供的API就行了,底层不用管。

这也就是中间件的作用。连接操作系统层和应用程序层,将不同操作系统提供应用的接口标准化,协议统一化,屏蔽具体操作的细节,使应用的开发和运行与操作系统无关,实现其独立性,极大程度上减轻了开发者的负担。

初识华为MDC智能驾驶计算平台_第6张图片

工具链

工具链的概念之前跟大家介绍过了。为什么提供这个工具链呢?主要是因为自动驾驶研发的门槛确实是比较高的,从设计开发整个流程对人员的要求很高,为降低门槛,华为提供了完整的工具链。MDC工具链旨在提供个性化、标准化、多元化的开发工具集合。后面会详细介绍工具链怎么使用。

初识华为MDC智能驾驶计算平台_第7张图片

工具链使用流程

MDC平台工具链是面向MDC平台的智能驾驶应用开发工具集,主要由三个工具组成,分别是用于AI应用开发的Mind Studio,用于系统配置的MDC Manifest Configurator,最后是用于代码集成开发的MDC Development Studio

  • 在AI应用开发方面,Mind Studio提供了AI模型转换功能,算子开发功能,以及拖拽式的应用开发功能,Mind Studio所提供的模型转换功能支持将tensorflow或者caffe的模型转换为昇腾310芯片所支持的格式。也就是说我们已经基于tensorflow或者caffe训练完毕的AI模型可以直接使用Mind Studio(防盗标记:zhengkunxian)导入该模型进行转换。在Mind Studio上完成模型转换以及应用开发后,可以生成AI应用的动态链接库,生成的动态库可以导入集成开发环境MDC Development Studio中被调用,在开发业务代码时,如果是开发AI应用,则可直接调用该动态库。
  • 第二个工具是配置工具MDC Manifest Configurator,安全遵循Adaptive AUTOSAR 平台的标准,支持在配置工具中进行数据类型定义和服务接口创建,通信设计和网络配置,以及应用配置等。如果已经有了Adaptive AUTOSAR 平台的配置文件或者是诊断设计文件,可直接导入到配置工具中使用。如果以前只基于ROS等通信框架,完成了智能驾驶系统的开发,那么可将已有代码中的数据类型映射成服务接口,将服务接口提取出来在配置工具中重新进行Adaptive AUTOSAR平台的配置,最终配置生成的Manifest配置文件可导入到集成开发环境中去进行代码自动生成,代码自动生成会根据配置文件生成通信的服务接口文件。
  • MDS工具提供了与普通C++ IDE类似的代码编辑、编译、工程管理等功能。除此之外还提供了兼容Adaptive AUTOSAR 平台的代码自动生成功能,以及遵循Adaptive AUTOSAR 平台规范的MDC SDK。(软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。)在MDS中导入已配置完成的配置文件,进行代码自动生成后,并完成业务代码的开发,接着对应用代码进行编译、构建,最终生成可执行文件。最后可以通过MDS的界面对可执行程序进行运行调试,这个调试功能是远程的,可直接将应用程序拷贝到MDC智能驾驶平台上运行和调试。

回到MDC智能驾驶平台,MDC工具链旨在提供高效便捷、灵活开放、安全可信的工具。

初识华为MDC智能驾驶计算平台_第8张图片

工具链组网

使用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智能驾驶计算平台_第9张图片

工具链组网示例

这是一种最基本的局域网组网方式,使用一台交换机,加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需要使用到的端口上。

  • 例如映射ssh端口,可以将任何未定义的未使用的大网端口映射到MDC的host的22端口上。
  • 映射gdbserver的端口(gdb这个是一种代码调试的工具),则可将任意自定义的大网端口号映射到MDC上,这里要注意的是映射gdbserver的端口号时大网的端口号和MDC的端口号必须保持一致。

初识华为MDC智能驾驶计算平台_第10张图片

MDC平台应用软件集成方式

最后了解下在MDC平台上使用MDC工具链进行应用软件集成的方式:

  1. 首先在配置工具MDC Manifest Configurator中去进行配置工程的创建、然后导入MDC提供的配置模板、在模板的基础上进行业务应用的配置、完成应用配置以及应用间的通信配置后,生成Arxml文件,并将其导入MDS中。
  2. 如果是开发AI应用,那么同时还可以在Mind Studio中对自己在tensorflow或者caffe平台训练好的模型进行AI模型转换,以及AI应用编排,最后编译生成AI应用的动态库。
  3. 完成了配置和AI动态库的开发后,在MDS这个集成开发环境中将已配置好的Arxml文件使用代码自动生成功能,生成通信框架代码,然后编写业务代码,如果此时业务为调用AI模块进行图像识别等,则可直接调用Mind Studio编译生成的so动态库,业务代码编写完毕后,进行编译构建生成可执行文件,接着通过运行调试功能将可执行二进制文件和配置文件打包部署到MDC智能驾驶平台上。

这张图展示的应用ABCD,可以认为是使用上述开发流程开发完成的智能驾驶应用。P:发布;R:接收。

初识华为MDC智能驾驶计算平台_第11张图片

至此初识MDC结束,这个东西就是个工具,重要的还是业务代码,就是决策规划、感知识别这些的功能模块的实现

继续研究Autoware去了~

补充:虽然是工具,但是却是非常重要的,没有工具怎么实现功能,尤其我们国家崛起被西方各种堵截,啥都得能自给自足才行呀。吾辈当自强!

你可能感兴趣的:(自动驾驶)