Ubuntu20.04配置ORBSLAM2并在kitti数据集序列进行实验

ops/2024/9/25 3:57:25/

文章目录

  • 前言
  • 一、ORB-SLAM2 安装和编译
    • 1.1 ORB-SLAM2下载
    • 1.2 环境配置
      • 1.2.1 安装Pangolin
      • 1.2.2 安装OpenCV3(安装4会冲突!)
      • 1.2.3 安装Eigen3
      • 1.2.4 Ceres安装
      • 1.2.5 DBoW3安装
      • 1.2.6 g2o安装
    • 1.3 安装运行ORB_SLAM2
  • 二、运行Kitee数据集
    • 2.1 数据集准备
    • 2.2 制作自己的数据集(单目)
  • 总结
  • 参考


前言

ORB-SLAM2是一个非常经典的视觉SLAM 开源方案,可以作为我们学习SLAM的范本。


一、ORB-SLAM2 安装和编译

1.1 ORB-SLAM2下载

从github.com下载ORB-SLAM2的代码。地址是:
ORB-SLAM2

可以在github上直接download ZIP压缩文件。也可在安装git之后,用以下命令在终端上下载

git clone https://github.com/raulmur/ORB_SLAM2

最后我们会下载得到这个文件
在这里插入图片描述

1.2 环境配置

在打开上述github链接后,下翻至底会看到 2.Prerequisites这表示运行ORB-SLAM2需要准备这些环境
在这里插入图片描述

我们暂且不用着急,一条一条按步骤安装
他说我们测试这个库在ubantu版本12.04,14.04和16.04上,但是本人是在ubantu20.04上测试的,完全没有问题。我们还需要安装C++11或C++0x编译器。在编译ORB-SLAM2过程中我们需要cmake,所以没有安装的同学可以使用这条命令下载

sudo apt install cmake 

1.2.1 安装Pangolin

接下来我们需要安装Pangolin,我推荐大家从此链接中下载Pangolin
在下载了ZIP压缩包后解压缩放在ubantu的/home下(此处只要是英文路径都可以),但别急着安装Pangolin我们还需要安装一些必要的库

OpenGL:

sudo apt install libgl1-mesa-dev

Glew:

sudo apt-get install libglew-dev

Boost:

sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

Python2/Python3:

sudo apt-get install libpython2.7-dev

接下来就可以安装Pangolin了

cd Pangolin
mkdir build 
cd build
cmake ..
cmake --build .

好了到此为止,Pangolin已经安装完毕了

1.2.2 安装OpenCV3(安装4会冲突!)

自己去官网下个opencv3系列,下载完成后,将其提取到主目录。,将该文件夹重命名为opencv3。

(1)安装cmake和依赖环境

sudo apt-get install cmake
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)下载opencv3

下载地址:https://opencv.org/releases/
点击Sources进行下载自己需要的版本

在这里插入图片描述

(3)解压文件

解压后,将文件夹放自己喜欢的地方,将解压后的文件夹重新命为opencv3

在这里插入图片描述

在opencv3文件夹下新建build文件夹

终端运行

make build

进入build文件夹下

cd build 

(4)进行cmake

在build目录下运行

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

在这里插入图片描述

(5)进行编译

接下来时一个漫长的等待过程,大概需要等10分钟,不要多虑

sudo make -j8

可以使用sudo make -j 8sudo make -j4sudo make
我这里就使用sudo make -j 8

在这里插入图片描述

(6)进行安装
再执行

sudo make install

在这里插入图片描述

(7)配置环境

修改ld.so.conf文件
用gedit打开/etc/ld.so.conf
在文件中加上一行 /usr/loacal/lib
其中/user/loacal是opencv安装路径也就是makefile中指定的安装路径
终端执行

sudo gedit /etc/ld.so.conf

输入:

include /usr/local/lib

保存退出

运行下面语句刷新库链接配置

sudo ldconfig

(8)修改bash.bashrc文件

终端执行

sudo gedit /etc/bash.bashrc 

在文件末尾加入:

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

在这里插入图片描述

保存退出

然后在命令行中输入刷新

source /etc/bash.bashrc

(9)检验是否安装成功

在命令行中输入如下命令:

pkg-config opencv --modversion

在这里插入图片描述
如图所示,出现版本号就安装成功了。

1.2.3 安装Eigen3

推荐大家安装版本 3.2.10这个版本目前是最稳定的bug较少

大家可以在这个网站上描述下载。
在这里插入图片描述

点击如图所示的ZIP文件下载后解压放到ubantu中,进入eigen文件加中执行以下步骤

mkdir build
cd build
cmake ..
sudo make install

安装后,头文件安装在/usr/local/include/eigen3中。这一步十分重要我们需要去检查安装到的路径。不然后在后续的ORB-SLAM2编译过程中会找不到文件。后续我们会在问题后告诉大家如何解决
最后一步的 DBoW2 和 g2o ,他们已经存在于ORB-SLAM2文件夹中的 Thirdparty文件夹中

1.2.4 Ceres安装

在这里插入图片描述

先安装依赖项:sudo apt-get install  liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-devgit clone https://github.com/ceres-solver/ceres-solver.git编译:
cd ceres-solver
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install

1.2.5 DBoW3安装

git下来mkdir build
cd build/
cmake ..
make
sudo make install

1.2.6 g2o安装

在这里插入图片描述

安装依赖:sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3git下来编译:
cd g2o
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install

1.3 安装运行ORB_SLAM2

这里巨坑!,里面要修改很多错误,直接建议大家使用我修改好的,想自己修改的,可以慢慢去百度,解决error。链接:===>ORB_SLAM2<===提取码:9527,下载后,提取到主目录,,将文件夹名改为ORB_SLAM2,打开一个新终端,输入以下代码:

cd ORB_SLAM2
chmod +x build.sh
./build.sh

安装完成

在这里插入图片描述

如果出错,也可以通过微软或者火狐,搜索错误解决!

二、运行Kitee数据集

2.1 数据集准备

Computer Vision Group - Dataset Download (tum.de)

在这里插入图片描述

下载好后,进入ORB_SLAM2文件夹创建一个文件夹:data,将下载好的数据集压缩包提取到data下面,然后打开一个新终端输入以下命令:
在这里插入图片描述

cd ORB_SLAM2
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz

在这里插入图片描述

仔细看此代码,都能在相应的文件夹里找到各个文件!

2.2 制作自己的数据集(单目)

1、下载我给的这两个文档===文档===,一个CPP,一个yaml文件,将其复制到ORB_SLAM2下面,再用自己的手机拍一个视频,1、手机横向,2、开始拍摄时,首先手机左右缓慢水平移动,像螃蟹一样横着左右运动!,然后大概5s后,再慢慢往前走,不要走的太快,转弯时不要太快,以防跟踪丢失!

2、录制完成后,将其复制到ORB_SLAM2文件下,重命名为test.mp4,用微信传到电脑时,最好选择原图传送!,

3、以上步骤完成后,ORB_SLAM2里面应该多了三个文件:test.cpp,test.yaml,test.mp4.检查一下啊

4、修改ORB_SLAM2里面的CMakeLists.txt,添加如下代码:保存

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR})
add_executable(test test.cpp)
target_link_libraries(test ${PROJECT_NAME})

5、编译运行

打开一个新终端,输入如下:

cd ORB_SLAM2
mkdir build
cd build
cmake ..
make -j
cd ..
./test

总结

经过本次实验,了解了ORB_SLAM2的调用方法,进一步见识到了SLAM的魅力,同时在实验过程中,遇到特别多的bug,最终还是解决了。一定要多尝试,学会搜索。

参考

Ubuntu 20.04搭建OpenCV 4.5.0 & C++环境

Ubuntu20.04配置ORBSLAM2并运行(保姆级教程)

orbslam2+kitti数据集序列图像


http://www.ppmy.cn/ops/32379.html

相关文章

STK与matlab交互 Astrogator模块(13)

一、背景介绍 在本文介绍一个场景&#xff0c;五颗蓝方卫星和一颗红方卫星&#xff0c;在两个小时之内&#xff0c;使用神经网络等人工智能算法&#xff0c;实现一个轨道追踪的问题&#xff0c;其中接口输入是六颗卫星在J2000坐标系下的坐标&#xff0c;接口输出是该六颗卫星沿…

react中useReducer如何使用

useReducer 是 React 提供的一个用于状态管理的 Hook&#xff0c;它接收一个 reducer 函数和初始状态作为参数&#xff0c;并返回当前状态以及一个 dispatch 函数。这个 Hook 适用于管理复杂或嵌套的状态对象&#xff0c;它提供了一种更加结构化的更新状态的方法。 useReducer是…

递归实现指数型枚举

#include <iostream> using namespace std; typedef long long ll; int n; int a[20]; bool vis[20]; // 一共tar个坑&#xff0c;当前枚举到第pos个坑 void dfs(int pos, int tar) { if (pos tar 1) { for (int i 1; i < tar; i ) cout << a…

数据结构和算法

目录 数据结构 算法 数据结构是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。这种“结构”可以理解为数据元素之间的逻辑关系&#xff0c;包括数据的逻辑结构和物理结构。精心选择的数据结构往往可以带来更高的运行或者存储效率…

H.264码流解析

这一篇内容旨在对H.264码流中的一些概念做简单了解。 1、概念了解 VCL:Video Coding Layer视频编码层,它是H.264(AVC)编码中的核心,负责视频数据的编码工作。VCL层会应用一系列的图像压缩技术,如预测编码、变换编码、量化、熵编码等,将原始视频数据压缩成二进制比特流,…

MySQL①——数据库与表格的创建

今日任务&#xff1a; 创建一个名为“db_classes”的数据库 创建一行名为“db_hero”的表 将四大名著中的常见人物插入这个英雄表 数据库的创建与删除 create 命令&#xff08;创建&#xff09;&#xff1a; create database 数据库名&#xff1b;#参数默认create database …

使用RTSP将笔记本摄像头的视频流推到开发板

一、在Windows端安装ffmpeg 1. 下载ffmpeg:下载ffmpeg 解压ffmpeg-master-latest-win64-gpl.zip bin 目录下是 dll 动态库 , 以及 可执行文件 ;将 3 33 个可执行文件拷贝到 " C:\Windows " 目录下 ,将所有的 " .dll " 动态库拷贝到 " C:\Windows\Sy…

安装k8s

Kubernetes是一个开源系统&#xff0c;用于容器化应用的自动部署、扩缩和管理。它将构成应用的容器按逻辑单位进行分组以便于管理和发现。 由于 Kubernetes 官方变更了仓库的存储路径以及使用方式&#xff0c;如果需要使用 1.28 及以上版本&#xff0c;请使用 新版配置方法 进…