自動駕駛汽車技術最主要是人工智能。 人工智能就相當于駕駛者的大腦。
其他還會有一些輔助技術,比如激光測量,聲波測量,運動傳感器,GPS等等,相當于人的眼睛、耳朵、神經感覺等等。
目前這些輔助技術很多都已經非常成熟,甚至遠超人類, 比如激光和聲波測量技術, 目前都運用到很高高端車型上,可以進行ACC自動巡航。 還有夜視技術,可以幫助駕駛員在漆黑的頁面看清100米開外的人、動物、障礙, 這些都遠遠超過人類的生理極限。
但是人工智能,目前還在起步階段。也就是說,自動駕駛員的四肢、感官目前都已經很不錯了,甚至超過人類了,但是還缺個腦子
從自動駕駛技術的開發歷史看,應該追溯到1975年,當時是利用計算機的視覺技術進行了自動駕駛研究開發。中途曾一度中斷過,但現在又開始火熱研究起來。圖1表示目前自動駕駛技術的開發歷史。從法律和技術層面看,到實際商品化還有許多路要走。人們期待自動駕駛能解決交通事故和環境污染問題,目前正通過產學研進行合作研究。
歐洲對自動駕駛車的開發非常重視,被列為了國家重點項目在推進,目前已取得了一些成果。美國以谷歌為代表在研究自動駕駛技術,在道路上做自動駕駛實驗,在內華達州還可申辦新的自動駕駛執照。 日本在2008年到2012年之間為了實現安全、環保的物流運輸系統,開發了重型卡車自動列隊行駛技術。2014年以政府為中心推進自動駕駛車的實際運用(SIP- adus)
一般而言,無人駕駛系統一般有三大模塊
1.環境感知模塊
無人駕駛汽車是通過傳感器來感知環境信息。比如攝像頭、激光雷達、毫米波雷達以及工業相機是用于獲取環境信息;而GPS等用于獲取車身狀態的信息。當然還需要通過算法提取出有用的信息。
2.行為決策模塊
行為決策是指無人駕駛汽車根據路網信息、獲取的交通環境信息和自身行駛狀態,產生遵守交通規則的駕駛決策的過程。
用人話說就是規劃出一條精密的行駛軌跡,然后無人駕駛車就可以跟著這條軌跡走。
3.運動控制模塊
運動控制模塊是根據規劃的行駛軌跡和速度以及當前的位置、姿態和速度,產生對油門、剎車、方向盤和變速桿的控制命令。
無人駕駛技術實現上有兩大派系
無人駕駛的實現路徑大概有兩大派系,一派是以谷歌為主的互聯網公司,一派以特斯拉為首的汽車制造商。
谷歌的藍圖是無人車完全取代人來駕駛,把無人車看成機器人,所以沒有方向盤、油門和剎車。
谷歌無人車頂上是約8萬美元的64線激光雷達(Lidar)。它在高速旋轉時發射激光測量與周邊物體的距離,再根據距離數據描繪出精細的 3D 地形圖,并跟高分辨率地圖數據相結合建模,幫計算機做決策。
由此可知,這條技術路線的關鍵是對周圍環境的模擬和3D地圖數據,而谷歌在這方面有深厚的積累。
而特斯拉的計劃是從機器輔助駕駛進化到完全自動駕駛。所以技術上逐步實現自動剎車、定速巡航、自適應巡航等,最終完全自動駕駛。
特斯拉 Model S主要是靠攝像頭結合計算機視覺,特斯拉輔助駕駛使用的硬件包括前置攝像頭、前置雷達(相對廉價的毫米波雷達)、12個超聲波傳感器,目前沒有使用高精度地圖。
簡單的說前者(Google無人車)更重定位,是高精度定位+高精度地圖+識別,偏機器人的方案,后者更重視識別(低精度定位+低精度地圖+高準確率識別),后者接近于人開車,人開車不需要高精度地圖。
那么自動駕駛汽車涉及哪些技術呢,下面是一部分通用的技術:
訓練一個自動駕駛的決策模型
行為決策是指根據路網信息、獲取的交通環境信息和自身行駛狀態,產生遵守交通規則的駕駛決策的過程。學術界的一個解決方案是用現在很火的深度學習,來實現模仿性學習(Behavioral Cloning),但是可靠性上可能有問題,實際應用中還是會有大量的規則等方式。
識別并躲避障礙物
這個問題的解決方案是傳感器融合算法,利用多個傳感器所獲取的關于環境全面的信息,通過融合算法來實現障礙物識別與跟蹤和躲避。
根據周邊信息,在地圖上定位車倆
在地圖上定位汽車,這一塊實現的差異很大。由于民用GPS誤差過大,不能直接用于無人駕駛。
有一類定位是通過激光雷達使周圍物體和自車的距離的精度達到厘米級,配合三維地圖數據可以將車輛定位至幾厘米~ 十幾厘米的程度
還有一類通過還計算機視覺的方案來定位,也就是(SLAM)。
從相機中識別行人
從相機中識別行人是一個計算機視覺問題,需要利用攝像機識別出物體(在這里是人),其實是個。
車道識別
車道識別也是計算機視覺問題,有道路線檢測算法。簡單的方法有顏色選擇,切圖(ROI, region of interest selection),灰度處理,高斯模糊,邊緣檢測和霍夫變換直線檢測。如果能夠識別一張圖片中的道路線,那么對于行駛中的車輛上攝像頭實時采集的圖像也可以實時分析。
高級的道路線檢測需要計算相機校準矩陣和失真系數對原始圖像的失真進行校正;使用圖像處理方法,將圖像進行二值化處理;應用透視變換來糾正二值化圖像(“鳥瞰視圖”);檢測車道并查找確定車道的曲率和相對于中心的車輛位置;將檢測到的車道邊界扭曲回原始圖像;可視化車道,輸出車道曲率和車輛位置。
交通標志識別
無人車也是要懂得交通規則的,所以識別交通標志并根據標志的指示執行不同指令也非常重要。這也是個計算機視覺問題,可以用深度學習(卷積神經網絡)的方法來完成。
車輛的自適應巡航控制
車輛的自適應巡航控制(ACC)是在定速巡航控制的基礎上,通過距離傳感器實時測量本車與前車的距離和相對速度,計算出合適的油門或剎車的控制量,并進行自動調節,這一塊有不少成熟的方案。
讓汽車在預定軌跡上運動
讓汽車在預定軌跡上運動是一個機器控制和規劃問題,比如在躲避突發障礙之后動態路線規劃。
當然解決了上面問題,不代表就能造出無人車,造無人車是個系統工程,需要軟件和硬件層面的積累
下面從硬件和軟件兩方面談一談自動駕駛汽車所涉及的技術。
一。 硬件
離開硬件談自動駕駛都是耍流氓。
先看個圖,下圖基本包含了自動駕駛研究所需要的各種硬件。
然而…
這么多傳感器并不一定會同時出現在一輛車上。某種傳感器存在與否,取決于這輛車需要完成什么樣的任務。如果只需要完成高速公路的自動駕駛,類似Tesla 的 AutoPilot 功能,那根本不需要使用到激光傳感器;如果你需要完成城區路段的自動駕駛,沒有激光傳感器,僅靠視覺是很困難的。
自動駕駛系統工程師要以任務為導向,進行硬件的選擇和成本控制。
1.汽車
既然要做自動駕駛,汽車當然是必不可少的東西。
從我司做自動駕駛的經驗來看,做開發時,能不選純汽油車就別選。
一方面是整個自動駕駛系統所消耗的電量巨大,混動和純電動在這方面具有明顯優勢。另一方面是是發動機的底層控制算法相比于電機復雜太多,與其花大量時間在標定和調試底層上,不如直接選用電動車研究更高層的算法。
國內也有媒體專門就測試車輛的選擇做過調研。
2.控制器
在前期算法預研階段,推薦使用工控機(Industrial PC,IPC)作為最直接的控制器解決方案。因為工控機相比于嵌入式設備更穩定、可靠,社區支持及配套的軟件也更豐富。
百度開源的Apollo推薦了一款包含GPU的工控機,型號為Nuvo-5095GC,如下圖。
當算法研究得較為成熟時,就可以將嵌入式系統作為控制器,比如Audi和TTTech共同研發的zFAS,目前已經應用在最新款Audi A8上量產車上了。
3.CAN卡
工控機與汽車底盤的交互必須通過專門的語言——CAN。從底盤獲取當前車速及方向盤轉角等信息,需要解析底盤發到CAN總線上的數據;工控機通過傳感器的信息計算得到方向盤轉角以及期望車速后,也要通過 CAN卡 將消息轉碼成底盤可以識別的信號,底盤進而做出響應。
CAN卡可以直接安裝在工控機中,然后通過外部接口與CAN總線相連。
Apollo使用的CAN卡,型號為ESD CAN-PCIe/402,如下圖。
4.全球定位系統(GPS)+慣性測量單元(IMU)
人類開車,從A點到B點,需要知道A點到B點的地圖,以及自己當前所處的位置,這樣才能知道行駛到下一個路口是右轉還是直行。
無人駕駛系統也一樣,依靠GPS+IMU就可以知道自己在哪(經緯度),在朝哪個方向開(航向),當然IMU還能提供諸如橫擺角速度、角加速度等更豐富的信息,這些信息有助于自動駕駛汽車的定位和決策控制。
Apollo的GPS型號為NovAtel GPS-703-GGG-HV,IMU型號為NovAtel SPAN-IGM-A1。
5.感知傳感器
相信大家對車載傳感器都耳熟能詳了。
感知傳感器分為很多種,包括視覺傳感器、激光傳感器、雷達傳感器等。
視覺傳感器就是攝像頭,攝像頭分為單目視覺,雙目(立體)視覺。比較知名的視覺傳感器提供商有以色列的Mobileye,加拿大的PointGrey,德國的Pike等。
激光傳感器分為單線,多線一直到64線。每多一線,成本上漲1萬RMB,當然相應的檢測效果也更好。比較知名的激光傳感器提供商有美國的Velodyne和Quanergy,德國的Ibeo等。國內有速騰聚創和禾賽科技。
雷達傳感器是車廠Tier1的強項,因為雷達傳感器已經在汽車上得到了廣泛使用。知名的供應商當然是博世、德爾福、電裝等。
6.硬件部分總結
組裝一套可以完成某項功能的自動駕駛系統需要及其豐富的經驗,并且要對各傳感器的性能邊界及控制器計算能力了如指掌。優秀的系統工程師能在滿足功能的要求下將成本控制在最低,使其量產、落地的可能性更大。
二。 軟件
軟件包含四層:感知、融合、決策、控制。
各個層級之間都需要編寫代碼,去實現信息的轉化,更細化的分類如下。
1.采集
傳感器跟我們的PC或者嵌入式模塊通信時,會有不同的傳輸方式。
比如我們采集來自攝像機的圖像信息,有的是通過千兆網卡實現的通信,也有的是直接通過視頻線進行通信的。再比如某些毫米波雷達是通過CAN總線給下游發送信息的,因此我們必須編寫解析CAN信息的代碼。
不同的傳輸介質,需要使用不同的協議去解析這些信息,這就是上文提到的“驅動層”。
通俗地講就是把傳感器采集到的信息全部拿到,并且編碼成團隊可以使用的數據。
2.預處理
傳感器的信息拿到后會發現不是所有信息都是有用的。
傳感器層將數據以一幀一幀、固定頻率發送給下游,但下游是無法拿每一幀的數據去進行決策或者融合的。為什么?
因為傳感器的狀態不是100%有效的,如果僅根據某一幀的信號去判定前方是否有障礙物(有可能是傳感器誤檢了),對下游決策來說是極不負責任的。因此上游需要對信息做預處理,以保證車輛前方的障礙物在時間維度上是一直存在的,而不是一閃而過。
這里就會使用到智能駕駛領域經常使用到的一個算法——卡爾曼濾波。
3.坐標轉換
坐標轉換在智能駕駛領域十分重要。
傳感器是安裝在不同地方的,比如超聲波雷達(上圖中橘黃色小區域)是布置在車輛周圍的;當車輛右方有一個障礙物,距離這個超聲波雷達有3米,那么我們就認為這個障礙物距離車有3米嗎?
并不一定!因為決策控制層做車輛運動規劃時,是在車體坐標系下做的(車體坐標系一般以后軸中心為O點),所以最終所有傳感器的信息,都是需要轉移到自車坐標系下的。
因此感知層拿到3m的障礙物位置信息后,必須將該障礙物的位置信息轉移到自車坐標系下,才能供規劃決策使用。
同理,攝像機一般安裝在擋風玻璃下面,拿到的數據也是基于攝像機坐標系的,給下游的數據,同樣需要轉換到自車坐標系下。
什么是自車坐標系?
請拿出你的右手,以大拇指 → 食指 → 中指 的順序開始念 X、Y、Z。
然后把手握成如下形狀:
把三個軸的交點(食指根部)放在自車坐標系后軸中心,Z軸指向車頂,X軸指向車輛前進方向。
各個團隊可能定義的坐標系方向不一致,只要開發團隊內部統一即可。
4.信息融合
信息融合是指把相同屬性的信息進行多合一操作。
比如攝像機檢測到了車輛正前方有一個障礙物,毫米波也檢測到車輛前方有一個障礙物,激光雷達也檢測到前方有一個障礙物,而實際上前方只有一個障礙物,所以我們要做的是把多傳感器下這輛車的信息進行一次融合,以此告訴下游,前面有一輛車,而不是三輛車。
5.決策規劃
這一層次主要設計的是拿到融合數據后,如何正確做規劃。規劃包含縱向控制和橫向控制。
縱向控制即速度控制,表現為 什么時候加速,什么時候制動。
橫向控制即行為控制,表現為 什么時候換道,什么時候超車等
6.軟件長什么樣子?
自動駕駛系統中的部分軟件看起來和下面類似。
軟件的名字反映了該軟件的實際作用——
app_driver_camera 攝像機驅動
app_driver_hdmap 高精度地圖驅動
app_driver_ins 慣導驅動
app_driver_lidar 激光傳感器驅動
app_driver_mwr 毫米波傳感器驅動
app_fusion_freespace 自由行駛區域融合
app_fusion_lane 車道線融合
app_fusion_obstacle 障礙物融合
app_planning&decision 規劃決策
然而實際上攻城獅們會編寫一些其他軟件用于自己的調試工作,比如記錄數據和回放數據的工具。
還有用于傳感器信息顯示的可視化程序,類似下圖的效果。
評論