2D雷射SLAM演算法比較 cartographer

2022-09-16 02:51:08 字數 2159 閱讀 9466

hector slam:

hector slam利用高斯牛頓方法解決scan-matching問題,對感測器要求較高。

缺點:需要雷達(lrs)的更新頻率較高,測量雜訊小。所以在製圖過程中,需要robot速度控制在比較低的情況下,建圖效果才會比較理想,這也是它沒有回環(loop close)的乙個後遺症;且在里程計資料比較精確的時候,無法有效利用里程計資訊。

優點:不需要使用里程計,所以使得空中無人機及地面小車在不平坦區域建圖存在運用的可行性;利用已經獲得的地圖對雷射束點陣進行優化, 估計雷射點在地圖的表示,和佔據網格的概率;利用高斯牛頓方法解決scan-matching 問題,獲得雷射點集對映到已有地圖的剛體變換(x,y,theta);為避免區域性最小而非全域性最優,使用多解析度地圖;導航中的狀態估計加入慣性測量系統(imu),利用ekf濾波;

補充:11-11  hector_slam通過最小二乘法匹配掃瞄點,且依賴高精度的雷射雷達資料,因此掃瞄角很小且雜訊較大的kinect是不行的,匹配時會陷入區域性點,地圖比較混亂。

scanmatch方法:鏈結

粒子濾波的方法一般需要大量的粒子來獲取好的結果,但這必會引入計算的複雜度;粒子是乙個依據過程的觀測逐漸更新權重與收斂的過程,這種重取樣的過程必然會代入粒子耗散問題(depletion problem), 大權重粒子顯著,小權重粒子會消失(有可能正確的粒子模擬可能在中間的階段表現權重小而消失).自適應重取樣技術引入減少了粒子耗散問題 , 計算粒子分布的時候不單單僅依靠機械人的運動(里程計),同時將當前觀測考慮進去, 減少了機械人位置在粒子濾波步驟中的不確定性. (fast-slam 2.0 的思想,可以適當減少粒子數)

缺點:依賴里程計(odometry),無法適用無人機及地面小車不平坦區域;無回環;

優點:在長廊及低特徵場景中建圖效果好;

cartographer:

cartographer是google的實時室內置圖專案,感測器安裝在揹包上面,可以生成解析度為5cm的2d格網地圖。

獲得的每一幀laser scan資料,利用scan match在最佳估計位置處插入子圖(submap)中,且scan matching只跟當前submap有關。在生成乙個submap後,會進行一次區域性的回環(loop close),利用分支定位和預先計算的網格,所有submap完成後,會進行全域性的回環。

local 2d slam

a.scans

submap的構造是乙個重複迭代配準scan和submap的過程。利用配準估算出pose對scan進行剛體變換,插入到submap中。

b.submaps

連續的scan用來構造submap,這裡submap以概率格網的形式表現。每乙個scan,在插入格網(submap)時,每乙個grid有hits和miss兩種情況。離scan終點最近的grid為hits,在scan原點和終點之間相交的grid為miss。之前未觀察的grid分配乙個概率,已觀察的grid進行概率更新。

把求pose的問題轉換為乙個求解非線性最小二乘問題,利用ceres解決這個問題。

因為最小二乘問題是乙個區域性最優問題,故乙個好的初值(pose初值)對求解有很大影響。因此imu能被用來提供pose初值的旋轉變數。在缺乏imu的時候,可以用提高scan match頻率或匹配精度。

利用spa方法優化scan和submap的pose。儲存插入scan位置處對應的pose用來做回環檢測。此外,當submap不在變化時,對應pose的scan和submap也被用來做回環。scan match中找到的good match其對應的pose將被用來做優化問題。

a.optimization problem

回環優化問題構造成非線性最小二乘問題來求解。

公式中分別為submap的pose,scan的pose,對應submap和scan的pose的相關性,及相關協方差矩陣。

b.branch-and bround scan matching            

缺點:優點:不採用粒子濾波(pf),從而低廉裝置也能獲得較好的效能表現;

雷射SLAM演算法學習(三) 3D雷射SLAM

1 3d雷射slam的介紹 3d雷射slam的輸入 imu資料 3d雷射雷達資料 里程計資料 3d雷射slam的輸出 3d點雲地圖 機械人的軌跡 or posegraph 2 3d雷射slam的發展 3d雷射slam的幀間匹配方法 點雲配準演算法 point to plane icp feature...

2D遊戲之五子棋(2)落棋演算法

核心演算法內容是 根據相鄰的棋子的型別看是否是連線的棋子,判斷八個方向,橫豎斜,橫著的棋子到了5個則成功,其他方向也是如此 如下 using unityengine public enum chesstype public class boardmodel 設定棋盤資料 public bool se...

2D位姿估計3 ELSDc線段橢圓提取演算法填坑路

實驗室復現高精度位姿估計演算法的時候,需要呼叫elsdc演算法,當時演算法是在mac上編譯的,而我在復現的時候用的ubuntu 16.04 所以進行了一輪踩坑,在半天之後搞定了演算法的復現,這裡記錄一下遇到自己填坑的過程。elsdc原理介紹 鏈結 1 sh 1 elsdc elsdc permiss...