cartographer安装_Lidar SLAM系列 | cartographer

b59926c2ee89f8b716061154e084c431.png

声明:本文首发于我的公众号【当SLAM遇见小王同学】,谢绝私自转载,如有需要,可加我微信进行授权!!侵权必究!

期末考试终于结束了,好开心啊,终于可以搬小板凳安心更新好文了,原谅前面几篇有点水,Vins-mono也基本快看完了,激光SLAM该起程了.

说起激光SLAM,这算是起步比较早的SLAM系统,目前市面常用的就是:

loam系列

cartographer

其他

loam算是比较稳定、问世早、鲁棒性较好的大哥大,长期雄霸各大榜首,基于它的优化改动版也很多,比如Lego-loam等.

cartographer是谷歌开源的2D/3D激光SLAM系统,实现低计算资源消耗,其代码实现也是非常值得学习的.

关于loam安装请参考以前文章

这次以谷歌cartographer为例安装

依赖

sudo apt-get install -y 
    cmake 
    g++ 
    git 
    google-mock 
    libboost-all-dev 
    libcairo2-dev 
    libeigen3-dev 
    libgflags-dev 
    libgoogle-glog-dev 
    liblua5.2-dev 
    libprotobuf-dev 
    libsuitesparse-dev 
    libwebp-dev 
    ninja-build 
    protobuf-compiler 
    python-sphinx
    ros-<version>-tf2-eigen

关于protobuf3,在源码里面,谷歌官方写了一个sh文件进行安装,但是这样安装可能有问题,采用apt方式进行安装protobuf3更简单.

附上源码编译:

git clone https://github.com/google/protobuf.git
cd protobuf
git checkout v3.6.1
mkdir build
cd build
cmake  
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON 
  -DCMAKE_BUILD_TYPE=Release 
  -Dprotobuf_BUILD_TESTS=OFF 
  ../cmake
make -j4
sudo make install

Abseil安装

Abseil是Google 开源的C++ 基础库

git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
mldir build && cd build
cmake ..  -DBUILD_SHARED_LIBS=ON
sudo make
sudo make install

ceres-solver

git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
mkdir build
cd build
cmake ..
sudo make -j4
sudo make install

重头戏来了

源码编译

官方版

sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build

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

src/cartographer/scripts/install_proto3.sh
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

## Build and install.

catkin_make_isolated --install --use-ninja

民间版:

sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
 
#新建cartographer_ws工作站

cd cartographer_ws
mkdir src && cd src
git clone https://github.com/googlecartographer/cartographer.git
git clone https://github.com/googlecartographer/cartographer_ros.git

#进入你的cartographer目录
cd cartographer_ws
 
# Install proto3.
src/cartographer/scripts/install_proto3.sh
 
rosdep update
 
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
 
# Build and install.这一步会花费很长的时间
catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash

本人使用的是第二种,安装成功.

d86df739819e64d392909d2734eb4500.png

就这? 还有个雷 !

××××

××××

Abseil问题

CMakeList.txt文件修改

find_package(Abseil REQUIRED) --> find_package(absl REQUIRED)
CMakeList.txt 第2处:#默认的库文件是 standalone_absl

target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY}
absl::base
absl::synchronization
absl::strings
absl::flat_hash_map
absl::numeric
absl::flags)

cartographer-config.cmake.in修改

find_package(Abseil ${QUIET_OR_REQUIRED_OPTION}) Abseil 改为 absl

上述文件均在cartographer里面,cartographer_roscartographer_rvizCMakeList.txt修改如下

find_package(Abseil REQUIRED) 改为 find_package(absl REQUIRED)

show Time

官方提供了一些数据集

Deutsches Museum(德意志博物馆)

983b44245a8d541b089c510600151665.gif

2D数据集

文件大小400+MB

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数据集

文件大小为几G

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数据集

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

运行

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

第一行命令是生成地图,第二句运行重定位.load_state_filename是第一个包生成的地图数据,地图格式是pbstream bag_filename是第二个离线包的名字.

3D数据集

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

## 运行
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

Static landmarks

该示例是静态路标,landmark是路标点,在VSLAM的一个重要作用就是实现快速定位.但是运行这个包有些问题.

cbcdac1543475c2e2d9a409fcc61d164.png

先放上运行命令

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/mir/landmarks_demo_uncalibrated.bag

roslaunch cartographer_mir offline_mir_100_rviz.launch bag_filename:=${HOME}/Downloads/landmarks_demo_uncalibrated.bag

要想运行还需要在原先代码的基础上新安装一个包cartographer_mir

安装过程如下:

首先把cartographer_mir下载到你的源码文件中:

cd cartographer_ws // 进入到你安装cartographer的工作空间
cd src
git clone https://github.com/googlecartographer/cartographer_mir.git

编译

catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash

参考网友办法,这个demo要想运行成功需要改两个地方:

launch命令必须修改如下:

roslaunch cartographer_mir offline_mir_100_rviz.launch bag_filenames:=${HOME}/Downloads/landmarks_demo_uncalibrated.ba

其中bag_filename:=修改为了bag_filenames:=

修改配置文件cartographer_mir/cartographer_mir/configuration_files/mir-100-mapping.lua中的两个参数为:

use_pose_extrapolator = on
TRAJECTORY_BUILDER.collate_landmarks = on

Revo LDS

Revo是激光雷达,官方用它录了一个数据集

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/revo_lds/cartographer_paper_revo_lds.bag
roslaunch cartographer_ros demo_revo_lds.launch bag_filename:=${HOME}/Downloads/cartographer_paper_revo_lds.bag

PR2

PR2是一款人型机器人

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/pr2/2011-09-15-08-32-46.bag
roslaunch cartographer_ros demo_pr2.launch bag_filename:=${HOME}/Downloads/2011-09-15-08-32-46.bag

Taurob Tracker

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/taurob_tracker/taurob_tracker_simulation.bag
roslaunch cartographer_ros demo_taurob_tracker.launch bag_filename:=${HOME}/Downloads/taurob_tracker_simulation.bag
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值