ORB-SLAM3复现过程中遇到的问题及解决办法
在复现过程中遇到的问题的解决过程
- 1. 版本检查
- 1.1 Opencv版本的检测
- 1.2 Eigen版本的检测
- 1.3 查看Python版本
- 1.4 其他
- 2. 编译过程中遇到的问题及解决办法
- 2.1 ./build.sh遇到的问题
- 2.2 ./build_ros.sh遇到的问题
因为环境比较干净,所以遇到的问题相对少一些,不过每一个问题都进行了完善的解决
我的环境是刚装完Ubuntu20.04之后,并进行了Ubuntu系统安装之后首需要做的事情的操作之后的一个环境。
1. 版本检查
因为ORB-SLAM3对环境的要求和ORB-SLAM2有一些不一样,有的版本过低是会导致错误的。
所以,在开始之前,先来检测一下自己环境中的库的版本。
注意:使用的是Ubuntu20.04
1.1 Opencv版本的检测
执行以下命令,可以发现版本为4.2.0
pkg-config --modversion opencv
# 4.2.0
//或者
opencv_version
# 4.2.0
1.2 Eigen版本的检测
执行以下命令:
whereis eigen3
# 我的是在/usr/include/eigen3
gedit /usr/include/eigen3/Eigen/scr/Core/util/Macros.h
文件开头的几行如下所示,意味着我的Eigen版本为3.3.7
#ifndef EIGEN_MACROS_H
#define EIGEN_MACROS_H#define EIGEN_WORLD_VERSION 3
#define EIGEN_MAJOR_VERSION 3
#define EIGEN_MINOR_VERSION 7
1.3 查看Python版本
- 执行以下命令:
xiaoduan@fighter:~$ python3 --version
Python 3.8.10
- 也可以在终端输入python接着连着按两下tab键,也能看到自己的python版本。
1.4 其他
- 在c++方面,我的是C++11。
- DBoW2 and g2o在项目文件中直接存在,无需手动安装,在编译的过程中会自动安装。
- Pangolin还没有安装。
2. 编译过程中遇到的问题及解决办法
2.1 ./build.sh遇到的问题
1. 问题一:
出现下图所示错误:

原因分析:
版本不匹配,所以更改版本即可。
解决办法:
打开文件/home/xiaoduan/project/source2/orb_slam3/CMakeLists.txt
更改以下两个内容:
- 第33行Opencv的版本改为4
- 第41行Eigen的版本改为3
2. 问题二:
错误展示:
‘slots_reference’ was not declared in this scope 1180 | cow_copy_type<list_type, Lockable>
原因分析:
因为我的是C++11,这里C++ 11 不支持本项目的一些编译,把 C++版本换到 C++14 就可以了
解决办法:在终端输以下命令
sed -i 's/++11/++14/g' CMakeLists.txt
3. 问题三:
错误展示:
./Monocular/mono_euroc: error while loading shared libraries: libpango_windowing.so: cannot open shared object file: No such file or directory
原因分析:
原因一:运行的文件夹位置不对,注意看自己运行命令时的位置,保证能够找到运行的文件。
原因二:配置文件没生效
解决办法:
针对第一种情况,只需要cd到对应的文件夹中即可。针对第二种情况,执行以下命令即可:
sudo ldconfig
2.2 ./build_ros.sh遇到的问题
1. 问题一:
错误展示:
Error: the rosdep view is empty: call ‘sudo rosdep init‘ and ‘rosdep update‘
原因分析:
因为ROS是一键安装的,所以rosdep没有进行初始化,所以只需要执行终端报错中的提示语句即可
解决办法:
执行以下命令:
sudo rosdep fix-permissions
sudo rosdep init
rosdep update
注意: 在这个过程中可能会由于网络问题,总是不成功,所以多进行几遍就好了。如果实在不行运行一个sudo apt install python2在重新执行。
2. 问题二:
错误展示:
‘slots_reference’ was not declared in this scope 1180 | cow_copy_type<list_type, Lockable>
原因分析:
版本不匹配,所以更改版本即可。
解决办法:
打开文件/home/xiaoduan/project/source2/orb_slam3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt
更改以下两个内容:
- 第33行Opencv的版本改为4
- 第41行Eigen的版本改为3
3. 问题三:
错误展示:
fatal error: sophus/se3.hpp: No such file or directory
29 | #include <sophus/se3.hpp>
原因分析:
找不到sophus文件的位置,添加即可。
解决办法:
打开文件
/home/xiaoduan/project/source2/orb_slam3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt
第49行加入
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
4. 问题四:
错误展示:
/usr/local/include/sigslot/signal.hpp:1180:65: error: ‘slots_reference’ was not declared in this scope cow_copy_type<list_type, Lockable> ref = slots_reference();
原因分析:
因为我的是C++11,这里C++ 11 不支持本项目的一些编译,把 C++版本换到 C++14 就可以了
解决办法:
在终端输以下命令
sed -i 's/++11/++14/g' CMakeLists.txt
5. 问题五:
错误展示:
4. 问题四:
错误展示:
/usr/local/include/sigslot/signal.hpp:1180:65: error: ‘slots_reference’ was not declared in this scope cow_copy_type<list_type, Lockable> ref = slots_reference();
原因分析:
Sophus::SE3f, cv::MAT,Eigen::Vector3f类型转换报错,应该是不能直接转换,不过可以换个办法
解决办法:在终端输以下命令
sed -i 's/++11/++14/g' CMakeLists.txt
原因分析:
因为我的是C++11,这里C++ 11 不支持本项目的一些编译,把 C++版本换到 C++14 就可以了
解决办法:
解决办法参考文章ORB-SLAM3复现的详细过程——配置安装及ROS和脚本运行—Ubuntu20.04中的2.4。按照2.4的步骤进行修改源码即可。
至此,就是我遇到的所有的问题。
相关文章:
ORB-SLAM3复现过程中遇到的问题及解决办法
在复现过程中遇到的问题的解决过程 1. 版本检查1.1 Opencv版本的检测1.2 Eigen版本的检测1.3 查看Python版本1.4 其他 2. 编译过程中遇到的问题及解决办法2.1 ./build.sh遇到的问题2.2 ./build_ros.sh遇到的问题 因为环境比较干净,所以遇到的问题相对少一些…...
vue开发桌面exe应用
vue开发桌面exe应用 Electron-vue 参考 Electron-vue搭建vue全家桶Element UI客户端(一) 如何使用Vue.js构建桌面应用程序...
C# 实现PictureBox从随机选择的文件夹内对图像进行随机播放
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System...
腾讯云国际代充-GPU服务器安装驱动教程NVIDIA Tesla
腾讯云国际站GPU 云服务器是基于 GPU 的快速、稳定、弹性的计算服务,主要应用于深度学习训练/推理、图形图像处理以及科学计算等场景。 GPU 云服务器提供和标准腾讯云国际 CVM 云服务器一致的方便快捷的管理方式。 GPU 云服务器通过其强大的快速处理海量数据的计算性…...
【python爬虫】9.带着小饼干登录(cookies)
文章目录 前言项目:发表博客评论post请求 cookies及其用法session及其用法存储cookies读取cookies复习 前言 第1-8关我们学习的是爬虫最为基础的知识,从第9关开始,我们正式打开爬虫的进阶之门,学习爬虫更多的精进知识。 在前面几…...
原神剑冢三层封印怎么解开 原神剑冢三层封印在哪里打
在原神游戏中原神探索剑冢封印并解开三层封印,玩家可以去蒙德城接取一个隐藏任务,这项任务需要玩家去解开剑冢三层封印,才能完成任务。然而,许多玩家可能还不知道如何解开这个封印,今天小编为大家整理了一份详细的攻略…...
Papers with Semi-supervised Learning for Medical Image Segmentation(SSL4MIS)
Papers_with_SSL4MIS CVPR2023 DateCategory标题TitleCodeBlog2023-06半监督医学图像分割用于半监督医学图像分割的伪标签引导对比学习Pseudo-Label Guided Contrastive Learning for Semi-Supervised Medical Image SegmentationLinkLink2023-06半监督图像分割SemiCVT&#…...
c#继承(new base)的使用
概述 C#中的继承是面向对象编程的重要概念之一,它允许一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和行为。 继承的主要目的是实现代码重用和层次化的组织。子类可以继承父类的字段、属性、方法和事…...
【办公自动化】使用Python批量处理Excel文件并转为csv文件
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
手机怎么剪视频?分享一些剪辑工具和注意事项
视频剪辑是一种将多个视频片段进行剪切、合并和编辑的技术,它可以帮助我们制作出精彩的视频作品。如今,随着智能手机的普及,我们可以随时随地使用手机进行视频剪辑。本文将为大家介绍一些手机剪辑工具和注意事项,帮助大家更好地进…...
面试题汇总
文章目录 一. 腾讯二. 华为三. 快手1. Long 的长度和范围,为什么要减 1 (Java基础)2. 线程池配置无界队列了之后,拒绝策略怎么搞,什么时候用到无界队列 (JUC并发) 四. 美团五. 阿里六. 百度七. 字节八. 大疆1. 为什么创建进程开销比线程大? …...
LLVM系列:1.设计思想和LLVM IR简介
文章目录 背景介绍内容简介LLVM库的集合以及模块化设计LLVM优化器的模块化设计LLVM代码生成器的模块化设计LLVM IRLLVM编译流程LLVM IR的设计思想LLVM的形式LLVM IR的结构组成指令格式和变量示例参考文献:背景介绍 LLVM项目于2000年创立于伊利诺斯州大学,原本是一个为了静态…...
mysql中间件Atlas
Mysql 的 proxy 中间件有比较多的工具,例如,mysql-proxy(官方提供), atlas , cobar, mycat, tddl, tinnydbrouter等等。 而Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Pro…...
ChatGPT 实现动态地图可视化展示
地图可视化分析有许多优点和好处: 1.直观理解:地图可视化使得复杂的数据更易于理解。通过地图可视化,人们可以直观地看到地理位置、地区之间的关系以及空间分布的模式。 2.提高决策效率:地图可视化可以帮助决策者快速理解和解释数据,从而提高决策效率。 3.高效的数据整…...
Vue.js安装步骤和注意事项
安装完node.js后开始安装和部署Vue在检查webpack的下载版本时出现错误出现错误的原因是之前下载时未指定对应的版本号导致版本不兼容先卸载掉之前下载的版本 cnpm uninstall webpack-cli -g cnpm install webpack-cli4.9.2 -g 最后检查版本是否对应...
IDEA中Run/Debug Configurations添加VM options和Program arguments
1. 现象描述 我在我的IDEA当中打开配置模板后,发现没有VM options和Program arguments,也就是虚拟机选项和程序实参这两项,导致我不能配置系统属性参数和命令行参数!!!!!࿰…...
信息技术03--初/高中--简答题(73道知识简答)
文章目录 第一章 初中简答 1-231.1、请简要回答TCP/IP中传输层的功能以及两种主要协议1.2、请简要回答”数字化学习与创新“主要体现在哪些方面?1.3、人工智能给人类社会带来了巨大的变化也带来了一些问题,请列举出三个涉及个人隐私问题的场景并进行简要…...
Matlab之统计一维数组直方图 bin 计数函数histcounts
一、语法 [N,edges] histcounts(X) [N,edges] histcounts(X,nbins) [N,edges] histcounts(X,edges) 解释: 1.1 [N,edges] histcounts(X) 将 X 的值划分为多个 bin,并返回每个 bin 中的计数以及 bin 边界。histcounts 函数使用自动分 bin 算法&am…...
TDengine函数大全-时间和日期函数
以下内容来自 TDengine 官方文档 及 GitHub 内容 。 以下所有示例基于 TDengine 3.1.0.3 TDengine函数大全 1.数学函数 2.字符串函数 3.转换函数 4.时间和日期函数 5.聚合函数 6.选择函数 7.时序数据库特有函数 8.系统函数 时间和日期函数 TDengine函数大全NOWTIMEDIFFTIMETRU…...
算法笔记——路径问题
在引入介绍如何写一个算法的时候,我们先引入一个题作为例子 1137. 第 N 个泰波那契数 - 力扣(LeetCode) 作为刚开始学习算法的我们,看到这个题目的时候,应该想好以下的问题: 1.状态表示 我们要用什么来表…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
