一文掌握百度Apollo Udacity自動駕駛課程筆記

LZ第一次使用幕布完成了對Apollo課程的課後筆記,歡迎大家觀看。

自動駕駛的六大模塊:高精地圖、定位、感知、預測、規劃、控制,本次課程都有涉及。畢竟是入門課程,作爲了解自動駕駛機制是很不錯的課程。LZ今天用一天時間,從早晨起牀開始2倍速在B站刷視頻,一共有100集,每一小集也就2-3分鐘,上午刷完,下午對整篇課程進行整理,現在腦殼要爆炸。。。哈哈哈哈,還是挺有成就感的。接下來打算對Apollo的進階課程進行觀看整理,看看在實際項目中無人駕駛具體面臨的問題是什麼。

目錄

一、高精地圖

1、高精地圖與傳統地圖

2、高精地圖與定位、感知、規劃的關係

3、Apollo高精地圖與構建

二、定位(釐米級)

1、GNSS RTK

2、慣性導航

3、激光雷達定位

4、視覺定位

5、Apollo定位

三、感知

1、計算機視覺

2、Camera圖像

3、Lidar圖像

4、機器學習

5、神經網絡

6、反向傳遞

7、卷積神經網絡CNN:

8、檢測與分類:

9、跟蹤:

10、分割:

11、Apollo感知:

12、傳感器比較:

13、感知融合策略:

四、預測

1、簡介

2、不同的預測方式

3、基於車道序列的預測

4、障礙物狀態

5、預測目標車道

6、遞歸神經網絡RNN在目標車道預測的應用

7、軌跡生成

五、規劃

1、路徑規劃使用三個輸入

2、將地圖轉爲圖形

3、路徑查找算法A*

4、軌跡生成

5、Frenet座標系

6、路徑-速度解耦規劃

7、路徑生成與選擇

8、ST圖

9、速度規劃

10、路徑-速度規劃的軌跡生成

11、Lattice 規劃

12、ST軌跡的終止狀態

13、SL軌跡的終止狀態

14、Lattice規劃的軌跡生成

六、控制

1、控制流程

2、PID控制

3、PID優劣對比

4、線性二次調節器LQR

5、模型控制預測

6、總結

 


一、高精地圖

  • 前言:目前 Apollo 內部高精地圖主要應用在高精定位、環境感知、決策規劃、仿真運行四大場景,幫助解決林蔭道路GPS信號弱、紅綠燈是定位與感知以及十字路口複雜等導航難題。
  • 1、高精地圖與傳統地圖

    • 1.1 高精地圖是當前無人駕駛車技術不可或缺的一部分。它包含了大量的駕駛輔助信息,最重要是包含道路網的精確三維表徵,例如交叉路口布局和路標位置

    • 1.2高精地圖還包含很多語義信息,地圖上可能會報告交通燈不同顏色的含義,也可能指示道路的速度限制,及左轉車道開始的位置。

    • 1.3 高精地圖最重要的特徵之一是精度,GPS導航只能到達米級精度,而高精地圖可以使車輛能夠達到釐米級的精度,這對確保無人車的安全性至關重要。
  • 2、高精地圖與定位、感知、規劃的關係

    • 2.1 定位:首先車輛可能會尋找地標,我們可以使用從各類傳感器收集的數據,如攝像機圖像數據、激光雷達收集的三維點雲數據來查找地標。車輛將其收集的數據與其在高精地圖上的已知地標進行比較,這一匹配過程是需要預處理、座標轉換、數據融合的複雜過程。橫向:單目相機拍攝實虛線和地圖對比,知道在那個車道。縱向:藉助交通信號燈、路燈、燈杆等實現定位

    • 2.2 感知:1)Camera、激光雷達超過一定距離受到限制,地圖保證提前5-10公里感知。2)惡劣天氣或夜間、遇到障礙物,傳感器無法識別物體。3)即使傳感器尚未檢測到交通信號燈,高精地圖也可以將交通信號燈的位置提供給軟件棧的其餘部分,幫助車輛做下一個決策。4)高精地圖可幫助傳感器縮小檢測範圍,ROI區域提高檢測精度和速度。

    • 2.3 規劃:1)高精地圖可幫助車輛找到合適的行車空間,還可以幫助規劃器確定不同的路線選擇,來幫助預測模塊預測道路上其他車輛將來的位置。2)在具有低速限制、人行橫道或減速帶的區域,高精地圖可以使車輛能夠提前查看並預先減速

  • 3、Apollo高精地圖與構建

    • 1、高精地圖包含道路定義、交叉路口、交通信號燈精確位置、車道規則。不僅減小計算需求,還可以提供駕駛環境詳細信息。

    • 2.高精度地圖的構建由五個過程組成:數據採集、數據處理、對象檢測、手動驗證和地圖發佈。

      • 1、數據採集:300輛Apollo測試車輛負責收集用於製作地圖的源數據,多種傳感器,如GPS、IMU、激光雷達、攝像機。Apollo定義了一個硬件框架,將這些傳感器集成到單個自主系統中,通過支持多種類的傳感器,Apollo收集各類數據將這些數據融合,最終生成高精度地圖。

      • 2、數據處理:對收集到的數據進行整理、分類和精簡,以獲得沒有任何語義信息或註釋的初始地圖模板。

      • 3、對象檢測:使用人工智能來檢測靜態對象並對其進行分類,其中包括車道線、交通標誌、甚至是電線杆,手動驗證可確保自動地圖創建過程正確進行並及時發現問題。

      • 4.在構建和更新地圖的過程中,Apollo使用衆包向公衆發佈其數據採集工具,以便任何人都可以參與制作高精度地圖的任務,這加快了高精地圖製作和維護的過程。

      • 二、定位(釐米級)

      • 1、GNSS RTK

        • 1、GPS 4顆衛星定位。除了三顆衛星三角測量,再加一顆定位高度的衛星。接收端與衛星距離通過TOF原理測量飛行時間,但是光速很大,少量時間誤差導致巨大誤差。每顆衛星都配備了高精確度的原子鐘。
        • 2、爲進一步減小誤差,使用實時運動定位RTK。RTK涉及的地面基站,用來確定系統誤差,然後傳遞給GPS接收器來調整。在 RTK 的幫助下,GPS 可以將定位誤差限制在 10 釐米以內。

        • 評價:1)存在高樓和其他障礙物可能阻擋 GPS 信號的問題,這使定位變得困難或根本無法定位。2)GPS 的更新頻率很低,大約爲 10 赫茲。由於無人駕駛車在快速移動,可能需要更頻繁地更新位置。
      • 2、慣性導航

        • 1、加速度需要三軸加速度計的傳感器來測量,加速度計根據車輛的座標系記錄測量結果,還需要陀螺儀傳感器將這些測量值轉換爲全局座標系測量值。
        • 2、三軸陀螺儀的三個外部平衡環一直在旋轉,但三軸陀螺儀中的旋轉軸始終固定在世界座標系中。在座標系中的位置是通過測量旋轉軸和三個外部平衡環的相對位置來計算的。

        • 3、評價:1)IMU 可以以高頻率更新,可達 1000 赫茲。2)運動誤差隨時間增加而增加,我們只能依靠慣性測量單元在很短的時間範圍內進行定位。
      • 3、激光雷達定位

        • 1、迭代最近點法ICP 是匹配點雲常見方法,假設我們對兩次點雲掃描進行匹配。我們的目標是通過點雲旋轉和平移來最大限度地降低這一平均距離誤差

        • 2、濾波算法是一種LiDAR 定位方法,濾波算法可消除冗餘信息並在地圖上找到最可能的車輛位置。直方圖濾波算法,將通過傳感器掃描的點雲滑過地圖上的每個位置,在每個位置上計算掃描的點與高精度地圖上的對應點之間的誤差或距離然後對誤差的平方求和,求得的和越小掃描結果與地圖之間的匹配越好。

        • 3、卡爾曼濾波是另一種LiDAR 定位方法。卡爾曼濾波使用了預測更新週期,首先我們根據之前的狀態以及對移動距離和方向的來估計我們的新位置。當然運動估計並不完美,所以需要通過使用傳感器測量我們的位置並加以糾正。一旦傳感器測量了我們的新位置,我們便可以使用概率規則將不完美的測量結果與現有位置匹配起來。
      • 4、視覺定位

        • 粒子濾波:車道線在許多道路上卻很常見,可以使用相同的粒子濾波原理對車道線進行拍照,然後使用拍攝的圖像來確定車輛在道路中的位置,可以將道路攝像頭圖像與地圖進行比較。

      • 5、Apollo定位

        • Apollo定位模塊依賴於IMU、GPS、激光雷達、雷達、高精地圖,這些傳感器同時支持 GNSS 定位和LiDAR 定位,GNSS 定位輸出位置和速度信息,LiDAR 定位輸出位置和行進方向信息。融合框架通過卡爾曼濾波將這些輸出結合在一起。

        • 慣性導航解決方案用於卡爾曼濾波的預測步驟,GNSS 和 LiDAR 定位用於卡爾曼濾波的測量結果更新步驟。

三、感知

  • 1、計算機視覺

    • 無人駕駛車有四個感知世界的核心任務:檢測——指找出物體在環境中的位置;分類——指明確對象是什麼;跟蹤——指隨時間的推移觀察移動物體;語義分割——將圖像中的每個像素與語義類別進行匹配如道路、汽車、天空。

  • 2、Camera圖像

    • RGB圖像,深度爲3

  • 3、Lidar圖像

    • 激光雷達傳感器創建環境的點雲表徵,提供了難以通過攝像頭圖像獲得的信息如距離和高度。點雲中的每個點代表反射回傳感器的激光束,可以告訴我們關於物體的許多信息例如其形狀和表面紋理。

  • 4、機器學習

    • 1、監督式學習:使用數據和相關的真值標記來進行模型訓練
    • 2、非監督學習:沒有真值標記的車輛與行人圖像,讓計算機自行決定哪些圖像相似、哪些圖像不同
    • 3、半監督學習:使用少量的標記數據和大量的未標記數據來訓練模型
    • 4、強化學習:允許模型通過嘗試許多不同的方法來解決問題,然後衡量哪種方法最爲成功。以多種不同的方向和速度進行實驗性駕駛,如果車輛實際完成了右轉,智能體會提高獎勵即得分。
  • 5、神經網絡

    • 受到構成人類神經系統的生物神經元啓發,生物神經元通過相互連接構成了神經元網絡或神經網絡,通過類似的方式將人工神經元層連接起來以創建用於機器學習的人工神經網絡。
  • 6、反向傳遞

    • 三步循環組成——前饋、誤差測定、反向傳播。每個人工神經元都對其值進行微調,這是基於通過神經網絡後向傳播的誤差,可生成更準確的網絡。

  • 7、卷積神經網絡CNN:

  • CNN通過維持輸入像素之間的空間關係來解決這個問題,CNN通過將過濾器連續滑過圖像來收集信息,每次收集信息時,只對整個圖像的一小部分區域進行分析,稱爲卷積。當在整個輸入圖像上對一個過濾器進行卷積時,將該信息與下一個卷積層相關聯。

  • 8、檢測與分類:

  • 計算機首先需要知道障礙物的位置,然後進行分類。另一個示例爲交通信號燈檢測分類,首先將使用計算機視覺對圖像中的交通信號燈進行定位,然後根據燈光顯示顏色對交通信號燈進行分類。可以先使用檢測CNN來查找圖像中的對象的位置,在對圖像中的對象進行定位後,可以將圖像發送給另一個CNN進行分類。經典體系結構爲 R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD等
  • 9、跟蹤:

  • 追蹤可以解決遮擋問題。追蹤的第一步爲確認身份,通過查找特徵相似度最高的對象,將在之前的幀中檢測到的所有對象與在當前的幀中檢測到的對象進行匹配。

  • 10、分割:

  • 語義分割涉及對圖像的每個像素進行分類,用於儘可能詳細地瞭解環境並確定車輛可駕駛區域。語義分割依賴於一種特殊類型的CNN,被稱爲全卷積網絡FCN。1)FCN用卷積層來替代傳統CNN體系結構末端的平坦層,現在網絡中的每一層都是卷積層,因此名稱爲“全卷積網絡”。2)爲了分割像素,輸出尺寸必須與原始圖像的尺寸相匹配。爲了完成,可以對中間輸出進行上採樣處理,直到最終輸出的大小與原始輸出圖像的大小相匹配。編碼器 和解碼器。

  • 11、Apollo感知:

    • 1)Apollo將ROI過濾器應用於點雲和圖像數據,以縮小搜索範圍並加快感知。

    • 2)然後通過檢測網絡饋送已過濾的點雲,輸出用於構建圍繞對象的三維邊界框。

    • 3)最後使用被稱爲檢測跟蹤關聯的算法來跨時間步識別單個對象,該算法先保留在每個時間步要跟蹤的對象列表,然後在下一個時間步中找到每個對象的最佳匹配。

    • 4)對於交通信號燈的分類,Apollo先使用高精度地圖來確定前方是否存在交通信號燈。如果前方有交通信號燈,則高精度地圖會返回燈的位置。後續根據位置,攝像頭搜索範圍,在攝像頭捕獲到交通信號燈圖像後。Apollo使用檢測網絡對圖像中的燈進行定位,然後從較大的圖像中提取交通信號燈。將裁剪的交通燈圖像提供給分類網絡以確定燈顏色,如果有許多燈則系統需要選擇哪些燈與其車道相關。

    • 5)Apollo使用 YOLO 網絡來檢測車道線、動態物體其中包括車輛、卡車、騎自行車的人、行人。在經過YOLO網絡檢測後,在線檢測模塊會併入來自其他傳感器的數據對車道線預測進行調整,車道線最終被併入名爲“虛擬車道”的單一數據結構中。同樣也通過其他傳感器的數據對YOLO網絡所檢測到的動態對象進行調整,以獲得每個對象的類型、位置、速度、前進方向。虛擬通道和動態對象均被傳遞到規劃與控制模塊。

  • 12、傳感器比較:

  • Camera適應於分類,交通信號燈分類、車道檢測。激光雷達:適用於障礙物檢測;
  • 13、感知融合策略:

  • 卡爾曼濾波。實際上有兩種測量結果更新步驟:同步和異步。同步融合同時更新來自不同傳感器的測量結果,而異步融合則逐個更新所收到的傳感器測量結果。傳感器融合可提高感知性能,因爲各傳感器相輔相成,融合也可以減少跟蹤誤差。

四、預測

  • 1、簡介

    • 1、無人車需要預測這些物體的行爲,這樣才能確保做出最佳決策。在環境中爲所有其他的物體做出預測,這些共同形成了在一段時間內的預測路徑。這些預測路徑爲無人車在規劃階段做出決策提供了必要信息。
    • 2、預測路徑:實時性、準確性、預測模塊應該有學習新的行爲。
  • 2、不同的預測方式

    • 1、基於模型的預測:構建兩個候選模型,觀察移動車的運動,看它與那一條軌跡更匹配。
    • 2、基於數據驅動預測:使用機器學習算法,通過觀察結果來訓練模型。數據驅動方法的優點是訓練數據越多,模型效果越好。
  • 3、基於車道序列的預測

    • 1、爲了建立車道序列,首先將道路分成多個部分,每一部分都覆蓋了一個易於描述車輛運動的區域。爲了預測,我們更關心車輛如何在這些區域內轉換,而不是在某個區域內的具體行爲。例如直行汽車的運動可以描述爲車道序列是 0-1-3-7。

  • 4、障礙物狀態

    • 爲了預測物體運動也需要知道障礙物狀態(位置、朝向、速度、加速度、其在車道段內物體的位置),預測模塊會考慮從物體到車道線段邊界的縱向和橫向距離,還包含之前時間間隔的狀態信息以便做出更準確的預測。

  • 5、預測目標車道

    • 現在所要做的就是選擇車輛最有可能採取的車道順序,可以通過計算每個車道序列的概率來進行選擇。隨着記錄隨着時間的增加,模型可以自我迭代更新,精確度不斷提升。

  • 6、遞歸神經網絡RNN在目標車道預測的應用

    • 1、遞歸神經網絡RNN是一種利用時間序列數據特徵的一種預測方法。建立像這樣的多重結構的遞歸神經網絡稱之爲 MLP單元,從數據序列中提取出高級特徵,每個MLP單元將序列的一個元素作爲輸入並預測序列的下一個元素作爲輸出。爲了對元素之間的順序關係建立模型,在每個單元之間建立一個額外的連接,這意味着每個單元根據原始輸入和前一個單元的輸出進行預測,這 RNN的基本結構。

    • 2、Apollo使用RNN建立一個模型來預測車輛的目標車道,爲車道序列提供一個RNN模型,爲相關對象狀態提供另一個RNN模型。連接這兩個RNN的輸出並將它們饋送到另一個神經網絡,該神經網絡會估計每個車道序列的概率,具有最高概率的車道序列是我們預測目標車輛將遵循的序列。

  • 7、軌跡生成

    • 如何預測最有可能的軌跡?可以先通過設置約束條件來去除大部分候選軌跡,首先假定汽車將與目標車道的中心對齊,繼續去除車輛無法實際執行的軌跡。通過考慮車輛當前的速度和加速度從剩餘的軌跡中進行選擇,實際上我們並沒有實際列出所有可能的軌跡並逐一去除它們。

五、規劃

  • 1、路徑規劃使用三個輸入

  • ,第一個輸入爲地圖,Apollo提供的地圖數據包括公路網和實時交通信息。第二個輸入爲我們當前在地圖上的位置。第三個輸入爲我們的目的地,目的地取決於車輛中的乘客。
  • 2、將地圖轉爲圖形

    • 該圖形由“節點”(node)和“邊緣”(edge)組成。節點代表路段,邊緣代表這些路段之間的連接。我們可以對一個節點移動到另一個節點所需的成本進行建模。

  • 3、路徑查找算法A*

    • 從初始節點開始,我們需要確定8個相鄰節點中,哪個是最有希望的候選節點。對於每個候選節點,我們考慮兩件事情。首先,我們計算從開始節點到候選節點的成本。然後,我們估計從候選節點前往目的地的成本。對於每個候選節點,我們通過添加g值和h值來計算總和,即f值。最佳候選節點是f值最小的節點。

  • 4、軌跡生成

    • 1、我們可能需要與試圖在我們前面掉頭的汽車互動,或者我們可能希望超過一輛在公路上行駛的慢車。這些場景需要更低級別、更高精確度的規劃。我們將這一級別的規劃稱爲軌跡生成。軌跡生成的目標是生成一系列路徑點所定義的軌跡。
    • 2、每個路徑點分配了一個時間戳和速度,這些時間戳和空間上的兩個維度(2D position)共同創建了一個三維軌跡(3D  Trajectory)。我們還爲每個路徑點指定了一個速度,用於確保車輛按時到達每個路徑點。

    • 3、成本函數爲每個軌跡分配了一個“成本”,我們選擇成本最低的軌跡。軌跡“成本”由各種犯規處罰組成,例如:偏離道路中心,有可能產生碰撞,速度限制,軌跡的曲率和加速度讓乘客感到不舒服等。

  • 5、Frenet座標系

    • 1、我們通常使用笛卡爾座標系描述物體的位置,但笛卡爾座標系對車輛來說並不是最佳選擇。即使給出了車輛位置(x,y),如果我們不知道道路在哪,就很難知道車輛行駛了多遠也很難知道車輛是否偏離了道路中心。

    • 2、Frenet座標系描述了汽車相對於道路的位置。s代表沿道路的距離,也被稱爲縱座標。d表示與縱向線的位移,也被稱爲橫座標。在道路的每個點上,橫軸和縱軸都是垂直的。縱座標表示道路中的行駛距離,橫座標表示汽車偏離中心線的距離。

  • 6、路徑-速度解耦規劃

    • 路徑-速度解耦規劃將軌跡規劃分爲兩步:路徑規劃、速度規劃。1)首先在路徑規劃步驟中生成候選曲線,這是車輛可行駛的路徑,然後按成本對路徑進行排名並選擇成本最低的路徑。;2)確定沿這條路線行進的速度,
  • 7、路徑生成與選擇

    • 爲了在路徑-速度解耦規劃中生成候選路徑,首先將路段分割成單元格。。然後對這些單元格中的點進行隨機採樣。通過從每個單元格中取一個點並將點連接,我們創建了候選路徑。通過重複此過程可以構建多個候選路徑。使用成本函數對這些路徑進行評估並選擇成本最低的路徑,成本函數可能考慮以下因素:與車道中心的偏離、與障礙物的距離、速度和曲率的變化、對車輛的壓力、或希望列入的任何其他因素。

  • 8、ST圖

    • 選擇路徑後的下一步是選擇與該路徑關聯的速度曲線,在ST圖中,“s”表示車輛的縱向位移、“t”表示時間。ST 圖上的曲線是對車輛運動的描述,因爲它說明了車輛在不同時間的位置。由於速度是位置變化的速率,所以可以通過查看曲線的斜率從 ST 圖上推斷速度。斜坡越陡則表示在更短的時間段內有更大的移動,對應更快的速度。

  • 9、速度規劃

    • 1、爲構建最佳速度曲線需要將 ST 圖離散爲多個單元格。單元格之間的速度有所變化,但在每個單元格內速度保持不變,該方法可簡化速度曲線的構建並維持曲線的近似度。在 ST 圖中可以將障礙物繪製爲在特定時間段內阻擋道路的某些部分的矩形。例如,假設預測模塊預測車輛將在 t0 到 t1 的時間段內駛入的車道。由於該車將在此期間佔據位置 s0 到 s1,因此在 ST 圖上繪製了一個矩形,它將在時間段 t0 到 t1 期間阻擋位置 s0 到 s1。爲避免碰撞,速度曲線不得與此矩形相交。既然有了一張各種單元格被阻擋的 ST 圖,便可以使用優化引擎爲該圖選擇最佳的速度曲線。優化算法通過複雜的數學運算來搜索受到各種限制的低成本解決方案。這些限制可能包括:法律限制,如速度限制;距離限制,如與障礙物的距離;汽車的物理限制,如加速度限制。

    • 2、路徑-速度解耦規劃在很大程度上取決於離散化。路徑選擇涉及將道路劃分爲單元格,速度曲線構建涉及將 ST 圖劃分爲單元格。儘管離散化使這些問題更容易解決,但該解決方案生成的軌跡並不平滑。爲了將離散解決方案轉換爲平滑軌跡,可使用“二次規劃”技術(Quadratic Programming)。二次規劃將平滑的非線性曲線與這些分段式線性段擬合。儘管二次規劃背後的數學運算很複雜,但對於我們的目的而言,細節並不是必需的。

  • 10、路徑-速度規劃的軌跡生成

    • 回顧一下端到端路徑-速度解耦規劃。假設我們正在路上行駛,感知系統觀察到一輛緩慢行駛的車輛離我們越來越近。首先,在這輛車的周圍生成多條候選路線,使用成本函數對這些候選路徑進行評估並選擇成本最低的路徑。然後使用 ST 圖來進行速度規劃,根據其他車輛隨時間變化的位置阻擋了 ST 圖的部分區域。優化引擎可幫助確定該圖的最佳速度曲線,該曲線受制於約束和成本函數。我們可以使用二次規劃讓路徑和速度曲線變平滑。最後,將路徑和速度曲線合併構建軌跡。這裏的軌跡在速度較快時爲紅色,在速度較慢時爲藍色。我們使用該軌跡來安全地繞開其他車輛並繼續我們的旅程。

  • 11、Lattice 規劃

    • 1、通過使用 Frenet 座標可以將環境投射到縱軸和橫軸上,目標是生成三維軌跡:縱向維度、橫向維度、時間維度。將三維問題分解成兩個單獨的二維問題,這是通過分離軌跡的縱向和橫向分量來解決的。其中一個二維軌跡是具有時間戳的縱向軌跡稱之爲 ST 軌跡,另一個二維軌跡是相對於縱向軌跡的橫向偏移稱之爲 SL 軌跡。

    • 2、Lattice 規劃具有兩個步驟即先分別建立 ST 和 SL 軌跡,然後將它們合併爲生成縱向和橫向二維軌跡。先將初始車輛狀態投射到 ST 座標系和 SL 座標系中,通過對預選模式中的多個候選最終狀態進行採樣。來選擇最終車輛狀態。對於每個候選最終狀態構建了一組軌跡將車輛從其初始狀態轉換爲最終狀態,使用成本函數對這些軌跡進行評估並選擇成本最低的軌跡。

  • 12、ST軌跡的終止狀態

    • 1、根據情況可以將狀態分成 3 組:巡航 、跟隨、停止。巡航意味着車輛將在完成規劃步驟後定速行駛,實際上在對圖上的點進行採樣,在圖中橫軸代表時間,縱軸代表速度。對於該圖上的點,這意味着汽車將進入巡航狀態,在時間 t 以 s 點的速度巡航,對於這種模式,所有最終狀態的加速度均爲零。

    • 2、下一個要考慮的模式爲跟隨車輛,在這種情況下要對位置和時間狀態進行採樣,並嘗試在時間t出現在某輛車後面,在跟隨車輛時,需要與前方的車保持安全距離,這時速度和加速度將取決於要跟隨的車輛,這意味着在這種模式下,速度和加速度都會進行修正。

    • 3、最後一種模式是停止,對於這種模式只需對汽車何時何地停止進行抽樣,這裏速度和加速度會被修正爲 0 

  • 13、SL軌跡的終止狀態

    • 根據這樣一個假設來進行SL 規劃,即無論車輛進入怎樣的終止狀態,車輛都應該穩定地與車道中心線對齊。這意味着只需要在一個小區域內,對橫向終止位置進行採樣。具體來說採樣的是道路上相鄰車道中心線周圍的位置。爲了確保穩定性,汽車駛向的終止狀態應該與車道中心一致。當用橫向位置與縱向位置作圖時 ,想要的候選軌跡應該以車輛與車道對齊並直線行駛而結束。爲了達到這種終止狀態,車的朝向和位置的一階和二階導數都應該爲零。這意味着車輛既不是橫向移動的,那是一階導數;也不是橫向加速,那是二階導數。這意味着車輛正沿着車道直行。

  • 14、Lattice規劃的軌跡生成

    • 一旦同時擁有了 ST 和 SL 軌跡,就需要將它們重新轉換爲笛卡爾座標系。然後可以將它們相結合構建由二維路徑點和一維時間戳組成的三維軌跡。ST 軌跡是隨時間變化的縱向位移,SL 軌跡是縱向軌跡上每個點的橫向偏移。由於兩個軌跡都有縱座標 S,所以可以通過將其 S 值進行匹配來合併軌跡。

    • 六、控制

    • 1、控制流程

      • 1、控制器預計有兩種輸入:目標軌跡與車輛狀態。目標軌跡來自規劃模塊,在每個軌跡點,規劃模塊指定一個位置和參考速度。在每個時間戳都對軌跡進行更新。我們還需要了解車輛狀態,車輛狀態包括:通過本地化模塊來計算的車輛位置、從車輛內部傳感器獲取的數據(如速度、轉向和加速度)。我們使用這兩個輸入來計算目標軌跡與實際行進軌跡之間的偏差。
      • 2、控制器的輸出是控制輸入(轉向、加速和制動)的值。當偏離目標軌跡時,我們希望採取行動來糾正這種偏差。對於普通汽車,我們使用方向盤控制行駛方向(即轉向)、使用油門加速、使用剎車減速(即制動)。這也是無人駕駛汽車所做的。一旦將這三個值傳遞給車輛,汽車實際上已經開始無人駕駛了。之後將介紹不同的控制算法,如何計算這三個輸出-轉向、加速和制動。

    • 2、PID控制

      • 1、P代表“比例”(Proportional)P控制器在車輛開始偏離時立即將其拉回目標軌跡。比例控制意味着,車輛偏離越遠,控制器越難將其拉回目標軌跡。

      • 2、在實踐中P控制器的一個問題在於,它很容易超出參考軌跡。當車輛越來越接近目標軌跡時,我們需要控制器更加穩定。PID控制器中的D項致力於使運動處於穩定狀態,D代表“微分”(Derivative)。PD控制器類似於P控制器,它增加了一個阻尼項,可最大限度地減少控制器輸出的變化速度

      • 3、PID控制器中的最後一項I代表積分(Integral),該項負責糾正車輛的任何系統性偏差。例如,轉向可能失準,這可能造成恆定的轉向偏移。在這種情況下,我們需要稍微向一側轉向以保持直行。爲解決這一問題,控制器會對系統的累積誤差進行懲罰。我們可以將P、I和D組件結合構成PID控制器。

    • 3、PID優劣對比

      • PID控制器很簡單,但它在很多情況下的效果很好。對於PID控制器,你只需要知道你的車輛與目標軌跡之間的偏差。但是PID控制器只是一種線性算法,對於非常複雜的系統而言,這是不夠的。例如,爲控制具有多個關節的四軸飛行器或機器人,我們需要建立機器人的物理模型。對無人駕駛而言,我們需要應用不同的PID控制器來控制轉向和加速,這意味着很難將橫向和縱向控制結合起來。另一個問題在於PID控制器依賴於實時誤差測量,這意味着受到測量延遲限制時可能會失效。
    • 4、線性二次調節器LQR

      • 1、線性二次調節器(Linear Quadratic Regulator 或LQR)是基於模型的控制器,它使用車輛的狀態來使誤差最小化。Apollo使用LQR進行橫向控制。橫向控制包含四個組件:橫向誤差、橫向誤差的變化率、朝向誤差和朝向誤差的變化率。變化率與導數相同,我們用變量名上面的一個點來代表。我們稱這四個組件的集合爲X,這個集合X捕獲車輛的狀態。除了狀態之外,該車有三個控制輸入:轉向、加速和制動。我們將這個控制輸入集合稱爲U。

      • 2、LQR處理線性控制,這種類型的模型可以用等式來表示(詳見下圖)。x(上方帶點)=Ax+Bu,x(上方帶點)向量是導數,或X向量的變化率。所以x點的每個分量只是x對應分量的導數。等式x點=Ax+Bu,該等式捕捉狀態裏的變化,即x點是如何受當前狀態 x 和控制輸入 u 的影響的。這個等式是線性的,因爲我們用∆x來改變x時,並用∆u來改變u。x點的變化也會讓這個等式成立(見下圖等式)。現在我們瞭解了LQR中的L。

      • 3、接下來我們學習LQR中的Q。這裏的目標是爲了讓誤差最小化,但我們也希望儘可能少地使用控制輸入。由於使用這些會有成本,例如:耗費氣體或電力。爲了儘量減少這些因素,我們可以保持誤差的運行總和和控制輸入的運行總和。當車往右轉的特別厲害之際,添加到誤差總和中。當控制輸入將汽車往左側轉時,從控制輸入總和中減去一點。然而,這種方法會導致問題。因爲右側的正誤差只需將左側的負誤差消除即可。對控制輸入來說也是如此。相反,我們可以讓x和u與自身相乘,這樣負值也會產生正平方,我們稱這些爲二次項。我們爲這些項分配權重,並將它們加在一起。最優的u應該最小化二次項的和隨時間的積分。在數學中我們將這個積分值稱爲成本函數(形式見下圖)。我們經常以緊湊的矩陣形式表示加權二次項的總和。這裏的Q和R代表x和u的權重集合。xT和uT是轉置矩陣,這意味着它們幾乎與x和u相同,只是重新排列以便矩陣相乘。x乘以xT,u乘以uT,實質上是將每個矩陣乘以它自己。最小化成本函數是一個複雜的過程,但通常我們可以依靠數值計算器爲我們找到解決方案。Apollo就提供了一個這樣的求解方案。在LQR中,控制方法被描述爲u=-Kx。其中,K代表一個複雜的skeme,代表如何從x計算出u。所以找到一個最優的u就是找到一個最優的K。許多工具都可以輕鬆地用來解決K,尤其當你提供了模擬車輛物理特徵的A、B,以及x和u的權重Q、R。

    • 5、模型控制預測

      • 1、模型預測控制(或MPC)是一種更復雜的控制器,它非常依賴於數學優化,但基本上可以將MPC歸結爲三個步驟:1、建立車輛模型。2、使用優化引擎計算有限時間範圍內的控制輸入。3、執行第一組控制輸入。MPC是一個重複過程,它着眼未來,計算一系列控制輸入,並優化該序列。但控制器實際上只實現了序列中的第一組控制輸入,然後控制器再次重複該循環。爲什麼我們不執行整個控制輸入序列呢?那是因爲我們只採用了近似測量與計算。如果實現了整個控制輸入序列,實際產生的車輛狀態與我們的模型有很大差異,最好在每個時間步不斷地重新評估控制輸入的最優序列。
      • 2、MPC的第一步爲定義車輛模型,該模型近似於汽車的物理特性,該模型估計了假如將一組控制輸入應用於車輛時會發生什麼。接下來,我們決定MPC預測未來的能力。預測越深入,控制器就越精確,不過需要的時間也越長。所以,我們需要在準確度與快速獲取結果之間做出取捨。獲取結果的速度越快,越能快速地將控制輸入應用到實際車輛中。

      • 3、下一步是將模型發送到搜索最佳控制輸入的優化引擎。該優化引擎的工作原理是通過搜索密集數學空間來尋求最佳解決方案。爲縮小搜索範圍,優化引擎依賴於車輛模型的約束條件。優化引擎可間接評估控制輸入,它通過使用以下方法對車輛軌跡進行建模:通過成本函數對軌跡進行評估。成本函數主要基於與目標軌跡的偏差;其次,基於其他因素,如加速度和提升旅客舒適度的措施。

    • 6、總結

      • 控制實際上是無人駕駛汽車實現自動移動的方式。在控制中,我們使用轉向、加速和制動來運行我們的目標軌跡。我們研究了幾種不同類型的控制器。PID控制是一種簡單而強大的控制算法,線性二次調節器和模型預測控制是另外兩種類型的控制器,它們更復雜,但也更強大、更準確。Apollo支持所有這三種控制器,而你也可以選擇最適合自己的控制器!

參考:

Apollo開發者社區的分享文章

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章