日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器人学:运动规划】快速搜索随机树(RRT---Rapidly-exploring Random Trees)入门及在Matlab中演示

發布時間:2023/12/31 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器人学:运动规划】快速搜索随机树(RRT---Rapidly-exploring Random Trees)入门及在Matlab中演示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??快速搜索隨機樹(RRT -Rapidly-ExploringRandom Trees),是一種常見的用于機器人路徑(運動)規劃的方法,它本質上是一種隨機生成的數據結構—樹,這種思想自從LaValle在[1]中提出以后已經得到了極大的發展,到現在依然有改進的RRT不斷地被提出來。

??機器人的路徑(運動)規劃的問題被定義為:給定機器人在運動區域的初始位姿qinit和終點位姿qgoal找到一條路徑,即一個位姿的連續序列,使得機器人沿該路徑能夠從初始位姿運動到終點,且不與障礙物發生碰撞。

??對于機械臂來說,一般的運動規劃是在大于等于2的多維構型空間(C-Space)中進行的,然而對于初學者來說,可以首先以2維空間中的路徑規劃為例(例如圖1所示的迷宮),掌握一個初步的概念。



圖1 在一個迷宮中設置起點qinit和終點qgoal

??對于機器人運動規劃問題,現在有很多開源的代碼可供選擇學習,例如OMPL,在CSDN上也有人上傳了一些RRT的代碼,但是大部分是需要積分下載的。為了更加便捷地入門學習RRT的思路,我從Github上找到了一個在Matlab里編寫和仿真的代碼(源碼連接),因為在Matlab中運行程序和可視化相對來說比較簡單,所以現在簡單介紹一下這個程序,算作是對RRT的初步入門學習。 它的偽代碼可以表示成下表:

  • 算法:構建RRT
    ————————————————————
  • 輸入:
    map: 機器人所處環境的信息;
    qinit:機器人的起始位置;
    qgoal:機器人的終點位置;
    k:嘗試生成樹節點的次數;
    deltaqqnearqnew的距離;
    ————————————————————
  • 輸出
    Vertices:RRT的頂點;
    Edges:RRT的邊;
    Path:從qinitqgoal的原始路徑;
    T:連接qinitqgoal的樹;
    PathSmooth:連接qinitqgoal的縮短后的路徑;
    ————————————————————
  • 1:qrand,qnear,qnew?
    2:for i=1 to k
    3:按一定的概率設置qrandqgoal或在map中隨機生成qrand;
    4:qnearfindQNear(qrand,vertices);//在qrand附近找到距離其最近的qnear.
    5:qnewfindQNew(qnear,qrand,deltaq);//生成沿 qnearqrand方向上,距qneardeltaqqnew
    6:對qnewqnear做碰撞檢測;
    7:if 沒有碰撞
    8: VerticesVertices{qnew};
    9: EdgesEdges{qnew,qnear};
    10:if qnew=qgoal or qnewqnearqgoal包圍
    11:pathfillSolutionPath(edges,vertices);//將Edges連接起來,即為生成的路徑。
    12:endif
    13:endif
    14:endfor
    15:pathSmoothsmooth(map,path,vertices,delta);//使用貪心算法提取縮短后的路徑。
    16:Return T;

??需要注意的是在步驟3中該程序使用的方法是以一定的概率將qgoal作為qrand,這樣可以使樹的生長方向偏向終點,這與RRT的原始文獻[1]是不同的。步驟5生成qnew示意圖如圖2所示。




圖2 生成qnew

??對于步驟6的碰撞檢測,可將qnewqnear之間的連線插值出若干個點,如圖3,對每個點做檢測,如果所有的點都不在障礙區域,那么說明兩點之間無障礙。




圖3 碰撞檢測原理

關于最后的一個縮短路徑的步驟15(smooth),原理可見下圖4,從起點qinit開始,依次尋找能夠能夠無碰撞連接終點qgoal的頂點,記錄此點q,再從起點qinit開始,以q為終點尋找,直至起點qinitq能夠無碰撞連接,將所有的q點連接后就得出了縮短后的路徑(PathSmooth)。




圖4 縮短路徑的原理

??運行程序之后得到的效果如圖5所示,其中紅色的路徑為原始路徑,黑色的路徑為縮短(Smooth)后的路徑。




圖5 運動規劃效果

[1]LaValle, S.M., Rapidly-exploring random trees: A new tool for path planning. 1998.
[2]https://github.com/emreozanalkan/RRT

總結

以上是生活随笔為你收集整理的【机器人学:运动规划】快速搜索随机树(RRT---Rapidly-exploring Random Trees)入门及在Matlab中演示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。