天天看點

自動駕駛Nvidia Jetson +FPGA設計方案

Nvidia NX平台使用FPGA裝置采集mipi視訊資料調試記錄

Jetson NX與ZYNQ通過Pcie通信。

自動駕駛Nvidia Jetson +FPGA設計方案
自動駕駛Nvidia Jetson +FPGA設計方案

硬體原理圖

基于ZYNQ+Jetson多目辨別别方案設計

FPGA+Xavier高速信号處理系統

6U ZYNQ+Nvidia Jetson Xavier NX闆

電子對抗平台,Xilinx ZYNQ接入CameraLink高幀率相機,采集圖像,送給Jetson Xavier NX做目辨別别鎖定,可用于無人機/雷達系統/視覺控制器

自動駕駛Nvidia Jetson +FPGA設計方案
自動駕駛Nvidia Jetson +FPGA設計方案

大家都知道智能車(Intelligent vehicle)是一個集環境感覺、規劃決策、多等級輔助駕駛等功能于一體的綜合系統,它集中運用了計算機、現代傳感、資訊融合、通訊、人工智能及自動控制等技術,是典型的高新技術綜合體。自動駕駛的關鍵技術依次可以分為環境感覺,行為決策,路徑規劃和運動控制四大部分。

自動駕駛Nvidia Jetson +FPGA設計方案

        自動駕駛理論聽上去很簡單,四大關鍵技術,但到底如何實作的呢?Google從2009年開始做自動駕駛,到現在已有8個年頭。8個年頭的技術積累還無法将自動駕駛技術量産落地,可見自動駕駛技術并不簡單。自動駕駛是一個龐大而且複雜的工程,涉及的技術很多,而且太過細緻。我從硬體和軟體兩方面談一談自動駕駛汽車所涉及的技術。

硬體 

離開硬體談自動駕駛都是耍流氓。先看個圖,下圖基本包含了自動駕駛研究所需要的各種硬體。

自動駕駛Nvidia Jetson +FPGA設計方案

然而... 這麼多傳感器并不一定會同時出現在一輛車上。某種傳感器存在與否,取決于這輛車需要完成什麼樣的任務。如果隻需要完成高速公路的自動駕駛,類似Tesla 的AutoPilot 功能,那根本不需要使用到雷射傳感器;如果你需要完成城區路段的自動駕駛,沒有雷射傳感器,僅靠視覺是很困難的。自動駕駛系統工程師要以任務為導向,進行硬體的選擇和成本控制。有點類似于組裝一台計算機,給我一份需求,我就給你出一份配置單。

1汽車

既然要做自動駕駛,汽車當然是必不可少的東西。從我司(上汽)做自動駕駛的經驗來看,做開發時,能不選純汽油車就别選。一方面是整個自動駕駛系統所消耗的電量巨大,混動和純電動在這方面具有明顯優勢。另一方面是 發動機的底層控制算法相比于電機複雜太多,與其花大量時間在标定和調試底層上,不如直接選用電動車研究更高層的算法。

國内也有媒體專門就測試車輛的選擇做過調研。“為什麼谷歌、蘋果不約而同的選擇了雷克薩斯RX450h(混動汽車)?”“科技公司測試自己的自動駕駛技術時,對于測試車的選擇又都有哪些講究?”等問題。他們得出的結論是“電”和“空間”對無人車改裝至關重要,其次從技術層面上對車的“熟悉程度”是另外一個因素,因為如果不和車企合作改裝,需要“Hack(侵入)”某些控制系統。(此處源自極客汽車)

2.控制器 

在前期算法預研階段,推薦使用工控機(Industrial PC,IPC)作為最直接的控制器解決方案。因為工控機相比于嵌入式裝置更穩定、可靠,社群支援及配套的軟體也更豐富。百度開源的Apollo推薦了一款包含GPU的工控機,型号為 Nuvo-5095GC,如下圖。

自動駕駛Nvidia Jetson +FPGA設計方案

圖檔:Github ApolloAuto

當算法研究得較為成熟時,就可以将嵌入式系統作為控制器,比如Audi和TTTech共同研發的zFAS,目前已經應用在最新款Audi A8上量産車上了。

自動駕駛Nvidia Jetson +FPGA設計方案

圖檔:極客汽車

3.CAN卡 

工控機與汽車底盤的互動必須通過專門的語言——CAN。從底盤擷取目前車速及方向盤轉角等信 息,需要解析底盤發到CAN總線上的資料;工控機通過傳感器的資訊計算得到方向盤轉角以及期望車速後,也要通過 CAN卡将消息轉碼成底盤可以識别的信号,底盤進而做出響應。CAN卡可以直接安裝在工控機中,然後通過外部接口與CAN總線相連。Apollo使用的CAN卡,型号為 ESD CAN-PCIe/402,如下圖。

自動駕駛Nvidia Jetson +FPGA設計方案

4.全球定位系統(GPS)+慣性測量單元(IMU)

人類開車,從A點到B點,需要知道A點到B點的地圖,以及自己目前所處的位置,這樣才能知道行 駛到下一個路口是右轉還是直行。

無人駕駛系統也一樣,依靠GPS+IMU就可以知道自己在哪(經緯度),在朝哪個方向開(航向),當然IMU還能提供諸如橫擺角速度、角加速度等更豐富的資訊,這些資訊有助于自動駕駛汽 車的定位和決策控制。

Apollo的GPS型号為NovAtel GPS-703-GGG-HV,IMU型号為NovAtel SPAN-IGM-A1。

自動駕駛Nvidia Jetson +FPGA設計方案

5.感覺傳感器 

相信大家對車載傳感器都耳熟能詳了。感覺傳感器分為很多種,包括視覺傳感器、雷射傳感器、雷達傳感器等。視覺傳感器就是攝像頭,攝像頭分為單目視覺,雙目(立體)視覺。比較知名的視覺傳感器提供商有以色列的Mobileye,加拿大的PointGrey,德國的Pike等。

雷射傳感器分為單線,多線一直到64線。每多一線,成本上漲1萬RMB,當然相應的檢測效果也更好。比較知名的雷射傳感器提供商有美國的Velodyne和Quanergy,德國的Ibeo等。國内有速騰聚創和禾賽科技。

雷達傳感器是車廠Tier1的強項,因為雷達傳感器已經在汽車上得到了廣泛使用。知名的供應商當然 是博世、德爾福、電裝等。 

6.硬體部分總結

組裝一套可以完成某項功能的自動駕駛系統需要及其豐富的經驗,并且要對各傳感器的性能邊界及控制器計算能力了如指掌。優秀的系統工程師能在滿足功能的要求下将成本控制在最低,使其量産、落地的可能性更大。

軟體

軟體包含四層:感覺、融合、決策、控制。

各個層級之間都需要編寫代碼,去實作資訊的轉化,更細化的分類如下。

自動駕駛Nvidia Jetson +FPGA設計方案

實作一個智能駕駛系統,會有幾個層級:

感覺層 → 融合層 → 規劃層 → 控制層

更具體一點為:

傳感器層 → 驅動層 → 資訊融合層 → 決策規劃層 → 底層控制層

各個層級之間都需要編寫代碼,去實作資訊的轉化。

最基本的層級有以下幾類:采集及預處理、坐标轉換、資訊融合

1.采集 

傳感器跟我們的PC或者嵌入式子產品通信時,會有不同的傳輸方式。

比如我們采集來自錄影機的圖像資訊,有的是通過千兆網卡實作的通信,也有的是直接通過視訊線 進行通信的。再比如某些毫米波雷達是通過CAN總線給下遊發送資訊的,是以我們必須編寫解析 CAN資訊的代碼。

不同的傳輸媒體,需要使用不同的協定去解析這些資訊,這就是上文提到的“驅動層”。通俗地講就是把傳感器采集到的資訊全部拿到,并且編碼成團隊可以使用的資料。 

2.預處理

傳感器的資訊拿到後會發現不是所有資訊都是有用的。

傳感器層将資料以一幀一幀、固定頻率發送給下遊,但下遊是無法拿每一幀的資料去進行決策或者 融合的。為什麼?

因為傳感器的狀态不是100%有效的,如果僅根據某一幀的信号去判定前方是否有障礙物(有可能 是傳感器誤檢了),對下遊決策來說是極不負責任的。是以上遊需要對資訊做預處理,以保證車輛 前方的障礙物在時間次元上是一直存在的,而不是一閃而過。

這裡就會使用到智能駕駛領域經常使用到的一個算法——卡爾曼濾波。

3.坐标轉換

坐标轉換在智能駕駛領域十分重要。

傳感器是安裝在不同地方的,比如毫米波(上圖中紫色區域)是布置在車輛前方的;當車輛前方有一個障礙物,距離這個毫米波雷達有50米,那麼我們就認為這個障礙物距離汽車有50米嗎?

不是的!因為決策控制層做車輛運動規劃時,是在車體坐标系下完成的(車體坐标系一般以後軸中心為O點),是以毫米波雷達檢測到的50米,轉換到自車坐标系下,還需要加上傳感器到後軸的距離。

最終所有傳感器的資訊,都是需要轉移到自車坐标系下的,這樣所有傳感器資訊才能統一,供規劃決策使用。

同理,錄影機一般安裝在擋風玻璃下面,拿到的資料也是基于錄影機坐标系的,給下遊的資料,同樣需要轉換到自車坐标系下。

自動駕駛Nvidia Jetson +FPGA設計方案

自車坐标系:拿出你的右手,以大拇指 → 食指 → 中指 的順序開始念 X、Y、Z。然後把手握成如下形狀:

自動駕駛Nvidia Jetson +FPGA設計方案

把三個軸的交點(食指根部)放在汽車後軸中心,Z軸指向車頂,X軸指向車輛前進方向。

各個團隊可能定義的坐标系方向不一緻,隻要開發團隊内部統一即可。

4.資訊融合

資訊融合是指把相同屬性的資訊進行多合一操作。

比如錄影機檢測到了車輛正前方有一個障礙物,毫米波也檢測到車輛前方有一個障礙物,雷射雷達也檢測到前方有一個障礙物,而實際上前方隻有一個障礙物,是以我們要做的是把多傳感器下這輛車的資訊進行一次融合,以此告訴下遊,前面有一輛車,而不是三輛車。

自動駕駛Nvidia Jetson +FPGA設計方案

繼續閱讀