当前位置:首页 » 《资源分享》 » 正文

Ubuntu 18.04 20.04 在 ROS 1 下安装 Cartographer 和 Cartographer_ROS【方法与避坑~】

6 人参与  2024年05月16日 10:10  分类 : 《资源分享》  评论

点击全文阅读


文章目录

前言一、安装 ROS二、安装依赖三、安装 Protobuf 31. 先卸载 ROS 自带的 Proto2 :2. 安装 Protobuf 3.6.0(1) 克隆源码:(2) 编译与安装: 四、创建并配置一个 ROS 工作空间五、安装 Ceres Solver六、安装、编译 Cartographer 及其依赖 Abseil七、编译 cartographer_rosThe End~


前言

环境版本:完全纯净的

Ubuntu 18.04 arm64 + ROS 1 Melodic

Ubuntu 20.04 arm64 + ROS 1 Noetic


一、安装 ROS

有了小鱼老师的一键安装ROS,真的是巨省事儿了。地址在这里,一行代码搞定~

链接: 小鱼的一键安装系列

二、安装依赖

sudo apt-get update
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

Ubuntu 20.04 下补充一波依赖:

sudo apt-get install -y \    clang \    libcurl4-openssl-dev \    lsb-release \    stow

最后,无论哪个系统,再补充 gmock、PCL 和 pcl_conversions 三个依赖,不然最后编译 cartographer_ros 时可能报错~

sudo apt install libgmock-devsudo apt install libpcl-dev// Ubuntu 18.04 + ROS 1 Melodic 执行如下命令:sudo apt-get install ros-melodic-pcl-conversions// Ubuntu 20.04 + ROS 1 Noetic 执行如下命令:sudo apt-get install ros-noetic-pcl-conversions

三、安装 Protobuf 3

1. 先卸载 ROS 自带的 Proto2 :

sudo apt-get remove libprotobuf-devwhich protoc// 运行 which protoc 后会显示 protoc 所在的路径rm /usr/local/bin/protoc// remove的具体路径以 which protoc 显示的为准,也有可能是usr/bin/protoc // 至此,低版本的 Protobuf 卸载完成。

2. 安装 Protobuf 3.6.0

(1) 克隆源码:

git clone -b v3.6.0 https://github.com/protocolbuffers/protobuf.gitcd protobufgit submodule update --init --recursive// 该命令克隆 Protobuf 的子模块,这句话很必要,否则后面有的你报错咯

(2) 编译与安装:

完成上面的代码后,现在应该是已经在 protobuf 目录之中了。接下来:

./autogen.sh./configuremakemake checksudo make installsudo ldconfigprotoc --version// 此时若能输出 Protobuf 版本信息则表示安装成功which protoc// 查看 Protobuf 的安装位置,其默认下载位置为 /usr/local/bin/protoc 。但 cartographer 搜索 protoc 的路径为 /usr/bin/protoc,因此我们这里直接copy过去~sudo cp /usr/local/bin/protoc /usr/bin

四、创建并配置一个 ROS 工作空间

在自己希望的地方建立工作空间文件夹,这里我命名为 carto_ws。进入 carto_ws 路径,并再创建src文件夹。

mkdir carto_wscd carto_wsmkdir src

回到工作空间路径,并编译:

cd ~/carto_wscatkin_make

回到根目录下,并 source 编译好的 devel 文件夹下的 setup.bash 文件:

cdsource ~/carto_ws/devel/setup.bashgedit ~/.bashrc

在打开的 .bashrc 文件最后的 “source /opt/ros/noetic/setup.bash” 语句后加入刚才的 "source ~/carto_ws/devel/setup.bash"语句,如图。

请添加图片描述

完成~

五、安装 Ceres Solver

Ceres Solver 是 Cartographer 的重要依赖,但注意新版的 Ceres 安装后会导致 Cartographer 编译报错,这里建议使用 1.13.0 版本:

从以下链接下载 Ceres Solver 1.13.0:
链接: https://codeload.github.com/ceres-solver/ceres-solver/tar.gz/refs/tags/1.13.0

下载后将文件夹移至希望存放的目录下,我这里是放在了与工作空间平行的位置:

请添加图片描述

接下来编译 Ceres Solver:

cd ceres-solver-1.13.0mkdir buildcd buildcmake ..makemake testsudo make install

六、安装、编译 Cartographer 及其依赖 Abseil

首先进入希望存放 Cartographer 的目录,我这里同样是放在了与工作空间平行的位置。

git clone https://github.com/cartographer-project/cartographer.gitcd cartographersudo gedit package.xml

删除 package.xml 文件中的这一行:

<depend>libabsl-dev</depend>

继续运行:

cd scripts./install_abseil.sh

配置 rosdep:
这里也建议用小鱼老师的一键配置 rosdepc,方法与上面一键安装一样,输入鱼香ROS一键安装命令后选择 [3] 即可。

再运行:

rosdepc update

→→→ Ubuntu 18.04 安装的 ROS1 版本应该是 Melodic,因此命令为:

cd carto_wsrosdep install --from-paths src --ignore-src --rosdistro=melodic -y// 如果不按上面的先删除代码再运行脚本安装 abseil 的话,本步可能会报 "cartographer: [libabsl-dev] defined as “not available“ for OS version [bionic]"错误

→→→ Ubuntu 20.04 安装的 ROS1 版本应该是 Noetic,因此命令为:

cd carto_wsrosdep install --from-paths src --ignore-src --rosdistro=noetic -y

运行后应显示:#All required rosdeps installed successfully

接下来编译 Cartographer:

cd cartographermkdir buildcd buildcmake .. make// 如果 Ceres Solver 用的是最新版本,则此处 make 大概率会花式 (literally~) 报各种错误make testsudo make install

七、编译 cartographer_ros

!!! 注意,在 arm64 架构处理器下,catkin_make 会报"危险的重寻址,不支持的重定位" “recompile with -fPIC dangerous relocation: unsupported relocation” 错误。解决方案是在 abseil 包中添加 fPIC 编译选项。
找到刚才安装的 abseil 目录 abseil-cpp,在其中的 CMakeList.txt 文件的前部添加代码:

add_compile_options(-fPIC)

然后继续,进入刚刚创建的 ROS 工作空间的 src 文件夹中,克隆代码并编译工作空间:

cd ~/carto_ws/srcgit clone https://github.com/cartographer-project/cartographer_ros.gitcd ~/carto_wscatkin_make

The End~


点击全文阅读


本文链接:http://zhangshiyu.com/post/109326.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1