ros melodic 源码安装cartographer

在ubuntu18+ros melodic下使用如下命令即可进行二进制安装cartographer ros,但是有时候需要修改其中的源码,那只能进行源码安装了。

sudo apt-get install ros-melodic-cartographer*

同时官方也推荐使用wstool和rosdep构建其ROS运行环境。
根据官方教程,我们只需进行如下步骤,即可完成cartographer源码安装。

步骤1:安装wstool、rosdep、ninja

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

再安装一些依赖

sudo apt-get install -y 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

步骤2:构建新的工作空间

cd ~
mkdir carto_ws
cd carto_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src

其中,倒数第二条命令,是进行包下载的命令,在国内往往会失败。通过科学上网,在浏览器中打开https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall发现了两个如下两个连接,是cartographer相关的包仓库,把它下载下来(没有科学上网的童鞋也可以下载,即使网速慢了些)。

https://github.com/cartographer-project/cartographer.git
https://github.com/cartographer-project/cartographer_ros.git

把下载下来的包解压,并放到/carto_ws/src下

步骤3:更新依赖

官网上通过下面命令更新依赖。

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
# Only on Ubuntu 16 / ROS Kinetic: src/cartographer/scripts/install_proto3.sh

你会发现rosdep有问题,不用查了,网络问题,上面三个步骤,我们直接跳过,因为在一开始我们把大部分依赖安装完了。

步骤4:下载安装ceres-solver

通过下面网址下载ceres-solver包后,解压,放到home目录下

http://ceres-solver.org/ceres-solver-1.13.0.tar.gz

运行下面命令

#切换到源目录
cd ceres-solver-1.13.0

#编译
mkdir build
cd build
cmake ..
make

#安装
sudo make install

步骤5:手动安装abseil-cpp库

通过下面网址下载abseil-cpp库

https://github.com/abseil/abseil-cpp.git

下载好,解压到/carto_ws/src下,并重命名为abseil-cpp。执行下面命令进行编译和安装

cd ~/carto_ws/src
set -o errexit
set -o verbose
cd abseil-cpp
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl ..
ninja
sudo ninja install
cd /usr/local/stow
sudo stow absl

提示:如果遇到C++11标准的问题而编译不下去的话,在CMakeLists.txt中添加下面一行代码即可(建议添加到第二第三行附近):

add_compile_options(-std=c++11)

步骤6:编译工作空间

cd ~/carto_ws
catkin_make_isolated --install --use-ninja

效果:出现Finished processing package 则表示成功
如果遇到相关的依赖问题,可以参考底下“补充”的内容。
在这里插入图片描述

步骤7:生效环境

sudo gedit ~/.bashrc

在最下面加入

source ~/carto_ws/install_isolated/setup.bash

source ~/.bashrc进行生效

步骤8:验证

  1. 在home目录下新建carto_map_bag文件夹:mkdir -p ~/carto
    通过下面命令下载数据包
https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
  1. 复制到carto_map_bag下
    运行命令,其中tanunat是本人用户。
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/tanunat/carto_map_bag/cartographer_paper_deutsches_museum.bag
  1. 效果
    在这里插入图片描述

篇尾:修改完代码后需运行catkin_make_isolated --install --use-ninja命令进行重编译。

补充:

  1. 遇到protobuf缺失,运行下面指令,其中git clone https://github.com/google/protobuf.git可以先通过浏览器下载好,再拷贝进去,会快很多。
sudo apt-get install autoconf automake libtool curl make g++ unzip
git clone https://github.com/google/protobuf.git
cd protobuf
./autogen.sh
./configure
make -j4
sudo make install
sudo ldconfig 

参考链接

  1. 遇到pcl缺失,执行下指令:
sudo apt-get install ros-melodic-pcl-ros
sudo apt-get install ros-melodic-pcl-msgs
  1. 本人使用catkin_make_isolated --install --use-ninja编译的时候,时常出现爆内存的情况(可以使用htop来查看内存情况),当出现爆内存了,我们可以使用下面命令来减少编译时候的进程使用数,从而减少内存使用量。其中-j1是“使用一个进程数量”的意思,当然你也可以改为-j2-j4
catkin_make_isolated --install --use-ninja -j1
  1. 多个source不成功问题:
    在~/.bashrc里source多个工作空间的时候,只需要写一个source即可,后面加入工作空间的地址并以空格分隔,如下面命令,直接source成功了两个工作空间。
source ~/carto_ws/install_isolated/setup.bash ~/qxrobot_ws/devel/setup.bash
  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值