apollo 代碼代碼文檔,轉載從github
apollo文檔
侵刪
@[toc]# 二次規劃ST速度優化
1 定義
從二次規劃樣條路徑中選取一條路徑後,Apollo將路線上的所有障礙物和自動駕駛車輛(ADV)展現在一個時間-路徑圖上(path-time ST),該路徑圖表示了路徑上的站點變化。速度優化的任務是在ST圖上找到一條合理的,無障礙的路徑。
Apollo使用多個樣條來表示速度參數,在ST圖上表示爲一系列的ST點。Apollo會對二次規劃的結果做再次的平衡以獲得最佳的速度參數。QP問題的標準類型定義爲:
minimize21⋅xT⋅H⋅x+fT⋅xs.t.LB≤x≤UBAeqx=beqAx≤b
2 目標函數
2.1 獲取樣條段
將路ST速度參數分爲 n 段,每段路徑用一個多項式來表示。
2.2 定義樣條段函數
每個樣條段 i 都有沿着參考線的累加距離di。每段的路徑默認用5介多項式表示。多項式介數可以通過配置參數進行調整。
s=fi(t)=a0i+a1i⋅t+a2i⋅t2+a3i⋅t3+a4i⋅t4+a5i⋅t5
2.3 定義樣條段優化函數
Apollo首先定義cost1以使路徑更加平滑:
cost1=i=1∑n(w1⋅0∫di(fi′)2(s)ds+w2⋅0∫di(fi′′)2(s)ds+w3⋅0∫di(fi′′′)2(s)ds)
然後,Apollo定義cost2表示最後的S-T路徑和S-T巡航路徑(有速度限制且m個點)的差值:
cost2=i=1∑nj=1∑m(fi(tj)−sj)2
同樣地,Apollo定義了cost3表示第一個S-T路徑和隨後的S-T路徑(o個點)的差值:
cost3=i=1∑nj=1∑o(fi(tj)−sj)2
最後得出的目標函數爲:
cost=cost1+cost2+cost3
3 約束條件
3.1 初始點約束
假設第一個點是(t0, s0),且s0在路徑fi(t), f′i(t), 和fi(t)′′上(位置、速率、加速度)。Apollo將這些約束轉換爲QP約束的等式爲:
Aeqx=beq
3.2 單調約束
路線必須是單調的,比如車輛只能往前開。
在路徑上採樣 m 個點,對每一個 j和j−1 的點對,且(j∈[1,...,m]),如果兩個點都處在同一個樣條k上,則:
∣∣1tjtj2tj3tj4tj5∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣akbkckdkekfk∣∣∣∣∣∣∣∣∣∣∣∣>∣∣1tj−1tj−12tj−13tj−14tj−15∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣akbkckdkekfk∣∣∣∣∣∣∣∣∣∣∣∣
如兩個點分別處在不同的樣條k和l上,則:
∣∣1tjtj2tj3tj4tj5∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣akbkckdkekfk∣∣∣∣∣∣∣∣∣∣∣∣>∣∣1tj−1tj−12tj−13tj−14tj−15∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣alblcldlelfl∣∣∣∣∣∣∣∣∣∣∣∣
3.3 平滑節點約束
該約束的目的是使樣條的節點更加平滑。假設兩個段segk 和segk+1互相連接,且segk的累計值 s 爲sk。計算約束的等式爲:
fk(tk)=fk+1(t0)
即:
∣∣1tktk2tk3tk4tk5∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣ak0ak1ak2ak3ak4ak5∣∣∣∣∣∣∣∣∣∣∣∣=∣∣1t0t02t03t04t05∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣ak+1,0ak+1,1ak+1,2ak+1,3ak+1,4ak+1,5∣∣∣∣∣∣∣∣∣∣∣∣
然後,
∣∣1tktk2tk3tk4tk5−1−t0−t02−t03−t04−t05∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣ak0ak1ak2ak3ak4ak5ak+1,0ak+1,1ak+1,2ak+1,3ak+1,4ak+1,5∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣=0
等式中得出的結果爲t0 = 0。
同樣地,爲下述等式計算約束等式:
fk′(tk)=fk+1′(t0)fk′′(tk)=fk+1′′(t0)fk′′′(tk)=fk+1′′′(t0)
3.4 點採樣邊界約束
在路徑上均勻的取樣 m 個點,檢查這些點上的障礙物邊界。將這些約束轉換爲QP約束不等式,使用不等式:
Ax≤b
首先基於道路寬度和周圍的障礙物找到點 (sj,lj)的下邊界llb,j,且j∈[0,m]。計算約束的不等式爲:
∣∣∣∣∣∣∣∣11...1t0t1...tmt02t12...tm2t03t13...tm3t04t14...tm4t05t15...tm5∣∣∣∣∣∣∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣aibicidieifi∣∣∣∣∣∣∣∣∣∣∣∣≤∣∣∣∣∣∣∣∣llb,0llb,1...llb,m∣∣∣∣∣∣∣∣
同樣地,對上邊界lub,j,計算約束的不等式爲:
∣∣∣∣∣∣∣∣11...1t0t1...tmt02t12...tm2t03t13...tm3t04t14...tm4t05t15...tm5∣∣∣∣∣∣∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣aibicidieifi∣∣∣∣∣∣∣∣∣∣∣∣≤−1⋅∣∣∣∣∣∣∣∣lub,0lub,1...lub,m∣∣∣∣∣∣∣∣
3.5 速度邊界優化
Apollo同樣需要建立速度限制邊界。
在st曲線上取樣 m 個點,爲每個點j獲取速度限制的上邊界和下邊界,例如vub,j 和 vlb,j,約束定義爲:
f′(tj)≥vlb,j
即:
∣∣∣∣∣∣∣∣00...011...1t0t1...tmt02t12...tm2t03t13...tm3t04t14...tm4∣∣∣∣∣∣∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣aibicidieifi∣∣∣∣∣∣∣∣∣∣∣∣≥∣∣∣∣∣∣∣∣vlb,0vlb,1...vlb,m∣∣∣∣∣∣∣∣
且,
f′(tj)≤vub,j
即:
∣∣∣∣∣∣∣∣00...011...1t0t1...tmt02t12...tm2t03t13...tm3t04t14...tm4∣∣∣∣∣∣∣∣⋅∣∣∣∣∣∣∣∣∣∣∣∣aibicidieifi∣∣∣∣∣∣∣∣∣∣∣∣≤∣∣∣∣∣∣∣∣vub,0vub,1...vub,m∣∣∣∣∣∣∣∣