基于Ubuntu14.04+ROS indigo的ORB-SLAM2 编译调试问题解决

基于Ubuntu14.04+ROS indigo的ORB-SLAM2 编译调试问题解决

问题来源

由于ORB-SLAM2 在3年前就开源了,当时采用的各种配置环境和依赖包已经进行了相应的更新,造成安装和编译过程出现各种问题。

依赖项安装

Pangolin安装

  1. 直接git clone https://github.com/stevenlovegrove/Pangolin.git 进行编译和安装会报错。
    解决方法:采用先前的版本,根据时间采用3-4年前的版本,本人采用的是Tags下的v0.3版本,直接在上述下载的安装包里面执行命令:git checkout -b v0.3。
    采用与开源代码同时期的依赖包是一种能够规避很多问题的方法,需要牢记啊!
  2. 另外一个问题是:ORB-SLAM2编译成功后,调用Pangolin出现 “what(): Pangolin X11: Unable to retrieve framebuffer options”。
    解决方法:
    注释掉Pangolin/src/display/device/display_x11.cpp文件中的两行代码即可,具体如下:
    staticint visual_attribs[] =
    {
    GLX_X_RENDERABLE , True,
    GLX_DRAWABLE_TYPE , GLX_WINDOW_BIT,
    GLX_RENDER_TYPE , GLX_RGBA_BIT,
    GLX_X_VISUAL_TYPE , GLX_TRUE_COLOR,
    GLX_RED_SIZE , 8,
    GLX_GREEN_SIZE, 8,
    GLX_BLUE_SIZE, 8,
    GLX_ALPHA_SIZE, 8,
    GLX_DEPTH_SIZE, 24,
    GLX_STENCIL_SIZE, 8,
    GLX_DOUBLEBUFFER , glx_doublebuffer ? True : False,
    //注释这一行GLX_SAMPLE_BUFFERS , glx_sample_buffers,
    //注释这一行 GLX_SAMPLES , glx_sample_buffers > 0 ? glx_samples : 0,

    None
    };

Opencv版本带来的问题

  1. 本人编译ORBSLAM2的opencv版本采用3.3.0,而ros indigo自带的opencv版本是2.4.x的。在运行ROS节点的时候,调用了liborbslam2.so,这里链接了opencv 3.3.0的版本,而cv_bridge是连接到2.4.x的版本,所以形成了冲突。具体运行错误:
    /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/persistence.cpp, line 740
    terminate called after throwing an instance of ‘cv::Exception’

    解决方法:
    sudo apt-get remove ros-indigo-cv-bridge
    然后创建一个catkin工作空间:
    $ mkdir -p ~/catkin_ws/src
    $ cd ~/catkin_ws/
    $ catkin_make
    $ cd ~/catkin_ws/src
    $ git clone https://github.com/ros-perception/vision_opencv.git
    $ cd ~/catkin_ws/
    $ catkin_make
    为了编译ORBSLAM2的ROS节点时能找到cv-bridge这个包,还需要将这个包添加到ROS_PACKAGE_PATH里面,操作是:
    $ gedit ~/.bashrc
    然后在最后添加:
    source /home/michael/catkin_ws/src/devel/setup.bash
  2. 如果通过上述方法可能出现下列错误:
    cv_bridge depends on non-existent package ‘opencv3’ and rosdep claims that it is not a system dependency. Check the ROS_PACKAGE_PATH or try calling ‘rosdep update’
    解决方法:
    (1)去掉/Examples/ROS/ORB_SLAM2/manifest.xml中的cv_bridge依赖
    在这里插入图片描述
    (2)通过cmake编译cv_bridge,将其作为lib来调用
    $ cd ~/catkin_ws/src/cv_bridge
    $ mkdir build
    $ cd build
    $ cmake …
    $ make
    $ sudo make install
    然后在/Examples/ROS/ORB_SLAM2/cmakelists.txt中添加下列语句
    set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)
    find_package(cv_bridge REQUIRED)
    修改set(LIBS){}为
    set(LIBS
    ${OpenCV_LIBS}
    ${EIGEN3_LIBS}
    ${Pangolin_LIBRARIES}
    ${cv_bridge _LIBRARIES}
    ${PROJECT_SOURCE_DIR}/…/…/…/Thirdparty/DBoW2/lib/libDBoW2.so
    ${PROJECT_SOURCE_DIR}/…/…/…/Thirdparty/g2o/lib/libg2o.so
    ${PROJECT_SOURCE_DIR}/…/…/…/lib/libORB_SLAM2.so
    )

最终正常运行结果

  1. 根据ORB_SLAM2中的README.md运行Example
    在这里插入图片描述
  2. 运行结果
    在这里插入图片描述

参考文献

1: https://github.com/raulmur/ORB_SLAM2
2: https://www.cnblogs.com/Jessica-jie/p/6959309.html
3: https://www.cnblogs.com/yepeichu/p/10896201.html
4: https://blog.csdn.net/JAYSITE/article/details/80224750

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值