Cartographer安装测试与模块开发(一)--Ubuntu20.04下Cartographer安装与Demo测试

前言

Cartographer这个算法断断续续用过好多次了,每一次想记录一下使用文档都因为周期原因没有完成,这次借助开发重定位功能模块来记录一下,因为是完成了重定位功能后回过头来再记录整个过程的,可能在某些地方存在小问题和疏漏。

前期我使用的实车测试比较多,但是这次Cartographer的开发采用的Gazebo仿真来实现的,因为第一次使用仿真也是遇到很多坑和奇奇怪怪的Bug,后文随时间线一一介绍。

整体上的内容大概是这么几步:

一、Cartographer的安装测试

二、Gazebo的仿真环境搭建

三、Cartographer的基于仿真环境的建图

四、重定位方法的简单介绍

由于很多内容是完成之后写了,很多bug和故障可能没有对应的附图了,我尽量贴一些很像的故障图,毕竟实在是不想再把故障复现再来贴图了,因此文本量肯定要大于含图量了(懂,文字多的又没有图片的文章是真不想看下去)

Cartographer的安装

好,接下来正式进入安装,安装前先碎碎念几句,因为安装过程中,每个人用的Ubuntu版本、下载的Cartographer的版本、安装的是官方还是第三方重制等等因素都有可能有差异,所以根据某一个教程安装都有失败的可能。

安装过程参考的文章是:2024.4成功!20.04安装cartographer_ubuntu20.04 安装cartograhper-优快云博客

因此这里介绍的是基于Ubuntu20.04,安装官方Cartographer2.0.0

版本号我看的是src/cartographer/package.xml文件,里面有一段:

<package format="3">
  <name>cartographer</name>
  <version>2.0.0</version>
  <description>
    Cartographer is a system that provides real-time simultaneous localization
    and mapping (SLAM) in 2D and 3D across multiple platforms and sensor
    configurations.
  </description>

安装前声明一点,基本上纯净系统(指新安装的ubuntu系统)对照着安装都没问题,如果已经是用过很久的系统,因为里面的很多内容安装卸载等原因可能会导致某些环节出错,那种情况就只能对症分析了。

安装这个之前可以用小鱼一键安装ROS先把ROS安装好,确实好用。

wget http://fishros.com/install -O fishros && . fishros
1、先把基础依赖安装好:
apt-get install -y build-essential protobuf-compiler clang cmake g++ git google-mock libboost-all-dev libcairo2-dev libcurl4-openssl-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libsuitesparse-dev lsb-release ninja-build stow  python3-sphinx libgmock-dev libmetis-dev libceres-dev
2、安装辅助工具:
sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow
3、下载Cartographer和对应ROS接口包
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

这一步大概率会遇到报错,类似于time out之类的错误,不要慌,读一读报错信息,通常情况都是网络原因导致超时报错,可以科学上网下载一下,当然觉得Ubuntu科学上网比较麻烦可以多试几次,总有成功的时候。

很多教程会有一步安装Ceres-solver,之前屡屡翻车都在这一步,要么安装不上要么安装上编译报错,但20.04貌似不需要操心,确实不安装也可以运行。

这一步执行后,src文件下会出现cartographer和cartographer_ros两个文件夹

4、rosdep
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${noetic} -y

如果用小鱼一键安装的ROS这里应该问题不大。

如果遇到:ERROR: the following packages/stacks could not have their rosdep keys resolved to system dependencies: cartographer: [libabsl-dev] defined as "not available"

把src/cartographer中的package.xml 文件中,第46行<depend>libabsl-dev</depend>删掉。

执行:

rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
5、abseil安装

20.04自带protbuf,可以用protbuf version查看一下,没问题在工作空间下执行:

src/cartographer/scripts/install_abseil.sh

仍然需要科学上网,或者多试几次。

//一般新系统不用执行这个命令,如果不确定系统abseil会不会冲突,执行:
sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp
//如果出现E: Unable to locate package ros-noetic-abseil-cpp
//就是没有冲突,继续下一步就行。
//没有报错就是原本有冲突,执行后上述命令就不冲突了
6、编译

执行:

//以后修改源码也要使用这个编译,不要使用catkin_make编译
catkin_make_isolated --install --use-ninja

至此程序基本安装完毕,工作空间目录结构应该是这样的:

.
├── abseil-cpp
├── build_isolated
├── devel_isolated
├── install_isolated
└── src
7、测试Demo

接下来为了图个流程完整可以跑一下官方Demo:

//下载数据集
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag

//工作空间下执行sourece,或者直接将其写入bashrc
source devel_isolated/setup.bash

//运行Demo
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=存放路径/cartographer_paper_deutsches_museum.bag

如果下载比较困难可以去网上搜一下,很多人将这个数据包上传到了网盘可以从别的途径下载。

需要注意这个数据包的小细节以后可能用得到:

path:         cartographer_paper_deutsches_museum.bag
version:      2.0
duration:     31:52s (1912s)
start:        May 26 2015 21:30:16.48 (1432647016.48)
end:          May 26 2015 22:02:09.46 (1432648929.46)
size:         470.5 MB
messages:     617965
compression:  bz2 [3334/3334 chunks; 18.31%]
uncompressed:   2.5 GB @   1.3 MB/s
compressed:   462.3 MB @ 247.5 KB/s (18.31%)
types:        sensor_msgs/Imu                [6a62c6daae103f4ff57a132d6f95cec2]
              sensor_msgs/MultiEchoLaserScan [6fefb0c6da89d7c8abe4b339f5c2f8fb]
topics:       horizontal_laser_2d    70358 msgs    : sensor_msgs/MultiEchoLaserScan
              imu                   478244 msgs    : sensor_msgs/Imu               
              vertical_laser_2d      69363 msgs    : sensor_msgs/MultiEchoLaserScan

首先是数据包用了压缩,使用bz2方式压缩后的体积减小还是非常夸张的,如果以后需要经常有录制rosbag调试的需求可以尝试一下rosbag compress功能。

其次该数据包录制的雷达话题消息格式为sensor_msgs/MultiEchoLaserScan。目前cartographer的应用场景下可能还是LaserScan的消息类型多一些,而且数据包不含Odom数据以及对应TF。因此在后文使用Gazebo仿真过程中,这些接口参数时一定要改的,不改一定会出问题。

### Cartographer 安装指南 Ubuntu 20.04 #### 准备工作 确保已成功安装并配置好Ubuntu 20.04操作系统,并完成了ROS Noetic版本的安装。这步骤至关重要,因为Cartographer依赖于ROS环境来运行和测试[^2]。 #### 更新系统包列表 为了确保所有后续安装过程顺利,在开始之前先更新系统的软件源: ```bash sudo apt update && sudo apt upgrade -y ``` #### 安装必要的依赖项 安装些基本工具和其他必需组件,这些对于构建Catkin工作空间以及编译Cartographer都是必不可少的: ```bash sudo apt install -y python3-catkin-tools python3-osrf-pycommon libgoogle-glog-dev \ libatlas-base-dev libsuitesparse-dev protobuf-compiler libprotobuf-dev \ libceres-dev libpcl-dev ``` #### 创建并初始化catkin workspace 创建个新的目录作为Catkin的工作区,并克隆Cartographer及其配套的ROS封装库到此位置: ```bash mkdir -p ~/cartographer_ws/src cd ~/cartographer_ws/src git clone https://github.com/cartographer-project/cartographer.git git clone https://github.com/cartographer-project/cartographer_ros.git vcs import < cartographer_ros/installation/files/ros1.repos ``` #### 构建项目 进入工作区根目录执行如下命令来进行项目的编译安装: ```bash cd ~/cartographer_ws catkin_make_isolated --install --use-ninja -DCMAKE_BUILD_TYPE=Release source install_isolated/setup.bash ``` #### 测试安装成果 最后可以通过官方提供的例子验证是否正确安装Cartographer: ```bash roslaunch cartographer_ros demo_backpack_2d.launch rviz ``` 如果切正常,则应该可以在RVIZ可视化界面看到地图绘制的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值