1. 程式人生 > 實用技巧 >基於鐳射SLAM的機器人(一)

基於鐳射SLAM的機器人(一)

基於鐳射SLAM的機器人

基於鐳射SLAM的機器人

實習過程中在做一款掃地機器人,要求不用ROS,自己搭建系統,這裡先介紹下,後面一點一點的記錄說明。

主要感測器

鐳射雷達:用的是鐳神16線的。
雙目攝像頭:INDEMIND
處理器:NVIDIA JETSON AGX XAVIER
六軸IMU,以及輪式里程計。

建圖

由於本人研究生方向是視覺的方向,所以對點雲資料瞭解不是很深,所以採用的最簡單的方法,基於PCL庫的ICP(ICP的介紹網上很多),但是ICP只能匹配兩幀變化不大的點雲,根據我的實際測量,點雲距離超過兩米或者角度超過15度以上就匹配不上了,由於不想採用PL—ICP,LOAM裡面的分點和麵進行匹,然後就用IMU和ODOM經過Kalman濾波的位姿作為ICP的初始然後匹配得到點雲的轉換矩陣。由於ODOM的角度結果十分不準確,以至於IMU的角度無法糾正(濾波後的20m直線誤差差不多10cm, 90度的誤差有0.2弧度),所以採用子圖的方法。五幀關鍵幀重啟IMU和ODOM的資料第五幀既是上一子圖的最後一幀,又是下一子圖的第一幀,這雖然不能減少累計誤差,但是可以減少轉彎后角度對x和y的誤差。累計誤差通過位姿圖優化解決。網上查的資訊說九軸IMU能夠通過磁力計有效減少角度誤差,但是車的結構和硬體在設計的時候沒有考慮到EMC,導致車體有著雜亂的強磁場,以至於磁力計無法正常工作。

在這裡插入圖片描述
這是建的樓道的圖,面積在400平米左右,然後可以得到關鍵幀和關鍵幀的位姿。

重定位

現在機器人有點沒考慮到的是,不能在任何地方重新啟動,只能在建圖原點附近進行重啟動定位。首先根據關鍵幀的位姿建立八叉樹,然後根據ODOM和IMU融合後的結果,從八叉樹中找到關鍵幀的點雲資料和位姿,然後根據雷達實際採集的資料與對應的關鍵幀進行匹配得到機器人目前的一個位姿,然後把當前機器人位姿傳入kalman濾波中根據IMU和ODOM,進行融合。後面單寫一篇自己對kalman濾波演算法的理解。

雙目視覺定位

雙目視覺主要通過YOLO演算法把常見移動目標(人,車)識別出來,然後用3D重建的方式來對目標進行重建,得到目標的位置,然後根據上下兩幀,機器人的位姿變化以及移動目標的位姿變化,來預測目標的下一位置。後面也會寫一篇對YOLO模型的學習和訓練過程。

後面會記錄SLAM學習過程,一個CV渣渣轉SLAM的學習過程