今天開始寫一個關于google cartographer系列文章,此類文章網上已經很多,本系列文章主要記錄重點部分及容易踩坑地方,
cartographer是一個完整的激光SLAM開源專案,屬于graph slam,包含了完整的前端里程計和后端地圖優化,既能夠同時定位建圖,又能夠基于先驗地圖進行獨立全域定位,
值得好好研讀學習:(1)一個漂亮的slam實作工程,學習其模塊架構,代碼架構,介面等 (2)學習google code style,作為c++編程規范的一個范本
目錄
一、推薦首選看官網資料,已經很詳細了
二、安裝
三、原始碼檔案架構
四、跑資料集
1、建圖
2、基于先驗地圖的全域定位
一、推薦首選看官網資料,已經很詳細了
原生版:
https://google-cartographer.readthedocs.io/en/latest/
ros集成版:
https://google-cartographer-ros.readthedocs.io/en/latest/index.html
原始碼:
https://github.com/cartographer-project/cartographer_ros
論文:
W. Hess, D. Kohler, H. Rapp, and D. Andor, Real-Time Loop Closure in 2D LIDAR SLAM, in Robotics and Automation (ICRA), 2016 IEEE International Conference on. IEEE, 2016. pp. 1271–1278.
二、安裝
本人環境:ubuntu 18.04(64位),ROS melodic
以原始碼編譯安裝方式,
步驟1:安裝依賴,參考 https://google-cartographer.readthedocs.io/en/latest/ 先安裝一部分依賴
本人電腦只安裝了以下部分依賴,其余雜七雜八的都沒有裝(可能之前配置時已經安裝了相應依賴)

步驟2:繼續安裝依賴,參考 https://google-cartographer-ros.readthedocs.io/en/latest/index.html 安裝其他依賴
步驟3:注意!創建ROS工程目錄,下載原始碼,在進行到下載原始碼步驟時,需要先網頁登錄自己的github賬號,否則提示無法連接網址!
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
步驟4:原始碼編譯,
執行完 catkin_make_isolated --install --use-ninja 后即成功安裝,
步驟5:注意!配置source,由于采用isolated方式編譯的,因此在~/.bashrc中也要以此方式source,添加詞句 source /home/你的ubuntu用戶名/cartographer/devel_isolated/setup.bash
至此,就完成了原始碼安裝,下面就可以下載官網資料集跑啦,
三、原始碼檔案架構
安裝好后的原始碼結果如下:包含原生碼和ros集成部分

四、跑資料集
1、建圖
參考 https://google-cartographer-ros.readthedocs.io/en/latest/demos.html 下載2d背包資料集(490M,下載挺快)
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
資料集大概持續30分鐘,建的地圖夠大,效果如下,比較驚艷,(0,9)類似資料標明了loopclosure



基于3D激光雷達建圖:三維點云被投影到二維占據柵格地圖
資料集有9.8G
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag
使用了2個vlp-16,水平和垂直




側視圖可以看到構建的地圖不是在同一個水平面上

2、基于先驗地圖的全域定位
參考 https://google-cartographer-ros.readthedocs.io/en/latest/demos.html ,以下為基于2D資料集的定位
步驟1:先構建先驗地圖,尺寸大概100m*100m

步驟2:基于先驗地圖全域實時定位
初始時刻未匹配上,過幾秒鐘后匹配上,位置及軌跡得到了修正,


運動程序中出現匹配出錯,但能夠很快修正回來
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/253067.html
標籤:其他
