首先說明,這篇文章於2019年12月寫下,cartographer現在還在不斷更新,也許這篇文檔內容會失效,但是大體是一樣的安裝流程。
一、硬件條件
使用平台
- x86_64平台
ROS發行版
- Indigo
- Kinetic
- Lunar
- Melodic
二、編譯安裝
1. 先安裝一些必要的安裝工具:python-wstool、python-rosdep和ninja;
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
2. 創建一個cartographer_ros的工作空間,命名為"catkin_ws",並初始化。
mkdir catkin_ws
cd catkin_ws
wstool init src
# 這里先增加一個.rosinstall文件,修改內容如下一段
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
- 這里得提一下, 個別地區沒方法訪問googlesource.com,即谷歌的源代碼倉庫,上面第四句執行之后,修改 .rosinstall 文件到src目錄:
- git: {local-name: cartographer, uri: 'https://github.com/googlecartographer/cartographer.git', version: '1.0.0'}
- git: {local-name: cartographer_ros, uri: 'https://github.com/googlecartographer/cartographer_ros.git', version: '1.0.0'}
- git: {local-name: ceres-solver, uri: 'https://github.com/ceres-solver/ceres-solver.git', version: '1.13.0'}
- !注:也可以直接復制上面的git源碼地址uri,下載對應版本的源碼到對應的工作空間src里面,就不需要wstool部分命令了。
- 順便也提供了藍奏雲鏈接:https://www.lanzous.com/b0akgy6uh 密碼:cmvf
3. 安裝cartographer_ros的依賴項(proto3和deb軟件包)。如果自安裝ROS以來已經執行過初始化rosdep的命令,則命令'sudo rosdep init'將顯示錯誤,該錯誤可以忽略。
# 腳本內容是配置了一些環境變量,然后用git下載proto3(肯定比較慢,可以手動下載),如果手動下載了proto3,里面需要改內容,內容在下一段。
src/cartographer/scripts/install_proto3.sh
# 這句初始化rosdep,一般正常安裝ros都執行過,可以不用管。
sudo rosdep init
# 下面這兩句,是常用來一鍵安裝該工作空間下所有依賴包的,務必熟練使用
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
- !注意如果手動下載了3.4.1版本的proto3,建議還是用install_proto3.sh安裝,不過需要修改內容為:
# 只是注釋掉了git下載和切換的內容。
set -o errexit
set -o verbose
# VERSION="v3.4.1"
# Build and install proto3.
# git clone https://github.com/google/protobuf.git
cd protobuf
# git checkout tags/${VERSION}
mkdir build
cd build
cmake -G Ninja \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_BUILD_TYPE=Release \
-Dprotobuf_BUILD_TESTS=OFF \
../cmake
ninja
sudo ninja install
4. 構建並安裝。
# 用ninja工具進行catkin的編譯
catkin_make_isolated --install --use-ninja
注意:
- 到這里,執行完上面的步驟,沒報錯的話就安裝成功了。
- 有些萌新因為git的配置問題報錯下載失敗,就按照報錯提示百度一下解決;不想折騰git的話,也可以直接打開.rosinstall的那三個源碼鏈接,下載對應版本的源碼(version標注的內容)。
- git下載速度慢,基本上也是因為DNS污染的原因,這里修改一下hosts文件:
sudo gedit /etc/hosts
增加以下內容(給dns指定了github的服務器地址):
# 建議在http://ip.tool.chinaz.com/github.com查詢以下三個網址對應的ip,這里是2019-12月的數據,可能會改變
github.com 13.250.177.223
assets-cdn.github.com 185.199.108.153
github.global.ssl.fastly.net 75.126.215.88
重啟networking
sudo /etc/init.d/networking restart
三、跑數據集安裝測試
1. 測試數據集
- 現在已經安裝了Cartographer和Cartographer的ROS集成,可以下載封裝成bag包形式的數據集。這里提供了德國博物館的數據集。這個數據集是人類背着激光雷達錄制的,效果也是不錯。
- 首先,下載數據集,然后運行demo,會自動打開rviz。
# 這句命令把數據集下載到了Downloads文件夾,如果沒有wget工具,可以自己安裝
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
# 記得先配置工作空間到環境變量
echo "source ~/catkin_ws/install_isolated/setup.bash" >> ~/.bashrc
# 這句用roslaunch啟動了放在對應目錄的數據集
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
- 如果下載bag速度慢的話,可以用迅雷下載第一句命令的地址,即https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag,然后放在對應的文件夾;
- 另外如果不想手動輸入bag文件名,直接把文件拖動到終端命令行界面有驚喜。
隨便找了張圖:
2. 其他bag數據集
- MIT提供的公共數據集(2D、3D):
https://www.ncnynl.com/archives/201810/2783.html
參考文獻: