当前位置: 首页 > article >正文

ORB-SLAM复现时遇到的问题(复现失败,切莫当做教程)

背景

本人的环境:使用ubuntu20.04,opencv4

问题

进行Build DBoW2. Go into Thirdparty/DBoW2/ and execute:时,运行make时出错在这里插入图片描述

我安装的opencv4,在 OpenCV 3 和更高版本中,头文件的路径可能已更改。例如,在 OpenCV 4 中,应该使用:

#include <opencv2/opencv.hpp>

就将出现错误的地方均改为

#include <opencv2/opencv.hpp>

包括DBoW2中的FClass.h,FOEB.h,TemplatedVocabulary.h,如有其他文件出现这样的错误也进行修改

Build ORB_SLAM. In the ORB_SLAM root execute:时,执行cmake … -DROS_BUILD_TYPE=Release报错:在这里插入图片描述

在ORB_SLAM 的 manifest.xml文件中,将

<depend package="opencv2"/>

修改为

<build_depend>opencv4</build_depend>
<exec_depend>opencv4</exec_depend>

成功

然后再make时又遇到opencv的同样的问题,在ORB_SLAM/include/ORBextractor.h,PnPsolver.h中进行修改

继续make时报错

在这里插入图片描述
解决办法
在这里插入图片描述先卸载之前下载的eigen3:

sudo apt remove libeigen3-dev

然后安装低版本的:

ORB_SLAM installation on Ubuntu Xenial 16.04

网页里的教程如下:
1、

Install eigen form here
https://launchpad.net/ubuntu/trusty/amd64/libeigen3-dev/3.2.0-8
2、

Download the .deb file and install using

sudo dpkg -i libeigen3-dev_3.2.0-8_all.deb

继续make,出现同样的opencv头文件错误

在这里插入图片描述
在src/PnPsolver.cc,中进行修改

修改后继续make出现这样的错误

在这里插入图片描述
经查看在 src/PnPsolver.cc 和 include/PnPsolver.h文件中,只出现了 像

CvMat

这样的东西,
在较新的 OpenCV 版本中,CvMat 被 cv::Mat 替代。因此,如果您的代码仍在使用旧有的 C API,您可能需要更新为 C++ API。
正确形式为:

cv::Mat

还有很多版本问题造成的错误,一一修改后完成

修改后继续make出现:

[ 5%] Linking CXX executable …/bin/ORB_SLAM
/usr/bin/ld: warning: libopencv_imgcodecs.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.410
/usr/bin/ld: warning: libopencv_imgproc.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.410
/usr/bin/ld: CMakeFiles/ORB_SLAM.dir/src/Tracking.cc.o: undefined reference to symbol ‘_ZN2cv8cvtColorERKNS_11_InputArrayERKNS_12_OutputArrayEii’
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.4.2.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/ORB_SLAM.dir/build.make:1387:…/bin/ORB_SLAM] 错误 1
make[1]: *** [CMakeFiles/Makefile2:209:CMakeFiles/ORB_SLAM.dir/all] 错误 2
make: *** [Makefile:130:all] 错误 2
asus@asus-X556UB:~/slam_reproduction/

解决办法:我系统中安装了两个不同版本的opencv,一个是安装ros时安装的opencv4.2,后面我手动安装了4.10,,这个报错是因为版本冲突,卸载4.10版本即可成功。

运行 rosrun image_view image_view image:=/ORB_SLAM/Frame _autosize:=true时出错

显示Frame无响应,查看发送的数据时也有问题,都是0,

可能是之前在改代码时出现问题,暂时放弃复现,准备先学习docker再复现,避免环境问题。


http://www.kler.cn/news/335023.html

相关文章:

  • [RabbitMQ] Spring Boot整合RabbitMQ
  • 一台手机可以登录运营多少个TikTok账号?
  • 【前端】前端数据转化为后端数据
  • 南昌网站建设让你的企业网站更具竞争力
  • 字节跳动收购Oladance耳机:强化音频技术,加速VR/AR生态布局
  • 云原生化 - 工具镜像(简约版)
  • 微服务swagger解析部署使用全流程
  • 鸿蒙开发(NEXT/API 12)【应用间消息通信】手机侧应用开发
  • 【中间件学习】Nginx快速入门(为了配置一个项目)
  • 一个月学会Java 第2天 认识类与对象
  • C++中对象的构造与析构
  • 微知-梅林系统设置无线桥接模式后如何登录梅林路由器?
  • 使用PaddleHub智能生成,献上浓情国庆福
  • 机器人技术基础(1-3章坐标变换)
  • css 简单网页布局——浮动(一)
  • 无源有损耗导电介质的平面电磁波——复数介电常数带来复波数k(导致幅度衰减)和复波阻抗(带来磁场电场相位不同)
  • Java:插入排序
  • ASCII码、Unicode编码和UTF-8编码介绍
  • uniapp+Android智慧居家养老服务平台 0fjae微信小程序
  • Kubernetes-Operator篇-04-operator部署验证