1. 运行环境
操作系统:Ubuntu 18.04
ROS版本:Melodic
2. 依赖的编译工具
为了编译Cartographer ROS,需要wstool、rosdep以及google的并行编译工具Ninja。
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build stow
3. 下载代码并更新ROS依赖
3.1 初始化工作空间
mkdir catkin_ws
cd catkin_ws
wstool init src
3.2 更新.rosinstall文件
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
.rosinstall文件内容如下:
# THIS IS AN AUTOGENERATED FILE, LAST GENERATED USING wstool ON 2021-10-29
- git:
local-name: cartographer
uri: https://github.com/cartographer-project/cartographer.git
version: master
- git:
local-name: cartographer_ros
uri: https://github.com/cartographer-project/cartographer_ros.git
version: master
直接下载有可能会遇到连接不上或超时问题,因此在这里将github的URL更换为其镜像网站的URL:
# THIS IS AN AUTOGENERATED FILE, LAST GENERATED USING wstool ON 2021-10-29
- git:
local-name: cartographer
uri: https://github.com.cnpmjs.org/cartographer-project/cartographer.git
version: master
- git:
local-name: cartographer_ros
uri: https://github.com.cnpmjs.org/cartographer-project/cartographer_ros.git
version: master
3.3 下载Cartographer代码
wstool update -t src
3.4 更新cartographer_ros所需的ROS依赖
sudo rosdep init 之前如执行过该语句,则本次不需要执行
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
4. 安装abseil-cpp
src/cartographer/scripts/install_abseil.sh
由于可能与ROS自带的abseil-cpp版本有冲突,因此需要卸载ROS版本的abseil-cpp:
sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp
5. 编译并安装
catkin_make_isolated --install --use-ninja
6. 测试
配置Cartographer的ROS运行环境
source install_isolated/setup.bash
2D建图测试
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
3D建图测试
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
纯定位建图测试
#下载2D bag包文件
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-05-14-44-52.bag
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-27-12-31-41.bag
#生成map并运行纯定位
roslaunch cartographer_ros offline_backpack_2d.launch bag_filenames:=${HOME}/Downloads/b2-2016-04-05-14-44-52.bag
roslaunch cartographer_ros demo_backpack_2d_localization.launch \
load_state_filename:=${HOME}/Downloads/b2-2016-04-05-14-44-52.bag.pbstream \
bag_filename:=${HOME}/Downloads/b2-2016-04-27-12-31-41.bag