初識華爲MDC智能駕駛計算平臺

初識華爲MDC智能駕駛計算平臺

前言

世界智能大會下的世界智能駕駛挑戰賽組織方推薦:“華爲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智能駕駛計算平臺去部署不同的應用軟件,去滿足不同應用場景的要求。

這裏面有幾個概念跟大家詳細介紹一下:

  • 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智能駕駛計算平臺內部包含了兩個核心芯片,其中第一顆是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。

在這裏插入圖片描述

數據傳輸

不同傳感器接口不同,根據硬件的設計,傳感器的數據傳輸路徑分爲三大部分,首先是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。

這裏面有幾點講一下:

  • 自適應軟件服務:供上層自動駕駛應用調用的一些服務接口
  • 車控OS(操作系統):華爲自研微內核操作系統-越影OS,越影OS使用華爲鴻蒙操作系統微內核,鴻蒙微內核是跟linux兼容的,也就是在liux系統下開發的自動駕駛業務可以直接遷移到MDC軟件平臺上直接運行。
  • 自適應軟件組件:華爲自研的軟件中間件,跟AUTOSAR 是兼容的,之間介紹了下AUTOSAR 的作用,就是用來軟硬件松耦合用的中間件,這個華爲自研的中間件也是這個作用。其中AI算子庫裏面包含各種人工智能模型,兼容tensorflow和caffe這些比較常見的做深度神經網絡學習的中間件。

什麼是中間件?之前介紹的AUTOSAR 也是中間件。舉個通俗的例子,我比較喜歡舉例子,這樣方便理解和記憶。
比如辦公室裏面有一個部長,一個科長,一堆科員。部長安排工作,比如寫彙報材料,會把任務佈置給科長,科長安排科員幹活。部長不用知道科員是怎麼寫彙報材料的,他和科員之間隔了科長,他只要調用科長寫彙報材料的接口,科長會通過自己的方式比如安排哪兩個科員一起寫個材料,就可以獲得一個寫好的材料,然後部長就可以拿去做其他的應用比如申項目。這樣做有什麼好處呢?好處就是對於部長而言,科員不論怎麼變,他只要抓住科長就行了,其他不用管。而我們做的就是部長的活,開發應用層,抓住MDC提供的API就行了,底層不用管。

這也就是中間件的作用。連接操作系統層和應用程序層,將不同操作系統提供應用的接口標準化,協議統一化,屏蔽具體操作的細節,使應用的開發和運行與操作系統無關,實現其獨立性,極大程度上減輕了開發者的負擔。

在這裏插入圖片描述

工具鏈

工具鏈的概念之前跟大家介紹過了。爲什麼提供這個工具鏈呢?主要是因爲自動駕駛研發的門檻確實是比較高的,從設計開發整個流程對人員的要求很高,爲降低門檻,華爲提供了完整的工具鏈。MDC工具鏈旨在提供個性化、標準化、多元化的開發工具集合。後面會詳細介紹工具鏈怎麼使用。

在這裏插入圖片描述

工具鏈使用流程

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工具鏈進行開發時,各個工具之間需要進行如圖所示的組網,首先需要有一臺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需要使用到的端口上。

  • 例如映射ssh端口,可以將任何未定義的未使用的大網端口映射到MDC的host的22端口上。
  • 映射gdbserver的端口(gdb這個是一種代碼調試的工具),則可將任意自定義的大網端口號映射到MDC上,這裏要注意的是映射gdbserver的端口號時大網的端口號和MDC的端口號必須保持一致。

在這裏插入圖片描述

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結束,這個東西就是個工具,重要的還是業務代碼,就是決策規劃、感知識別這些的功能模塊的實現

繼續研究Autoware去了~

補充:雖然是工具,但是卻是非常重要的,沒有工具怎麼實現功能,尤其我們國家崛起被西方各種堵截,啥都得能自給自足纔行呀。吾輩當自強!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章