Cartographer ROS 整合
目录
Cartographer 是一个提供2D和3D实时定位与建图(SLAM)功能的系统,支持跨越多个平台与多传感器配置融合。
编译 Cartographer ROS 包
系统要求
- 64位现代的CPU(比如,i7 3代)
- 16 GB RAM
- Ubuntu 14.04 (Trusty) 或 16.04 (Xenial)
- gcc 版本 4.8.4 或 5.4.0
支持的 ROS 版本
- Indigo
- Kinetic
- Lunar
- Melodic
已知问题
32位系统编译eigen库会出现问题
编译安装
为了编译 Cartographer ROS 包,我们推荐使用wstool
和rosdep
。从提高编译速度来讲,我们也推荐使用Ninja
。
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
在’catkin_ws’中创建一个新的工作空间cartographer_ros
mkdir catkin_ws
cd catkin_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
安装cartographer_ros
依赖(proto3 和 deb 包)。如果你之前已经执行过sudo rosdep init
命令则这次执行会报错,因为你在安装 ROS 的时候已经执行过了,所以这个错误可以忽略。
src/cartographer/scripts/install_proto3.sh
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
编译安装
catkin_make_isolated --install --use-ninja
通过 Demo bag 来运行 Cartographer ROS
安装好了 Cartographer 和 Cartographer 的 ROS 整合包,可以下载样例bag(比如,德意志博物馆的 2D 和 3D系列)到指定位置,在此教程我们下载到~/Downloads
,并使用roslaunch
来启动样例。
luanch文件会自动启动roscore
和rviz
。
注意:
当你运行cartographer_ros时,你可能需要先source一下你的 ROS 环境。运行如下命令
source install_isolated/setup.bash
(如果你用的 zsh shell 就把 bash 后缀替换成 zsh)
德意志博物馆
下载并运行 2D bag Demo:
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
下载并运行 2D bag Demo:
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
定位
定位功能需要使用两个不同的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
生成地图(等到cartographer_offline_node
运行完毕)然后运行定位:
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
下载 3D bag:
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/b3-2016-04-05-13-54-42.bag
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/b3-2016-04-05-15-52-20.bag
生成地图(等到cartographer_offline_node
运行完毕)然后运行定位:
roslaunch cartographer_ros offline_backpack_3d.launch bag_filenames:=${HOME}/Downloads/b3-2016-04-05-13-54-42.bag
roslaunch cartographer_ros demo_backpack_3d_localization.launch \
load_state_filename:=${HOME}/Downloads/b3-2016-04-05-13-54-42.bag.pbstream \
bag_filename:=${HOME}/Downloads/b3-2016-04-05-15-52-20.bag