文/冷冬寒梅
(一)介紹
Google Cartographer利用同步定位與建圖技術(shù)繪制室內(nèi)建筑平面圖,可以用于二維和三維空間的建圖钦椭,可以在非ros(機器人操作系統(tǒng))系統(tǒng)和ros系統(tǒng)中使用拧额。根據(jù)google的說明,該技術(shù)易于部署機器人彪腔、無人駕駛侥锦、無人機等系統(tǒng)。
Google在官方聲明中提到德挣,Cartographer的SLAM算法結(jié)合了來自多個傳感器的數(shù)據(jù)恭垦,比如LiDAR激光雷達傳感器、IMU慣性測量單元格嗅,還有來自多個攝像頭的數(shù)據(jù)番挺。綜合這些龐雜的數(shù)據(jù),得以計算傳感器及傳感器周圍的環(huán)境吗浩。據(jù)報道Cartographer現(xiàn)已經(jīng)支持Toyota HSR建芙、TurtleBots、PR2懂扼、RevoLDS這幾個機器人平臺禁荸。
(二)安裝
官方提供的安裝步驟,在中國大陸地區(qū)實施起來有些問題阀湿,我通過親身實踐赶熟,糾正了一些問題,提供了一個切實可行的安裝步驟陷嘴。
我所用的環(huán)境:ubuntu14.04(Trusty)
??????? ? ? ? ? ? ? ? ? ? ROS Indigo
step1映砖、安裝依賴
sudo apt-get update
sudo apt-get install -y \
cmake \
g++ \
git \
google-mock \
libboost-all-dev \
libeigen3-dev \
libgflags-dev \
libgoogle-glog-dev \
liblua5.2-dev \
libprotobuf-dev \
libsuitesparse-dev \
libwebp-dev \
ninja-build \
protobuf-compiler \
python-sphinx
step2安裝優(yōu)化包ceres-solver
在官網(wǎng)https://google-cartographer.readthedocs.io/en/latest/中提供的gitclone地址不能成功下載,我們可以采用下面的地址進行下載
安裝ceres-solver的步驟如下:
git clone https://github.com/ceres-solver/ceres-solver
cd ceres-solver
mkdir build
cd build
cmake .. -G Ninja
ninja
ninja test
sudo ninja install
step3灾挨、安裝cartographer
git clone https://github.com/googlecartographer/cartographer
cd cartographer
mkdir build
cd build
cmake .. -G Ninja
ninja
ninja test
sudo ninja install
step4邑退、安裝cartographer_ros
1)首先安裝wstool和rosdep工具
sudo apt-get update
sudo apt-getinstall -y python-wstool python-rosdep ninja-build
2)然后建立一個新的workspace
mkdir slam_ws
cd slam_ws
wstool init src
3)安裝cartographer_ros.rosinstall文件,更新
wstool merge -t srchttps://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
4)安裝deb依賴Installdeb dependencies.
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
5)安裝和設(shè)置路徑
catkin_make_isolated --install –use-ninja
(此處需要時間比較長劳澄,要耐心等待地技,我在運行時候,以為此處進行不下去了秒拔,結(jié)果等的時間長些莫矗,運行成功)
source install_isolated/setup.bash 此語句設(shè)置路徑
到此安裝成功
(三)測試此slam算法的有效性
step1、首先下載數(shù)據(jù)集
下載幾種數(shù)據(jù)集包砂缩,費時較長
1)Downloadthe 2D backpack example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
2)Downloadthe 3D backpack example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/cartographer_3d_deutsches_museum.bag
3)Download the Revo LDS example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/revo_lds/cartographer_paper_revo_lds.bag
4)Download the PR2 example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/pr2/2011-09-15-08-32-46.bag
step2作谚、啟動相應(yīng)的launch文件,對不同的測試集進行slam建圖
launch文件位于slam_ws/src/cartographer_ros/cartographer_ros/launch
2D backpack的bag文件位于
/home/dmchen/slam_ws/src/cartographer_ros/cartographer_ros/bag文件夾中
1)啟動2D backpack的Launchdemo文件
cd slam_ws
source
install_isolated/setup.bash
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/dmchen/slam_ws/src/cartographer_ros/cartographer_ros/bag/cartographer_paper_deutsches_museum.bag
2)啟動3D backpack Launch demo文件.
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/cartographer_3d_deutsches_museum.bag
3)啟動Revo LDS Launch demo文件
roslaunch cartographer_ros demo_revo_lds.launch bag_filename:=${HOME}/Downloads/cartographer_paper_revo_lds.bag
4)啟動PR2 Launch demo文件
roslaunch cartographer_ros demo_pr2.launch bag_filename:=${HOME}/Downloads/2011-09-15-08-32-46.bag
(四)結(jié)果
slam建圖時間非常長庵芭,耗費資源情況如下:cpu的占用率是268.5%妹懒,有時候高達340%
deutsches_museum2d數(shù)據(jù)集
我的電腦的配置单绑,其實已經(jīng)很高了(哭臉)
RevoLDS數(shù)據(jù)集
運行效果很棒
(五)總結(jié)
googel提供的測試集,其中博物館的數(shù)據(jù)集大約128.3m*270米曹宴,閉環(huán)運行效果非常差搂橙,RevoLDS數(shù)據(jù)集大約32.1m*35.7m,運行效果很棒笛坦。
另外区转,我在我自己的機器人和環(huán)境中進行了測試,測試區(qū)域大約是43.4m×41.25m的樣子版扩,效果也不錯废离。
備注:上面的分析是10月份我做的測試(原諒我是重度懶癌患者,現(xiàn)在才整理以前的結(jié)果)礁芦,當時對deutsches_museum2d數(shù)據(jù)集測試效果很差蜻韭。期間看到google對代碼進行了更新,用最新的代碼進行測試柿扣,效果要好很多肖方。
在過去的一段時間內(nèi),我一直在研究googel slam的論文和代碼未状,以后會陸續(xù)寫文章俯画,剖析論文中采用的算法和其對應(yīng)的代碼實現(xiàn),對此有興趣的可以后續(xù)進行關(guān)注和留意司草。