cartographer安装详细教程(Ubuntu 16.04)

本安装教程参考了以下链接,有需要可以结合这个链接安装cartographer。本人在这个基础上做了些改动,以适配自己的电脑。但是有些内容是通用的且本人也比较推荐这样的方法,比较实用!

参考链接:Cartographer安装教程及踩坑实录_白色小靴的博客-CSDN博客_vnc远程桌面怎么使用

一、首先要做好前期的准备工作

1.解决好GitHub下载速度慢的问题

方法①:在这个网址上搜索以下内容的IP地址,并将其写入到/etc/hosts下的hosts文件中

需要搜索的IP地址:
① github.com
② github.global.ssl.fastly.net
③ codeload.github.com

讲上述三个的IP写入到hosts文件中,如下所示:

140.82.114.4 github.com
199.232.69.194 github.global.ssl.fastly.net
140.82.113.10 codeload.github.com

点击保存,关闭hosts文件,然后执行以下命令重启网络:

/etc/init.d/networking restart

方法②:从码云上下载(重新选取图片)

首先需要在码云上注册账户并完成登录。然后点击右上角的+号新建仓库,我们不创建新的仓库,而是将我们需要下载的仓库导入到新建仓库里面。

点击导入仓库后,讲带有https://的GitHub链接粘贴进去,然后点击导入即可。

完成仓库导入后,找到我们刚刚新建的仓库,点击下载即可,速度很快。(但是当我们需要从这个仓库中下载固定内容时,这个方法就不太行,因为这个是直接下载整个仓库)

2、加入谷歌服务器域名

①:sudo gedit /tc/resolv.conf

②:将原先的nameserver注释掉,添加下面两行:
nameserver 8.8.8.8
nameserver 8.8.4.4

③点击保存并退出

3、安装依赖

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 \
    libsuitesparse-dev \
    libwebp-dev \
    ninja-build \
    protobuf-compiler \
    python-sphinx

4、安装protobuf3(重点)

(1)首先要查看自己protoc的版本:使用以下命令

protoc --version

(2)如果是protoc2的版本,需要完成以下内容(卸载protoc2版本,为安装protoc3做准备)

卸载libprotobuf-dev(使用aptitude)
sudo aptitude remove libprotobuf-dev

aptitude会将protoc依赖包也一并删除,非常好用,点击y接受方案即可

如果提示没有aptitude,使用以下命令安装aptitude:

sudo apt-get install aptitude

耐心等待卸载即可。

(3)安装protoc3

①安装依赖:

sudo apt-get install autoconf automake libtool curl make g++ unzip

② 从GitHub上下载3.6版本的protobuf

git clone -b v3.6.0 https://github.com/protocolbuffers/protobuf.git

这里使用了上述的用git代理加速的方法,亲测下载速度很快。

③ 依次执行以下命令(耐心等待执行过程)

cd protobuf

git submodule update --init --recursive
(一般卸载完protoc的各种依赖后添加子模块是不会报错的)

./autogen.sh

./configure

make
如果添加子模块失败,执行make check会报错,但不影响后面的步骤,只是后续使用时会出现一些问题
make check

sudo make install

sudo ldconfig

protoc --version 输出版本号成功

④ 按照上面步骤安装成功后,将protoc文件放在目录:/usr/bin下。这里不使用软连接,直接将目录:/usr/local/bin下的protoc文件复制过去。

① 执行复制命令
sudo cp -f /usr/local/bin/protoc /usr/bin/
② 查看是否复制成功
find /usr/bin -name 'protoc'
该命令会显示要查找的文件的所在路径

至此,前期的准备工作已经弄好了,接下来就是安装cartographer了。

二、安装cartographer

1、创建工作空间carto_ws

$ mkdir  -p carto_ws/src
$ cd carto_ws
$ wstool init src

2、使用gedit格式打开src下的.rosinstall文件,将下面内容添加进去

gedit /carto_ws/src/.rosinstall    //打开.rosinstall文件

将以下内容复制到.rosinstall文件中

- git: {local-name: cartographer, uri: 'https://github.com/googlecartographer/cartographer.git', version: '1.0.0'}
- git: {local-name: cartographer_ros, uri: 'https://github.com/googlecartographer/cartographer_ros.git', version: '1.0.0'}
- git: {local-name: ceres-solver, uri: 'https://ceres-solver.googlesource.com/ceres-solver.git', version: '1.13.0'}

点击保存并退出

3、依次执行以下命令,中途点击yes即可

wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src

这个过程是从GitHub上下载cartographer、cartographer_ros、ceres_solver三个包,因为我一直开着git代理,所以一会儿就装好了。(ps:强烈推荐Pigcha加速器)

4、安装依赖并下载cartographer相关功能包(根据自己版本替换,我这里下载kinetic版本)

rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y

如果做好了前期的准备工作,rosdep 这一步是可以直接通过的。

三、编译和安装

catkin_make_isolated --install --use-ninja

编译过程中遇到问题汇总:

1. 中间如果找不到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

2.编译时出现.so文件丢失:

'/usr/lib/x86_64-linux-gnu/libtbb.so', needed by 'cartographer.io.internal.in_memory_proto_stream_test', missing and no known rule to make it

解决方法:

第一步:找到libtbb.so依赖的库。使用以下命令实现:
apt-file search libtbb.so

如果没有apt-file工具,可以通过以下命令下载

sudo apt-get install apt-file
apt-file update

查找之后,发现是libtbb-dev包没有下载,于是又重新下载这个包

sudo apt-get install -y libtbb-dev

3.当解决好.so文件的丢失问题后,他紧接着又出现了一推错误,错误如下:

cartographer安装详细教程(Ubuntu 16.04)_第1张图片

解决方法:

cd ~/carto_ws/src
catkin_init_workspace

你可能感兴趣的:(ROS学习笔记,ubuntu,github,git)