一、movebase框架
上圖中move_base
節點提供用於配置,執行和與互動的ros介面。
上面顯示了move_base節點及其與其他元件的互動的高階檢視。主要包含了global_panner與local_panner,分別用於總體路徑規劃與區域性路徑規劃。
預期的機械人行為:
二、全域性規劃器
1. dijkstra與a*對比
1) dijkstra演算法計算源點到其他所有點的最短路徑長度,a*關注點到點的最短路徑(包括具體路徑)。
2) dijkstra演算法建立在較為抽象的圖論層面,a*演算法可以更輕鬆地用在諸如遊戲地圖尋路中。
3) dijkstra演算法的實質是廣度優先搜尋,是一種發散式的搜尋,所以空間複雜度和時間複雜度都比較高。對路徑上的當前點,a*演算法不但記錄其到源點的代價,還計算當前點到目標點的期望代價,是一種啟發式演算法,也可以認為是一種深度優先的演算法。
4) 由第一點,當目標點很多時,a*演算法會帶入大量重複資料和複雜的估價函式,所以如果不要求獲得具體路徑而只比較路徑長度時,dijkstra演算法會成為更好的選擇。
2. dijkstra
dijkstra 演算法是典型最短路演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。
計算過程:3. a stara*(a-star)演算法是一種靜態路網中求解最短路最有效的方法。建立兩個表,open, close。
open表儲存所有已生成而未考察的節點,closed表中記錄已訪問過的節點。
1. 訪問路網中離起始點最近且沒有被檢查過的點,把這個點放入open表中等待檢查。
2. 從open表中找出距起始點最近的點,找出這個點的所有子節點,把這個點放到close表中。
3. 遍歷考察這個點的子節點。求出這些子節點距起始點的距離值,放子節點到open表中。
4. 重複2,3,步。直到open表為空,或找到目標點。
公式表示為: f(n)=g(n)+h(n),
其中f(n) 是節點n從初始點到目標點的估價函式,
g(n) 是在狀態空間中從初始節點到n節點的實際代價,即起始節點到當前節點的實際代價.
h(n)是從n到目標節點最佳路徑的估計代價。即當前節點到目標節點的估計代價.
g(n):對g*(n)的乙個估計,是當前的搜尋圖g中s到n的最優路徑費用 g(n)≥g*(n)
h(n):對h*(n)的估計,是從n到目標節點的估計代價,稱為啟發函式。
例如:當h(n) = 0, g(n) = d, 則f(n) = g(n)就變為了寬度優先搜尋,也就是如果不需要啟發,那就是寬度優先搜尋的演算法了。
保證找到最短路徑(最優解的)條件,關鍵在於估價函式h(n)的選取:
估價值h(n)<= n到目標節點的距離實際值,這種情況下,搜尋的點數多,搜尋範圍大,效率低。但能得到最優解。
如果 估價值》實際值, 搜尋的點數少,搜尋範圍小,效率高,但不能保證得到最優解。
估價值與實際值越接近,估價函式取得就越好。
例如對於幾何路網來說,可以取兩節點間歐幾理德距離(直線距離)做為估價值,即f=g(n)+sqrt((dx-nx)*(dx-nx)+(dy-ny)*(dy-ny));
這樣估價函式f在g值一定的情況下,會或多或少的受估價值h的制約,節點距目標點近,h值小,f值相對就小,能保證最短路的搜尋向終點的方向進行。明顯優於dijstra演算法的毫無方向。
#計算過程4. dwa與tebdwa和teb的總體思想都是**/規劃機械人沿給定視界的運動,同時最小化給定目標函式,同時遵守機械人的動力約束。建立兩個表,open表儲存所有已生成而未考察的節點,closed表中記錄已訪問過的節點。
遍歷當前節點的各個節點,將n節點放入close中,取n節點的子節點x,->算x的估價值->
只命令機械人執行第乙個控制動作後,重複整個**/優化過程。這一原理在控制理論中被稱為退地平線控制或模型**控制。但由於計算最優解的計算量較大,因此兩種方法的近似最優解的方式不同,實際的優化策略也不同。
動態視窗法(dwa)
dwa執行基於樣本的優化。它在可行速度空間(通常是平移/角速度對)中取樣乙個控制動作,並為這些特定的取樣動作推出軌跡。鋪展是指基於機械人運動模型,根據指定的水平長度對軌跡進行模擬。
乙個重要的細節是:整個**階段行動是保持不變的。因此它不能**運動逆轉等。在對所有樣本進行**之後,根據指定的成本函式和約束條件(包括到全域性路徑的距離、平滑度、障礙清除度等)選擇最佳候選樣本。
因此,dwa包括兩個簡化,以保持低的計算時間,同時達到一定數量的控制效能。不詳細討論由於固有次最優性而產生的穩定性和遞迴可行性,但是這種方法對於差分驅動和全向機械人非常有效。
乙個好處是,成本函式可以是非光滑的,因此它非常適合基於網格的評估。例如,軌跡可以柵格化到成本圖中,以評估成本(考慮到致命網格單元和膨脹成本)。
此外,dwa不會陷入基於初始化的區域性極小值(當然,機械人仍然會因為有限的視界長度和較少的控制自由度而陷入困境)。由於dwa假定在**範圍內的控制行為是恆定的,因此類車機械人的控制是相當有限的。
有一些基本的擴充套件將速度搜尋空間限制為與汽車類似的相容動作。但運動逆轉仍然沒有優化,因此在有限的空間停車、機動是棘手的。注意,當然,運動逆轉可以在閉環控制期間進行,但它們不是開環解決方案/**的一部分。
總結:
不需要運動反轉的次優解(控制動作在**範圍內保持不變)
非常適合於擴散驅動/全向機械人,但不適合類車機械人
支援非平滑成本函式
timed-elastic-band (teb)
teb主要嘗試尋找時間最優的解決方案,但是您也可以為全域性參考路徑保真度配置它。該方法根據時間離散軌跡,並採用連續的數值優化方案。因此,根據離散化解析度,沿**水平的自由度可以非常高,並支援運動逆轉。
將約束優化問題轉化為無約束優化問題,縮短了計算時間。這也意味著在任何情況下約束(例如避障、速度界限等)都不能得到保證,所以建議檢查機械人的基本驅動程式或專用節點的緊急情況。
此外,優化器只找到區域性解決方案,例如,如果軌跡初始化在乙個障礙的左側,它將保持在那裡。teb_local_planner能夠同時優化不同拓撲中的多個軌跡(比如左右),從而找到解決方案。由於該方法依賴於連續優化,成本函式必須是平滑的。它不能處理網格和成本圖的功能評估。
目前,每個致命的障礙單元都被認為是點形狀的障礙,它限制了小/中等規模的本地成本圖大小(和相當粗的成本圖解析度)的方法。計畫器還可以處理多邊形形狀的障礙(參見costmap_converter包將costmap轉換為更原始的障礙,但它仍處於實驗階段)。
然而,給定一定的計算能力和乙個溫和的問題大小,planner實現了更好的控制器效能,解決了更多的場景,還支援類車機械人的運動。
在teb_local_planner的最新版本中,引入了對動態障礙的支援。其效能在很大程度上取決於障礙物跟蹤和狀態估計的精度。然而,成本圖轉換包嘗試從本地成本圖跟蹤動態障礙(實驗)。
所規劃的軌跡更接近實際的最優解,但約束僅作為懲罰執行。
總結:
適合所有型別的機械人
在多種拓撲中規劃多個候選軌跡
動態障礙物支援(實驗)
大的計算負擔
Edit Distance編輯距離與動態規劃
編輯距離是指將乙個字串轉化為另外乙個字串,需要的最少的編輯操作次數,這些操作包括增加 刪除或者替換某個字元。可以看出,編輯距離越大,說明兩個字串的相似度越小 相反,編輯距離越小,說明這兩個字串的相似程度越大。兩個字串的編輯距離為0則說明這兩個字串相同。編輯距離的計算方式比較多,比較著名的有萊文斯坦距...
路徑與軌跡 路徑規劃與軌跡規劃 路徑跟蹤與軌跡跟蹤
對於無人車輛來說,全域性路徑點只要包含空間位置資訊即可,也可以包含姿態資訊,而不需要與時間相關,但區域性規劃時,則可以考慮時間資訊。這裡規定軌跡點也是一種路徑點,即當路徑點資訊中加入時間約束,就可以被稱為軌跡點。從這個角度理解,軌跡規劃就是一種路徑規劃,當路徑規劃過程要滿足無人車輛的縱向和橫向動力學...
路徑與目錄
1.相對路徑與絕對路徑 linux 中的目錄呈樹狀結構,帶有分支。假如需要在任意乙個目錄下變換到根目錄下的 etc,那麼應該使用 cd etc 命令,這就是所謂的絕對路徑,是從根目錄向下定址。如果使用 cd etc 呢?表示要切換到當前目錄下的 etc目錄中,情況就不一樣了。l 絕對路徑 路徑的寫法...