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

目录

错误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 pangolinsudo 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 buildcmake ..
make -j12sudo 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.rhkb.cn/news/103994.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QChart:数据可视化(用图像形式显示数据内容)

1、数据可视化的图形有&#xff1a;柱状/线状/条形/面积/饼/点图、仪表盘、走势图&#xff0c;弦图、金字塔、预测曲线图、关系图、数学公式图、行政地图、GIS地图等。 2、在QT Creator的主页面&#xff0c;点击 欢迎》示例》右侧输入框 输入Chart&#xff0c;即可查看到QChar…

回归预测 | MATLAB实现SSA-RF麻雀搜索优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SSA-RF麻雀搜索优化算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SSA-RF麻雀搜索优化算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;…

数据结构—排序

8.排序 8.1排序的概念 什么是排序&#xff1f; 排序&#xff1a;将一组杂乱无章的数据按一定规律顺序排列起来。即&#xff0c;将无序序列排成一个有序序列&#xff08;由小到大或由大到小&#xff09;的运算。 如果参加排序的数据结点包含多个数据域&#xff0c;那么排序往…

Ubuntu18.04 交叉编译curl-7.61.0

下载 官方网址是&#xff1a;curl 安装依赖库 如果需要curl支持https协议&#xff0c;需要先交叉编译 openssl,编译流程如下&#xff1a; Ubuntu18.04 交叉编译openssl-1.1.1_我是谁&#xff1f;&#xff1f;的博客-CSDN博客 解压 # 解压&#xff1a; $tar -xzvf curl-7.61.…

【Go】Goland项目配置运行教程

Golang项目配置运行教程 1.安装Golang下载安装包安装 2.Goland配置2.1 环境2.2 goland配置2.2.1 没有makefile的情况2.2.2 有makefile的情况 3.跨平台项目4.补充 注意&#xff0c;本项目描述的是git clone下来的Golang项目配置运行教程&#xff0c;并不是从头创建一个Golang项目…

redis常用五种数据类型详解

目录 前言&#xff1a; string 相关命令 内部编码 应用场景 hash 相关命令 内部编码 应用场景 list 相关命令 内部编码 应用场景 set 相关命令 内部编码 应用场景 Zset 相关命令 内部编码 应用场景 渐进式遍历 前言&#xff1a; redis有多种数据类型&…

Cookie 和 Session 的工作流程

目录 一、Cookie是什么&#xff1f; 二、Session是什么? 三、Cookie的工作流程 四、Session的工作流程 五、Session和Cookie的区别和联系 一、Cookie是什么&#xff1f; Cookie是一种在网站和用户之间交换信息的机制。它是由Web服务器发送给用户浏览器的小型文本文件&#xff…

【leetcode 力扣刷题】反转链表+递归求解

反转链表递归求解 206. 反转链表解法①&#xff1a;取下一个节点在当前头节点前插入解法②&#xff1a;反转每个节点next的指向解法③&#xff1a;递归 92.反转链表Ⅱ反转left到right间节点的next指向 234.回文链表解法①&#xff1a;将链表元素存在数组中&#xff0c;在数组上…

解决idea登录github copilot报错问题

试了好多方案都没用&#xff0c;但是这个有用&#xff0c; 打开idea-help-edit custonm vm options 然后在这个文件里面输入 -Dcopilot.agent.disabledtrue再打开 https://github.com/settings/copilot 把这个设置成allow&#xff0c;然后重新尝试登录copilot就行就行 解决方…

【JVM 内存结构 | 程序计数器】

内存结构 前言简介程序计数器定义作用特点示例应用场景 主页传送门&#xff1a;&#x1f4c0; 传送 前言 Java 虚拟机的内存空间由 堆、栈、方法区、程序计数器和本地方法栈五部分组成。 简介 JVM&#xff08;Java Virtual Machine&#xff09;内存结构包括以下几个部分&#…

countDown+react+hook

道阻且长&#xff0c;行而不辍&#xff0c;未来可期 知识点一&#xff1a; new Date().getTime()可以得到得到1970年01月1日0点零分以来的毫秒数。单位是毫秒 new Date().getTime()/1000获取秒数1分钟60秒&#xff0c;1小时60分钟1hour:60*60>单位是秒 60*60*1000>单位…

Android 9.0 Vold挂载流程解析(下)

Android 9.0 Vold挂载流程解析&#xff08;上&#xff09; 前言 上一篇介绍了Android 文件系统中Vold挂载机制的总体框架&#xff0c;我们分析了vod进程的main.cpp.接下来我们分析下存储卡挂载和卸载的流程。 存储卡挂载 在上篇文章文章提到&#xff0c;监听驱动层挂载和卸…

opencv简单使用

cv2库安装&#xff0c; conda install opencv-python注意cv2使用时&#xff0c;路径不能有中文。&#xff08;不然会一直’None’ _ update # 处理中文路径问题 def cv_imread(file_path): #使用之前需要导入numpy、cv2库&#xff0c;file_path为包含中文的路径return cv2.imd…

蓝蓝设计ui设计公司作品--泛亚高科-光伏电站控制系统界面设计

泛亚高科(北京)科技有限公司&#xff08;以下简称“泛亚高科”&#xff09;&#xff0c;一个以实时监控、高精度数值计算为基础的科技公司&#xff0c; 自成立以来&#xff0c;组成了以博士、硕士为核心的技术团队&#xff0c;整合了华北电力大学等高校资源&#xff0c;凭借在电…

MFC——base编码和json数据

目录 1. JSON是什么 2. base64是什么 Base64是一种编解码算法 1. JSON是什么 JSON 是一种数据格式。采用完全独立于语言的文本格式, 因为易读, 易写, 易解析的特性成为理想的数据交换语言。主要有三种类型的值:简单值(字符串, 数字, 布尔, null), 对象, 数组。 长这样的数…

2023前端面试笔记 —— HTML5

系列文章目录 内容链接2023前端面试笔记HTML5 文章目录 系列文章目录前言一、HTML 文件中的 DOCTYPE 是什么作用二、HTML、XML、XHTML 之间有什么区别三、前缀为 data- 开头的元素属性是什么四、谈谈你对 HTML 语义化的理解五、HTML5 对比 HTML4 有哪些不同之处六、meta 标签有…

Java实现一个简单的图书管理系统(内有源码)

简介 哈喽哈喽大家好啊&#xff0c;之前作者也是讲了Java不少的知识点了&#xff0c;为了巩固之前的知识点再为了让我们深入Java面向对象这一基本特性&#xff0c;就让我们完成一个图书管理系统的小项目吧。 项目简介&#xff1a;通过管理员和普通用户的两种操作界面&#xff0…

在Ubuntu上安装和设置RabbitMQ服务器,轻松实现外部远程访问

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

【Python原创毕设|课设】基于Python Flask的上海美食信息与可视化宣传网站项目-文末附下载方式以及往届优秀论文,原创项目其他均为抄袭

基于Python Flask的上海美食信息与可视化宣传网站&#xff08;获取方式访问文末官网&#xff09; 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 随着大数据和人工智能技术的迅速发展&#xff0c;我们设…

Git如何操作本地分支仓库?

基本使用TortoiseGit 操作本地仓库(分支) 分支的概念 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来&#xff0c;避免影响开发主线。多线程开发,可以同时开启多个任务的开发&#xff0c;多个任务之间互不影响。 为何要…