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

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

路徑規劃作為機器人完成各種任務的基礎,一直是研究的熱點。研究人員提出了許多規劃方法如:
1. A*
2. Djstar
3. D*
4. 隨機路標圖(PRM)法
2. 人工勢場法
2. 單元分解法
4. 快速搜尋樹(RRT)法等。
傳統的人工勢場、單元分解法需要對空間中的障礙物進行精確建模,當環境中的障礙物較為複雜時,將導致規劃演算法計算量較大。
基於 隨機取樣技術

PRM法 可以有效解決 “高維空間” 和 “複雜約束” 中的路徑規劃問題。

1. 簡介

這裡寫圖片描述

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

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

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

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

  1. 學習階段:
    在給定圖的自由空間裡隨機撒點(自定義個數),構建一個路徑網路圖
    a)構造步驟
    b)擴張步驟

  2. 查詢階段:
    查詢從一個起點到一個終點的路徑。
    a)區域性路徑規劃
    b)距離計算
    c)碰撞檢查

2. 詳解

2.1 PRM學習階段

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

構造步驟

該步驟構造一個無向圖的路徑網路R=(N,E), 其中N代表隨機點集,E代表所有可能的兩點之間的路徑集。
論文中給出的虛擬碼是:
這裡寫圖片描述

文字說明

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

步驟 4 : 隨機撒點,將撒的點放入N中,隨機撒點的過程中:
1. 必須是自由空間的隨機點
2. 每個點都要確保與障礙物無碰撞

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

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

圖片說明

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

擴張步驟

參考:

  • Kavraki, L.E., P. Svestka, J.-C. Latombe, and M.H. Overmars. “Probabilistic roadmaps for path planning in high-dimensional configuration spaces,” IEEE Transactions on Robotics and Automation. Vol. 12, No. 4, Aug 1996 pp. 566—580.

相關推薦

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

路徑規劃作為機器人完成各種任務的基礎,一直是研究的熱點。研究人員提出了許多規劃方法如: 1. A* 2. Djstar

路徑規劃PRM路徑規劃演算法Probabilistic Roadmap 隨機路標

global_planner: A*、Dijstra、prm、人工勢場、單元分解、快速搜尋樹(RRT)等 local_planner: eband_local_planner、asr_ftc_local_planner、dwa_local_planner、teb_loc

PRM路徑規劃演算法

%% PRM parameters map=im2bw(imread('map1.bmp')); % input map read from a bmp file. for new maps write the file name here source=[10 10]; % source position

簡述運動規劃路徑規劃,軌跡規劃的定義與區別

背景 因工業機械臂開發需求,瞭解相關領域背景及術語,做歸納性總結並分享。 自主機器人導航的三個問題[1] 1)Where am I? 2)Where I am going? 3)How should I go there? 評價指標 1)合理性 機器人可以執行規劃的路徑的,並符合

JSK-243 三角形的路徑權【動態規劃

示出了一個數字三角形。  請編一個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。   每一步可沿左斜線向下或右斜線向下走;  1< 三角形行數< 25;   三角形中的數字為整數< 1000; 輸入第一行為N,表示有N行 後

leetcode 63動態規劃障礙路徑

與無障礙類似,需多寫的是根據某點狀態判斷到達某點的路徑數。 式為  w[i][j]=(1-obstacleGrid[i][j])*(w[i][j-1]+w[i-1][j]) class Solution {     public int uniquePathsWithOb

leetcode 矩陣中的最長遞增路徑 python【動態規劃

題目描述 **分析:**假設最長路徑終點的是[i][j],則其最長路徑值為nums1[i][j],則nums1[i][j]等於它上下左右四個數中,比它小的數中最長路徑值最大的那一個+1 因此,我們可以從矩陣的最小值出發,其最長路徑值為1,然後計算第二小的數的最長路徑值,以此類推 cla

114. 不同的路徑、115. 不同的路徑 II(動態規劃

解題思路這是一道典型的動態規劃問題,使用一個二維陣列path記憶到達每一點可行的走法總數。首先將左邊界點和上邊界點初始化為1,因為機器人起始與(0,0),左邊界點和上邊界點的走法只有1種。接下來的每一點(i,j),可以由(i-1,j)向右走或是(i,j-1)向下走來到達,因此在(i,j)這一點可到達的方法有p

leetcode:不同路徑(java動態規劃

一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。 問總共有多少條不同的路徑? 例如,上圖是一個7 x 3 的網格。有多少可能的路徑? 說明:m 和 n 的值均不

【LeetCode64 Minimum Path Sum】動態規劃計算路徑

一、問題描述 給定一個m*n的方格,其中每一個方格中都有一個數字,現在從方格最左上方移動到最右下方,每次移動只能是想下移動或者向右移動。對於每一條路徑都對應一個路徑和的概念,即為該路徑中所有方格中數字的和,需要求出最左上方到最右下方的所有路徑中,路徑和最小的那個,並且輸出該

挖地雷(動態規劃 輸出路徑

【例9.6】挖地雷 時間限制: 1000 ms         記憶體限制: 65536 KB  【題目描述】 在一個地圖上有n個地窖(n<=200),每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向在序號

單源最短路徑(Dijkstra)——貪心演算法

  Dijkstra演算法是解單源最短路徑問題的貪心演算法。其基本思想是,設定頂點集合點集合S並不斷地做貪心選擇來擴充這個集合。一個頂點屬於集合S當且僅當從源到該頂點的最短路徑長度已知。初始時,S中僅含有源。設u是G的其一頂點。把從源到u且中間只經過S中頂點的路稱為從源到u的特殊

動態規劃(DP)演算法

    動態規劃相信大家都知道,動態規劃演算法也是新手在剛接觸演算法設計時很苦惱的問題,有時候覺得難以理解,但是真正理解之後,就會覺得動態規劃其實並沒有想象中那麼難。網上也有很多關於講解動態規劃的文章,大多都是敘述概念,講解原理,讓人覺得晦澀難懂,即使一時

《旅遊規劃》之dijkstra演算法

#include<iostream> #include<vector> #include<algorithm> using namespace std; const int N=500; const int INF = 500; int map[N+1][N+1]

資料結構--二叉樹--輸出樹中從根到每個葉子節點的路徑(樹遍歷演算法的應用) .

void AllPath(Bitree T, Stack &S)//輸出二叉樹上從根到所有葉子結點的路徑 { if(T) { Push(S,T->data); if(!T->Left&&!T->Right)/

細談遞迴,備忘錄遞迴,動態規劃,三種演算法思想和執行原理

大家都知道,數值稍大的遞迴執行時間對於開發者來說就是場災難,我們總是想方設法在優化遞迴,或者說不用遞迴,此文中從空間時間角度詳細剖析以上三種演算法的區別,以及執行原理,以斐波那契數為例, 程式語言java 此處為程式碼 package test

最短路徑(二)—Dijkstra演算法(通過邊實現鬆弛:鄰接矩陣)

上一節通過Floyd-Warshall演算法寫了多源節點最短路徑問題: 這一節來學習指定一個點(源點)到其餘各個頂點的最短路徑。也叫做“單源最短路徑”Dijkstra。 例如求下圖中1號頂點到2、3、4、5、6號頂點的最短路徑。 用二維陣列e儲存頂點之間邊的關係,初

五大常用演算法一(回溯,隨機化,動態規劃)

蒙特卡洛演算法 首先要講一下,隨機化演算法之間並不是涇渭分明的,像之前隨機投點法求π也算蒙特卡洛演算法,只有蒙特卡洛演算法與拉斯維加斯演算法有著比較明顯的區別,前者是以高概率給出正確解,但無法確定那個是不是正確解.後者是給出的解一定是正確的,但可能給不出...夠明顯的區別了吧... 基本思想:當所要求解

數學建模演算法 一 簡述(3)規劃模型-整數規劃

整數規劃 定義: 規劃中的變數(全部或部分)限制為整數,稱為整數規劃。若線上性模型中,變數限制為整數,則稱為整數線性規劃。 一類要求問題的解中的全部或一部分變數為整數的數學規劃。從約束條件的構成又可細分為線性,二次和非線性的整數

Program in Lua中演算法的改進(列印所有路徑)

    在Program in Lua第二版,第11.7節中介紹了用lua寫“圖”資料結構的方法, 但書中提供的圖的演算法只能打印出第一條找到的正確路徑,於是我就自己琢磨 著怎麼用lua寫出一個圖演算法打印出所有可能的路徑,自己獨自一個人思考了 很久,期間沒有參考任何資料