RRT與RRG路徑搜索算法


一、RRT(rapidly exploring random tree)

偽代碼:

 1 function BuildRRT(qinit, k, Δq)
 2     T.init(qinit)
 3     for k = 1 to k
 4         qrand = Sample()
 5         qnearest = Nearest(T, qrand)
 6         if Distance(qnearest, qgoal) < Threshold then
 7             return true
 8         qnew = Extend(qnearest, qrand. Δq)
 9         if qnew ≠ NULL then
10             T.AddNode(qnew)
11     return false
12 
13 function Sample()
14     p = Random(0, 1.0)
15     if 0 < p < Prob then
16         return qgoal
17     elseif Prob < p < 1.0 then
18         return RandomNode()

  初始化時隨機樹T只包含一個節點:根節點qint。首先,隨機函數采樣函數Sample從狀態空間中隨機選擇一個采樣點qrand,然后Nearest函數從隨機樹中選擇一個距離qrand最近的節點qnearest。通過Distance函數判斷qnearest與qgoal之間的距離是否小於設定的閾值,若小於閾值,說明隨機樹到達了目標點,返回true,若大於閾值,則通過Extend函數從qnearest向qrand擴展一定距離,得到新的節點qnew。如果qnew與障礙物發生碰撞,則Extend函數返回NULL,放棄此次生長。為了使算法可控,可以設定運行時間上限或搜索次數上限。如果在限制次數內無法到達目標點,則算法返回失敗。

  為了加快隨機樹到達目標點的速度,簡單的改進方法是:在隨機樹每次的生長過程中,根據隨機概率來決定qrand是目標點還是隨機點。在Sample函數中設定參數Prob,每次得到一個0到1.0的隨機值p,當0<p<Prob的時候,隨機樹朝目標點生長行;當Prob<p<1.0時,隨機樹朝一個隨機方向生長。
  

二、RRG(rapidly exploring random graph)

  偽代碼:

 1 RRG on Point Cloud
 2     Requires  M
 3     G <- Ns, i <- 0
 4     while i <= N do
 5         Cr <- sample()
 6         Nc <- nearest(Cr, G)
 7         Nn.c <- intersect(Nc.c, Cr)
 8         Nn.r <- radius_search(Nn.c, M)
 9         if Nn.r > λr then
10             G <- GUNn
11             connect(Nc, Nn)
12             for all Nj ∈ neighbor(Nn, G) do
13                 if overlap_volume(Nj, Nn) > λv then
14                     connect(Nj, Nn)
15                 end if
16             end for
17         end if
18         i <- i + 1
19     end while

  目的:生成一個由球體安全區域構成的圖

  首先,圖G由唯一節點Ns初始化,每個節點N具有兩個屬性:中心點3D位置N.c和半徑N.r。當通過隨機采樣函數sample獲得新的點Cr,nearest函數在G中尋找距離Cr最近的節點Nc。intersect函數生成一條由Cr到Nc.c的射線,並返回射線與Nc球體相交的點Nn.c,我們把這個點作為新節點Nn的中心位置,通過半徑搜索函數radius_search在地圖M中尋找一個最大的安全球體半徑Nn.r,如果尋找到的半徑足夠大,這個新節點會被加入到G中,並將其與Nc相連。同時,我們將與Nn相交的所有節點找到,根據重疊體積的大小來決定是否將Nn與它們相連,這個大小要能夠使得無人機或機器人安全的穿過。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM