張垚, 彭育輝
(福州大學機械工程及自動化學院, 福建 福州 350108)
隨著2020年2月《智能汽車創新發展戰略》的發布, 汽車無人駕駛技術研究得到了學者和行業的普遍關注. 軌跡規劃是汽車無人駕駛的關鍵模塊, 依據感知系統得到行駛環境的周圍信息, 生成一條保證行駛安全、 時空平滑、 可行的汽車行駛軌跡.
目前被廣泛應用的基于離散優化的軌跡規劃算法, 是針對行駛環境進行離散的. 其采用數值積分和微分方程描述車輛運動, 產生有限的候選軌跡, 由代價函數從候選軌跡中選擇出最優軌跡, 實時性好. Chu等[1]基于離散優化思想, 提出以三次多式作為車輛運動基元的算法, 能夠安全地避開靜態障礙物, 但沒有考慮動態障礙物和多車道場景. 周惠子等[2]通過加權碰撞檢測的方法, 實現了多車道避障行駛, 但仍未考慮移動障礙物. 文獻[3-4]在此基礎上考慮了移動障礙車輛, 提出一種新的安全代價函數, 但是僅考慮了同向行駛的障礙車輛, 具有一定的局限性. Werling等[5]以五次多項式作為運動基元, 同時引入最優控制的方法進行規劃, 能夠避開低速行駛的障礙物, 但行駛時會導致方向盤頻繁的轉動. 由于使用特定的參數曲線描述車輛的運動軌跡, 限制了車輛的運動性能[6]. 文獻[7-9]使用采樣和優化相結合的軌跡規劃方法, 使規劃出來的軌跡更加平滑. 上述研究對行駛環境進行離散時, 需選擇適合的采樣精度以平衡規劃路徑的最優性和候選路徑的計算量, 且研究場景大多局限于單向車道場景. 相比于單向車道, 車輛在雙向兩車道執行避障、 超車等行為時需要考慮旁邊車道相向行駛的車輛, 規劃難度更高.
針對以上問題, 本研究提出一種面向雙向兩車道的無人車軌跡規劃算法. 該算法使用人工勢場法描述車輛與周圍環境的相互關系, 基于分層采樣的方法求解初始路徑以平衡路徑的最優性和計算量; 將同車道車輛以及旁邊車道相向行駛的車輛投影到ST圖上, 基于多目標A*搜索算法規劃出初始速度剖面并進行優化, 完成對旁邊車道車輛的避讓. 最后, 通過Python進行計算機仿真, 驗證算法的有效性和可靠性.
算法分為路徑規劃和速度規劃兩部分. 路徑規劃時, 基于道路中心線構建s-ρ坐標系, 將無人車與周圍障礙物映射到s-ρ坐標系上. 通過分層采樣構建路徑Lattice圖, 搜索出初始路徑, 然后對初始路徑進行平滑優化. 一旦生成了一條平滑的路徑, 障礙物就會被投影到ST圖上, 在ST圖上搜索出初始速度剖面后再進行平滑優化. 結合路徑和速度曲線, 將獲得規劃的平滑軌跡.
1.1.1構建路徑Lattice圖
對于雙向兩車道, 將右側車道的中心線作為參考路徑, 基于參數化樣條曲線方法構建s-ρ坐標系[5]. 在s-ρ坐標系下對車輛行駛的狀態空間進行離散采樣, 縱向采樣間距Δs根據車速進行設定. 與文獻[5]不同的是, 本研究使用采樣層的組合構建路徑Lattice圖(如圖1所示), 以規劃較長的路徑.

圖1 路徑Lattice圖Fig.1 Lattice diagram of the path
采樣點之間的連接方式視為運動基元, 以三次多項式作為運動基元, 函數表達式為:
ρ=a0+a1s+a2s2+a3s3(s∈[s0,se])
(1)
通過起點狀態(s0,ρ0,θ0)和終點狀態(se,ρe,θe)的位姿約束, 得到4個邊界條件可以唯一確定運動基元.
1.1.2路徑代價函數設計
路徑Lattice圖中每條邊的代價值由路徑代價函數確定, 即:
Cvalue=Csmooth+Cref+Cobs
(2)
式中:Csmooth表示路徑的光滑度項, 用曲率反映;Cref表示路徑與參考線的橫向偏移懲罰項;Cobs表示障礙物的碰撞風險項.
對每一段曲線均勻采樣N個點, 用近似曲率平方的積分表示光滑度函數:

(3)
相對安全的行駛策略是車輛應盡可能沿著右側車道的中心線行駛, 將Cref表示為N個路徑點的和, 即:

(4)
式中:ρr表示參考線在s-ρ坐標系下的橫向坐標.
周圍環境對無人車的行駛安全影響極大, 結合人工勢場法[10-11], 分別對道路、 障礙車輛建模, 構建無人車行駛的碰撞風險代價. 碰撞風險項定義為:

(5)
式中:Eroad表示道路邊界勢能;Eobsj表示第j個障礙車輛的勢能;nobs表示環境中障礙物的數量.
道路邊界是防止車輛駛出道路, 越靠近道路邊界位置其勢場值越大, 設計的道路邊界勢場函數為:

(6)
其中:Vroad表示邊界勢能值;ρroad, 1、ρroad, 2分別表示左右道路邊界在s-ρ坐標系下的橫向距離. 對于雙向兩車道, 道路勢場分布情況如圖2所示.

圖2 道路勢能分布Fig.2 Road potential energy distribution
通過建立障礙物勢能模型使無人車與障礙物保持一定的安全距離. 采用類高斯函數模擬障礙物勢能, 勢能分布函數為:

(7)
其中:Vobs表示障礙物勢場系數;σjs表示縱向安全參數;σjρ表示橫向安全參數.
障礙車輛停放在s-ρ坐標系下(-1, 40)處的勢場分布情況如圖3所示.

圖3 障礙車輛勢能分布Fig.3 Potential energy distribution of obstacle vehicles
1.1.3路徑搜索
路徑代價函數式(2)確定了路徑Lattice圖中每一條邊的代價值, 采用圖搜索算法即可搜索出代價最小的路徑. 為了平衡路徑規劃的實時性和最優性, 提出分層采樣的方法, 即先以較大的橫向采樣間隔構建路徑Lattice圖, 搜索出一條較優的路徑, 如圖4(a)中粉紫色的路徑. 以此路徑為中心線用較小的橫向采樣間隔再次構建路徑Lattice圖, 搜索出初始路徑, 如圖4(b)中藍色的路徑. 與直接用較小橫向間隔的采樣方法相比, 分層采樣的方法求解路徑的計算量更小.

圖4 分層采樣規劃Fig.4 Stratified sampling planning
初始路徑的曲率剖面具有階躍變化現象, 平滑性較差, 還需進一步優化. 采用數值優化的方法, 對路徑以縱向等距離Δs離散成Ns個路徑點(si,ρi), 把ρ=[ρ0,ρ1, …,ρn]T作為優化的決策變量, 通過最小化路徑點橫向距離ρ的變化率對路徑進行優化, 目標函數定義為:

(8)
式中: 前三項與車輛在s-ρ坐標系下的航向角以及其變化率相關, 用來平滑路徑; 第四項表示對初始路徑的跟隨;ρinit表示初始路徑采樣點. 橫向距離ρ的相關導數由采樣路徑點進行差分近似, 即:

(9)
優化時還要滿足車輛運動模型確定的曲率約束、 避免碰撞約束以及道路邊界約束. 其中, 由車輛的阿克曼轉向幾何關系, 確定車輛能夠通過的最大路徑曲率κlim, 將曲率約束表示為:
建立避免碰撞約束關系式時, 采用3個半徑為rc的圓沿著車輛的縱軸分布表示無人車的覆蓋面積, 其中一個圓的圓心與車輛后軸的中點重合, 兩個圓心之間的距離為d, 如圖5所示.車輛后軸中心點的坐標(si,ρi)由定位模塊通過坐標轉換得出, 計算可得其余兩個圓的圓心坐標, 將約束表示為:

圖5 三圓碰撞檢測Fig.5 Three circle collision detection
(11)
式中: (sj,ρj)表示第j個障礙物的s-ρ坐標;robs表示障礙物的擴展半徑.
同時, 車輛在行駛過程中不能超出道路的邊界, 因此形成不等式約束:
ρmin≤ρi≤ρmax
(12)
式(12)中,ρmax和ρmin分別是道路的左邊界和右邊界相對于中心線的橫向偏移. 從圖6中初始路徑(藍色)與優化路徑(暗紅色)的對比, 可以看出優化路徑的曲率是平滑的.

圖6 初始路徑與優化路徑對比Fig.6 Comparison of initial path and optimized path
速度剖面規劃時引入ST圖[8], 目標是規劃未來8 s或80 m的速度曲線. 先將ST圖柵格化, 將本車道以及旁邊車道的障礙物投影到ST圖上, ST圖中的可行域變成非凸區域. 然后, 基于提出的多目標A*算法在可行域中搜索出初始的速度剖面.
ST圖柵格化如圖7所示, 以時間間隔Δt=0.5 s和縱向距離間隔Δs=2 m, 將ST圖劃分成網格, 四邊形區域表示障礙車輛占據的時域, 黃綠色點是目標點, 紅色線表示以最大速度勻速行駛的速度剖面線. 在紅色線右側、 黃色目標點下方未被障礙車輛占據的時域為可行域.

圖7 初始速度剖面規劃Fig.7 Initial velocity profile planning
與A*算法[12]的節點擴展方式不同, 本研究以網格頂點為節點, 從原點進行節點擴展. 考慮到車輛最大速度的限制, 以及車輛正常行駛時沒有倒車行為, 父節點可以擴展為6個子節點, 如圖8所示. 節點速度及其導數可根據采樣間隔Δt, Δs進行差分近似計算. 近似計算與式(9)類似, 擴展節點的成本函數為:

圖8 節點擴展方式Fig.8 Node expansion method
Cspeed=g(s)+h(s)
(13)
其中:g(s)為從父節點到當前節點的代價函數;h(s)為當前節點到目標節點集的啟發函數.g(s)的具體算式為:
ω3(s?i)2+ω4(dsi+δ)-1
(14)
式中: 第一項代表相對于參考速度vref偏移的懲罰項, 使規劃速度不會偏離參考速度太遠; 第二項和第三項分別表示加速度和jerk的懲罰項, 通過抑制其快速變化使速度剖面更加平滑; 最后一項代表障礙物成本, 其中dsi表示節點到所有障礙物的最小距離,δ=0.001是為了消除奇異值.
式(13)中的h(s)與A*算法的不同在于速度規劃時設有多個目標點, 因此啟發函數的設計需要考慮到每個目標點, 即:

(15)
式中:m表示目標點的個數; (si,ti)表示當前節點; (sj,tj)表示目標節點.
多目標A*算法的搜索過程與A*算法類似, 當擴展節點的si大于規劃的最大縱向距離80 m或擴展節點的ti大于規劃的最大時間8 s, 則搜索結束. 查找出代價最小的目標節點, 通過節點回溯構成速度剖面, 規劃的速度剖面如圖7藍色折線所示.
初始速度剖面由多條直線段連接而成, 不滿足平滑性要求和車輛動力學約束, 需對初始速度剖面進行優化, 優化結果如圖9所示.

圖9 速度剖面優化Fig.9 Speed profile profile optimization
首先, 對初始速度剖面以更小的時間間隔σ進行重采樣, 即:
ti=t0+iσ(i=0, 1, …,Nt)
(16)
然后計算時間戳ti對應的縱向距離si, 通過固定時間戳把s=[s0,s1, …,sn]T作為優化的決策變量, 將優化問題的目標函數定義為:

(17)

優化時需要滿足車輛的動力學約束和避免碰撞約束. 規劃的速度不能超出速度限制vmax、 道路限速vlim、 加速度限制amax和加加速度限制jerkmax, 故動力學約束定義為:

(18)
建立避免碰撞約束關系式時, 通過對ST圖的處理, 將初始速度剖面附近的可行域變成一個凸集(如圖9中綠色區域). 對于每個決策變量si, 其范圍約束為:
si≤si+1,sd, i≤si≤sh, i(i=0, 1, …,Nt-1)
(19)
式中: 第一個不等式限制了車輛的倒車行為;sh, i、sd, i分別表示凸集的上界和下界.
上述所有的約束都是線性的, 決策變量的可行域是一個凸集, 目標函數是二次凸函數, 優化問題變成一個中等規模的二次規劃問題, 可應用二次規劃求解器快速求解.
為驗證本算法的有效性, 基于Python構建寬為3.75 m的雙向兩車道道路模型, 道路包括直線路段和彎道路段, 并在道路上設置若干靜止和移動的障礙車輛, 針對典型的駕駛場景進行測試. 在仿真器中, 無人車用藍色矩形表示, 其最大速度為20 m·s-1, 最大加速度為2.5 m·s-2, 最大加加速度(jerk)為5 m·s-3, 曲率限制為0.1 m-1. 障礙車輛用其它顏色矩形表示, 時間信息由顏色的深度來表示, 其中較深的顏色表示較晚的時間步長. 算法使用Python腳本編寫, 運行在英特爾酷睿i7-5500U (2.4 GHz)的筆記本電腦上.
無人車在雙向車道中避障時, 需要警惕旁邊車道的車輛, 場景如圖10所示. 本車道前方有2個靜止的車輛, 旁邊車道有一相向行駛的車輛, 車速為4 m·s-1. 無人車初始速度為8 m·s-1, 參考速度為12 m·s-1.
圖10(a)顯示了無人車按本規劃方法行駛的軌跡, 無人車安全地避開了障礙車輛. 圖10(b)將本方法與文獻[5]的軌跡規劃方法(稱為方法一)對比, 結果顯示, 無人車按本方法規劃軌跡行駛的曲率均方差為0.007 9, 相比于方法一的0.010 3減小了23.30%. 圖10(c)中橙色的曲線為無人車的速度變化曲線, 藍色曲線為參考速度曲線. 可以看出, 無人車選擇了加速避開障礙物, 這是因為移動車輛車速較慢, 速度規劃時選擇加速通過可能發生碰撞的區域. 而無人車的加速度和jerk的變化均沒有超過閾值.

圖10 避障場景Fig.10 Obstacle avoidance scene
在雙向兩車道路上超車, 而相鄰車道上有迎面而來的車輛是最具挑戰性和危險性的駕駛場景, 如圖11所示. 此場景中, 無人車初始速度為8 m·s-1, 前車速度為 4 m·s-1, 迎面而來的車輛速度為12 m·s-1.
圖11(a)顯示了無人車與障礙車輛的運動軌跡. 圖11(b)為兩種方法行駛軌跡的曲率對比, 無人車按本方法規劃軌跡行駛的曲率均方差為0.009 5, 相比于方法一的0.013 3減小了28.57%. 圖11(c)為無人車的速度、 加速度和jerk的變化曲線. 圖中顯示, 無人車先減速, 直到迎面駛來的車輛通過, 然后加速超過前車并趨向于參考速度. 這是由于迎面駛來的車輛車速較快, 速度規劃時無人車選擇減速對其避讓, 當其通過時, 無人車加速超過前面的車輛并趨向于參考速度.
車輛跟隨也是雙向兩車道最常見的駕駛行為之一, 如圖12所示. 此場景中, 無人車前方以及旁邊車道的障礙車輛車速為12 m·s-1, 無人車當前車速為16 m·s-1.
圖12(a)顯示了無人車跟隨前車行駛的軌跡, 在車輛行駛全過程中無人車始終與前車保持一定的安全距離. 圖12(b)對比了兩種方法行駛軌跡的曲率. 結果顯示, 無人車按本方法規劃軌跡行駛的曲率均方差為0.004 1, 相比于方法一的0.004 4減小了6.82%. 圖12(c)為無人車的速度、 加速度和jerk的變化曲線. 圖中顯示, 無人車緩慢減速到與前車相同的速度, 且其加速度和jerk的變化都在約束范圍內.

圖12 跟隨場景Fig.12 Follow the scene
為了體現本算法的實時性, 在3個測試場景中, 各抽取10次本算法的運行時間, 如表1所示. 本算法的平均運行時間在0.22 s左右, 實時性好.

表1 算法運行時間
基于離散優化的方法, 提出一種針對雙向兩車道的新軌跡解耦規劃算法. 通過解耦方法降低軌跡規劃的復雜度, 且使用ST圖增加了軌跡的安全性. 在路徑代價函數的設計中結合人工勢場法, 引導無人車安全、 合理地避開障礙物. 使用分層采樣的方法對環境進行離散, 并采用多目標A*算法規劃初始速度剖面, 有效地加快了算法的求解速度. 該算法同樣適用于單向多車道道路. 仿真實驗結果表明, 所提算法能夠在短時間內產生安全的軌跡; 與傳統軌跡規劃算法對比, 所規劃軌跡的曲率更加平滑.