當前位置: 華文問答 > 數位

自動駕駛汽車涉及哪些技術?

2017-01-17數位

2018年剛剛開年,無人車領域就出了一個大新聞: Waymo(也就是Google旗下的無人車公司)預計在今年推出無人車的共享出行平台。這標誌著,無人車的商業化進入了關鍵時期。

無人車經歷了十幾年的發展歷程,從2004年DARPA(美國的國防科工委)舉辦第一屆無人車拉力賽,沒有一個高校能夠完成,到2015年左右,Google無人車30萬英裏道路測試沒有重大事故,再到2018年,無人車突破技術和政策法規的重重阻礙,現在終於要到正式上路的那一天了。(相關回答:智慧無人駕駛技術」現在發展到什麽程度了,真正實作大規模使用還要多久?)

今天我想就無人車的核心技術談一談我的看法和認識。

無人車是一個非常完備的系統,從技術上,可以分為以下幾個模組:

1、perception

Perception指的是無人車如何能夠辨識周邊的環境 ,例如街道範圍,訊號燈、路標等,知道應該停止還是前進。如果交通標誌非常清晰、易讀,那麽無人車相對比較好辨識。但 難點在於,如何辨識模糊的標誌呢?

比如,芝加哥一到冬天,風就特別大,還飄著雪花,能把整個stop sign全都遮蓋掉。駕駛員都難以分辨那是個stop sign還是別的標誌。那在這種極端情況下,無人車如何能夠正確安全的駕駛?

這裏主要用到的技術就是computer vision,machine learning等技術。 隨著深度學習的技術的普及和深入,Perception 這幾年有了很大的進展,整個路標、路況辨識的準確率有了質的提高。這為無人車安全行駛提供了非常堅實的基礎。

但Andrew Ng在一次矽谷的論壇上透露,目前無人車還無法精確辨識小範圍動作,例如手指頭指揮車輛前進還是後退。

2、sensor fusion & localization

不管是雷射、聲納還是雷達傳感器、傳回來的訊號都是帶有大量的noise和不確定性的。 如何過濾這些廢料,將客觀世界進行3D甚至4D還原,就是sensor fusion和localization的這一步。

那麽,如何在有大量noise的、不確定的情況下,去定位車的位置呢?比 較常用的方法有Particle Filter、Kalman Filter等等。

從硬體的角度講,前些年,無人車主要使用雷達或者聲納作為傳感器,但最近比較流行的是 LIDAR(light detection and ranging)系統 ,就是用雷射束在不同的時間和空間進行照射,獲取資訊。

雷射的好處非常多,比如穿透率高、速度快、準確率高。但雷射系統普遍成本較高。 如果無人車要量產的話,雷射系統昂貴的造價是一個阻礙。

那麽LIDAR系統具體怎麽運作呢?

雷射束打到物體上,形成反射的訊號,系統透過訊號的距離和深度,形成一個個的數據點。

  • 第一步,clustering。把點的外形和profile定義出來;
  • 第二步,用機器學習做 classification,辨識該物體到底是灌木叢、磚塊還是人;
  • 第三步,modeling和prediction。理解和預測該物體的運動形態、速度和不確定性。
  • 透過這些步驟,對外界環境進行3D或者4D的還原。

    3、motion planning and decision making

    Motion planning和decision making就是無人車的大腦 ,也是我博士期間主要的一個研究方向。這一步就是在sensor fusion做完之後, 在不確定的、動態的環境下,如何讓無人車做出正確的判斷和計劃。 比如從A和B點,全程100公裏,如何確定遠端、中程和近程計劃?

    Motion Planning & Decision Making的難點主要在兩點:

    第一,運算量非常大,search space指數型增長。

    舉一個簡單的例子,一個10個關節的機器臂,每個關節都有180度的活動空間,如果每一度都是一個自由度的,那這個復雜度呈指數級增長的,高達180的10次方。從無人車實踐的角度講,這個復雜度會比機器臂高很多, 尤其是在不確定未知環境下。

    第二,不確定的因素很多,整個motion planning和搜尋出來的結果,要不斷隨著你的資訊的變化而變化。

    比如,在戰場上,某個作戰車輛要透過某個橋,按照GPS訊號和地圖,這個橋是完好無失真的,但車輛開到該地點的時候,發現橋被炸掉了,這時就需要快速的更新計劃。

    或者,在高速上,無人車沿著一個車道行駛,突然發現有一頭鹿橫穿馬路。這時候,如何在毫秒級別的時間裏,把之前規劃的路線和速度,進行最安全的調整。這是一個非常艱巨的也是非常關鍵的技術。

    這裏用到的主要技術有Incremental Search-Based algorithm,sampling based planning algorithm等等。

    Incremental search based algorithm。 在motion planning領域,主要指的就是如A*,D*,D* Lite,MT-D* Lite等演算法。我和我導師之前在研究的moving target D* Lite,也屬於這一部份。 這一演算法就是解決在未知、不確定、動態的環境下,如何從A點到達B點。 從實作上,就是透過新的資訊,更新search space,在更短的時間裏,維持那些不需要更改的資訊和計劃,只是局部的把那些危害到生命健康的計劃進行修改。

    Sampling based planning algorithm(RRT sacrifice of optimality)。 簡單來講, 這種演算法就是透過抽樣,把比較復雜的search space進行簡化,加快搜尋和運算的速度。 但是這個演算法的問題是會犧牲最優性。

    這兩種search都在不同的系統有套用。

    這裏舉一個例子,講一講motion planning真正在現實中的套用。無人車過去10年的套用主要在軍方和航天上,比如說火星探測車。

    對於火星探測車來說,motion planning的演算法面臨著兩個大問題:

    第一個是power of computing,要節能。 在當時,節能這麽重要主要是因為火星探測車的太陽能板功能比較弱。當時只有在陽光垂直照射,偏差不超過十幾度的情況下,火星探測車有足夠的功率前進。所以,不可能把所有功率放在CPU上去運算路徑,這個演算法必須非常節能。

    另一個是efficiency,運算要快。 火星地面不比城市路面,如果每次遇到什麽情況的時候,比如有個坑、大石頭之類的,火星車都要停下來,運算完了再走,那這個火星車執行效率就太低了。

    為了解決這兩個問題,motion planning的演算法也有了長足的進步。(NASA的火星探測車用的就是我導師寫的D* Lite的最佳化變種,加拿大宇航局的系統裏也在使用過我和我導師研發的D* Lite, GAA* 的最佳化版本)

    4、Control 和System Integration

    如何在一個復雜的系統裏,把各個元器件整合起來,能夠和諧的工作,沿著規劃的路線、速度等進行安全的行駛。 這個部份的詳細內容,以後有時間再來更新。

    如何進入無人車領域?

    最後,我想談一下, 如何能夠真正的進入無人車領域。

    無人車現在是一個高速發展的領域, 無人車方向的軟體工程師需求量是很大的,薪資也很高,但是相應的,對無人車工程師的要求也非常高。

    這些公司,需要的是真正在面試和工作的過程中,有非常紮實的編程能力,尤其是C++編程,能把非常復雜的演算法實作在底層的系統裏,比如ROS系統,能和硬體接軌。

    但目前,無人車人才培養還是有非常大的空缺。

    因此, 我聯合我在CMU的導師和在華盛頓路易士分校(WUSTL)做教授的師弟一起創立了一個全新的來Offer無人車課程( http:// laioffer.com/zh/courses /self-driving-car/ )。

    我們的無人車課程最大的優勢就是非常深入 ,透過4-6個月的時間,把motion planning and decision making這兩個模組講的非常清楚。讓學員能夠把現在最先進的,工業界正在用的演算法在最底層實作出來。

    目的就是把演算法知識、編程能力和無人車的技術融合在一起,真正培養出能夠進入Uber、Waymo等一線無人車公司的優秀工程師。

    學員會完成5個計畫,從淺入深。從A* search開始,介紹ROS(Robot Operating System)系統,理解無人車底層實作的原理是什麽。之後計畫一步步升級,從靜態環境下、動態環境下、未知環境下,到最後動態未知環境下(真實路況)如何做motion planning,讓你的無人車能真的在simulator裏面跑起來。

    對課程感興趣的同學可以私信咨詢。