ORB-SLAM2报错集合(数据集测试系列1)

news2024/11/23 21:57:11

目录

错误1

错误2

错误3

错误4

错误5

错误6

错误7

错误8

TUM-RGBD测试

KITTI测试

EuRoC测试


写在前面~

ORB-SLAM2

github链接:GitHub - electech6/ORB_SLAM2_detailed_comments: Detailed comments for ORB-SLAM2 with trouble-shooting, key formula derivation, and diagrammatic drawing

参考数目:《视觉惯性SLAM理论与源码分析》

csdn报错参考链接
https://www.ngui.cc/zz/1185096.html?action=onClick

https://blog.csdn.net/m0_51030297/article/details/130545401#t36

https://blog.csdn.net/ABC_ORANGE/article/details/118497033

https://blog.csdn.net/catpico/article/details/118348240

数据集

TUM Dataset: Computer Vision Group - Dataset Download 

KITTI Dataset:The KITTI Vision Benchmark Suite

EuRoC Dataset:kmavvisualinertialdatasets – ASL Datasets

但是上面官网下载很慢,书本也提供了全部数据库的下载

链接:https://pan.baidu.com/s/19KvkF1FUlWHCr1G8y0MdGQ

提取码:jl01

但是由于提供的百度云不是压缩包,即使开了SVIP,我也下载了三四天,也只是下载了一半。

下面这个是我的个人下载数据集测试(每个数据集只有一个项目,但基本可以满足测试)

链接:https://pan.baidu.com/s/1QoOrUBVPZSxtrkaqp37hcA?pwd=58gt 
提取码:58gt

(注!KITTI是四个压缩包要一起下载后才能解压,建议在window解压)


!!!!
当然你可以下载完数据集后,按照下面的做法即可,不用自行取debug


本人安装库的是pangolin(v0.5),eigen(v3.4.0),Dow3,opencv(4.7.0).
建议将库修改为上面这些,这是编译时最稳定的搭配。

本人是在catkin_ws/src(取决于个人)下git clone

git clone https://github.com/electech6/ORB_SLAM2_detailed_comments.git


作者官网的./build.sh在Ubuntu20.04下是有问题的,这是win和linux的回车换行键不兼容引起的。
首先需要安装工具dos2unix,再dos2unix ./build.sh把它变成在Ubuntu20.04下可执行的脚本。

sudo apt install dos2unix
cd /ORB_SLAM2_detailed_comments
dos2unix ./build.sh


但是下面这个先走一遍错误再执行,即先不要执行!
./build.sh


错误1


报错1:FATAL_ERROR "OpenCV > 2.4.3 not found."的错误
或者 No rule to make target ‘…/Thirdparty/DBoW2/lib/libDBoW2.so’, needed by ‘…/lib/libORB_SLAM2.so’. Stop.

解决:将/ORB_SLAM2_detailed_comments/CMakeLists.txt
和/ORB_SLAM2_detailed_comments/Thirdparty/DBoW2/CMakeLists.txt中的opencv版本改成自己对应的版本

# find_package(OpenCV 3.0 QUIET)
# if(NOT OpenCV_FOUND)
#    find_package(OpenCV 2.4.3 QUIET)
#    if(NOT OpenCV_FOUND)
#       message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
#    endif()
# endif()

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

错误2


报错2:error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope

解决: 把Examples文件夹里.cc文件所有的这个名改成cv::IMREAD_UNCHANGED
(因为opencv新版本变量名换了)

错误3


EIGEN_DEPRECATED const unsigned int AlignedBit = 0x80(可以不用管,只是警告而已)
或者Pangolin could not be found because dependency Eigen3 could not be found.
(这两个就是pangolin和Eigen的版本问题)

解决:
关于pangolin v0.5和Eigen 3.2.1以上的版本的卸载与安装(如果装了3.2.1,后续catkin_make会报错,建议3.4.0)
卸载pangolin库

locate pangolin

sudo rm -rf  XXX的路径

sudo updatedb

知道locate pangolin没有输出路径

安装pangolin v0.5库
https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.5

到Pagolin/src文件夹下,在CMakeList.txt中注释掉下面这段代码(屏蔽掉ffmpeg的影响):

# find_package(FFMPEG QUIET)
# if(BUILD_PANGOLIN_VIDEO AND FFMPEG_FOUND)
#   set(HAVE_FFMPEG 1)
#   list(APPEND INTERNAL_INC  ${FFMPEG_INCLUDE_DIRS} )
#   list(APPEND LINK_LIBS ${FFMPEG_LIBRARIES} )
#   list(APPEND HEADERS ${INCDIR}/video/drivers/ffmpeg.h)
#   list(APPEND SOURCES video/drivers/ffmpeg.cpp)
#   message(STATUS "ffmpeg Found and Enabled")
# endif()

cd Pangolin
mkdir build
cd build

cmake ..
make -j12

sudo make install

由于ORB-SLAM2需要低版本的Eigen(最好3.2.1以上),不然会报错EIGEN_DEPRECATED const unsigned int AlignedBit = 0x80;

查看自己Eigen版本
pkg-config --modversion eigen3

卸载
locate eigen3

sudo rm -rf /usr/include/eigen3
sudo rm -rf /usr/lib/cmake/eigen3
sudo rm -rf /usr/local/include/eigen3
sudo rm -rf /usr/share/doc/libeigen3-dev 
sudo rm -rf /usr/local/share/pkgconfig/eigen3.pc /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums
sudo rm -rf /usr/local/lib/pkgconfig/eigen3.pc
sudo rm -rf /usr/local/share/eigen3

查看是否删除彻底

sudo updatedb
locate eigen3
pkg-config --modversion eigen3


Eigen3.4.0的安装
https://gitlab.com/libeigen/eigen/-/releases


找到3.4.0下载tar.gz

mkdir build
cd build
cmake..
sudo make install
sudo cp -r /usr/local/include/eigen3 /usr/include 

# 检测当前版本
pkg-config --modversion eigen3


错误4


“opencv/cv.h not found”
解决
需要将ORBextractor.h改成:

#include <opencv2/opencv.hpp>

错误5


“orb_slam2/src/PnPsolver.cc:860:37: error: ‘CvMat’ was not declared in this scope”

也是因为opencv新版本的没有继承老版本的变量导致


解决:在System.h, PnPSolver.h, Sim3Solver.h 中都加入

#include <opencv2/imgproc/types_c.h>
#include <opencv2/opencv.hpp>
using namespace cv;


错误6


报错: static assertion failed: std::map must have the same value_type as its allocator
解决:修改/ORB_SLAM2_detailed_comments/include/LoopClosing.h::50,

 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;


错误7


orb rror: ‘usleep’ was not declared in this scope

解决:
在System.h里添加

#include <unistd.h>

错误8

LoopClosing.cc
mnFullBAIdx++;

解决:

        // mnFullBAIdx++;
        if (mnFullBAIdx==0)
        {
            mnFullBAIdx=1;
        }


最后在/ORB_SLAM2_detailed_comments目录下

 ./build.sh 


 
 一堆warning没事,这是eigen低版本输出的信息而已,最后可以100%的。
 

数据集的话,三个都可以测试,其他测试类型可以参考github:GitHub - electech6/ORB_SLAM2_detailed_comments: Detailed comments for ORB-SLAM2 with trouble-shooting, key formula derivation, and diagrammatic drawing

下面进行测试

下面是在/ORB_SLAM2_detailed_comments终端下执行,凡是有mengs的,就是自己数据集的路径
 

TUM-RGBD测试

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /media/mengs/SSD/ubuntu-dateset/slam常用数据集/TUM-RGBD/rgbd_dataset_freiburg1_xyz

KITTI测试

./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml /media/mengs/SSD/ubuntu-dateset/slam常用数据集/KITTI/data_odometry_gray/00

EuRoC测试

./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /media/mengs/SSD/ubuntu-dateset/slam常用数据集/EuRoC/MH_01_easy/mav0/cam0/data /media/mengs/SSD/ubuntu-dateset/slam常用数据集/EuRoC/MH_01_easy/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH01.txt

其他错误

/usr/bin/ld: warning: libopencv_imgcodecs.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.3.4

或者

rospack found package “ORB_SLAM2” at “”, but the current directory is
 “/home/zhangjian/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2”. You should 
double-check your ROS_PACKAGE_PATH to ensure that packages are found in the correct 
precedence order.

参考链接

使用ROS编译ORB-SLAM2时遇到的问题(已解决)_名字真的难想的博客-CSDN博客

报错

_ZNK2cv8FileNodecviEv' /usr/bin/ld: /lib/x86_64-linux-gnu/libopencv_core.so.4.2:

参考链接

编译工程需要Opencv3 与 ROS自带Opencv4冲突解决办法_秃头队长的博客-CSDN博客

报错

 No rule to make target '/usr/lib/x86_64-linux-gnu/libIlmImf.so', needed by '../lib/libORB_SLAM2.so'. Stop.
CMakeFiles/Makefile2:178: recipe for target 'CMakeFiles/ORB_SLAM2.dir/all' failed

参考

sudo apt-get install libopenexr-dev 

opencv卸载

[详细教程] opencv的完全卸载和重新安装--3.x版本与4.x版本_opencv卸载重装_HeyMountain的博客-CSDN博客

opencv3.4.11安装

Ubuntu 20.04 下安装 OpenCV 3.4.11 并测试使用_ubuntu opencv测试_罐装三斤的博客-CSDN博客

ROS环境下

ros由于个人电脑或者opencv版本的原因,即使./build_ros.sh成功,但运行rosrun ORB_SLAM2 Mono ~/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml会立即闪退,换了opencv3,比较容易的版本是3.4.11,但却始终没法通过./build_ros.sh。所以自己又装回了4.7.0,后续ORB-SLAM3可能得一阵子才更新。

正常电脑参考下面这个链接即可

最完整---在ROS用自己电脑的摄像头在运行ORB_SLAM2_orb-slam2 ros_一大块肉松的博客-CSDN博客

2023.08.24

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/923463.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单个无人机三维路径规划问题及其建模

单个无人机三维路径规划问题及建模如下&#xff1a; 参考文献&#xff1a; [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120

Grafana Dashboard 备份方案

文章目录 Grafana Dashboard 备份方案引言工具简介支持的组件要求配置备份安装使用 pypi 安装grafana备份工具配置环境变量使用Grafana Backup Tool 进行备份恢复备份 Grafana Dashboard恢复 Grafana Dashboard结论Grafana Dashboard 备份方案 引言 每个使用 Grafana 的同学都…

vue离线缓存资源文件

本文章主要是解决大文件,实时请求资源浪费网络资源的问题 从而有效的将解决用户体验的问题 话不多说上才艺 ⬇️⬇️⬇️⬇️⬇️⬇️⬇️ 找到项目中的 index.html 文件,并在 html 标签中加入 manifest"manifest.appcache" 安装 appcache-manifest 包 npm ins…

深入浅出理解相机标定原理

重要说明&#xff1a;本文从网上资料整理而来&#xff0c;仅记录博主学习相关知识点的过程&#xff0c;侵删。 一、参考资料 微信公众号&#xff1a;计算机视觉life 专栏&#xff1a;#相机标定 Camera Calibration 张正友标定法-完整学习笔记-从原理到实战 二、相机标定相…

C语言刷题训练DAY.12

1.统计成绩 解题思路&#xff1a; 这里我们设置两个变量记录最大值和最小值&#xff0c;再用一个sum统计分数总和即可。 解题代码&#xff1a; #include<stdio.h> int main() {int n 0;scanf("%d", &n);double arr[100] { 0 };int i 0;//最高分double …

UVM Heartbeat机制

1. 前言 在硬件电路中&#xff0c;为了使系统在异常情况下能自动复位&#xff0c;一般都需要引入看门狗(Watchdog)。看门狗其实就是一个定时器电路。当看门狗启动后&#xff0c;计数器开始自动计数&#xff0c;经过一定时间&#xff0c;如果没有被清零&#xff0c;计数器溢出就…

谁为软件质量负责?

如果我们直接问自己以下问题——谁负责软件质量&#xff0c;我们首先想到的就是——当然是测试人员&#xff01;但这并不像看起来那么容易。 IT领域有几个特点&#xff0c;总是发生在软件测试的最后阶段&#xff0c;就在它发布之前。它们使我们不仅从软件的技术质量保证的角度…

学习JAVA打卡第四十一天

字符串与字符数组、字节数组 ⑴字符串与字符数组 String类的构造方法String&#xff08;char a[]&#xff09;和String&#xff08;char a[]&#xff09;,int offset,int length,分别用数组a中的全部字符和部分字符创建string对象。 String类也提供将string对象的字符序列存…

vray for Cinema 4D如何创建照片级真实室内效果?

在V-Ray for Cinema 4D中渲染 3D室内设计一开始可能会很困难&#xff0c;但您投入的努力总会得到回报。无论您的技术水平和创意眼光如何&#xff0c;在 V-Ray 中创建室内设计时都需要考虑很多事项。 在这篇博文中&#xff0c;我们将分享一些最佳实践&#xff0c;帮助您创建令人…

12-总结-从 0 开始搭建框架

项目结构: 一. 安装第三方库 # 下载源: https://pypi.tuna.tsinghua.edu.cn/simple/pip3 install flask2.3.2 pip3 install jinja23.1.2 pip install pymysql # 保持持久化pip install flask-script2.0.3 # 管理应用程序 pip install flask-sqlalchemy3.0.3 # 实现ORM映射…

高等数学之不定积分

由导函数推原函数就是不定积分 只是一个&#xff01; 记得常数C!!! 不定积分的几何含义

基于TechGrow实现Hexo引流微信公众号

首发博客地址 https://blog.zysicyj.top/ # 前言 Hexo 博客建议安装 hexo-readmore (opens new window) 插件&#xff0c;将 TechGrow (opens new window) 的免费微信公众号引流工具整合到博客中&#xff0c;用户扫码关注微信公众号后可以解锁全站文章&#xff0c;让微信公众号…

基于乌燕鸥算法优化的BP神经网络(预测应用) - 附代码

基于乌燕鸥算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于乌燕鸥算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.乌燕鸥优化BP神经网络2.1 BP神经网络参数设置2.2 乌燕鸥算法应用 4.测试结果&#xff1a;5.Matlab代…

数字的画笔:数据可视化的魅力与实用性

数据可视化是一种强大的工具&#xff0c;用于将复杂的数据和信息以图形化的方式呈现&#xff0c;以便人们更容易理解、分析和发现其中的模式和趋势。通过图表、图形和其他可视元素&#xff0c;数据可视化可以帮助我们将抽象的数字转化为有意义的视觉呈现&#xff0c;从而提升了…

QT6安装完成后,再安装低版本的MinGW或其他组件方式

首先进入点击安装的uinstall Qt 并不是真的卸载 通过下面几步 1&#xff0c;首先登录自己账户 2&#xff0c;然后进入欢迎中&#xff0c;点击“添加和移除组件” 3&#xff0c;然后检索自己需要的安装内容

MDTA模块(Restormer)

From a layer normalized tensor Y ∈ R H ^ W ^ C ^ \mathbf{Y} \in \mathbb{R}^{\hat{H} \times \hat{W} \times \hat{C}} Y∈RH^W^C^, our MDTA first generates query ( Q ) (\mathbf{Q}) (Q), key ( K ) (\mathbf{K}) (K) and value ( V ) (\mathbf{V}) (V) project…

前端基础踩坑记录

前言&#xff1a;在做vue项目时&#xff0c;有时代码没有报错&#xff0c;但运行时却各种问题&#xff0c;没有报错排查起来就很费劲&#xff0c;本人感悟&#xff1a;写前端&#xff0c;需要好的眼神&#xff01;&#xff01;&#xff01;谨以此博客记录下自己的踩坑点。 一、…

vue学习之hello world

依赖引入 <script src"https://unpkg.com/vue2.6.10/dist/vue.js"></script>Hello world 实现 <html><head><style></style></head><body><script src"https://unpkg.com/vue2.6.10/dist/vue.js">…

日志搞不定?手把手教你如何使用Log4j2

系列文章目录 从零开始&#xff0c;手把手教你搭建Spring Boot后台工程并说明 Spring框架与SpringBoot的关联与区别 SpringBean生成流程详解 —— 由浅入深(附超精细流程图) Spring监听器用法与原理详解 Spring事务畅谈 —— 由浅入深彻底弄懂 Transactional注解 面试热点详解…

Keepalived+Lvs(dr)调度器主备配置小实验

目录 前言 一、实验拓扑图 二、配置LVS&#xff08;dr&#xff09;模式 三、配置调配器热备 四、测试 总结 前言 Keepalived和LVS&#xff08;Linux Virtual Server&#xff09;是两个常用的开源软件&#xff0c;通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalive…