C/C++教程

ubuntu18.04安装cartographer记录

本文主要是介绍ubuntu18.04安装cartographer记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

按照官网指导上的指令安装下来,在个别步骤上可能会因为长城的缘故,导致安装失败,一波三折。费了一天时间,终于把cartographer安装成功,翻阅了各种博客文章,结合自己碰到的问题,总结记录一下。

  • 安装依赖包

    sudo apt-get update
    sudo apt-get install -y python-wstool python-rosdep ninja-build stow
    
  • 创建工作空间与下载安装包

    mkdir catkin_ws
    cd catkin_ws
    wstool init src
    wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
    

    注意看到src目录出现.rosinstall文件(显示隐藏文件ctrl + h),往里面填加ceres1.13.0的下载地址 (版本1.13.0,否则与eigen库冲突)。

    sudo gedit /home/ros/catkin_ws/src/.rosinstall
    

    往里面添加:

    - git:
        local-name: ceres-solver
        uri: https://github.com/ceres-solver/ceres-solver.git
        version: 1.13.0
    

    终端执行命令,下载安装包

    wstool update -t src
    

    下载完之后,工作空间src目录是这样的:
    在这里插入图片描述

  • 安装cartographer_ros依赖
    首先要有ros系统。

    sudo rosdep init
    rosdep update
    rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
    

    因为长城的原因,这里的rosdep update往往是头疼的一步,最常见的解决方法是修改/etc/hosts,使用境外的ip,但是我一直没有成功。最终参考了古月的博文,得以顺利解决。强烈推荐:https://www.guyuehome.com/34072

  • 安装abseil库

    src/cartographer/scripts/install_abseil.sh
    

    安装过程中,注意是否出现*existing target is neither a link nor a directory: include/absl/algorithm/algorithm.h类似警告,说明在此前已经安装过了abseil库。(如果后续不影响cartographer安装可忽略,如果导致失败,看下文)

  • 编译cartographer
    这里是最后一步了,是漫长的等待…

    catkin_make_isolated --install --use-ninja
    

    报错1:

    ImportError: "from catkin_pkg.package import parse_package" failed: No module named 'catkin_pkg'
    Make sure that you have installed "catkin_pkg", it is up to date and on the PYTHONPATH.	
    

    安装catkin_pkg即可。

    python3 -m pip install catkin_pkg
    

    报错2:

    /usr/bin/ld: /usr/local/lib/libabsl_synchronization.a(mutex.cc.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC
    /usr/local/lib/libabsl_synchronization.a: 无法添加符号: 错误的值
    collect2: error: ld returned 1 exit status
    ninja: build stopped: subcommand failed.
    <== Failed to process package 'cartographer_rviz':
    

    因为abseil库导致的错误,可能我先前安装的abseil库版本不符,故卸载重装:

    sudo rm -rf '/usr/local/include/absl' 
    sudo rm -rf '/usr/local/lib/cmake/absl' 
    cd /usr/local/lib
    sudo rm libabsl_*
    

    终端回到工作空间重装即可:

    src/cartographer/scripts/install_abseil.sh
    

    安装abseil会用到stow管理器,在库安装和卸载的时候很方便。https://zhuanlan.zhihu.com/p/54750603

    报错3:
    也不知道进行了什么骚操作,导致出现这个问题,翻遍google和baidu都没找到解决办法。

    By not providing "FindLuaGoogle.cmake" in CMAKE_MODULE_PATH this project ...
    

    删除build_isolated、 install_isolated、 src,重新开始。

这篇关于ubuntu18.04安装cartographer记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!