Ubuntu 18.04环境下实时运行ORB-SLAM2和ORB-SLAM3的配置指南——SLAM相关库安装与ROS集成

文章目录

  • 一、换源
  • 二、安装三方库
  • 2.1 安装必要的依赖项
  • 2.2 安装Pangolin
  • 2.3 安装OpenCV3
  • 2.4 安装Eigen3
  • 三、安装ORB-SLAM2
  • 四、安装ORB-SLAM3
  • 4.1 安装OpenCV4
  • 4.2 安装ORB-SLAM3
  • 五、安装ROS Melodic
  • 六、ROS安装摄像头驱动
  • 七、ROS实时运行ORB-SLAM2
  • 7.1 相机标定
  • 7.2 编译ORB_SLAM2 ROS例子
  • 7.3 实时运行ORB-SLAM2
  • 八、安装SLAM测评工具evo
  • 8.1 安装evo
  • 8.2 测试evo
  • 九、安装PCL和Octomap
  • 十、安装优化库:G2O、GTSAM和Ceres
  • 十一、安装Sophus

  • 在新安装的Ubuntu 18.04系统中配置ORB-SLAM2和ORB-SLAM3的运行环境,大部分内容与我的另一篇文章Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+Gazebo仿真运行ORB-SLAM2+各种相关库的安装一样,本文为其拓展

    一、换源

    Ubuntu系统自带的源都是国外的网址,国内用户在使用的时候下载比较慢甚至无法获取,在安装各种库或软件时会深受其折磨!解决方案是直接替换成国内的镜像源
    (1)备份源文件:

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

    (2)打开文件:

    sudo gedit /etc/apt/sources.list

    (3)换源:推荐清华的源(根据自己的网去尝试,选择最快的一个,查看ubuntu版本命令:cat /etc/issue):清华源地址,选择Ubuntu版本并复制源,覆盖sources.list文件原来的内容。
    (4)换过源之后要更新:

    sudo apt-get update

    二、安装三方库

    2.1 安装必要的依赖项

    sudo apt-get update
    sudo apt-get install git gcc g++ vim make cmake
    

    2.2 安装Pangolin

    安装Pangolin 0.6(稳定版)(官网下载地址,不要下载最新master版,编译的时候可能有错误)
    (1)安装依赖项

    sudo apt-get install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev
    sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libpng-dev
    

    (2)配置并编译

    cd Pangolin 
    mkdir build && cd build
    cmake -DCPP11_NO_BOOST=1 ..
    make
    sudo make install
    

    (3) 验证

    cd ../examples/HelloPangolin
    mkdir build && cd build
    cmake ..
    make
    ./HelloPangolin
    

    若安装成功,则会弹出以下窗口:

    2.3 安装OpenCV3

    ORB-SLAM2要求至少 2.4.3,作者使用 OpenCV 2.4.11 和 OpenCV 3.2 测试。我测试OpenCV3.4.5和OpenCV3.2.0可行。安装OpenCV-3.4.5(OpenCV老版本可在Github仓库右侧的Releases里找),将文件解压到某个位置,在该文件下打开终端

    注:如果需要装ros melodic,请先装ros,它已经自带了OpenCV3.2.0,这里就不需要安装OpenCV3了,否则后面使用容易版本冲突
    (1)安装依赖项

    sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
    sudo apt update
    sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev 
    sudo apt-get install libavformat-dev libjpeg.dev libtiff5.dev 
    sudo apt-get install libswscale-dev libjasper-dev 
    sudo apt-get install libcanberra-gtk-module libcanberra-gtk3-module 
    #或者
    sudo apt-get install libcanberra-gtk*
    

    (2) 配置并编译

    mkdir build && cd build 
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
    #电脑性能差可去掉-j4,性能很好可增加数字(线程)
    make -j4
    sudo make install
    

    (3)查询OpenCV版本、库以及头文件目录的三个命令来确保上面的OpenCV安装步骤都正常:

    pkg-config --modversion opencv
    pkg-config --cflags opencv
    pkg-config --libs   opencv
    

    2.4 安装Eigen3

    Eigen3是一个纯头文件的库,这个特点让使用者省去了很多安装和环境配置的麻烦
    直接安装:

    sudo apt-get install libeigen3-dev
    

    建议源码(地址)安装:

    cd eigen3
    mkdir build
    cd build
    cmake ..
    make
    sudo make install
    

    安装后头文件在:

    /usr/local/include/eigen3/
    

    移动头文件:

    sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
    

    三、安装ORB-SLAM2

    (1)解压源文件,在该文件夹下打开终端:

    cd ORB_SLAM2
    chmod +x build.sh
    ./build.sh
    

    注意系统若硬件不行(线程少),将build.sh里的make -j(默认启用最大线程)修改为make,防止卡死,反之性能很好可增加数字(线程):如make -j4/j8/jx

  • 编译时如果有错误:
  • error: ’usleep’ was not declared in this scope
    

    在对应的头文件中加上 :

    #include <unistd.h>
    
  • 出现错误:
  • error: static assertion failed: std::map must have the same value_type as its allocator
    

    把ORB-SLAM2源码目录中include/LoopClosing.h文件中的

    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
            Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
    

    修改为:

    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
            Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;
    

    (2)运行单目例子(彩色是因为我修改了代码,源码黑白,不用在意):

    ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM2.yaml Data/rgbd_dataset_freburg2_desk

    四、安装ORB-SLAM3

    4.1 安装OpenCV4

    与20.04不一样,上面如果没有安装OpenCV3而使用ros的,这里就正常安装,而且不用考虑与ros melodic自带的OpenCV3.2.0冲突,安装步骤都一样:
    (1)安装依赖库:

    sudo apt-get install build-essential cmake git 
    sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev
    sudo apt-get install libavformat-dev libswscale-dev
    sudo apt-get install python-dev python-numpy python3-dev python3-numpy
    sudo apt-get install libtbb2 libtbb-dev libjasper-dev libdc1394-22-dev
    sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
    

    (2)编译安装:

    mkdir build && cd build 
    cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE="Rlease" -D OPENCV_GENERATE_PKGCONFIG=ON ..
    make -j4
    sudo make install
    

    (3)查询OpenCV版本、库以及头文件目录:

    pkg-config --modversion opencv4
    pkg-config --cflags opencv4
    pkg-config --libs   opencv4
    

    4.2 安装ORB-SLAM3

    (1)解压源文件修改CMakeLists.txt,调低make -j x,将find_package(Eigen3 3.1.0 REQUIRED)修改为:

    find_package(Eigen3 REQUIRED)
    

    (2)安装python2.7:

    sudo apt install libpython2.7-dev
    

    (3)在源文件夹下打开终端:

    cd ORB_SLAM3
    chmod +x build.sh
    ./build.sh
    
  • 报opensll错误,缺少对应的库,需安装openssl-devel:
  • sudo apt-get install libssl-dev
    
  • 报错:x3D=x3D_h.get_minor<3,1>(0,0)/x3D_h(3); error:no match for ’operator/’ ,应该是是重载了这个符号,但是这里直接这样写是不合格的,两个地方提示出错:
  • /ORB_SLAM3/src/LocalMapping.cc:628:49: error: no match for ‘operator/’
     (operand types are ‘cv::Matx<float, 3, 1>’ and ‘float’) x3D = x3D_h.get_minor<3,1>(0,0) / x3D_h(3);
    /ORB_SLAM3/src/CameraModels/KannalaBrandt8.cpp:534:41: error: no match for ‘operator/’ 
    (operand types are ‘cv::Matx<float, 3, 1>’ and ‘float’) x3D = x3D_h.get_minor<3,1>(0,0) / x3D_h(3);
    

    在源码中的这两个地方,将x3D = x3D_h.get_minor<3,1>(0,0) / x3D_h(3)修改为:

    x3D = cv::Matx31f(x3D_h.get_minor<3,1>(0,0)(0) / x3D_h(3), x3D_h.get_minor<3,1>(0,0)(1) / x3D_h(3), x3D_h.get_minor<3,1>(0,0)(2) / x3D_h(3));
    
  • 如果因内存不足中断编译进程:
  • c++: fatal error: Killed signal terminated program cc1plus
    

    调大虚拟机内存/创建swap分区,调低make -j x

    (4)运行TUM corridor(Monocular-Inertial)例子:

    ./Monocular-Inertial/mono_inertial_tum_vi ../Vocabulary/ORBvoc.txt Monocular-Inertial/TUM_512.yaml dataset-corridor1_512_16/mav0/cam0/data Monocular-Inertial/TUM_TimeStamps/dataset-corridor1_512.txt Monocular-Inertial/TUM_IMU/dataset-corridor1_512.txt dataset-corridor1_512_monoi
    

    五、安装ROS Melodic

    参考文章 Ubuntu18.04安装ROS Melodic(详细,亲测安装完成,有清晰的截图步骤)
    (1)添加ROS软件源

    sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
    

    (2)添加密钥

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
    

    (3)更新软件源

    sudo apt update
    

    出现错误
    GPG error:http://mirrors.ustc.edu.cn/ros/ubuntu bionic InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
    

    (4)安装ROS melodic

    sudo apt-get install ros-melodic-desktop-full
    

    (5)初始化rosdep

    sudo apt install python-rosdep
    sudo rosdep init
    
  • ERROR: cannot download default sources list from:https : //raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.
  • udo gedit /etc/hosts
    

    打开的hosts文件中添加如下的内容,然后保存退出

    185.199.108.133 raw.githubusercontent.com

    如果出现ERROR: cannot download default sources list from:
    https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
    Website may be down.
    访问 https://www.ipaddress.com/ 查询 raw.githubusercontent.com 的ip地址

    将199.232.28.133 raw.githubusercontent.com换为:

    185.199.108.133 raw.githubusercontent.com

  • ERROR: default sources list file already exists: /etc/ros /rosdep/sources.list.d/20-default.listPlease delete if you wish to re-initialize
  • sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
    

    然后

    rosdep update
    

    出现错误ERROR: error loading sources list:(‘The read operation timed out’,),是网络的问题,换个网好的反复执行rosdep update命令

    (6)安装rosinstall

    sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
    

    (7)设置环境变量

    sudo gedit .bashrc
    # 末尾添加
    source /opt/ros/melodic/setup.bash
    #保存退出
    source ~/.bashrc
    

    (8)验证

    roscore
    
  • Command ‘roscore’ not found, but can be installed with:sudo apt install python3-roslaunch,按照提示安装roslaunch
  • Resorce not found: roslaunch说明之前的安装没有安装全,继续安装
  • sudo apt install ros-melodic-desktop-full
    

    (9)测试ROS:

    roecore
    rosrun turtlesim turtlesim_node
    rosrun turtlesim turtle_teleop_key
    

    激活第三个窗口的情况下,通过上下左右键控制小乌龟运动

    六、ROS安装摄像头驱动

    1)创建一个catkin工作空间:

    mkdir -p ~/catkin_ws/src
    

    (2)编译工作空间:

    cd ~/catkin_ws/
    catkin_make
    

    (3)配置环境

    source ~/catkin_ws/devel/setup.bash
    

    (4)下载摄像头功能包源码,将功能包解压到~/catkin_ws/src下
    (5)重新编译工作空间并配置环境
    (6)测试usb摄像头
    打开新终端,,运行/catkin_ws/src/usb_cam-develop/launch下的launch文件usb_cam-test.launch:

    roslaunch usb_cam usb_cam-test.launch
    

    再打开一个窗口输入rqt_graph查看消息,看到usb_cam节点向/usb_cam/image_raw发布了消息,image_view订阅了该消息,消息内容即为图像帧,由image_view显示

  • 报错:
  • RLException: [usb_cam-test.launch] is neither a launch file in package [usb_cam] nor is [usb_cam] a launch file name
    The traceback for the exception was written to the log file
    

    未配置环境:

    source ~/catkin_ws/devel/setup.bash
    

    为了省去每次配置,将这句添加到 ~/.bashrc 文件中

    sudo gedit ~/.bashrc
    

    保存退出,执行:

    source ~/.bashrc
    
  • 摄像头图像花屏
    摄像头的默认像素格式是mjpeg格式的,launch文件中定义的像素格式是yuyv格式的(第六行),将其修改为mjpeg
  • 但是此时终端中会提示警告

    eprecated pixel format used, make sure you did set range correctly
    

    然后在usb_cam-develop源码src文件中找到usb_cam.cpp文件447行,video_sws_ = sws_getContext…之前添加:

    {
        AVPixelFormat pixFormat;
        switch (avcodec_context_->pix_fmt) {
        case AV_PIX_FMT_YUVJ420P :
            pixFormat = AV_PIX_FMT_YUV420P;
            break;
        case AV_PIX_FMT_YUVJ422P  :
            pixFormat = AV_PIX_FMT_YUV422P;
            break;
        case AV_PIX_FMT_YUVJ444P   :
            pixFormat = AV_PIX_FMT_YUV444P;
            break;
        case AV_PIX_FMT_YUVJ440P :
            pixFormat = AV_PIX_FMT_YUV440P;
            break;
        default:
            pixFormat = avcodec_context_->pix_fmt;
            break;
        }
        avcodec_context_->pix_fmt = pixFormat;
      }
    

    重新编译工作空间并配置环境

    七、ROS实时运行ORB-SLAM2

    7.1 相机标定

    相机的标定可以使用MATLAB工具箱和其他工具包,或者我最常用的编写程序调用OpenCV标定,这里使用ros标定

    #noetic摄像头标定工具安装
    sudo apt-get install ros-melodic-camera-calibration
    #启动摄像头
    roslaunch usb_cam usb_cam-test.launch
    #新开一个终端,开始标定
    rosrun camera_calibration cameracalibrator.py --size 10x7 --square 0.0085 image:=/usb_cam/image_raw camera:=/usb_cam --k-coefficients=4
    

    cameracalibrator.py 标定程序需要以下几个输入参数:
    –size为棋盘格的规格(内部角点行列个数),
    –square为棋盘格的大小(棋盘格的边长,单位是m),
    image:=指定了图像的TOPIC,
    –k-coefficients为畸变模型参数个数,
    camera:=/usb_cam摄像头
    –no-service-check禁用
    set_camera_info检查服务

    按照x(左右)、y(上下)、size(前后)、skew(倾斜)等方式移动棋盘,直到x,y,size,skew的进度条都变成绿色位置。
    我这里用手机大致测了一下,–size 10×7 –square 0.0085,最好用正常的标定板

    都变成绿色位置了就按下CALIBRATE按钮,等一段时间就可以完成标定。
    完成后点击SAVE保存标定使用的图像以及标定结果,会显示保存地址,可以打开查看,然后再COMMIT退出程序,标定完成。

    找到标定结果文件后,按照其数据修改Examples/ROS/ORB_SLAM2目录下Asus.yaml。

    7.2 编译ORB_SLAM2 ROS例子

    与20.04不同的是不需要考虑OpenCV版本,将ORB_SLAM2源码文件夹复制到~/catkin_ws/src文件夹下,在ORB_SLAM2文件夹下打开终端
    (1)修改ros示例源文件
    为Examples/ROS/ORB_SLAM2/src路径下的所有.cc文件添加头文件

    #include <unistd.h>
    

    将单目ros_mono.cc和ros_mono_ar.cc文件的订阅:

    //单目
    ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);
    

    替换为:

    ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);
    

    (2)编译

    chmod +x build.sh build_ros.sh
    ./build.sh
    

    由于ORBSLAM2中设置了rosbuild_init(),因此,直接在~/.bashrc上配置环境:

    echo 'export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:'"`pwd`/Examples/ROS" >> ~/.bashrc
    source ~/.bashrc
    

    编译ros节点:

    ./build_ros.sh
    
  • 遇到错误:
    /usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol ‘_ZN5boost6system15system_categoryEv’
    在ros的CMakeListst.txt链接的库中添加:-lboost_system
  • 7.3 实时运行ORB-SLAM2

    #打开摄像头(可将launch文件的图像显示节点删除)
    roslaunch usb_cam usb_cam-test.launch
    #ORB_SLAM2目录下打开终端,运行ORB-SLAM2,参数文件Asus.yaml是测试摄像头标定的
    rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml
    

    八、安装SLAM测评工具evo

    evo是一个很好的测评工具,它可以根据时间戳将轨迹进行对齐,同时可以将不同尺度的轨迹按照你指定的标准轨迹进行拉伸对齐,并可以算出均方差等评定参数,用于测评slam算法性能

    8.1 安装evo

    (1)安装pip:

    sudo apt install python-pip
    #or
    sudo apt install python3-pip
    

    (2)直接安装:

    pip install evo --upgrade --no-binary evo --user
    #或加速:
    pip install evo --upgrade --no-binary evo --user -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    (3)源码安装:

    cd evo
    pip install --editable . --upgrade --no-binary evo --user
    

    这样会很慢,可以通过国内镜像加速,在pip 语句后面增加指定源路径,如下

    pip install --editable . --upgrade --no-binary evo --user -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    8.2 测试evo

    (1) 轨迹绘制evo_traj

    cd test/data
    evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt  -va -p --plot_mode=xz --save_plot ../data/image
    

    其中kitti是数据格式、ref是参考轨迹(可省)、-va是对齐后的详细信息,-v表示verbose mode,详细模式,-a表示采用SE(3) Umeyama对齐,不加-s表示默认尺度对齐参数为1.0,即不进行尺度对齐(可省)、-p是画出图像,也可以使用–plot_mode {xy,xz,yx,yz,zx,zy,xyz}来选择单独绘制某个平面的信息(可省)、–save_plot “保存的路径”+文件名 保存图片(可省)

    首次运行若遇到:evo_traj:command not found,重启电脑。

    (2)绝对位姿误差的计算evo_ape

    mkdir results
    evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode=xz --save_results results/ORB.zip
    

    使用ape的时候无需给出–ref 的文件,第一个文件即为标准文件, –save_results results/ORB.zip为保存结果及路径(可省)


    (3)相对位姿误差的计算evo_rpe:其使用方法与ape基本一致
    (4)处理一个指标的多个结果: evo_res可用于比较来自同样指标的多个结果文件, 包括打印信息和统计信息(默认),绘制结果,将统计信息保存在表中。将上面产生的压缩文件生成图表和表格

    evo_ape kitti KITTI_00_gt.txt KITTI_00_SPTAM.txt -va --plot --plot_mode xz --save_results results/SPTAM.zip
    evo_res results/*.zip -p --save_table results/table.csv
    

    (5)数据集格式转换

    evo_traj euroc V102_groundtruth.csv --save_as_tum
    evo_traj tum V102_groundtruth.tum --save_as_kitti
    

    将文件保存为其他类型的文件,可以使用如下句柄

    --save_as_tum         save trajectories in TUM format (as *.tum)
    --save_as_kitti          save poses in KITTI format (as *.kitti)
    --save_as_bag         save trajectories in ROS bag as <date>.bag
    

    没有–save_as_euroc选项,因为EuRoC格式仅对EuRoC数据集的基本事实有意义

    九、安装PCL和Octomap

    在ubuntu18.04之后,安装pcl和octomap只需两行命令(若遇到问题,首先考虑是否已经换源):

    # 这样安装的pcl版本为1.8.1
    sudo apt-get install libpcl-dev pcl-tools
    sudo apt-get install liboctomap-dev octovis
    

    (1)使用pcl-tools命令pcl_viewer查看.pcd点云文件:

    pcl_viewer map.pcd
    

    (2)使用octovis查看八叉树点云文件:

    octovis octomap.bt
    

    十、安装优化库:G2O、GTSAM和Ceres

    GTSAM和Ceres的安装参考Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO_LOAM、LIO-SAM 和 LVI-SAM,下面安装G2O,首先安装依赖:

    sudo apt-get install libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake
    sudo apt-get install libqglviewer-dev-qt5 libsuitesparse-dev
    

    下载源码:

    git clone https://github.com/RainerKuemmerle/g2o.git
    

    编译安装:

    cd g2o
    mkdir build
    cd build
    cmake ..
    make
    sudo make install
    

    (1)如果报cmake版本问题,将cmake要求最小版本改为3.10
    (2)如果Could NOT find QGLVIEWER (missing: QGLVIEWER_LIBRARY) ,修改g2o/cmake_modules里面的 FindQGLViewer.cmake文件,让cmake能够找到它。就是在find_library(QGLVIEWER_LIBRARY_RELEASE)和find_library(QGLVIEWER_LIBRARY_DEBUG)中添加下QGLViewer-qt5:

    请添加图片描述

    运行高翔十四讲例子:

    (1)编译报错
    /usr/local/include/g2o/core/base_fixed_sized_edge.h:38:10: fatal error: ceres/internal/fixed_array.h: No such file or directory
    #include <ceres/internal/fixed_array.h>
    先安装Ceres
    (2)error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file or directory
    sudo gedit /etc/ld.so.conf打开配置文件,添加一行include /usr/local/lib,保存退出。然后输入sudo ldconfig回车使配置生效
    (3)usr/local/include/g2o/core/base_fixed_sized_edge.h:174:32: error: ‘index_sequence’ is not a member of ‘std’
    174 | struct HessianTupleType<std::index_sequence<Ints…>>
    解决方法:在Cmakelists中更新至c++14

    十一、安装Sophus

    安装基于模板的Sophus库,基于模板的Sophus库与Eigen一样仅含有头文件,并且Sophus库是在Eigen基础上开发的,继承了Eigen库中的定义的各个类。因此要先安装Eigen,这里基于上述安装的Eigen3.4.0

    git clone https://github.com/strasdat/Sophus.git
    cd Sophus
    mkdir build 
    cd build
    cmake ..
    make
    sudo make install
    
  • cmake错误:
    Could not find a package configuration file provided by “fmt” with any of the following names: fmtConfig.cmake fmt-config.cmake
    解决办法,安装fmt库:
  • git clone https://github.com/fmtlib/fmt.git
    cd fmt
    mkdir build 
    cd build
    cmake ..
    make
    sudo make install
    
  • 报错:
  • error: implicitly-declared ‘Eigen::Map<Sophus::SO2<double> >::Map(const Eigen::Map<Sophus::SO2<double> >&)’ is deprecated [-Werror=deprecated-copy]
       Eigen::Map<SO2Type> shallow_copy = map_of_so2;
    

    在CMakeLists.txt里# Add local path for finding packages, set the local version first之前加:

    set(CMAKE_CXX_FLAGS "-Wno-error=deprecated-declarations -Wno-deprecated-declarations ")
    

    运行高翔十四讲例子:

    物联沃分享整理
    物联沃-IOTWORD物联网 » Ubuntu 18.04环境下实时运行ORB-SLAM2和ORB-SLAM3的配置指南——SLAM相关库安装与ROS集成

    发表评论