路徑規劃A*演算法及SLAM自主地圖建立導航演算法
阿新 • • 發佈:2019-02-06
最近研究機器人自主路徑規劃,關注了「泡泡機器人SLAM」專欄平臺,上面有很多公開的視訊,涵蓋多種SLAM技術及其演算法的視訊、PPT和程式碼資源,屬於公開,轉載請註明。
第一期
1.工業相機選型及介紹-劉富強:
2.深度學習-顏沁睿:
3.SVO & LSD_SLAM解析 - 賀一家:
4.caffe_intro-高翔:
5.雙目視覺里程計-謝曉佳:
6.bitcoin_intro-李其樂:
8.增強現實及其相關概念-陳昊升:
9.MEMS IMU的入門與應用 - 胡佳興:
11.雙目矯正及視差圖的計算-黃耀:
12.IMU+動態背景消除-曾書格:
13.COP-SLAM - 楊俊:
14.ORB-LSD-SVO-劉浩敏:
15.cuda優化程式碼 - 張也冬:
16.KinectFusion 和 ElasticFusion 三維重建方法 - 付興銀:
17.視覺SLAM中的矩陣李群基礎-王京:
18.rosbridge的原理和應用-董超:
19.優化與求解 by 劉毅:
20. Direct方法的原理與實現 by 高翔:
21.影象技術在AR中的實踐-張穎:
22.路徑規劃-王超群:
23.ORB-SLAM簡單重構-馮兵:
24.LeastSquare_and_gps_fusion-卿李:
25.Scan Matching in 2D SLAM-張明明:
26.LSD-SLAM深度解析-範帝楷:
27.鐳射SLAM-王龍軍:
28.TSL安全網路傳輸協議簡介-侯濤:
下面是路徑規劃最常用的A*演算法的介紹。
1路徑規劃定義路徑規劃是指的是機器人的最優路徑規劃問題,即依據某個或某些優化準則(如工作代價最小、行走路徑最短、行走時間最短等),在工作空間中找到一個從起始狀態到目標狀態能避開障礙物的最優路徑。也就是說,應注意以下三點:- 明確起始位置及終點
- 避開障礙物
- 儘可能做到路徑上的優化
這裡介紹一下在遊戲以及無人機無人機航線規劃上最常見的A*演算法。2A*演算法詳解在電腦科學中,A*演算法作為Dijkstra演算法的擴充套件,因其高效性而被廣泛應用於尋路及圖的遍歷,如星際爭霸等遊戲中就大量使用。
開放列表(Open List):我們將路徑規劃過程中待檢測的節點存放於Open List中,而已檢測過的格子則存放於Close List中。父節點(parent):在路徑規劃中用於回溯的節點,開發時可考慮為雙向連結串列結構中的父結點指標。路徑排序(Path Sorting):具體往哪個節點移動由以下公式確定:F(n) = G(n) + H(n)G代表的是從初始位置A沿著已生成的路徑到指定待檢測格子的移動開銷。H指定待測格子到目標節點B的估計移動開銷。啟發函式(Heuristics Function):H為啟發函式,也被認為是一種試探,由於在找到唯一路徑前,我們不確定在前面會出現什麼障礙物,因此用了一種計算H的演算法,具體根據實際場景決定。在我們簡化的模型中,H採用的是傳統的曼哈頓距離(Manhattan Distance),也就是橫縱向走的距離之和。如圖中所示,綠色方塊為機器人起始位置A,紅色方塊為目標位置B,藍色為障礙物。
現用A*演算法尋找出一條自綠色A到紅色B的最短路徑,經簡化,每個方格的邊長為10,即垂直水平方向移動開銷為10。節點對角線為10,因此斜對角移動開銷約等於14。因此具體步驟如下:1、將A點加入到Open List中,圖中所示,上下左右移動一格距離為10,斜對角移動距離為14。環繞綠色方塊的就是待檢測格子,左下角的值就是G值,右下角為H值,左上角對應的就是F值,找到F值最小的節點作為新的起始位置。
2、綠色格子右側的節點F為40,選作當前處理節點,並將這個點從Open List刪除,增加到Close List中,對這個節點周圍的8個格子進行判斷,若是不可通過或已經在Close List中,則忽略之。否則執行以下步驟:
- 若當前處理格子的相鄰格子已經在Open List中,那就計算臨近節點經當前處理節點到起點的距離G是否比原G值小,若小,則把相鄰節點的父節點(parent)設定為當前處理節點。
- 若當前處理格子的相鄰格子不在Open List中,那麼把它加入,並將它的父節點設定為該節點。
因此首先要做的就是對外部環境的實時獲取及車輛的動態路徑規劃。傳統機器人路徑規劃大致可分三種:
- 靜態結構化環境下的路徑規劃
- 動態已知環境下的路徑規劃
- 動態不確定環境下的路徑規劃