摘要:克里斯·厄姆森帶領自己團隊研發的自動駕駛悍馬汽車來角逐這次比賽的獎金。之後克里斯借鑑之前的研發經驗和斯坦福的成功經驗,成功研發出在城市比賽中奪冠的Boss自動駕駛汽車,進一步明確了自動駕駛三層軟硬件架構的優越性。

標題:11公里!悍馬自動駕駛汽車雖敗猶榮,自動駕駛需注意哪些問題?

2004年,第一次汽車機器人自動駕駛比賽(DARPA無人車挑戰賽)在莫哈韋沙漠拉開了戰幕。人們對於汽車能否完成比賽並贏得百萬美元獎金的預期大相徑庭。當時的賽事經理聲稱,勝利者將在10小時內完成227公里的比賽。但有人卻說,根本不會有一輛汽車完成比賽。

DARPA無人車挑戰賽

克里斯·厄姆森帶領自己團隊研發的自動駕駛悍馬汽車來角逐這次比賽的獎金。當時的媒體非常認同來自卡內基–梅隆大學的克里斯,原因在於卡內基梅隆大學的研究人員早在1991年,就把一輛原始的自動駕駛汽車開上了匹茲堡的街道。

但是意外的是,悍馬行駛到11公里的時候,一個向左的急轉彎使得悍馬的“視線”一片空白,成爲盲眼駕駛。悍馬的成績比當時其他參賽對手要好得多,但是它也只是走完了5%的路程。

你應該聽說過,自動駕駛所需要的技術是機器學習,特別是深度學習以及強化學習等模型。但是當時是2004年,距離深度學習真正可靠識別圖像還差大約10年時間。那麼,這些早期的自動駕駛是如何實現的呢?又存在什麼樣的問題呢?

要想更加深入瞭解這項技術,我們首先需要明白計算機是如何控制硬件。通過了解計算機是如何控制硬件,也能夠讓我們更加明白如何能夠造出自動駕駛汽車。計算機如何控制硬件

爲了更好說明計算機是如何控制硬件,我們以控制汽車速度爲例加以說明。計算機要想控制速度,就需要將計算機給的數字(例如“20”)轉化爲汽車的行駛速度。

但是,問題是汽車的發動機可是無法聽懂速度爲“20”是什麼意思。並且即使你知道給發動機電壓爲200V的時候,汽車的行駛速度可能達到20km/h,但是你也不可能通過簡單的調高或者調低電壓就能夠獲得想要的行駛速度。

如果你想要1km/h的速度的時候,你不可能說把發動機的電壓調到10V,因爲10V的時候,發動機很有可能都不會轉動。

離心調速器

離心調速器就是爲了解決這個問題而發明出來的,其主要利用反饋來控制發動機的速度。離心發動機是帶有兩個金屬球的“旋轉裝置”。當發動機的旋轉速度過快的時候,離心調速器的旋轉速度也更快,金屬球被離心力向外拉動。

之後通過一系列的槓桿作用,導致閥門關閉發動機的燃料通路,進而使得發動機減速。過慢得增開燃料閥門,使發動機提速。通過控制發動機的燃料,來保證發動機的轉速穩定。

但是這個離心調速器有一個缺點,就是隻能讓汽車保持單一速度運轉。爲此,現在的自動駕駛汽車則採用同樣的反饋調節迴路,但是迴路使用電子速度計,而不是旋轉裝置來測量車輪速度與目標速度的差異。

當汽車開得過慢,這種反饋調節就會增大發動機的功率。開得過快的時候,就會降低發動機的功率。常用調節發動機功率的方法稱爲比例控制,也就是將對功率的調節就等於目標速度和當前速度的差值乘以固定的係數。

PID控制器

但是比例控制並不時常有效,如果汽車在逆風行駛或者是在爬坡行駛,那麼汽車的行駛速度就比我們預期的速度要低。因此,需要對控制算法做一些修正。例如車速一直比較慢的時候,發動機的功率就稍微再提升一些。

最常見的控制算法都是有三條簡單規則組成:(1)當系統期望速度與實際速度的偏差過大的時候,採用比例控制,加快調節,減少誤差;(2)採用積分控制,消除穩態誤差,提高無差度;(3)採用微分控制,預測偏差變化趨勢,起到超前控制。

這三個規則是目前許多自動駕駛汽車都採用的控制器,稱之爲PID(比例–積分–微分)控制器。當時,悍馬只使用它的PD(比例–微分)部分控制油門,而且形式略有不同。

這就是計算機對硬件控制的大致過程,但是光靠這些,汽車還是無法實現自動駕駛。因爲還需要軟件告訴汽車以多大的速度行駛、多大的轉彎半徑轉彎。自動行駛11公里,悍馬是如何做到的?

悍馬並不是朝着某一個方向行駛25分鐘,而是沿着一條規定目的地的道路上行駛。比賽前2個小時,組織者才向參賽者提供一幅帶有GPS座標的電子地圖。

從理論上講,只需要從地圖的一個導航點到另一個導航點,並根據GPS座標來調整車輛的座標,就能完成比賽。但是,岩石、柵欄等都會阻礙汽車的行駛。爲此,克里斯團隊爲悍馬,利用54000平方米的衛星圖像,繪製了一幅“世界上最美的地圖”,從而悍馬確定行駛過程中的障礙。

因此,當克里斯拿到官方電子地圖之後,採用人工標註地圖的方法,提前將預先計算好的最優路徑發給悍馬。但是從一個導航點到另一個導航點,悍馬又是如何避開障礙?悍馬汽車不可能聽懂“找一條好路”這種指令。

柵格化地圖

爲了使得悍馬能夠更好搜索到最佳路線,克里斯團隊在地圖上給每個1米×1米的單元格設定“時間成本”(又稱爲,柵格化地圖)。走複雜地形必然比走簡單地形的時間成本高,並且對於一些缺乏GPS數據、危險地區等單元格設置“額外懲罰”。

因此,這時候的路徑選擇問題就變成了最小化時間成本的函數。

當時,悍馬利用主流搜索算法——迪傑斯特拉算法(Dijkstra’s algorithm),來獲取最佳的路徑。迪傑斯特拉算法簡單來說,就是從起點開始向外擴張搜索邊界,每次循環時就向外擴展一小部分,直到達到最終的目的地。

這種算法的好處在於計算機能夠沿着概率最優的道路進行搜索,因爲計算機很有可能是先搜索出平坦的道路,然後再搜索出比較費勁的道路。

有了地圖、規劃路徑之後,就需要在地圖中能夠找到悍馬的位置,才能實現汽車的自主導航。但是光靠GPS數據肯定是不夠,因爲GPS數據測量並不是一直都是準確的,而且信號並不能持續保持。更重要的是,GPS數據並不能爲機器人指明方向。

因此,對於沒有GPS的情況下,實現悍馬的自主導航顯得尤爲重要。因此,克里斯團隊在悍馬上安裝了加速度計,用來測量悍馬的三維加速度數據。利用這些三維加速度數據的累加,測量悍馬的位置。並安裝測量角度的陀螺儀,從而來追蹤悍馬的方位。

但是,當多個傳感器數據源的時候,克里斯團隊開始思考如何能夠更好校正位置方位偏差,才能使得測量數據更加真實。於是,克里斯團隊利用1960年發現的數學模型——卡爾曼濾波,將加速度計、陀螺儀以及GPS數據進行融合。

利用卡爾曼濾波器對傳感器數據進行融合

卡爾曼濾波的核心思想是,我們永遠無法知道物體的真實位置和速度,只能依靠一些不完美的傳感器採樣計算而得到。但是有些採樣點會因傳感器本身的硬件誤差,導致出現一些“壞點”,從而影響實際的估算。

卡爾曼濾波器通過消除一些異常值,來提升平均值的可信度。當有足夠多的數據的時候,卡爾曼濾波器就能將加速度計、陀螺儀、GPS數據以及車輪數據,估算出自動駕駛汽車的位置,而且卡爾曼濾波器的估算結果能夠保持在釐米級別的誤差。

即使有這樣精確的位置,自動駕駛汽車還是能夠撞到地圖上的障礙以及地圖上的位置物體。爲此,克里斯團隊爲悍馬裝上了激光雷達作爲悍馬的“眼睛”。當激光雷達發現障礙之後,規定悍馬向左或者向右緊急避讓。

但是,悍馬的“眼睛”非常簡單。悍馬的自動導航程序並沒有根據它的“眼睛”所看到的東西實質性地調整路線,而只是按照預先規劃好的路線走,並按照簡單的規則左右轉向以避開難走的路面。最終導致,悍馬一頭撞上岩石。設計一款自動駕駛汽車需要注意哪些問題?

第二次無人駕駛比賽在一年半之後,重新點燃。克里斯的悍馬還是聚焦地圖和導航,並且在之前的基礎上,爲悍馬設計了應急處置系統,防止面對岩石的時候,動彈不得。最終,克里斯的悍馬跌跌撞撞完成了比賽。但是克里斯的悍馬並不是勝利者,排在悍馬之前的斯坦福車隊研發的斯坦利比悍馬快10分鐘完成了比賽。

爲什麼斯坦福車對能夠在比賽中獲得勝利?因爲斯坦福車隊意識到過於依賴地圖和導航是存在問題的,特別是面對一些動態環境的時候。畢竟實際的比賽路線只是克里斯團隊勘察路線的2%。不僅如此,斯坦福車隊利用機器學習的方法來解決自動駕駛導航問題。

激光雷達

斯坦福車隊利用讓一個人安全駕駛斯坦利過程中激光雷達產生的數據,來調整障礙檢測模型中的參數,也就是用數據來訓練算法。從而,這種預測哪些路面可以安全行駛的方法,使得地形檢測算法的精度提升了幾個數量級。

比賽並不要求車輛在道路上行駛,但是在道路上行駛,可以避免大部分沙漠道路中的大部分障礙物。斯坦福車隊通過尋找道路的邊緣,儘可能地來約束斯坦利在道路上行駛。但是由於激光雷達的探測距離有限,因此,斯坦福車隊通過安裝彩色攝像機聚類分析哪裏是道路。從而提高了斯坦利的道路探測範圍,避免一些急轉彎帶來的意外事故。

但是,我們也能夠發現,這些自動駕駛的汽車是專門爲了比賽而設計出來,它們即使能夠通過效果良好的算法來避開障礙物,都無法面對迎面而來的車流,也無法尋找車位、自動泊車以及換車道等情況。

那麼,設計一款自動駕駛汽車需要注意哪些問題?

(1)建立合理的軟硬件層級架構

自動駕駛汽車涉及到的軟硬件環節非常多,不僅僅需要知道他們是如何連接,還需要知道各個算法之間相互遵循的協議。是否需要有一個集中控制中心來指揮一切?這些算法又將以何種結構組織起來?

自動駕駛的三層架構

斯坦利之所能夠如此出色,正是由於將軟硬件架構組織成硬件層、感知與環境建模層和推理層。感知與環境建模層與推理層專注於更高級別的任務,而並不去承擔處理低層次傳感器數據的任務。

反之,感知模塊主要通過機器學習的方式,將原始的傳感器數據轉化成爲可以被操作的信息,但是並不參與到任何高層次的決策規劃。整個架構層級中並沒有一個指揮中心來指揮管理,各個模塊都是並行運行,每個模塊都有工作,從而使得整個系統能夠快速應對環境變化。

克里斯的團隊爲迎接之後的城市挑戰賽,淘汰了之前的悍馬,轉向2007款雪佛蘭塔霍汽車(命名爲Boss)。Boss也同樣採用類似的三層架構,但是爲了更好的完成城市賽中的複雜任務,將高層的推理層又組成爲三個層級:審議器、控制器以及定序器。

Boss的三層架構

Boss的審議器就是路徑規劃器,通常涉及緩慢仔細的規劃。Boss的控制器就是運動控制器,其目的是執行簡單的操作並對簡單的傳感器讀數做出反應。審議器和控制器之間的是定序器,也即Boss中的大富豪棋盤,就是通過給控制器一系列指令,讓自動駕駛汽車執行一系列來自審議器的高級任務。

建立合理的軟硬件架構,才能保證自動駕駛汽車各個模塊能夠運行流暢且時效性更好,才能避免模塊之間過多通話導致模塊被鎖死在對話中。

(2)建立有效的錯誤恢復機制

在研發自動駕駛衆多事項中,研發團隊必須爲自動駕駛汽車編寫很多軟件。而且,編寫這種軟件也需要較大的人力、物力和財力。這項大規模的工作需要管理人們和各方之間的合作,以便這些程序員能夠心情愉快地高效完成這項工作。

但是,即使是處於這樣團隊氛圍的人員,還是會寫出有一定缺陷的代碼。

之前,Boss自動駕駛汽車中,定序器的設計原則就是“認知失效”。“認知失效”的系統可以用某種規則監測系統的失效。定序器不能只給控制器一個固定的命令序列,因爲在執行整個序列之前,環境的狀態可能會改變。

Boss自動駕駛汽車

在比賽過程中,Boss出現兩次了“幻覺”,其原因在於其感知模塊中存在一個問題。結果那天多開了4公里,對一場耗時約4小時的比賽來說,這只是小麻煩。雖然遇到了些小麻煩,但Boss還是領先斯坦福車隊的賽車19分鐘完賽。

一個冗餘的錯誤恢復系統(大富豪棋盤)是Boss的架構中最重要的部分之一,其中更高層次的規劃可以解決低層次規劃或感知方面的問題,這讓克里斯團隊贏得了期待已久的大獎。

爲什麼要費心設計有時會失效的算法,而不是設計永不失效的算法呢?

首先,設計會出現認知失效的導航算法,要比設計永不失效的導航算法容易得多。其次,如果檢測到失效,算法就可以採取糾正措施,從失效中恢復。因此,如果算法的失效屬於認知失效,那麼高失效率的算法就可以組合成一個整體失效率很低的算法。

(3)建立完善的物體檢測分類機制

目前,機器學習已經成爲自動駕駛領域中很重要的環節,以至於目前很多很人將高級規劃算法和低級執行感知算法融合到一起。雖然大部分的智能算法都可以用於自動駕駛的規劃決策層,但是大部分高級推理算法的思想都是人工智能很成熟很古老的思想,例如搜索和有限狀態機。

自動駕駛物體檢測分類

但是這些算法通常並不認爲機器學習,因爲機器學習主要是教機器如何從數據中學習,但是人工智能並不一定需要數據。相反,大部分自動駕駛算法中使用機器學習的場景大部分都位於感知與環境建模層。

自動駕駛重要的感知任務之一就是對傳感器看到的物體進行分類。

Boss在比賽過程中,並沒有嘗試看清所有的東西。因爲Boss處於人造城市環境中,所以移動的唯一物體就是汽車。而在真實城市環境中,自動駕駛汽車必須面對的是汽車、自行車、行人、電動車等。因此自動駕駛需要更好對物體分類建模,才能做好周邊行爲預判和駕駛決策。

自動駕駛汽車如何對它的傳感器看到的物體進行分類?

基於深度學習的機器視覺算法在2012年前後出現了顯著的進步,它可以使計算機像人類一樣精確地對照片內容進行分類。在接下來的幾年裏,這些算法迅速發展,最終,英偉達等公司開發出了用於自動駕駛汽車視覺系統的定製硬件。結論

本文從2004年的DARPA無人車挑戰賽出發,探討早期自動駕駛是如何實現以及存在的現實問題。並詳細說明計算機是如何控制硬件,爲大家理解自動駕駛的技術奠定了技術基礎。

之後,詳細分析克里斯團隊的悍馬車隊是如何完成11公里的比賽。此次比賽雖然是失敗,但是爲之後自動駕駛技術的發展積攢了寶貴經驗。斯坦福車隊在此基礎上,明確自動駕駛不應該過於依賴地圖和導航,並初步奠定了自動駕駛三層軟硬件架構的雛形。

之後克里斯借鑑之前的研發經驗和斯坦福的成功經驗,成功研發出在城市比賽中奪冠的Boss自動駕駛汽車,進一步明確了自動駕駛三層軟硬件架構的優越性。

但是,設計一個永不失效的系統要遠遠難於設計一個認知失效的系統。因此在設計自動駕駛汽車的時候需要建立完善的錯誤恢復機制。

未來,真實城市環境中的自動駕駛,重點需要考慮的是對複雜多變的環境進行分類建模,纔能有效提高自動駕駛在真實城市道路上的可靠性。

你們怎麼看待未來自動駕駛的發展?歡迎在留言板評論。

相關文章