基于ubuntu18.04+opencv4.5+ORB-SLAM2的问题总结

✋背景说明

系统环境:

  • ubuntu18.04
  • pcl-1.8
  • Eigen-3.3.4
  • Opencv-4.5.0(后来装有3.2.0版本,两个版本共存)
  • python3.6
  • pangolin-0.5

本来是想跑一跑三维环境重构,跑了一些传统上的三维重建方法,然后也想试一试ORB-SLAM的建图效果。于是乎就找了相关的源码以及很多大佬优化的代码,编译ORB-SLAM的过程中,遇到最大的问题就是opencv版本的问题。由于ROS的melodic版本中内置的有3.2.0版本的opencv,然后我电脑装的又是4.5.0版本的,在调用编译的过程中存在问题。

看网上有很多人也有用opencv4.5编译成功过,但自己死活就是提示缺少opencv3.2.0的动态链接库。后来无奈,又安装了opencv3.2.0版本的,将一些动态链接库和源码中报错的头文件都拷贝到指定的安装路径,解决的问题。(实际上并不是因为opencv4.5.0版本编译成功了,而是拷贝了3.2.0的相关文件)

后来请教了一位大佬,在我的CMakeLists文件下指定了opencv4.5.0版本,然后包含了4.5.0版本的头文件库路径,4.5.0版本的就也编译成功了。

至于为什么一定要执着于4.5.0版本,两个原因,跑的一些最新的功能包只支持4.5.0版本,不想因为某个工程,再不停的换opencv版本。再一个就是,看网上有人在4.5版本下编译ORB-SLAM成功,说明就是可以的,自己没调出来只能说明自己菜。既然可以可行,我就要想办法一定要做到。

下面是我编译ORB-SLAM2过程中遇到的一些重要问题。总结如下:

✌✌ [三维环境重构综述]★★★

参考链接:
三维重建:基于RGB-D相机的三维重建总览(静态&动态)

[ORB-SLAM2]★★★★

参考链接:
ORB-SLAM2 在线构建稠密点云(室内RGBD篇)
ORB-SLAM2 在线构建稠密点云(二)

[orb-slam2编译]★★★

下面是刚开始编译orb-slam遇到的问题,主要就是opencv版本问题,4.5与3.2版本的头文件不太一样,编译报错,然后也缺少一些依赖环境。

  1. 找不到cv_bridge包错误
    解决方案:

    sudo apt install ros-melodic-cv-bridge
    
  2. 出现cv_bridge编译错误,找不到opencv
    解决方案:把/opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake中94行的/usr/include/opencv改为/usr/local/include/opencv2
    参考链接:https://blog.csdn.net/woodgril/article/details/109155073
    参考链接:https://blog.csdn.net/klsjadkls/article/details/119170761

  3. CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
    Could not find a package configuration file provided by
    “compressed_image_transport” with any of the following names:
    解决方案:

    sudo apt install ros-melodic-compressed-image-transport
    
  4. CMake Error at /opt/ros/melodic/share/compressed_image_transport/cmake/compressed_image_transportConfig.cmake:113 (message):
    Project ‘compressed_image_transport’ specifies ‘/usr/include/opencv’ as an编译错误,找不到opencv
    解决方案:同cv_bridge。

  5. CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
    Could not find a package configuration file provided by
    “compressed_depth_image_transport” with any of the following names:
    解决方案:

    sudo apt install ros-melodic-compressed-depth-image-transport
    
  6. CMake Error at /opt/ros/melodic/share/compressed_depth_image_transport/cmake/compressed_depth_image_transportConfig.cmake:113 (message):
    Project ‘compressed_depth_image_transport’ specifies ‘/usr/include/opencv’
    as an include dir, which is not found. It does neither exist as an
    解决方案:同cv_bridge。

✌✌✌[opencv多版本共存]

Opencv多版本共存
OpenCv多版本共存的安装路径与切换使用

[配置ORB-SLAM-ROS的经验总结]★★★★★

下面也是重新安装opencv3.2.0版本后,同时在4.5.0版本上也调试成功后的一些感悟和总结。

整个建图过程分为三个部分:第一部分为驱动部分,负责驱动传感器,这里由数据集代替;第二部分为位姿估计,由ORB_SLAM2获取相机数据,输出相机位姿;最后由建图部分实现三维场景恢复,为复杂场景机器人导航提供环境地图。

  1. ROS环境中内置的有opencv3.2版本,orb-slam源码也是依赖opencv3.2版本来编译的,如果想用opencv4.5版本,需要修改/Example/ROS/ORB-SLAM2中的CMakelists.txt文件,设置opencv的版本和库文件。
    find_package(OpenCV 4.5.0 REQUIRED)
    include_directories(
    ${OpenCV_INCLUDE_DIRS}
  2. Eigen的版本是3.3.4,可以正常编译使用。
  3. pangolin的版本是0.5,版本太高会报错。
  4. 源码中是依赖opencv3.2版本的,如果使用opencv4版本,源码中关于opencv的头文件,需要修改,否则报错。两种方式:一、将源码中的头文件修改成opencv4的相关头文件;二、在指定路径下编译opencv3.2版本,然后根据orb-slam源码中编译报错的头文件,将3.2版本的相关文件拷贝到include下。
  5. 如果使用opencv4版本编译,出现相关动态链接库的问题,例如明明修改了CMakeLiasts中opencv4版本,但是编译时还是会提示缺少关于opencv3.2的相关链接库。解决方法有三种:一、在CMakeLists.txt文件中添加库文件,orb-slam源码编译,orb-slam ROS编译,第三方库DBoW2和g2o编译。二、在指定路径下编译opencv3.2版本,然后将opencv3.2相关的动态链接库拷贝到/usr/lib/x86_64-linux-gnu/下。三、从官网上下载opencv3.2动态链接库的.deb文件,然后安装。
  6. 要注意在~/.bashrc文件中指定orb-slam ROS包的路径。
    export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/lyp/XXX/orb_slam2/Examples/ROS
    
  7. 运行命令
    (1)普通模式
    ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml datasets/rgbd_dataset_freiburg1_xyz
    
    (2)ROS模式
    rosrun ORB_SLAM2 astra Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/TUM1_ROSbag.yaml
    
    rosbag play rgbd_dataset_freiburg1_desk.bag
    
    (3)保存点云
    roscore
    
    rosrun ORB_SLAM2 astra Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/TUM1_ROSbag.yaml
    
    roslaunch pointcloud_mapping tum1.launch
    
    rosbag play rgbd_dataset_freiburg1_desk.bag
    

[待解决——配置自己的相机]★★★★

编译安装ORB-SLAM2获得三维点云地图(搜遍全网,就这一篇能看懂)

ORB-SLAM2稠密建图源码

源码:https://gitee.com/zhankun3280/orb-slam-ros
数据集:rgbd_dataset_freiburg1_xyz

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值