Coursera自动驾驶课程第3讲:Self-Driving Hardware and Software Architectures
在上一講《Coursera自動駕駛課程第2講:The Requirements for Autonomy》中我們了解到了如何劃分自動駕駛汽車等級、以及自動駕駛三大模塊:感知、決策和執行。
本講我們將學習新的模塊:自動駕駛汽車的硬件和軟件架構。
B站視頻鏈接:https://www.bilibili.com/video/BV1WE411D74g?p=1
1.Sensors and Computing Hardware(理解)
1.1 Sensors
這里給出了傳感器的定義:傳感器是測量或檢測環境某些屬性或隨時間變化的任何設備。傳感器根據其記錄的屬性大致可以分為兩類:如果是記錄了周圍環境特性,那么傳感器是exteroceptive。 另一方面,如果傳感器記錄了自車屬性,則它們是proprioceptive的。 下面我們來一起認識自動駕駛車輛常見的傳感器。
1.2 Camera
相機或攝像頭是自動駕駛中最常用的傳感器。它是一種被動式集光傳感器,能夠捕獲有關場景的豐富、詳細的信息。實際上,也有些專家認為相機是真正實現自動駕駛所需的唯一傳感器。但是僅憑視覺尚無法實現最先進的性能。在談論相機時,我們通常傾向于談論三個重要的比較指標:
- 我們根據分辨率選擇相機。分辨率是創建圖像的像素數。因此,這是一種指定圖像質量的方法。
- 我們也可以根據視野選擇攝像機。視野由照相機可見的水平和垂直角度范圍定義,可以通過選擇鏡頭和變焦來改變視野。
- 另一個重要指標是動態范圍。攝像機的動態范圍是圖像中最暗和最亮色調之間的差異。高動態范圍對于自動駕駛汽車至關重要,因為在駕駛過程中(尤其是在夜間)會遇到可變的照明條件。
相機和攝像頭的選擇需要考慮很多因素,需要在視野和分辨率之間進行這種。較寬的視野允許在環境中有較大的視野。但是從一個特定物體吸收光的像素更少。隨著視野的增加,我們需要提高分辨率,以仍然能夠以相同的質量感知我們可能會遇到的各種信息。還存在影響感知的照相機的其他屬性,例如焦距,景深和幀頻等。
上面是單目攝像頭,自動駕駛中常見的還有雙目攝像頭,即具有重疊視場和對齊圖像平面的兩個攝像頭的組合。 雙目攝像頭可以從同步圖像對目標進行深度估計。一張圖像中的像素值可以與另一張圖像進行匹配,從而產生視差圖。 然后,可以使用該視差來估計每個像素的深度。
1.3 LIDAR
激光雷達是自動駕駛車輛常見的3D傳感器。LIDAR感應原理為將光束發射到環境中并測量反射的回波。 通過測量返回的光束飛行時間。 可以估計到反射物體的范圍內的強度。 LIDAR通常包括帶有多個堆疊光源的旋轉元件。 并·輸出三維點云圖·,這對于評估場景幾何非常有用。 由于它是具有自己的光源的有源傳感器,因此LIDAR不受環境照明的影響。 因此,在惡劣或多變的照明條件下操作時,激光雷達不會像攝像機一樣面臨挑戰。
現在來一起討論激光雷達一些比較重要的性能指標:
- 第一個是它包含的beams 數量,目前常見線數為大小為16、32、64和128線。
- 第二點是·每秒可以收集的點數·。點收集越快,3D點云就越詳細。
- 第三個是轉速。此速率越高,更新3D點云的速度就越快。
- 第四個是視野,即可檢測的角度范圍。
- 最后,還有一種高分辨率固態激光雷達。
1.4 RADAR
毫米波雷達的使用壽命比LIDAR更長,可以可靠地檢測環境中的大型物體。 通常會根據探測范圍,視野以及位置和速度測量精度選擇雷達。毫米波雷達常見有兩種檢測范圍:一種具有較寬的視角范圍但測量范圍很近;另一種視野狹窄但測量范圍更遠。
1.5 Ultrasoncis
超聲波雷達是一種短距離測量傳感器。 非常適合用于停車場景,在這種情況下,自車需要非常緩慢的接近其他車輛。另一個優勢是它們的成本很低。 而且,就像雷達和激光雷達一樣,它們不受光照和降水的影響。 通常可以根據其測量的范圍,視野及其成本來進行選擇。
1.6 GNSS/IMU
上面介紹的傳感器是用來檢測車輛周圍環境,現在讓我們來認識一些檢測自車狀態的傳感器。這里最常見的是全球導航衛星系統,簡稱GNSS,例如GPS,慣性測量單元或IMU。
- GNSS接收器用于測量自我車輛的位置,速度,有時甚至還提供航向信息。精度在很大程度上取決于實際的定位方法。
- IMU可以測量自轉車輛的角速度,加速度,并且可以將組合的測量結果用于估算車輛的3D方向。前進方向對車輛的控制很重要。
最后,還有有車輪里程傳感器。該傳感器跟蹤車輪的旋轉速度,并使用這些速度來估算自車的速度和前進方向速度。
簡單總結來說,當今用于自動駕駛感知的主要傳感器包括攝像頭,雷達,激光雷達,超聲波雷達,GNSS,IMU和車輪里程計等。這些傳感器具有不同的特性,包括分辨率,檢測范圍和視野。為自動駕駛汽車選擇合適的傳感器配置并非易事。下面是一張示意圖,顯示了每個傳感器以及它們通常在汽車上的安裝位置。
1.7 Computing Hardware
最后,讓我們來認識一下當今自動駕駛汽車中最常用的計算硬件。
其中最關鍵的部分是自動駕駛大腦,這是汽車的主要決策單元。它接收所有傳感器數據并輸出駕駛車輛所需的命令。現在越來越多的大公司偏向于設計自己的大腦系統,以滿足其傳感器和算法的特定要求。但是,也存在一些可以開箱即用地處理自動駕駛負載的硬件。最常見的例子是Nvidia的Drive PX和Intel&Mobileye的EyeQ。
任何用于自動駕駛的計算大腦都需要串行和并行計算模塊。特別是對圖像和LIDAR處理進行分割,對象檢測。在這里常用的GPU,FPGA和ASICs,它們是用于執行特定類型計算的專用硬件。例如:Drive PX包括多個GPU。 EyeQ具有FPGA來加速可并行化的計算任務,例如圖像處理或神經網絡推理。
最后,簡要介紹一下傳感器時間同步硬件。因為我們要根據道路場景的連貫性做出駕駛決策。GPS依靠極其精確的計時來起作用,因此,GPS可以在可用時充當適當的參考時鐘。無論如何,傳感器測量值必須加上時間戳記,并帶有一致的時間,以使傳感器融合功能正常發揮作用。
2.Hardware Configuration Design
2.1 Overview
上一個視頻視頻介紹了自動駕駛中常見的傳感器。本視頻將會介紹在不同駕駛場景中對傳感器測量覆蓋范圍的需求,將分為兩個場景來討論:Highway和Urban。
在討論覆蓋率之前,讓我們先定義車輛減速度,假設一個激進的車輛減速度為5m/s25m/s^25m/s2,這大約是猛踩剎車并在緊急情況下嘗試突然制動時遇到的減速度。而正常的車輛減速度一般為2m/s22m/s^22m/s2,這樣在乘客感到舒適的同時車輛也會快速停住。對于恒定的減速度,可以根據如下公式計算制動距離ddd。
d=v22ad=\frac{v^2}{2a}d=2av2?
其中vvv是車速,aaa是其減速度。我們有時候還需要考慮制動系統的反應時間和路面摩擦系數等。
現在讓我們談談覆蓋率。我們要回答的問題是,我們應該在哪里安裝傳感器,以便為駕駛任務提供足夠的輸入?
實際上,我們希望我們的傳感器捕獲我們所想到的ODD或系統可以為其做出決策的ODD。
現在我們考慮兩種場景,高速公路和城市情況。對于高速公路,車流量很大,并且有很多車道需要監控,但是所有車輛的行駛方向都是相同的。 在高速公路上行駛的另一個特點是彎道越來越少,而且通常也需要考慮退出和合并; 另一方面,在城市情況下,將考慮適度的交通流量和中等速度的交通,車道數量較少,但交通流向四面八方,尤其是在交叉路口。
2.2 Highway
讓我們先分析高速公路場景,大致可以分為三種情況:
- 緊急制動 (Emergency Stop)
- 定速 (Maintain Speed)
- 變道(Lane Change)
1) Emergency Stop
我們先討論第一種情況:緊急制動。
在緊急制動情況下,如果前方道路發生擁堵,我們希望能夠及時停車。假設高速公路速度為120km/h,我們需要能夠感應到前方110米處。因此,大多數自動駕駛系統的目標是感應到車輛前方150至200米的范圍。同樣,為了避免橫向碰撞或更改車道以避免撞到車道上的障礙物,我們需要至少能夠感知我們相鄰的車道,在北美,車道的寬度為3.7米。
2) Maintain Speed
下面討論第二種情況:定速
為了在跟隨車輛時保持速度,需要在自車道上感應前方車輛。它們的相對位置和速度對于保持安全的跟隨距離都很重要。假如,以每小時120公里的速度行駛,相對位置和速度的測量需要達到165米的范圍,而典型的系統為此使用100米。
在橫向上,我們需要知道相鄰車道上任何地方發生的情況,以防其他車輛試圖合并到我們的車道中,或者我們需要與其他車輛合并。跟蹤相鄰車道需要160至180度的視野,并且需要40至60米的范圍才能找到車輛之間的空間。
3) Lane Change
最后,我們討論第三種情況:變道。
假設我們要進行圖示的變道,在縱向上我們需要向前看,因此我們距離前方車輛要有一段安全距離,我們還需要向后看才能看到后方車輛在做什么,而從側面看這比較復雜。我們可能需要超越相鄰的車道。例如,如果車輛試圖像我們一樣同時操縱進入相鄰車道怎么辦?
總體而言,下圖為高速公路駕駛場景的覆蓋范圍要求。不同的駕駛場景對傳感器的覆蓋范圍要求不同,我們需要根據具體情況來選擇符合實際需求的傳感器。
2.3 Urban
下面來分析另一種場景:城市情況。正如之前討論的那樣,城市情況中高速公路上的車道較少,但行人的復雜性卻增加了。這里有六種情況。顯然,除了緊急制動,定速和變道,但同時也有一些其它情況發,例如超車,在十字路口處向左和向右轉彎以及通過諸如大轉盤等。實際上,對于前三個場景,覆蓋率分析與高速公路分析幾乎相同,但是由于我們的移動速度并不快,因此我們不需要相同程度的感知范圍。
1) Overtaking
現在我們來討論超車情況。
縱向上,需要感知停放的汽車以及迎面而來的車輛。因此,我們既需要傳感器,又需要較寬的短距離傳感器來檢測停放的汽車,還需要較窄的遠程傳感器來確定迎面而來的車輛是否正在接近。從側面看,我們需要像在高速公路中那樣觀察相鄰車道以外的車輛并入。
2) Turning, crossing at intersections
接下來,我們來討論十字路口情況。
對于十字交叉路口,我們需要對可能發生的所有類型的運動進行全方向感知,接近的車輛,附近的行人,轉彎等等。
3) Passing roundabouts
最后,對于大轉盤。
由于車速較慢,我們需要橫向安裝一個大范圍的短距離傳感器,但由于圓周式的運動,我們也需要縱向一個大范圍的短距離傳感器。我們需要感知所有通過回旋處的傳入流量,以做出正確的決策。
因此,我們最終得到了針對城市案例的總體覆蓋圖。讓我們總結一下覆蓋率分析。對于我們所做的所有操作,我們需要通常具有較短的視角范圍的遠程傳感器和通常具有中至短距離感測的寬視角傳感器。隨著場景變得越來越復雜,我們看到了對短距離至約50米的完整360度傳感器覆蓋范圍的需求,以及對縱向范圍的更大要求。我們還可以添加更短距離的傳感器(如聲納),在停車場景中非常有用。
總而言之,我們對傳感器的選擇應取決于我們要執行的操作的要求,并且應包括用于縱向危險的遠程傳感器和用于全向感知的寬視野傳感器。配置的最終選擇還取決于我們對工作條件,由于故障而造成的傳感器冗余以及預算的要求。對于自動駕駛汽車需要哪些傳感器沒有唯一的答案。
3.Software Architecture(重點)
3.1 Overview
本視頻我們將學習用于自動駕駛汽車的模塊化軟件體系結構。我們將討論以下五個軟件模塊,
- 環境感知
- 環境地圖
- 運動規劃
- 車輛控制
- 系統管理器。
雖然本視頻不會提供具體的細節,但它也會幫助我們對實現自動駕駛汽車功能所需的所有軟件組件有很好的了解。下面是自動駕駛汽車軟件堆棧的高級軟件架構。
3.2 Environment Perception
我們先來討論第一個模塊:環境感知。
環境感知模塊有兩個主要作用,首先是確定自動駕駛汽車的當前位置,其次是對自動駕駛汽車周圍障礙物進行分類和定位。
定位模塊會接收多個傳感器信息,例如當前GPS位置,IMU和車輪里程計,然后將它們組合以輸出準確的車輛位置。
動態目標檢測模塊使用攝像頭、LIDAR、毫米波雷達來創建3D場景中動態目標的bounding box。 包含目標的位置,方向和大小信息。一旦檢測到目標,下面通過跟蹤模塊進行目標跟蹤。跟蹤模塊不僅提供目標的當前位置及其通過環境的歷史軌跡。還會使用軌跡的歷史記錄與地圖,以預測未來道路上的所有動態目標。這通常是由預測模塊融合所有動態目標相關信息和當前環境進行預測所有動態目標的路徑。
靜態目標檢測模塊還依靠高精度地圖來識別場景中的重要靜態目標。這些重要數據包括當前發現無人駕駛車輛的車道以及監管地點標牌和交通信號燈等元素。
3.3 Environmental Maps
下面我們來討論環境地圖模塊。
這里我們簡要討論了三種類型的地圖,即占用網格地圖,定位地圖和詳細的路線圖。
占用網格是車輛周圍環境中所有靜態對象的地圖。占用網格圖將環境表示為一組網格單元,并關聯每個單元被占用的概率。這使我們能夠處理測量數據中的不確定性,并隨著時間的推移改進地圖。
定位模塊使用LIDAR或相機數據構建的定位圖。在駕駛時將傳感器數據與此地圖進行比較,以確定汽車相對于定位地圖的運動。然后將此運動與其他本體傳感器信息組合在一起,以準確定位車輛。
詳細的路線圖提供了代表自動駕駛車輛當前正在行駛的駕駛環境的路段圖。它以可用于運動規劃的方式捕獲標志和車道標記。
3.4 Motion Planning
接下來,我們來討論運動規劃模塊。
自動駕駛汽車的運動規劃是一項艱巨的任務,而且通常很難在單個過程中解決。取而代之的是,當今大多數自動駕駛汽車都使用一種分解方法,將問題分為以下三層。
- 在最高層,任務規劃者處理長期計劃,定義整個駕駛任務,即從當前位置到最終目的地。為了找到完整的任務,任務規劃者會確定連接起點和終點的最佳路段順序,然后將其傳遞到下一層。
- 行為規劃者負責處理解決短期計劃,建立一組在沿著任務路徑行駛時要執行的安全動作。如決定何時加速、減速等。
- 最后,本地規劃者執行計劃,負責定義要驅動的行駛路徑和速度曲線。
3.5 Vehicle Controller
下面,我們來看看車輛控制模塊。
如上圖所示,典型的控制器將控制問題分為縱向控制和橫向控制。橫向控制器輸出維持計劃軌跡所需的轉向角,而縱向控制器則調節油門,齒輪和制動系統以達到正確的速度。
3.6 System Supervisor
最后,我們看看系統管理器模塊。
系統管理器是持續監視自動駕駛汽車各個方面并在子系統發生故障時發出適當警告的模塊。有兩個部分,硬件管理和軟件管理。
- 硬件監控器會持續監視所有硬件組件,以檢查是否有任何故障,例如傳感器損壞,測量值丟失或信息降級。硬件主管的另一項職責是持續分析硬件輸出,查找與無人駕駛汽車所要執行的域不匹配的任何輸出。例如,如果一個攝像頭傳感器被紙袋擋住。
- 軟件監控器負責驗證軟件堆棧,以確保所有元素均按正確的頻率按預期運行,并提供完整的輸出。
4.Environment Representation
4.1 Localization Map
我們將仔細研究為表示汽車周圍環境而創建的地圖。我將概述傳統上用于自動駕駛的三種不同的地圖類型,在上一個視頻中已經對此進行了簡要介紹。
我們將討論的第一張地圖是定位地圖。
當汽車在環境中移動時,此地圖由連續的激光雷達點集或相機圖像特征創建。然后,定位模塊將此地圖與GPS,IMU和車輪里程表結合使用,來準確估算車輛的精確位置。
下面我們來詳細了解定位地圖的作用。自動駕駛汽車收到新的LIDAR或攝像機數據后,會將其與定位地圖進行比較,并通過將新數據與現有地圖對齊來創建自車位置的測量值。然后將該測量值與其它傳感器組合在一起,以估計自車的運動,并最終用于控制車輛。
4.2 Occupancy Grid
下面我們討論網格地圖。
網格地圖使用一組連續的LIDAR點集來構建環境地圖,該地圖表示所有靜態或固定障礙物的位置。該地圖可以用于規劃自動駕駛汽車的安全,無碰撞路徑。
網格地圖是周圍環境中靜態物體的2D或3D離散地圖。使用點云作為輸入,再次創建此地圖以識別自動駕駛汽車周圍的所有靜態物體。靜態的對象包括樹木,建筑物,路緣石和所有其他不可驅動的表面。
4.3 Detailed Roadmap
下面我們來討論第三種地圖:Detailed Roadmap。
詳細的路線圖是可以由自動駕駛汽車駕駛的整個道路網的地圖。該地圖包含有關道路車道的信息,以及可能影響其的任何交通法規要素。詳細的路線圖用于計劃自動駕駛汽車采用的安全有效的路線。可以通過以下三種方式之一來創建詳細的路線圖。·完全在線,完全離線或離線·創建和在線更新。
- 完全在線創建的地圖在很大程度上取決于感知堆棧的靜態對象比例,以準確標記和正確定位所有相關靜態對象來創建地圖。這包括所有車道邊界在當前的駕駛環境中,任何管制元素(例如交通信號燈或交通標志),車道的任何管制屬性,例如右轉標記或人行橫道。由于實時創建這種地圖的復雜性,很少使用這種地圖創建方法。
- 完全脫機創建的地圖通常是通過多次收集給定道路的數據來完成的。帶有高精度傳感器的專業車輛會定期沿著道路行駛,以構建離線地圖。收集完成后,即可使用靜態對象感知以及人工標記的混合來標記信息。這種地圖創建方法在生成非常詳細和準確的地圖時,無法響應或適應不斷變化的環境。
- 第三種方法是離線創建它們,然后使用新的相關信息在線更新它們。這種地圖創建方法充分利用了這兩種方法,可創建可在駕車時進行更新的高精度路線圖。
總結:在本模塊中,我們學習了:
- 如何在自動駕駛汽車中選擇合適的傳感和計算硬件,以及如何根據駕駛需求設計特定的傳感器[。
- 如何分解用于自動駕駛的軟件系統。
- 代表環境的三種主要地圖類型。
總結
以上是生活随笔為你收集整理的Coursera自动驾驶课程第3讲:Self-Driving Hardware and Software Architectures的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车主无语!起亚一纸通知 车上的360°全
- 下一篇: 重读经典:《An Image is Wo