路徑規劃: PRM 路徑規劃演算法 (Probabilistic Roadmaps 隨機路標圖)
路徑規劃作為機器人完成各種任務的基礎,一直是研究的熱點。研究人員提出了許多規劃方法如:
1. A*
2. Djstar
3. D*
4. 隨機路標圖(PRM)法
2. 人工勢場法
2. 單元分解法
4. 快速搜尋樹(RRT)法等。
傳統的人工勢場、單元分解法需要對空間中的障礙物進行精確建模,當環境中的障礙物較為複雜時,將導致規劃演算法計算量較大。
基於 隨機取樣技術
1. 簡介
如上圖所示,PRM(Probabilistic Roadmaps)
是一種基於圖搜尋的方法,一共分為兩個步驟:學習階段
, 查詢階段
它將連續空間轉換成離散空間,再利用A*等搜尋演算法在路線圖上尋找路徑,以提高搜尋效率。
這種方法能用相對少的隨機取樣點來找到一個解,對多數問題而言,相對少的樣本足以覆蓋大部分可行的空間,並且找到路徑的概率為1(隨著取樣數增加,P(找到一條路徑)指數的趨向於1)。顯然,當取樣點太少,或者分佈不合理時,PRM演算法是不完備的,但是隨著採用點的增加,也可以達到完備。所以PRM是概率完備且不最優的。
用隨機路徑圖(PRM)法尋找給定地圖中兩點之間的路徑,PRM進行路徑規劃的步驟:
學習階段:
在給定圖的自由空間裡隨機撒點
(自定義個數),構建一個路徑網路圖
。
a)構造步驟
b)擴張步驟查詢階段:
查詢從一個起點到一個終點的路徑。
a)區域性路徑規劃
b)距離計算
c)碰撞檢查
2. 詳解
2.1 PRM學習階段
PRM學習階段包含兩部分內容:
構造步驟
該步驟構造一個無向圖的路徑網路, 其中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寫出一個圖演算法打印出所有可能的路徑,自己獨自一個人思考了 很久,期間沒有參考任何資料