Apollo問答 | 關於Lattice Planner規劃算法的若 幹問答

來源:Apollo開發者社區
2018-09-07
本週問答主題:
Lattice Planner
上週,我們在Apollo開發者交流羣內做了關於Lattice Planner的分享。這裏,我們將社羣分享裏開發者提出的問題進行了歸納整理,現場沒有得到回答的問題,大家可以從本期問答內尋找答案。
1
Q
Lattice Planner將規劃統一成代價函數,尋找代價最小的。在規劃的上層是否還需要決策層?
A
在規劃上層的決策僅僅包含了來自交規的停車指令(比如紅綠燈),其餘的策略均有下層採樣+cost來完成。
2
Q
Lattice Planner適用於哪些場景?
A
Lattice Planner現在已經在低速園區和高速公路的場景中由產品落地。對於普通城市道路,對於相對複雜的交規處理還有待完善。
3
Q
這個算法適合多彎道複雜的場景下嗎?複雜的停車場等?
A
該算法可以處理多彎道的場景。對於停車場暫不使用,因爲這個算法首先需要參考線,而複雜的停車場很難做出一條參考線。
4
Q
Cost裏面已經考慮了碰撞,爲什麼還要做碰撞檢測
A
Cost裏面的碰撞僅僅是把有碰撞風險的軌跡的cost值設置的比較高,爲了把這樣的軌跡優先級排到比較後,從而使得我們能夠優先考察其他更安全的軌跡,但它並沒有起到刪選軌跡的作用,是一個比較soft的限制。而後面的碰撞檢測是出於安全的考慮,把這條軌跡篩除,這是一個hard的限制。
5
Q
Lattice Planner和EM Planner的區別是?或者說分別應用在什麼場景下?
A
Lattice Planner主要基於採樣+選擇,而EM Planner的思路是逐層優化迭代。從規劃層面來說,兩者均可用於各種場景。從決策層來看,Lattice的決策相對簡單,適用於相對簡單的場景,如低速園區,高速公路。EM算法對交規的決策做的相對更完善,可以處理相對複雜的普通城市道路。
6
Q
高橫向軌跡和縱向軌跡倆倆組合咋樣理解?是橫向的一條軌跡和縱向的所有軌跡組合嗎?
A
兩兩組合指的是每一條橫向軌跡和每一條縱向軌跡的組合。
7
Q
計算量是不是有點大?普通CPU可以嗎?
A
以目前的經驗來看,普通CPU是可以處理的。當然,這個算法可以隨着計算機性能的提升,採樣更多的軌跡,使得我們對解空間的涵蓋更加完備。
8
Q
關於軌跡的生成,Lattice使用的是多項式擬合,一般使用三項還是五項?另外,老師說是在st圖上下陰影處取樣,那是取多少個點?那個末狀態是指超車結束的狀態點嗎?
A
對於橫向軌跡的多項式擬合,因爲有有初始狀態的零階導,一階導,二階導,和末狀態的零階導,一階導,二階導,一共六個變量,所以擬合五次多項式。對於縱向軌跡,在停車和跟車狀態,也都是五次多項式,但對於巡航狀態,由於我們不需要確定末狀態的S值,所以只有五個變量,那麼用四次多項式就可以了。在ST圖上下取樣,點的數目可以由開發者自行決定,這個沒有限制。末狀態指的就是超車結束的狀態點。
9
Q
只有起始狀態和末狀態怎麼進行橫向和縱向的擬合?
A
構建多項式,使得多項式在起始時刻和末時刻的各階導數和起始狀態末狀態吻合。
10
Q
Lattice Planner是路徑規劃的算法,但也涵蓋了部分行爲規劃的處理內容?
A
是的。橫向軌跡主要針對路徑,縱向軌跡主要針對速度、加速度等行爲。
11
Q
多項式擬合,是什麼多項式?擬合後如何保證滿足無人車的運動學和動力學要求?
A
多項式指的就是普通的多項式,擬合時已經通過高階導數考慮了動力學要求。
12
Q
Apollo的代碼中出現了S-L座標系和frenet座標系的名稱,這兩個是否是指同一個座標系?
A
這兩個指的是同一個座標系。
13
Q
高精度地圖的輸出格式是怎樣的?包括用於導航的矢量圖、用於定位的點雲圖以及全局的路徑。對於高精度地圖這一塊希望能夠有詳細的介紹。
A
可以參考 https://github.com/ApolloAuto/apollo/blob/master/modules/map/data/README.md 如 README 所示,xml, bin, txt, lb1 都是不同的文件格式,適配不同的讀取器,內容是一致的。
14
Q
多項式擬合具體方法是什麼?如何避免擬合的曲線超出路面範圍?
A
擬合的具體方法是求解多項式係數的線性方程組。開發者可以通過添加在路檢測的檢查validity check來避免曲線超出路面範圍。
15
Q
換道場景,是要提前獲取目標車道和當前行駛車道的參考線嗎?
A
是的,這個信息在Apollo裏都是有的。
16
Q
Frenet座標系下面是一個車道一箇中心線?還是一條線一箇中心線?這兩的s值的0點是從什麼地方開始算的?
A
一個車道一箇中心線。S值的0點是從參考線的起點開始。參考線的起點會隨着主車的位置做實時動態調整,通常是在主車車身後30米左右的位置。
17
Q
在障礙車輛較多的環境下可能需要頻繁的規劃路徑,由於cost值有多個評價組成,有可能多次出現最佳軌跡的橫向方向完全相反的情況,可能造成車輛左右微微擺動,如何解決這種情況?
A
在這種情況下,建議額外補充一個和上一個計算週期相似性的cost。
18
Q
對於單向雙車道場景,規劃的時候是隻規劃行駛車道還是規劃雙車道?
A
如果有換道需求的話,會同時規劃兩條車道。
19
Q
初始狀態本車的theta是車頭朝向還是指車速朝向, 初始狀態曲率怎麼計算,用方向盤角度推?
A
初始狀態的theta是車頭方向。曲率是基於IMU的信息計算出來的。
20
Q
在運行Apollo demo時 ,在只有軟件模擬沒有硬件的情況,能不能測試和調試規劃算法,能的話怎麼做?
21
Q
多項式具體形式如何?擬合擬合後如何保證滿足無人車的運動學和動力學要求?
A
多項式就是普通的冪次多項式。擬合出來以後,可以通過限制檢測來篩選出符合無人車動力學模型的軌跡。
22
Q
Lattice算法的輸入也是referenceLine吧,這個是通過routing模塊給出的route segment生成的,和EM Planner一樣,理解正確麼?
A
正確。
23
Q
有碰撞風險的軌跡爲什麼不在cost環節或者之前直接刪掉?
A
Cost環節僅僅是一個soft的排序,並不做刪除的工作。
2724
Q
如果如果在過彎道的時候,reference line上的end point有噪音,在不停都抖動,如何在這種情況下規劃一條穩定的軌跡,謝謝。
A
這就需要我們不斷優化reference line的平滑算法。
25
Q
現在Apollo的代碼中設計了三個末狀態橫向偏移量,-0.5,0.0和0.5,以及四個到達這些橫向偏移量的縱向位移,分別爲10,20,40,80。能解釋下爲什麼這樣定意思這些常量?
A
這些常量是根據平時路測的經驗得到的。開發者可以根據自己的產品和場景來調整這些常量。
26
Q
只有起始狀態和末狀態怎麼進行橫向和縱向的擬合?
A
通過求解多項式的係數是的起始點和終止點的各階導數吻合。
27
Q
關於軌跡的生成,Lattice使用的是多項式擬合,一般使用三項還是五項?另外,老師說是在st圖上下陰影處取樣,那是取多少個點?那個末狀態是指超車結束的狀態點嗎?
A
一般是5階多項式,在cruise狀態下,用4階多項式。在st圖中的取點個數沒有規定,開發者可以根據需要來調試。
28
Q
圖片
圖中確定了縱向擬合曲線之後,如何確定橫向的擬合曲線?
A
橫向軌跡在第18頁ppt中有介紹。
29
Q
軌跡採樣時縱向位移選取10 20 40 80 ,這是經驗值嗎?是不是需要根據車速進行調整?
A
這是經驗值。我們也正在改進,使得它能根據車速調整。
30
Q
規劃軌跡中的速度如何設定,是否根據起始點速度、終點速度、以及軌跡距離,計算出一個平穩加速度,然後平穩地加速過去?但是我看PPT中跟車的場景,到達reference speed的過程加速度似乎並非爲一個常量。
A
軌跡的平穩性可以通過cost來篩選。所以就要求我們在sample的過程中涵蓋面儘可能的廣泛。
31
Q
橫向運動是由縱向運動誘發的,該如何理解?
A
普通的車子的輪胎不會轉到水平位置來做單純的橫向運動。

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