ORB-SLAM2运行环境搭建

news2024/9/21 4:35:56

在这里插入图片描述

操作系统:Ubuntu20.04

1.安装Eigen3

推荐大家安装版本 3.2.10
链接:https://eigen.tuxfamily.org/index.php?title=Main_Page
在这里插入图片描述

mkdir build
cd build
cmake ..
sudo make install

2.安装Pangolin

推荐安装0.5版本
链接:https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.5

先安装两个必要依赖:

sudo apt install pkg-config python3-pip
sudo apt install libglew-dev

推荐依赖:python2、用于python和C++互相调用所需的库pybind11、图形库Pillow等其他python模块、Linux 新型显示服务架构Wayland

sudo apt install libpython2.7-dev
git submodule init && git submodule update
sudo python -mpip install numpy pyopengl Pillow pybind11
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols

3.安装ceres-solver

推荐安装2.2.0
链接:https://github.com/ceres-solver/ceres-solver/tags
在这里插入图片描述

4.安装opencv3

推荐安装3.4.16版本
地址:https://opencv.org/releases/
在这里插入图片描述
下载完成后,将其提取到主目录。将该文件夹重命名为opencv3。
(1)安装依赖环境

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

(2)编译

cd opencv3
mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j4

在这里插入图片描述

(3)安装

sudo make install

在这里插入图片描述

(4)环境配置
修改ld.so.conf文件
用gedit打开/etc/ld.so.conf
在文件中加上一行 /usr/loacal/lib
其中/user/loacal是opencv安装路径也就是makefile中指定的安装路径

sudo gedit /etc/ld.so.conf

在这里插入图片描述
(5)运行下面语句刷新库链接配置

sudo ldconfig

(6)修改bash.bashrc文件
终端执行:

sudo gedit /etc/bash.bashrc 

在文件末尾加入:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

在这里插入图片描述
(6)刷新配置文件

source /etc/bash.bashrc

(7)检查是否安装成功

pkg-config opencv --modversion

在这里插入图片描述

1.opencv 出问题解决

Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'

如何解决链接:https://blog.csdn.net/Zoey_chn/article/details/137687229

5.安装g2o

链接:https://github.com/RainerKuemmerle/g2o

mkdir build && cd build 
cmake ..
make
sudo make install

6.安装 DBoW3

7.安装ORB_SLAM 2

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

安装遇到的常见问题及解决方法

https://blog.csdn.net/wakeup_high/article/details/138011781?spm=1001.2014.3001.5502

8.运行ORB-SLAM2

1.单目

KITTI数据集

./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTI00-02.yaml /home/wm/Downloads/slam_data/KITTI/sequences/00/

TUM 数据集

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/wm/Downloads/slam_data/rgbd_dataset_freiburg1_xyz

2双目

KITTI数据集

./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTI00-02.yaml /home/wm/Downloads/slam_data/KITTI/sequences/00/

3.RGB-D

TUM数据集

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml /home/wm/Downloads/slam_data/rgbd_dataset_freiburg1_xyz  /home/wm/Downloads/ORB_SLAM2/Examples/RGB-D/associations/fr1_desk.txt

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

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

相关文章

【生成式AI-二-强大的AI下我们可以做什么】

强大的AI下我们可以做什么 人工智能的厉害之处我们可以作什么评估模型好坏的难度prompt engineering微调fine tune 人工智能的厉害之处 人工智能并不是忽然就爆火的,事实上,很久以前就已经有深度学习、机器学习这些概念了,那现在的人工智能和…

MybatisPlus常见注解及配置

什么是MybatisPlus? MybatisPlus(简称MP)是一个基于MyBatis的增强工具,它在MyBatis的基础上进行了扩展,旨在简化MyBatis的操作,提高开发效率。MybatisPlus继承了MyBatis原生的所有特性,并添加了一些额外的…

【C++刷题】优选算法——BFS第三辑

多源BFS问题解决:用 BFS 解决边权为1的多源最短路问题 解法一:把多源最短路问题转化为若干个单源最短路问题 解法二:把所有的源点当成一个“超级源点”,从而转化为单源最短路问题(推荐) 单源最短路问题的解…

Linux进程--进程查询和创建

目录 一、前言二、进程查询三、进程创建1.创建操作2.返回值疑云 一、前言 本篇文章的探讨是基于一定的进程理解的,在此基础上对有关进程的操作进行讲解。 二、进程查询 首先我们来认识一下进程查询的指令 ps ajx |head -1&& ps ajx |grep process |grep…

B1.5 EL0视角下的软件控制功能

快速链接: . 👉👉👉 ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 付费专栏-付费课程 【购买须知】个人博客笔记导读目录(全部) B1.5 EL0视角下的软件控制功能 以下章节描述了软件控制功能的EL0视图: 异常处理 等待中断和等待事件

Dubbo源码深度解析(二)

接着《Dubbo源码深度解析(一)》继续讲,上篇博客主要讲Dubbo提供的三个注解的作用,即:EnableDubbo、DubboComponentScan、EnableDubboConfig。其中后两个注解是在EnableDubbo上的,因此在启动类上加上EnableDubbo注解,等…

Java并发—volatile关键字的作用及使用场景

在这篇文章Java并发—Java内存模型以及线程安全-CSDN博客多次提及volatile关键字,这是一个非常重要的概念,主要用于多线程编程中,它确保了变量的可见性和禁止指令重排序,但不保证原子性,下面详细解释volatile关键字的作…

使用SpringAOP实现公共字段填充

文章目录 概要整体架构流程技术细节小结 概要 在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工或者编辑菜品分类时需要设置修改时间、修改人等字段。这些字段属于公共字段,也就是也就是在我们的系统中很多表…

Flux:Midjourney的新图像模型挑战者

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- Black Forest Labs是一家由前Stability.ai开发人员创立的AI初创公司&#xff0c;旨在为图像和视频创建尖端的生成式 AI 模型。这家初创公司声称&#xff0c;其第一个模型系列Flux.1为文本到图像…

【FAQ】为啥MultipartFile 的InputStream available会为0

背景 在Spring boot 文件上传案例中可能会存在获取MultipartFile InputStream.available()方法为0的情况&#xff0c;导致在文件上传到Minio后对象大小为0的情况 问题原因 在介绍问题原因前我们先探究下MultipartFile 是怎么实现的 这里只是剖析InputStream&#xff0c;所以…

Linux驱动入门实验班day03-另一种注册cdev的方式

问题&#xff1a;原来的函数/*major register_chrdev(0, "100ask_hello", &hello_drv);*/会将主设备号major对应的所有次设备号&#xff0c;对应的设备节点&#xff0c;总是访问到驱动程序hello_drv。 这个问题&#xff0c;会导致主设备号不够用。 解决方式&am…

c++ - unordered_set与unordered_map模拟实现

文章目录 前言一、unordered_set模拟实现二、unordered_map模拟实现 前言 1、unordered_set与unordered_map的介绍与接口使用可参考&#xff1a;unordered_set 、 unordered_map。 2、unordered_set和 unordered_map 的底层实现都是基于哈希表的。哈希表是一种通过哈希函数组织…

HarmonyOS(48) 挂载卸载事件 UI组件的添加和删除监听

UI组件的添加和删除监听 一级目录示例代码参考资料 一级目录 我们通过if条件添加组件的时候&#xff0c;是可以通过onAttach、onDetach、onAppear、onDisAppear来监听组件的添加和删除。 示例代码 // xxx.ets// xxx.ets import { promptAction } from kit.ArkUIEntry Compo…

2024华数杯数学建模A题完整论文讲解(含每一问python代码+结果+可视化图)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024 年华数杯全国大学生数学建模竞赛A题机器臂关节角路径的优化设计完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成…

VBA信息获取与处理:VBA代码分类及如何利用代码自动关闭空闲文件

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

LC65---2164.对奇偶下标分别排序(排序)--Java版

1.题目 2.思路 &#xff08;1&#xff09;分别提取奇数下标和偶数下标的元素。 &#xff08;2&#xff09;对奇数下标的元素按非递增顺序排序&#xff0c;对偶数下标的元素按非递减顺序排序。 (3)最后将排列好的数字进行合并。 补充&#xff1a; 3.代码实现 class Solution…

PyCharm 2024.1 总结和最新变化

​ 您好&#xff0c;我是程序员小羊&#xff01; 前言 PyCharm 2024.1 是 JetBrains 最新发布的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在提供更强大的功能和更好的用户体验。以下是对这个版本的总结和最新变化的介绍 智能代码建议和自动完成&#xff1a…

C语言 ——— 学习并使用 strerror 函数

目录 学习strerror函数 使用strerror函数 学习strerror函数 库函数在执行的时候&#xff0c;发生了错误&#xff0c;会将这个错误码存放在errno这个变量中&#xff0c;而errno是C语言提供的一个全局变量 而strerror函数是一个错误报告函数&#xff0c;可以将对应的错误码转…

roomformer-端到端矢量检测模型

论文&#xff1a;Connecting the Dots: Floorplan Reconstruction Using Two-Level Queries 论文地址&#xff1a;https://arxiv.org/pdf/2211.15658 code&#xff1a;https://github.com/ywyue/RoomFormer or https://github.com/woodfrog/poly-diffuse 参考&#xff1a;ht…

指针的指针作为形参实测

1. VS2019里面创建C控制台工程 2. 代码 #include <iostream>uint8_t buf[3][10] { {1,2,3},{4,5,6,7,8},{9,0} }; uint8_t len1 3,len2 5,len3 2;void f1(uint8_t **dstBuf, uint8_t *dstLen) {*dstBuf buf[0];*dstLen len1; }void f2(uint8_t** dstBuf, uint8_t*…