Cartographer_ros的下载、配置及编译与问题处理

系统要求:

  • 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的编译工具需要wstoolrosdep以及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 Website statistics and traffic analysis | Githubusercontent | githubusercontent.com (ipaddress.com)

  • 再赋予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)

安装cartographer,找不到 "absl" 解决方法 - 知乎 (zhihu.com)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值