無人駕駛技術入門(二):不會寫代碼也能做無人駕駛工程師
作者:陳光 來源:第一電動網 發布時間:2018年10月10日
[摘要]第二篇我會結合Apollo 1.0和Apollo 2.0所開放的模塊,談談我對百度Apollo技術框架的理解。并告訴大家不寫代碼,如何成為自動駕駛工程師!
[關鍵詞]Apollo,自動駕駛,工程師
在無人駕駛技術入門第一篇里,我對百度Apollo 1.0和Apollo 2.0所用到的傳感器及控制器進行了介紹。
可以得到一個結論:實現越復雜的功能,所需要的傳感器越多,對控制器的性能要求也越高。
第二篇我會結合Apollo 1.0和Apollo 2.0所開放的模塊,談談我對百度Apollo技術框架的理解。并告訴大家不寫代碼,如何成為自動駕駛工程師!
先上一張百度Apollo的技術架構圖。
可以看出除了第一排在云端工作的的模塊,剩下的模塊都是需要實時跑在車上的。
Open Software Platform
自動駕駛系統最為重要的軟件層。
這一層包含了最底層的RTOS(Real Time Operation System)和第二層的運行軟件所需的框架環境(Runtime framework),再到第上層的各個子模塊(地圖引擎、定位、感知、規劃、控制、端到端、人機界面)。
Reference Hardware Platform
自動駕駛系統所依賴的硬件層。
這里不僅包含了控制器、GPS/IMU、HMI Device(其實就是顯示器)和LiDAR,還有即將在12月開放的Camera、Radar、和Black Box(暫時還猜不到這個黑盒的功能)。
Drive-by-wire Vehicle
線控的底層,不開放這個接口,就無法控制汽車。
了解過百度Apollo發布會的童鞋想必都清楚,Apollo 1.0能實現封閉場地循跡自動駕駛的功能,Apollo 1.5能實現定車道晝夜自動駕駛的功能。
我們從Apollo 1.0和Apollo 1.5開放的角度來看一下“功能實現”與“模塊開放”之間的關系。(暫不談云端,僅談車端)。
Apollo1.0封閉場地循跡自動駕駛
先上圖,下圖中紅色塊是Apollo 1.0所開放的模塊。
如果要實現封閉場地尋跡自動駕駛功能:
首先我必須有一輛開放了底層的線控系統的車(Drive-by-wire Vehicle),才能實現這個功能;
自動駕駛程序要運行,控制器(Computing Unit)、顯示屏(HMI Device)都是不能少的;
實現循跡功能,需要解決一個很重要的問題——我在哪?因此作為定位所需要的關鍵模塊 GPS/IMU 被選中;
硬件配齊后,來看看軟件。操作系統(RTOS)和軟件所需的運行環境(Runtime framework)是必須的,沒有他們,軟件是跑不起來的。
最后是軟件層的子模塊,定位(Localization)用來處理GPS/IMU的數據。
有了定位和需要跟隨的軌跡線,那么就要開始控制(Control)了。
循跡時工程師需要控制自動駕駛系統,所以就有了人機交互界面(HMI)。
這樣一套從工程師角度挑選所需模塊的工作就完成了。
Apollo1.5固定車道晝夜自動駕駛
同樣的操作,我們來分析Apollo 1.5實現的“固定車道晝夜自動駕駛”的功能。先看圖,圖中藍色塊為新增模塊。
固定車道,意味著必須有車道線信息。
Apollo使用了高精度地圖提供的車道線信息,這樣有了高精度的定位(經緯度)和我需要行駛的車道的經緯度區域(這么說不是很專業,主要是讓大家好理解,以后會詳細聊定位和地圖的關系),自動駕駛車就知道自己要在哪個范圍內行駛了。
所以需要有處理高精度地圖數據的模塊——地圖引擎(Map Engine)。
知道了自己要在哪個車道內行駛,車道內有障礙物怎么辦?
這時候就需要有傳感器能感知到這些東西。其實Camera、LiDAR、Radar都可以檢測障礙物,Apollo 1.5開放的是激光雷達(Lidar)模塊。
有了傳感器,必然有對應的感知軟件(perception)。
感知到了障礙物,該剎車剎車,該加速加速,該避讓避讓,所以需要對無人車的行為有個規劃(planning)。
Apollo 1.5還開放了End-to-End,這是另外一種使用深度學習的方法實現“固定車道晝夜自動駕駛”的方式,這里暫不討論。
Apollo2.0簡單城市路況自動駕駛
下面這幅圖是18年1月百度公布的Apollo 2.0,新增的模塊我用紫色背景標記出來了。
你可以嘗試用剛才我提供的思路,想一想“簡單城市路況自動駕駛”的功能,為什么需要攝像機(Camera)和雷達(Radar)。
小結
上面的分享其實是正經的“自動駕駛系統工程師”要做的工作,他們需要從“需求”推導出“架構”,進而決定使用什么樣的硬件裝到車上。
如果你并不擅長寫代碼,又想從事自動駕駛的工作,不妨多了解一些傳感器及系統架構方面的知識(以后的文章中會對各傳感器做詳細介紹)。
好了,這篇分享基本上可以讓大家對百度Apollo的技術架構有了了解。
相關新聞