bug演算法就是為了應對一些簡單的障礙物而提出的,其說明如下:
沿著起始點與終點的連線m運動;
遇到障礙物,則繞著障礙物順(或逆)時針運動,直到回到連線m。
蟻群演算法(ant colony optimization)其實是一種優化演算法,但完全可以直接用到路徑規劃問題上。這種演算法能夠得到既完備又最優的路徑,但由於收斂速度不快,並未得到太廣泛應用。
勢場對應著能量分布,最常見的勢場就是重力場了,我們在不同高度會擁有不同重力勢能。斜面上的球會自然沿著斜面往下滾。
受此現象的啟發,人們便想到人工勢場法,人工新增勢場函式,讓目標點處於谷底,距離目標點越遠的勢場越高,同時,為了避免發生碰撞,可以在障礙物四周新增排斥勢場(障礙物處勢能最大)。
人工勢場非常直觀,且對運算量要求不高,可以跟機械人的控制相結合。實驗室的師兄們曾在中型組足球機械人比賽中使用過這個方法。
當然,勢場法的乙個問題就是沒辦法避開區域性極小值問題,所以該方法是不完備的,同時也是非最優化的。
另外有一大類演算法則是先將運動規劃問題轉換成圖(graph),之後利用各種圖搜尋演算法解決問題。這裡簡單介紹一下圖搜尋演算法。
圖是圖論(graph theory)裡的乙個概念,它表示一類用若干離散節點(vertices、node、points)與連線節點的邊線(edges,lines,arcs)表示的拓撲結構。
對於在乙個圖上尋找到一條最短路徑的問題,圖論中已經有很多方法了,其中在規劃領域最著名的兩個分別是dijkstra演算法和a*演算法。
空間離散法就更簡單了,按照某一尺寸劃分網格,包含障礙物的網格認為不可通過,這樣便得到乙個網格圖,之後按照四連通或八連通的方法得到乙個圖。
顯然如果網格尺寸太大的話,可能會造成連通路徑堵塞,因此該方法是解析度完備(resolution complete)且最優的。
這個演算法在即時戰略遊戲裡面用得非常多,雖然我不知道紅警是不是這樣實現的,但我知道開源紅警openra(openra.net)是採用的空間離散+a*演算法(github上有原始碼)。
隨機路圖(probabilistic road maps,prm)就是在規劃空間內隨機選取n個節點,之後連線各節點,並去除與障礙物接觸的連線,由此得到乙個隨機路圖。
顯然,當取樣點太少,或者分布不合理時,prm演算法是不完備的,但是隨著採用點的增加,也可以達到完備。所以prm是概率完備且不最優的。
除了上述方法外,還有很多其他構建搜尋圖的方法,如voronoi圖法、cell decomposition等。
除了基於圖搜尋的方法,還有另外一大類基於樹狀結構的搜尋演算法,其中最著名的就是快速擴充套件隨機樹法(randomly exploring randomized trees,rrt)了。
rrt演算法是從起始點開始向外拓展乙個樹狀結構,而樹狀結構的拓展方向是通過在規劃空間內隨機採點確定的。與prm類似,該方法是概率完備且不最優的。
機械臂與平面機械人的區別主要在兩個部分,乙個是規劃空間不同,另乙個是機械臂往往具有更高的自由度。
以上演算法都將機械人看做乙個點,要想對機械臂進行規劃,我們就應該想辦法將機械臂用乙個點來描述。於是,我們就要簡單說一下構形空間(configuration space,或c-space)了。
構形空間,顧名思義就是與機械人構形相關的空間了。
對於平面移動機械人,由於它具有一定尺寸,所以也不能直接當做點來處理。直觀的看,如果我們把機械人當做乙個點,就應該相應地將障礙物進行膨脹,這個膨脹處理的拓撲方法叫做閔科夫斯基和(minkowski sum)。
但是,機械臂的構形空間就沒辦法簡單地用閔科夫斯基和來處理了。我們知道,用廣義座標(通常為各關節角度)可以將機械臂用乙個點描述,如六自由度機械人可用六維向量空間的乙個點(θ1,θ2,θ3,θ4, θ5, θ6)描述。
但是,相應的障礙物的描述就比較麻煩了,由於機械臂逆解存在多解和奇異等問題,所以從工作空間到構形空間的對映是非線性的,目前沒有很好的方法將工作空間的障礙物直接對映到構形空間。對此,一般做法是對構形空間離散化,對構形空間的每個網格判斷是否存在障礙物。
接上文,而ompl (open motion planning library), 開源運動規劃庫,就是乙個運動規劃的c++庫,其包含了很多運動規劃領域的前沿演算法。雖然ompl裡面提到了最優規劃,但 總體來說ompl還是乙個取樣規劃演算法庫 。而取樣規劃演算法中,最出名的莫過於 rapidly-exploring random trees ( rrt ) 和 probabilistic roadmap ( prm )了, 當然,這兩個是比較老的,還有很多 其他 新演算法。
具體基本教程參考這裡:
命運 (動態規劃)
穿過幽谷意味著離大魔王lemon已經無限接近了!可誰能想到,yifenfei在斬殺了一些蝦兵蟹將後,卻再次面臨命運大迷宮的考驗,這是魔王lemon設下的又乙個機關。要知道,不論何人,若在迷宮中被困1小時以上,則必死無疑!可憐的yifenfei為了去救mm,義無返顧地跳進了迷宮。讓我們一起幫幫執著的他...
命運(動態規劃)
problem description 穿過幽谷意味著離大魔王lemon已經無限接近了!可誰能想到,yifenfei在斬殺了一些蝦兵蟹將後,卻再次面臨命運大迷宮的考驗,這是魔王lemon設下的又乙個機關。要知道,不論何人,若在迷宮中被困1小時以上,則必死無疑!可憐的yifenfei為了去救mm,義無...
運動規劃 PT and PVT 模式
最近專案成員在做機械人上層開發時,經常說到pt模式和pvt模式。一直沒搞懂這兩種模式的實際差別。上網檢索進行學習.ref link pt模式 位置 時間路徑插值演算法 pvt模式 位置 速度 時間路徑插值演算法 普通特點 pt和pvt演算法將一系列的點與時間寫入到控制卡中,在每個取樣建立乙個實時的位...