系统要求:
- 64-bit, modern CPU (e.g. 3rd generation i7)
- 16 GB RAM
- Ubuntu 18.04 (Bionic), 20.04 (Focal)
- gcc version 6.3.0, 7.5.0, 9.3.0
支持的ROS版本:
- Kinetic
- Melodic
- Noetic
下载与编译:
Cartographer_ros的编译工具需要wstool、rosdep以及Ninja。
对于Ubuntu 20.04以及ROS Noetic搭配的系统环境时,可以用以下命令安装编译工具:
sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow
对于其他旧的版本则需要:
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build stow
下载安装编译工具后,须单独为cartographer_ros建立工作空间carto_ws.
mkdir carto_ws
cd carto_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
以上命令中可能会发现无法连接raw.githubusercontent.com这个网站,原因时ip污染。结局办法主要是提供最新的ip地址。具体方法如下:
- 首先在以下网址搜索raw.githubusercontent.com网站的ip地址;
- 再赋予raw.githubusercontent.com网址上面查到的ip地址:
sudo gedit /etc/hosts
插入如下内容:(ip地址可变)
185.199.108.133 raw.githubusercontent.com
此时再使用上面的wstool命令,如果失败可以多试几次。
接下来要解决cartographer_ros的依赖包的问题,首先要rosdep初始化,再更新,最后安装依赖包,具体代码如下:
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
这里的问题是rosdep访问的网址还是前面的,需要反复试很多次才能成功,甚至rosdep udpate经常不成功。通过反复搜索,找到了以下方法替代前面的这三行代码(参考以下网址)。
一定能解决ROS系统 rosdep update超时问题de简单方法_不加辣先生的博客-CSDN博客
ROS学习笔记(十二)ROS noetic ubuntu20.04 版本 rosdep init,rosdep update 问题解决方法_wei2023的博客-CSDN博客
解决ROS系统 rosdep update超时问题的新方法_leida_wt的博客-CSDN博客_rosdep update 超时
ROS与SLAM入门教程-cartographer在Turltlebot的应用1-官方安装及补充 - 创客智造 (ncnynl.com)
如果遇到下面的问题,其实可以把这个文件该回来,还是从网站下载,这个还是挺快的!
ERROR: unable to process source [file:///etc/ros/rosdistro/releases/fuerte.yaml]:
Failed to download target platform data for gbpdistro:
HTTP Error 403: FORBIDDEN
如果想修改,就需要修改下面的文件:
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
在204加上
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
并且把/etc/ros/rosdep/sources.list.d/20-default.list里的相关部分改成
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
最后sudo rosdep update就可以了。
接下来继续安装。
sudo apt-get install -y 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 ros-melodic-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
上面这些安装可基本满足编译需求,如果需要运行,还需要安装以下依赖包:
sudo apt-get install ros-melodic-robot-state-publisher ros-melodic-pcl-conversions ros-melodic-pcl-msgs ros-melodic-pcl-ros
此外,如果没有安装rviz,还需要安装rviz。
Cartographer还需要使用abseil-cpp包,可以用以下代码完成手动安装:
src/cartographer/scripts/install_abseil.sh
如果出现和ROS自带的abseil-cpp版本出现冲突,则需要卸载:
sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp
完成以上步骤之后,就可以开始编译了:
catkin_make_isolated --install --use-ninja
可能存在的其他小问题:
Could not find a package configuration file provided by "Ceres" with
any of the following names:
CeresConfig.cmake
Ceres-config.cmake
sudo apt install libceres1 libceres-dev
ceres-solver无法安装的问题,来自官方的安装方法:
- vim src/.rosinstall
- 修改ceres-solver地址:
- github地址:https://github.com/ceres-solver/ceres-solver.git
安装cartographer,找不到 "absl" 解决方法:
编译时出现缺少absl包
Could not find a package configuration file provided by "absl" with any of
the following names:
abslConfig.cmake
absl-config.cmake
解决方法
在下载回来的cartographer上有安装absl的脚本
$ sudo apt-get install stow
$ sudo chmod +x ~/carto_ws/src/cartographer/scripts/install_abseil.sh
$ cd ~/carto_ws/src/cartographer/scripts
$ ./install_abseil.sh
通过以上代码顺利完成编译后,在运行前还需要把工作空间加入到ros路径下:
sudo gedit ~/.bashrc
添加以下语句:
source ~/carto_ws/devel_isolated/setup.bash
接下来,就可以按照官方教程里的案例,下载bag包和运行cartographer了。
参考文档:
Compiling Cartographer ROS — Cartographer ROS documentation (google-cartographer-ros.readthedocs.io)