工作笔记01.ROS环境安装并编译cartographer

0. 准备工作

解决一下github克隆慢的问题(网上很多帖子,不能fq的话考虑使用修改hosts)

  1. 加入谷歌域名
sudo gedit /etc/resolv.conf
  1. 将原有的nameserver这一行注释,并添加以下两行:
nameserver 8.8.8.8 
nameserver 8.8.4.4 
  1. 然后保存并关闭文件。这里是为了以后的wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
    这一行命令做铺垫的。(否则会很慢,这个以后再说)

  2. 安装一些必要的依赖包:

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
  1. 安装protobuf3

安装依赖:

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

方法一(Ubuntu命令安装)

sudo apt-get install libprotoc-dev 

方法二:(源码安装)

  • 接下来克隆源码,注意,git submodule update --init --recursive这一步克隆子模块必须有,否则后面会报错(报找不到文件的错),当然,之前如果你没有解决github下载慢的问题,这里可能就要慢的绝望了。

    git clone -b v3.6.0 https://github.com/protocolbuffers/protobuf.git
    #上述命令表示克隆版本为3.6.0的protobuf源码
    
    cd protobuf
    git submodule update --init --recursive
    #该命令表示克隆protobuf的子模块,主要是gtest
    
  • 编译并安装

    #进入到克隆的protobuf目录,当然,如果之前就在这个目录下不必再次cd
    cd protobuf
    ./autogen.sh
    ./configure
    make
    #如果没有克隆子模块,make check会失败但是可以继续make install,但是使用某些功能时可能会出错
    make check
    sudo make install
    sudo ldconfig
    #输出protobuf版本信息则表示安装成功
    protoc --version
    
  1. 最后,查看安装位置:

    which protoc
    

    其默认下载位置为 /usr/local/bin/protoc
    这是我们不想要的,因为carto的搜索protoc的路径为/usr/bin/protoc

  2. 直接copy过去

    sudo cp /usr/local/bin/protoc /usr/bin
    

最终,安装完毕protobuf3.6的版本,并完成位置的调整。

1. ubuntu18.04安装ROS运行环境

见博文 01.初识ROS https://blog.csdn.net/weixin_42214178/article/details/108376667

2. 创建工作空间

mkdir -p  ~/sx_ws/src
cd ~/sx_ws/src/
catkin_init_workspace

激活环境变量,并查看当前工作空间路径,确认环境变量是否设置成功:

# 仅当前终端
source ~/sx_ws/devel/setup.bash 

# 所有终端
 echo "source ~/sx_ws/devel/setup.bash " >> ~/.bashrc

#查看当前功能包的路径
echo $ROS_PACKAGE_PATH

显示如下,说明环境变量设置成功:
在这里插入图片描述图1-1 查看ROS功能包相关的环境变量

3 编译功能包

3.1 一些功能包的编译

把给的src文件内的功能包全部复制到本地工作空间的src文件夹下:

~/sx_ws/src

在这里插入图片描述图1-2 放置好功能包后的工作空间内的src文件夹

由于工作需要,暂时将以下文件移出src文件:
在这里插入图片描述图1-3 暂时不编译的功能包

现在,开始编译,由于是在新的主机(中控机)上进行操作,必然会缺少许多相关的依赖,在编译过程中会报错,需要通过报错消息安装相关依赖,直到编译成功:

报错1:
This workspace contains non-catkin packages in it
在这里插入图片描述图1-4 报错1

解决:该工作空间包含了非catkin类型的package,并且catkin不能编译一个“非同步的工作空间”:

'catkin_make_isolated' command instead

使用‘catkin_make_isolated’代替‘catkin_make’进行编译

报错2:
Failed to process package ‘ceres-solver’
解决:安装 ‘ceres-solver’

  1. 先安装 'ceres-solver’依赖包:
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev
# BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse and CXSparse (optional)
# - If you want to build Ceres as a *static* library (the default)
#   you can use the SuiteSparse package in the main Ubuntu package
#   repository:
sudo apt-get install libsuitesparse-dev
# - However, if you want to build Ceres as a *shared* library, you must
#   add the following PPA:
sudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687
sudo apt-get update
sudo apt-get install libsuitesparse-dev
  1. 下载最新版本的ceres-solver,具体参考官网安装教程
tar zxf ceres-solver-1.14.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-1.14.0
make -j4
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install

报错3:
Could not find a package configuration file provided by
“jsk_recognition_msgs” with any of the following names。
解决:缺少相应的功能包,类似问题都安装缺少的功能包。
在这里插入图片描述图1-5 报错3

sudo apt install ros-melodic-jsk-recognition-msgs

报错4:

在处理时有错误发生:
 /var/cache/apt/archives/ros-melodic-libphidget21_0.7.10-1bionic.20200801.013518_amd64.deb
 /var/cache/apt/archives/ros-melodic-lvr2_20.7.1-1bionic.20200710.132440_amd64.deb
 /var/cache/apt/archives/ros-melodic-mrpt2_2.0.4-1bionic.20200622.141446_amd64.deb

解决:

  • 更名 mv /var/lib/dpkg/info /var/lib/dpkg/info_old

  • 新建 mkdir /var/lib/dpkg/info

  • 重新安装文件:sudo apt --fix-broken install

  • 将新生成的软件包配置文件覆盖旧的文件:

    mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old/
    
  • 恢复软件包配置文件里表

    rm -rf /var/lib/dpkg/info
    mv /var/lib/dpkg/info_old /var/lib/dpkg/info
    

3.2 cartographer的编译安装

因为未知原因,现在先在新建的工作空间中编译安装cartographer,然后将其他功能包放入src文件夹,并编译。

  1. 安装工具:
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
  1. 初始化工作空间:
cd ~/sx_ws/
wstool init src
  1. 加入cartographer_ros.rosinstall并更新依赖
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src

报错:ERROR in config: Error processing 'ceres-solver' : [ceres-solver] Checkout of https://ceres-solver.googlesource.com/ceres-solver.git version 1.13.0 into /home/lxr/sx_ws/src/ceres-solver failed.
在这里插入图片描述图1-5 更新报错

解决:
如果你挂了 VPN ,一般不会出错。
如果你没有翻墙,会出现无法下载 ceres-solver 的问题,我们可以修改其下载地址:
1) 修改 <工作空间>/src/.rosinstall 文件
2) 修改 <工作空间>/src/cartographter_ros/cartographter_ros.rosinstall 文件
将两个文件中的 ceres-solver 路径改为从 github 下载
https://github.com/ceres-solver/ceres-solver.git

以上是其他博主的解决方案,实测只需修改google_carto_ws/src/.rosinstall 文件,即可更新完成。
使用快捷键“Ctrl + h”显示隐藏文件。
我的修改后的<工作空间>/src/.rosinstall 文件。

# THIS IS AN AUTOGENERATED FILE, LAST GENERATED USING wstool ON 2020-09-09
- git:
    local-name: cartographer
    uri: https://github.com/cartographer-project/cartographer.git
    version: 1.0.0
- git:
    local-name: cartographer_ros
    uri: https://github.com/cartographer-project/cartographer_ros.git
    version: 1.0.0
- git:
    local-name: ceres-solver
    # 修改部分
    uri: https://github.com/ceres-solver/ceres-solver.git
    version: 1.13.0
  1. 安装依赖并下载cartographer相关功能包
#
#sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
  1. 编译并安装
catkin_make_isolated --install --use-ninja
echo "source ~/sxc_ws/devel/setup.bash" >> ~/.bashrc 

4.总结

先编译安装cartographer功能包,然后将其余功能包放入src文件夹,进行编译。如果报错,可以考虑删除除了src文件夹以外的所有文件,然后再次进行整个工作空间的编译。

参考文件

[1] Ceres Solver安装与入门使用
[2] ROS环境下部分编译异常解决方案
[3] 官网安装教程
[4] 问题解决方案2-------------ros的 Cartographer,ninja,ceres-solver,cartographer_ros安装及其问题,附上最好的安装方法(亲测有效)
[5] dpkg 处理 xx 时出错
[6] Cartographer安装教程及踩坑实录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值