6.1原理 Dynamic RRT和Extended RRT一樣,也是用來解決動(dòng)態(tài)路徑規(guī)劃問題,它們的思想有一點(diǎn)是共通的,那就是不要完全放棄初始RRT生成的樹或初始路徑的信息,而是在此基礎(chǔ)上重新規(guī)劃。Dynamic RRT和Extended RRT的區(qū)別在于,Extended RRT利用的是RRT生成的初始路徑的信息,而Dynamic RRT利用的是RRT生成的初始RRT樹的信息。思路如下: 在老地圖中,用RRT算法生成了一個(gè)RRT樹,在新地圖中,原始RRT樹的節(jié)點(diǎn)信息(坐標(biāo)、父節(jié)點(diǎn))存儲(chǔ)在一個(gè)節(jié)點(diǎn)集合中。在新地圖中,先檢測(cè)新地圖中比老地圖多出的障礙物,然后,以碰撞檢測(cè)為評(píng)判根據(jù),刪除老節(jié)點(diǎn)集合中與新障礙物無法通過碰撞檢測(cè)的節(jié)點(diǎn)和邊。的到一顆修建過后的與新地形無碰撞的修剪后RRT樹,然后再在這顆修剪后的額RRT樹的基礎(chǔ)上,繼續(xù)生長(zhǎng)這棵樹,直到這棵樹連接起點(diǎn)和終點(diǎn),然后回溯路徑,得出新路徑。①?gòu)膹某跏寂渲玫侥繕?biāo)配置生成的 RRT 開始(圖(a))。 ②當(dāng)配置空間發(fā)生變化時(shí)(例如通過接收新信息),將RRT中因這些變化而失效的所有部分標(biāo)記為無效(圖(b)和(c))。 ③然后我們修剪樹以去除所有這些無效部分(圖(d))。 ④此時(shí),保證樹中剩余的所有節(jié)點(diǎn)和邊都是有效的,但樹可能不再達(dá)到目標(biāo)。最后,我們把樹長(zhǎng)出來,直到再次達(dá)到目標(biāo)6.2 偽碼6.3 程序示例加入新的障礙物后,被該障礙物折斷的剩余的圖:在原來的樹的基礎(chǔ)上,繼續(xù)生長(zhǎng)后的圖:6.4 參考Replanning with RRTs
5.1 原理 在現(xiàn)實(shí)世界的場(chǎng)景中,通常會(huì)出現(xiàn)這樣的情況:有關(guān)環(huán)境的初始可用信息是不完整的,或者環(huán)境本身是動(dòng)態(tài)的。在這些情況下,當(dāng)接收到新信息時(shí),初始解決方案可能會(huì)失效,例如通過機(jī)載傳感器。當(dāng)這種情況發(fā)生時(shí),通常會(huì)放棄當(dāng)前的 RRT,并從零開始生長(zhǎng)新的 RRT。這可能是一項(xiàng)非常耗時(shí)的操作,尤其是在規(guī)劃問題很復(fù)雜的情況下。另一方面,在確定性規(guī)劃界存在重規(guī)劃算法,當(dāng)這種變化發(fā)生時(shí),它們能夠有效地修復(fù)之前的解決方案,而不需要從頭重新規(guī)劃。這就是通過連續(xù)域規(guī)劃路徑的問題,如果每次更新地圖,都用RRT重新規(guī)劃,效率相當(dāng)?shù)拖?。Extended_RRT則專門用于解決這種動(dòng)態(tài)路徑規(guī)劃問題。 Extended_RRT的思路是這樣的:在老地圖中,由RRT算法得出的路徑,在障礙物動(dòng)態(tài)變化不太大的前提下,在新地圖中,大概率也是能通過的,就算障礙物變化很大,之前的路徑也或多或少包含了當(dāng)前障礙物區(qū)域的信息,所以,在新障礙物區(qū)域中,在重新規(guī)劃路徑時(shí),原有的初始RRT路徑的信息可以利用上,而沒有必要完完全全重零開始用RRT來規(guī)劃。 那么如何利用上初始RRT路徑的信息呢?思路如下: 在老地圖上先用RRT算法的處一條初始路徑,將這條初始路徑上的節(jié)點(diǎn)存儲(chǔ)在集合waypoints中,當(dāng)環(huán)境更新后,希望在新地圖上得出一條路徑,在隨機(jī)撒點(diǎn)的步驟,新的隨機(jī)點(diǎn)有概率p落在目標(biāo)節(jié)點(diǎn)處,此外,還有r的概率落在waypoints的節(jié)點(diǎn)中,剩余1-p-r的概率在目標(biāo)區(qū)域內(nèi)隨即撒點(diǎn)。這樣在重規(guī)劃時(shí),就可以把初始路徑的信息利用進(jìn)來。完成隨機(jī)點(diǎn)選取后,剩余的碰撞檢測(cè)、樹的生長(zhǎng)、路徑回溯步驟與RRT一致??偨Y(jié):Extended_RRT適用于需要反復(fù)路徑重規(guī)劃的場(chǎng)景中,效率比直接重新進(jìn)行RRT要高得多,和RRT的主要區(qū)別在于,在選取新的隨機(jī)點(diǎn)時(shí),利用上了初始路徑的信息,而不是完全隨機(jī)撒點(diǎn)。5.2偽碼5.3 程序示例5.4 參考1、Real-Time Randomized Path Planning for Robot Navigation* 2、Extended RRT algorithm with dynamic N-dimensional cuboid domains3、Replanning with RRTs
原理相比于最原始的 RRT 算法的一些缺點(diǎn),提出的一種改進(jìn)的 RRT 算法 為了加快隨機(jī)樹到達(dá)目標(biāo)點(diǎn)的速度,簡(jiǎn)單的改進(jìn)方法是:在隨機(jī)樹每次的生長(zhǎng)過程中,根據(jù)隨機(jī)概率(0.0 到 1.0 的隨機(jī)值 p)來選擇生長(zhǎng)方向是目標(biāo)點(diǎn)還是隨機(jī)點(diǎn)。2001 年,LaValle在采樣策略方面引入 RRT GoalBias 與 RRT GoalZoom,RRT GoalBias 方法中,規(guī)劃器隨機(jī)采樣的同時(shí),以一定概率向最終目標(biāo)運(yùn)動(dòng);RRTGoalZoom 方法中,規(guī)劃器分別在整個(gè)空間和目標(biāo)點(diǎn)周圍的空間進(jìn)行采樣。 和普通RRT的區(qū)別僅在于隨機(jī)撒點(diǎn)的時(shí)候有區(qū)別,這個(gè)p越大,算法越快,但對(duì)于復(fù)雜地形,可能會(huì)陷入局部極小處,反而變慢。一般取p=0.1程序示例參考Rapidly-Exploring Random Trees: A New Tool for Path Planning
2.1 原理雙樹RRT是在原本RRT的基礎(chǔ)上多加了?顆隨機(jī)探索樹,各自從起點(diǎn)和終點(diǎn)向外探索拓展,直到兩棵樹相遇時(shí)規(guī)劃算法收斂。這種改進(jìn)過的探索策略可以??提?RRT的運(yùn)?效率。 雙樹RRT中存在兩顆隨機(jī)樹,我們將其命名為A和B,A以起點(diǎn)為根節(jié)點(diǎn),B以終點(diǎn)為根節(jié)點(diǎn)。兩顆隨機(jī)樹的拓展方式和單樹RRT的別無二致,同樣都需要經(jīng)歷隨機(jī)采樣+步?限制+碰撞檢測(cè)這三個(gè)步驟,但是不同的地?在于雙樹RRT的隨機(jī)樹是交替生長(zhǎng)的,??說第?輪迭代中A樹向外??,第?輪便切換為B樹??,如此循環(huán)。 在每輪迭代中,隨機(jī)樹除了向外拓展之外,還會(huì)多出?個(gè)步驟,就是遍歷另一顆隨機(jī)樹中的所有節(jié)點(diǎn),找出離NewNode最近的節(jié)點(diǎn),用于判斷兩顆隨機(jī)樹是否相遇。 假設(shè)算法經(jīng)歷了N次迭代以后,已經(jīng)拓展出如下圖所示的兩顆隨機(jī)樹。并且在下?輪迭代中,輪到A樹進(jìn)?拓展,A樹在圖中?綠?線條表示,B樹?黃色線條表示。當(dāng)進(jìn)?本輪迭代后,算法成功拓展出A樹的新節(jié)點(diǎn)NewNode_A,此時(shí)算法將遍歷B樹中的所有節(jié)點(diǎn),找出B樹中離NewNode_A最近的節(jié)點(diǎn)ClosestNode_B。并判斷?者是否滿?步?限制以及是否可以通過步?檢測(cè)。如下圖所示,這種情況明顯?法通過碰撞檢測(cè)。那么A樹和B樹在這?輪迭代中?法相遇,需要接著下?輪迭代。進(jìn)?下?輪迭代,這次便切換為B樹進(jìn)?拓展,假設(shè)算法拓展出的NewNode_B以及遍歷A樹后得到的ClosestNode_A如下圖所示,經(jīng)過判斷發(fā)現(xiàn)?者滿?步?限制并且通過了碰撞檢測(cè),那么這時(shí)A樹和B樹就成功得相遇了,規(guī)劃算法收斂當(dāng)算法收斂以后,只需在兩棵樹的相遇處分別沿著?節(jié)點(diǎn)回溯便可以找出從起點(diǎn)到終點(diǎn)的有效路徑。注意:雙向RRT和RRT的區(qū)別不僅僅是在于雙向生長(zhǎng),雙向RRT比RRT更“貪心”,相比于RRT在生長(zhǎng)RRT樹的時(shí)候,是每產(chǎn)生一個(gè)隨機(jī)點(diǎn),如果能通過碰撞檢測(cè),就往該隨機(jī)點(diǎn)的方向生長(zhǎng)一次,然后該隨機(jī)點(diǎn)就被廢棄了,下一步想繼續(xù)生長(zhǎng)RRT樹的話,就只能繼續(xù)生成新的隨機(jī)點(diǎn),每個(gè)隨機(jī)點(diǎn)最多利用一次。而雙向RRT在生長(zhǎng)RRT樹時(shí),先先生成一個(gè)隨機(jī)點(diǎn),然后,該樹往該隨機(jī)點(diǎn)的方向生長(zhǎng),直到碰到障礙物或則生長(zhǎng)到該隨機(jī)點(diǎn),這樣,一個(gè)隨機(jī)點(diǎn)就被多次利用,加快了速度。2.2 偽碼2.3 程序示例2.4 收斂性分析雙向RRT的收斂性分析可以應(yīng)用RRT的收斂性分析2.5 參考1、RRT-Connect: An Efficient Approach to Single-Query Path Planning2、https://www.guyuehome.com/9405
1.1 RRT算法思路我們有兩個(gè)節(jié)點(diǎn),一個(gè)綠色的起點(diǎn),一個(gè)黃色的終點(diǎn)對(duì)于RRT,我們做的第一件事就是將起點(diǎn)設(shè)置為隨機(jī)樹的根,那么我們就擁有了一顆只有根節(jié)點(diǎn)的樹這棵樹光禿禿的,只有根節(jié)點(diǎn)的話不但難看,而且還沒用。那么我們這時(shí)候就需要從這個(gè)根節(jié)點(diǎn)出發(fā),向外拓展出新的葉?。拓展的方式很簡(jiǎn)單,就是隨機(jī)采樣+步?限制+碰撞檢測(cè)。 RRT在每輪迭代中會(huì)?成?個(gè)隨機(jī)采樣點(diǎn)NewNode,如果NewNode位于自由區(qū)域,那么我們就可以遍歷隨機(jī)樹中已有的全部節(jié)點(diǎn),找出距離NewNode最近的節(jié)點(diǎn)ClosestNode。利?距離函數(shù)dist(NewNode, ClosestNode)得到二者之間的距離,如果滿足步長(zhǎng)限制的話,我們將接著對(duì)這兩個(gè)節(jié)點(diǎn)進(jìn)?碰撞檢測(cè),如果不滿足步長(zhǎng)限制的話,我們需要沿著NewNode和ClosestNode的連線?向,找出?個(gè)符合步長(zhǎng)限制的中間點(diǎn),用來替代NewNode。最后如果NewNode和ClosestNode通過了碰撞檢測(cè),就意味著二者之間存在邊(edge),我們便可以將NewNode添加進(jìn)隨機(jī)樹中。首先以第一輪迭代為例,因?yàn)閯傞_始我們的隨機(jī)樹中只有根節(jié)點(diǎn),所以?論NewNode位于何處,遍歷出的最近節(jié)點(diǎn)ClosestNode必然是根節(jié)點(diǎn)。 假設(shè)我們遇到下圖這種情況,雖然采樣點(diǎn)NewNode位于步?限制之內(nèi),但是卻很不巧沒有落在自由區(qū)域,即采樣點(diǎn)落在障礙物的位置時(shí),這個(gè)采樣點(diǎn)會(huì)被算法舍棄。假設(shè)我們的步?限制為R,也就是說對(duì)于每個(gè)ClosestNode節(jié)點(diǎn)來說,只有當(dāng)NewNode落在其半徑為R的圓的范圍內(nèi)時(shí),這個(gè)隨機(jī)采樣點(diǎn)NewNode才有可能被直接采納。如下圖所示,該紅?隨機(jī)采樣點(diǎn)雖然位于?由區(qū)域,但是明顯在根節(jié)點(diǎn)的步?限制之外。不過這個(gè)節(jié)點(diǎn)并不會(huì)被簡(jiǎn)單粗暴地舍棄。?是會(huì)沿著ClosestNode和NewNode的連線,找出符合步?限制的中間點(diǎn),將這個(gè)中間點(diǎn)作為新的采樣點(diǎn)。如下圖所示,藍(lán)點(diǎn)就可以替代紅點(diǎn)作為新的采樣點(diǎn)。那么假設(shè)我們已經(jīng)通過第?輪迭代拓展出第?個(gè)葉?節(jié)點(diǎn)A,毫?疑問地A的?節(jié)點(diǎn)就是根節(jié)點(diǎn),假設(shè)我們第?輪迭代的隨機(jī)采樣點(diǎn)NewNode為圖中的點(diǎn)B,B落在A的步?限制范圍內(nèi),但是A,B之間由于障礙物的阻擋,?法通過碰撞檢測(cè),于是B就會(huì)被算法舍棄。假設(shè)我們的隨機(jī)采樣點(diǎn)是下圖中的B’,明顯B’位于?由區(qū)域,滿?步?條件,并且可以通過與點(diǎn)A的碰撞檢測(cè),那么我們就在B’和A之間添加?條邊,并且將A設(shè)置為B’的?節(jié)點(diǎn)。學(xué)過數(shù)據(jù)結(jié)構(gòu)的?伙伴?定知道,在樹結(jié)構(gòu)中每個(gè)節(jié)點(diǎn)最多只有?個(gè)?節(jié)點(diǎn),?節(jié)點(diǎn)可以擁有多個(gè)?節(jié)點(diǎn)。在經(jīng)歷了N輪迭代后,我們已經(jīng)獲得了?顆如下圖所示的隨機(jī)樹,這時(shí)我們發(fā)現(xiàn)此時(shí)的隨機(jī)采樣點(diǎn)竟然幸運(yùn)地落在了終點(diǎn)的步?限制范圍內(nèi),并且?者之間不存在障礙物。這時(shí)我們便可以認(rèn)為,該采樣點(diǎn)和終點(diǎn)之間存在?條邊,于是將該節(jié)點(diǎn)設(shè)為終點(diǎn)的?節(jié)點(diǎn),并把終點(diǎn)添加進(jìn)隨機(jī)樹。此時(shí)算法就可以結(jié)束迭代了,即規(guī)劃算法收斂。當(dāng)規(guī)劃算法收斂以后,只需要從終點(diǎn)開始,沿著其?節(jié)點(diǎn)進(jìn)?回溯,就可以找 到起點(diǎn)-終點(diǎn)之間的有效路徑。那么總結(jié)?下,RRT?成的每輪迭代中都包含以下這些流程:1. ?成?個(gè)隨機(jī)采樣點(diǎn)NewNode,并判斷采樣點(diǎn)是否位于?由區(qū)域2. 遍歷隨機(jī)樹,找出距離NewNode最近的節(jié)點(diǎn)ClosestNode3. 判斷NewNode是否在ClosestNode的步?限制范圍內(nèi),否則尋找中間點(diǎn)替代NewNode4. 判斷NewNode和ClosestNode之間是否存在障礙物,即碰撞檢測(cè)。5. 如果NewNode滿?以上所有約束條件,則將NewNode添加進(jìn)隨機(jī)樹,設(shè)置ClosestNode為NewNode的?節(jié)點(diǎn)。6. 判斷NewNode是否在終點(diǎn)的步?限制范圍內(nèi),并對(duì)其?者做碰撞檢測(cè)。如果滿?條件則將該NewNode設(shè)為終點(diǎn)的?節(jié)點(diǎn),并將終點(diǎn)加?隨機(jī)樹,即可結(jié)束迭代。否則繼續(xù)迭代。1.2 偽碼1.3 RRT的收斂性分析本節(jié)主要介紹了該規(guī)劃?法的理論特性。Theorem 1 如果存在長(zhǎng)度為k的連接序列,則將 x_init 連接到 x_goal 所預(yù)期的迭代次數(shù)不超過k/p Pf. 參考S.M. Lavalle and J.J. Kuffffner. "Randomized Kinodynamic Planning." The International Journal of Robotics Research. Vol. 20, Number 5, 2001, pp. 378 – 400. 第392頁(yè)Theorem 2 Pf. 參考S.M. Lavalle and J.J. Kuffffner. "Randomized Kinodynamic Planning." The International Journal of Robotics Research. Vol. 20, Number 5, 2001, pp. 378 – 400. 第393頁(yè)Theorem 3 當(dāng)頂點(diǎn)數(shù)趨于無窮時(shí),在 x_init 處初始化的RRT包含 x_goal 的概率將趨近于1 Pf. 參考S.M. Lavalle and J.J. Kuffffner. "Randomized Kinodynamic Planning." The International Journal of Robotics Research. Vol. 20, Number 5, 2001, pp. 378 – 400. 第394頁(yè)定理1和定理2表示了規(guī)劃器的收斂率,定理3建?了規(guī)劃器是概率完備的(即,當(dāng)?shù)鷶?shù)趨于?窮時(shí),找到解的概率趨于1我們可以看出,由于算法在未達(dá)到收斂條件之前是在不斷進(jìn)?迭代的,所以只要在規(guī)劃的起點(diǎn)和終點(diǎn)之間是存在有效的路徑,那么只要迭代的次數(shù)夠多,那么采樣點(diǎn)就夠多,隨機(jī)樹就長(zhǎng)得越茂密,能探索到的區(qū)域就?夠?,就必然可以找到有效的路徑。所以RRT是概率完備的。但是由于采樣點(diǎn)每次都是隨機(jī)的,所以算法并不能保證找到的路徑是最優(yōu)的路徑。因此RRT是?最優(yōu)的。1.4 程序示例1.5 參考1、S.M. Lavalle and J.J. Kuffffner. "Randomized Kinodynamic Planning." The International Journal of Robotics Research. Vol. 20, Number 5, 2001, pp. 378 – 400.2、Rapidly-Exploring Random Trees: A New Tool for Path Planning3、https://www.guyuehome.com/9405
什么是路徑規(guī)劃? 路徑規(guī)劃(也叫運(yùn)動(dòng)學(xué)規(guī)劃),任務(wù)是確定控制輸入,以驅(qū)動(dòng)機(jī)器人從初始配置和速度到目標(biāo)配置和速度,同時(shí)服從基于物理的動(dòng)力學(xué)模型,且能確保機(jī)器人在環(huán)境中避開障礙。說白了,就是給你一張地圖,且已知障礙物分布,以及起始點(diǎn)和目標(biāo)點(diǎn)的坐標(biāo),希望你根據(jù)這些信息,找到一條從起點(diǎn)到終點(diǎn)的能繞開障礙物的有效路徑,如果可以,還希望這條有效路徑盡可能最優(yōu)(最短),并且希望找到這條有效路徑的時(shí)間盡可能短(算法足夠高效) 目前流行的路徑規(guī)劃分為兩大類:基于采樣的路徑規(guī)劃和基于搜索的路徑規(guī)劃。運(yùn)動(dòng)規(guī)劃的狀態(tài)空間是應(yīng)用于機(jī)器人變換的集合,稱為位姿空間(configuration space),引入了 C-空間、C-空間障礙物、自由空間等一系列概念,下面介紹一些概念:位姿(configuration)機(jī)器人一個(gè)位姿指的是一組相互獨(dú)立的參數(shù)集,它能完全確定機(jī)器人上所有的點(diǎn)在工作空間 W 中的位置,這些參數(shù)用來完整描述機(jī)器人在工作空間 W 中的狀態(tài)。一個(gè)位姿通常表示為帶有位置和方向參數(shù)的一個(gè)向量(vector),用 q 表示。自由度(degrees of freedom)機(jī)器人的自由度定義為機(jī)器人運(yùn)動(dòng)過程中決定其運(yùn)動(dòng)狀態(tài)的所有獨(dú)立參數(shù)的數(shù)目,即 q 的維數(shù)。位姿空間(configuration space)位姿空間是機(jī)器人所有可能位姿組成的集合,代表了機(jī)器人所有可能的運(yùn)動(dòng)結(jié)果,稱為 C-空間,也可簡(jiǎn)記為 C。距離函數(shù)(distance function)C-空間中的距離函數(shù)定義為該空間中的一個(gè)映射
今年的數(shù)學(xué)建模大賽獲獎(jiǎng)名單已公布,有沒有大佬是用北太天元軟件獲獎(jiǎng)的呢?我們探討探討呀!