Ubuntu18.04安装Cartographer

1、安装依赖

1.1、安装Eigen3

sudo apt-get install libeigen3-dev
# 构建ceres作为一个静态的库
sudo apt-get install libsuitesparse-dev

1.2、 安装lua5.2

sudo apt install lua5.2

1.3、安装abseil

下载abseil安装包,安装abseil静态连接库:

cd abseil-cpp
mkdir build && cd build
cmake ..
make
sudo make install

安装abseil的动态库:可以将之前的build文件夹删掉,重新建立build文件夹

mkdir build && cd build
cmake ..  -DBUILD_SHARED_LIBS=ON
make
sudo make install

1.4、 安装其他相关依赖

sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
sudo apt-get install cmake
sudo apt-get install build-essential
sudo apt-get install libgoogle-glog-dev
sudo apt-get install libatlas-base-dev

2、安装包下载与安装

谷歌官方推荐了三个安装包,分别为cartographercartographer_ros以及ceres-solver

2.1、构建cartographer_ws

# 创建cartographer_ws工作空间
mkdir -p cartographer_ws/src
cd cartographer_ws/src
catkin_init_workspace
cd ..
catkin_make

将之前下载的三个源码包解压并放到cartographer_ws/src文件夹下:
在这里插入图片描述

2.2、构建ceres

cd ceres-solver
mkdir ceres-bin
cd ceres-bin
cmake ..
make
make test
 
sudo make install

注意:在编译过程中如果提示缺少Lua,那么请按照 1.2 进行,或者源码安装:

(1) 下载Lua包,先安装必要的依赖关系

sudo apt-get install build-essential
 
sudo apt-get install libreadline
 
sudo apt-get install libreadline5-dev

如果没有找到对应的包,在两次tab键后,选择最相关的一个包安装即可。

(2) 将下载下来的Lua包解压到自定义目录下,进行安装

make linux
sudo make install

(3) 测试是否安装成功
在命令行输入,显示如下,说明成功,使用ctrl+d退出lua:

$ lua
Lua 5.2.3  Copyright (C) 1994-2013 Lua.org, PUC-Rio
> 

2.3、安装porto3

porto为goole的一个对文件操作的库

直接将下载好的protobuf放在cartographer/scripts/目录下就行
在这里插入图片描述
编译安装protobuf

cd protobuf
mkdir build
cd build
cmake -G Ninja \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -Dprotobuf_BUILD_TESTS=OFF \
  ../cmake
 
ninja
sudo ninja install

2.4、工程编译

cd cartographer_ws
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

注意:若上面rosdep update执行失败,可以删除已存在的/etc/ros/rosdep/sources.list.d/20-default.list,重新sudo rosdep init && rosdep update

3、运行测试

3.1、数据集下载并测试

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

3.2、运行BUG

1、在运行例子时,如果出现

ERROR: cannot launch node of type [cartographer_ros/cartographer_node]: can't locate node [cartographer_node] in package [cartographer_ros]
ERROR: cannot launch node of type [cartographer_ros/cartographer_occupancy_grid_node]: can't locate node [cartographer_occupancy_grid_node] in package [cartographer_ros]
ERROR: cannot launch node of type [cartographer_turtlebot/cartographer_flat_world_imu_node]: can't locate node [cartographer_flat_world_imu_node] in package [cartographer_turtlebot]

类似与上述的错误。

第一、 检查你的包路径是否已经在ROS路径之中,通过gedit~/.bashrc 可以添加修改。

第二、 回到根目录,cd进你的工作空间,输入:

source devel/setup.bash
source install_isolated/setup.bash

这两句很重要,如果失败就关闭终端重新来一次,这两句话是要在每次运行前都要输入的。

2、在编译过程中没有问题,运行时却查找不到abseil动态库

error while loading shared libraries: libabsl_hash.so: cannot open shared object file: No such file or directory
error while loading shared libraries: libabsl_synchronization.so: cannot open shared obj
ect file: No such file or directory

原因是由于/usr/local/lib这个路径不是系统的默认搜索路径,因此,找不到这个动态库。

解决方法:将/usr/local/lib路径添加到系统默认的搜索路径中

sudo gedit /etc/ld.so.conf

在文件末尾添加需要搜索的路径/usr/local/lib,如下:

include /etc/ld.so.conf.d/*.conf
/usr/local/lib

使修改生效

sudo /sbin/ldconfig

3.3、测试结果

在这里插入图片描述

4、参考链接

4.1、cartographer安装相关教程

1、https://blog.csdn.net/SimileciWH/article/details/82939752

2、https://blog.csdn.net/qq_36059536/article/details/107418777

3、https://zhuanlan.zhihu.com/p/265081520

4.2、bug解决相关教程

1、https://blog.csdn.net/Jinxiaoyu886/article/details/90485704

2、https://blog.csdn.net/zyh821351004/article/details/106334347

  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值