Compiling Cartographer ROS
官方参考资料:https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html
System Requirements
- 64-bit, modern CPU (e.g. 3rd generation i7)
- 16 GB RAM
- Ubuntu 16.04 (Xenial), 18.04 (Bionic), 20.04 (Focal)
- gcc version 4.8.4, 5.4.0, 7.5.0, 9.3.0
The following ROS distributions are currently supported:
- Kinetic
- Melodic
- Noetic
Building & Installation
- 建议使用wstool和rosdep工具。
- 为了加快构建速度,建议使用Ninja
wstool | rosdep | ninja |
---|---|---|
从多个版本控制系统维护项目工作空间的命令行工具http://wiki.ros.org/wstool | 用于安装系统依赖项的命令行工具http://wiki.ros.org/rosdep/ | 注重速度的新型小型编译工具 |
ROS Melodic 安装wstool, rosdep, ninja工具:
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build stow
- 创建工作空间并初始化src文件夹。
mkdir catkin_ws
cd catkin_ws
wstool init src //在没有rosinstall文件的情况下初始化工作区
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall //合并其他rosinstall文件
wstool update -t src //更新工作区
- 使用
rosdep
安装所需的软件包。
sudo rosdep init
rosdep update //不可使用sudo,会导致权限错误
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y //可以安装catkin工作区中的依赖但在计算机上丢失的所有软件包。
sudo rosdep init
初始化rosdep,如果在安装ros的时候已经初始化过了就不需要了。
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.SOLUTION: 参考网址https://www.cnblogs.com/JuiceCat/p/12000953.html
ssl certs问题:
sudo c_rehash /etc/ssl/certs //重载ssl certs sudo -E rosdep init
rosdep update
一定不能加上sudo,否则会造成权限混乱,update失败,重装ros也无法解决,只能重装ubuntu。
rosdep install --from-paths src --ignore-src --rosdistro=melodic -y
- 使用脚本手动安装abseil-cpp库
https://github.com/abseil/abseil-cpp
src/cartographer/scripts/install_abseil.sh
- 生成并安装
catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash //把环境配置到.bashrc文件中
catkin_make_isolated
单独编译工作空间中的各个程序包,单独列出每个源包,而不只是列出工作区的源空间。如果两个程序包中包含了两个相同名称的节点,而你不使用该命令进行编译的话,则会出现依赖错误。
https://blog.csdn.net/qq_23225073/article/details/102825545#t9
Running Cartographer ROS on a demo bag
下载2D_demo_bag
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_demo_bag(勿轻易尝试,这个bag可能有10G)
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_demo_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_demo_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
# Download the landmarks example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/mir/landmarks_demo_uncalibrated.bag
# Launch the landmarks demo.
roslaunch cartographer_mir offline_mir_100_rviz.launch bag_filename:=${HOME}/Downloads/landmarks_demo_uncalibrated.bag