運動規劃之OMPL-I

1.Walk To算法

  • 直接朝着目標走,直到到達目標點爲止。
  • 很多 RPG 遊戲就採用了這種簡單的算法
  • 最優性,但不完備

2.Bug算法

Bug算法就是爲了應對一些簡單的障礙物而提出的,其說明如下:

沿着起始點與終點的連線M運動;

遇到障礙物,則繞着障礙物順(或逆)時針運動,直到回到連線M。

3. 蟻羣算法

蟻羣算法(Ant Colony Optimization)其實是一種優化算法,但完全可以直接用到路徑規劃問題上。這種算法能夠得到既完備又最優的路徑,但由於收斂速度不快,並未得到太廣泛應用。

 

4. 人工勢場法

勢場對應着能量分佈,最常見的勢場就是重力場了,我們在不同高度會擁有不同重力勢能。斜面上的球會自然沿着斜面往下滾。

受此現象的啓發,人們便想到人工勢場法,人工添加勢場函數,讓目標點處於谷底,距離目標點越遠的勢場越高,同時,爲了避免發生碰撞,可以在障礙物四周添加排斥勢場(障礙物處勢能最大)。

 

人工勢場非常直觀,且對運算量要求不高,可以跟機器人的控制相結合。實驗室的師兄們曾在中型組足球機器人比賽中使用過這個方法。

當然,勢場法的一個問題就是沒辦法避開局部極小值問題,所以該方法是不完備的,同時也是非最優化的。

5. 圖搜索

另外有一大類算法則是先將運動規劃問題轉換成圖(graph),之後利用各種圖搜索算法解決問題。這裏簡單介紹一下圖搜索算法。

圖是圖論(Graph Theory)裏的一個概念,它表示一類用若干離散節點(vertices、node、points)與連接節點的邊線(edges,lines,arcs)表示的拓撲結構。

 對於在一個圖上尋找到一條最短路徑的問題,圖論中已經有很多方法了,其中在規劃領域最著名的兩個分別是Dijkstra算法和A*算法。

6. 空間離散法

空間離散法就更簡單了,按照某一尺寸劃分網格,包含障礙物的網格認爲不可通過,這樣便得到一個網格圖,之後按照四連通或八連通的方法得到一個圖。

顯然如果網格尺寸太大的話,可能會造成連通路徑堵塞,因此該方法是分辨率完備(Resolution Complete)且最優的。

   這個算法在即時戰略遊戲裏面用得非常多,雖然我不知道紅警是不是這樣實現的,但我知道開源紅警OpenRA(openra.net)是採用的空間離散+A*算法(github上有源碼)。

7. 隨機路圖法PRM

隨機路圖(Probabilistic Road Maps,PRM)就是在規劃空間內隨機選取N個節點,之後連接各節點,並去除與障礙物接觸的連線,由此得到一個隨機路圖。

顯然,當採樣點太少,或者分佈不合理時,PRM算法是不完備的,但是隨着採用點的增加,也可以達到完備。所以PRM是概率完備且不最優的。

  除了上述方法外,還有很多其他構建搜索圖的方法,如Voronoi圖法、Cell Decomposition等。

8. 快速擴展隨機樹法RRT

除了基於圖搜索的方法,還有另外一大類基於樹狀結構的搜索算法,其中最著名的就是快速擴展隨機樹法(Randomly Exploring Randomized Trees,RRT)了。

RRT算法是從起始點開始向外拓展一個樹狀結構,而樹狀結構的拓展方向是通過在規劃空間內隨機採點確定的。與PRM類似,該方法是概率完備且不最優的。

9. 拓展到機械臂(CSpace+多維)

機械臂與平面機器人的區別主要在兩個部分,一個是規劃空間不同,另一個是機械臂往往具有更高的自由度。

  • 構形空間C-Space

以上算法都將機器人看做一個點,要想對機械臂進行規劃,我們就應該想辦法將機械臂用一個點來描述。於是,我們就要簡單說一下構形空間(Configuration Space,或C-Space)了。

構形空間,顧名思義就是與機器人構形相關的空間了。

對於平面移動機器人,由於它具有一定尺寸,所以也不能直接當做點來處理。直觀的看,如果我們把機器人當做一個點,就應該相應地將障礙物進行膨脹,這個膨脹處理的拓撲方法叫做閔科夫斯基和(Minkowski Sum)

 

但是,機械臂的構形空間就沒辦法簡單地用閔科夫斯基和來處理了。我們知道,用廣義座標(通常爲各關節角度)可以將機械臂用一個點描述,如六自由度機器人可用六維向量空間的一個點(θ1,θ2,θ3,θ4, θ5, θ6)描述。

但是,相應的障礙物的描述就比較麻煩了,由於機械臂逆解存在多解和奇異等問題,所以從工作空間到構形空間的映射是非線性的,目前沒有很好的方法將工作空間的障礙物直接映射到構形空間。對此,一般做法是對構形空間離散化,對構形空間的每個網格判斷是否存在障礙物。

 

開源運動規劃庫 (OMPL). 

接上文,而OMPL (Open Motion Planning Library), 開源運動規劃庫,就是一個運動規劃的C++庫,其包含了很多運動規劃領域的前沿算法。雖然OMPL裏面提到了最優規劃,但 總體來說OMPL還是一個採樣規劃算法庫 。而採樣規劃算法中,最出名的莫過於 Rapidly-exploring Random Trees ( RRT ) 和 Probabilistic Roadmap ( PRM )了, 當然,這兩個是比較老的,還有很多 其他 新算法。 

具體基本教程參考這裏:https://www.cnblogs.com/uestc-mm/p/15885485.html 

Reference

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章