1. 程式人生 > >路徑規劃:PRM路徑規劃演算法(Probabilistic Roadmap 隨機路標圖)

路徑規劃:PRM路徑規劃演算法(Probabilistic Roadmap 隨機路標圖)

global_planner:

A*、Dijstra、prm、人工勢場、單元分解、快速搜尋樹(RRT)等

local_planner:

eband_local_planner、asr_ftc_local_planner、dwa_local_planner、teb_local_planner

傳統的人工勢場、單元分解法需要對空間的障礙物進行精確建模,那麼當環境障礙物多而複雜時,將導致規劃演算法計算量較大。

基於隨機取樣技術PRM演算法可以有效解決“高維空間”和“複雜約束”中的路徑規劃問題。

1.簡介

PRM(Probabilistic Roadmap)是一種基於圖搜尋的方法,一共分為兩個步驟:學習階段,查詢階段

特點:將連續空間轉換成離散空間,在利用A*等搜尋演算法 在路線圖上尋找路徑,以提高搜尋效率。

這種方法能用相對少的隨機取樣點來找到一個解,對多數問題而言,相對少的樣本足以覆蓋大部分可行的空間,並且找到路徑的概率為1(隨著取樣數增加,P<找到一條路徑>指數的趨於1)。顯然,取樣點太少,或者分佈不合理時,PRM演算法是不完備的,但是隨著取樣點的增加,也可以到達完備。所以PRM是概率完備且不最優的。

用隨機路徑圖(PRM)演算法尋找給定地圖中兩點之間的路徑,PRM進行路徑的步驟:

1.學習階段:

在給定圖的自由空間裡隨機撒點(自定義個數),構建一個路徑網格圖。

a>構造步驟

b>擴張步驟

2.查詢階段

查詢從一個起點到一個終點的路徑。

a>區域性路徑規劃

b>距離計算

c>碰撞檢測

2、詳細解析

2.1PRM學習階段

PRM學習階段包含兩部分內容:

構造步驟

該步驟構造一個無向圖的路徑網格R=(N,E),其中N代表隨機點集,E代表所有可能的兩點中間的路徑集。

論文中給出的虛擬碼是:略

文字說明

步驟1~2:初始化兩個集合,其中N:隨機點集,E:路徑集。

 步驟5~8:對每一個新的節點c,我們從當前N中選擇一系列的相鄰n,並且使用local planner進行路徑規劃

步驟9~10:將可行駛的路徑的邊界(c,n)加入到E集合中,不可行的路徑去掉。

圖說明略,參照參考文章

除了基於圖搜尋的方法,還有另外一大類基於樹狀結構的搜尋演算法,其中最著名的就是快速擴充套件隨機樹法(Randomly Exploring Randomized Trees,RRT)了。RRT演算法是從起始點開始向外拓展一個樹狀結構,而樹狀結構的拓展方向是通過在規劃空間內隨機採點確定的。與PRM類似,該方法是概率完備且不最優的。

雖然基於取樣的規劃演算法速度很快,但他們也有缺點,那就是由隨機取樣引入的隨機性。利用RRT和PRM演算法進行運動規劃,使用者無法對規劃結果進行預判,每次規劃的結果都不一樣,缺乏可重複性。與解析演算法的確定結果不同,隨機方法對同一個規劃問題的表現可能時好時壞,連續出現完全相同的規劃結果的概率很低。要判斷演算法對於某一規劃問題的效果往往需要多次反覆的試。基於隨機取樣的運動規劃方法無法預測下一次規劃是否能夠成功,更無法預測下一次的路徑或者軌跡的引數。