ubuntu 20.04+ORB_SLAM3 安装配库教程

目录

  • 安装ros(如果只是运行ORB-SLAM3,可以跳过安装)
    • 0. ros 安装教程
    • 1. 安装opencv
    • 2. 安装Pangolin
    • 3. 安装Eigen3
    • 4.安装Python & libssl-dev
    • 5.安装boost库
    • 6.安装ceres库(不必须)
    • 7.安装Sophus库(不必须)
    • 8. 安装g20库(不必须)
    • 9. 安装DBoW2库(不必须)
  • 运行安装ORB-SLAM2
  • 运行安装ORB-SLAM3
    • 安装PCL
    • 安装evo

本文整体参考链接有:

  1. ORB-SLAM3配置安装及运行—Ubuntu20.04(2021年)
  2. Ubuntu20.04 —— 新系统从头安装ORB-SLAM3过程(2022年)
  3. Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+各种相关库的安装
  4. ORB-SLAM3配置及安装教程(2023.3)
  5. Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM+Gazebo仿真运行ORB-SLAM2+各种相关库的安装

安装ros(如果只是运行ORB-SLAM3,可以跳过安装)

0. ros 安装教程

经过测试,这个教程最好[Ubuntu20.04.4安装ROS Noetic详细教程(https://zhuanlan.zhihu.com/p/515361781),推荐参考这个安装ros。 由于后续要安装Anaconda, 因此务必注意先安装ros, 再安装Anaconda, 否则会导致ros的依赖库是Anaconda下的库路径,导致冲突。

1. 安装opencv

具体参考教程参见博客ubuntu20安装opencv4和opencv_contrib 多版本共存,

2. 安装Pangolin

此处需要注意,安装Pangolin 稳定的0.6 版本。
Pangolin_v0.6
直接去github默认下载是下载的最新版本,需要注意最好不要下载最新版本。

1)安装依赖项

sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
sudo apt-get install libpng-dev

(2)配置并编译

cd Pangolin
mkdir build && cd build
cmake  ..
make -j8  # 我的是8线程,此处数据需要自己查设置,不同电脑不同
sudo make install

(3) 检查是否安装成功

cd examples/HelloPangolin
cmake .
make
./HelloPangolin

安装成功

3. 安装Eigen3

推荐版本安装3.3.4, 不过也有推荐版本3.3.7,要求最低版本是大于等于3.3.3,看个人需要吧。cd 指令需要进到自己的下载解压后的eigen文件夹处,注意替换该指令。
cmake ..指令默认安装位置为/urs/local/,以下为后续fmt安装界面,库路径为/usr/local/lib, include路径为/usr/local/include/, 可作为参考:ORB-SLAM中的依赖库默认安装在/usr下,有特殊指明安装位置的除外,例如opencv安装位置就指明了安装位置,具体可以参考cmake 指令中参数的设置意义。装位置参考

#github 有个mirror,版本3.3.4 from 2017
git clone https://github.com/eigenteam/eigen-git-mirror#安装
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install#安装后,头文件安装在/usr/local/include/eigen3/

注意!!!
不要采用下面这个指令安装eigen3,

sudo apt-get install libeigen3-dev

如果采用这个指令安装,默认是安装到了/usr/include/eigen3,ORB-SLAM3检测不到,导致编译会报错。利用源码安装,安装好的路径是 /usr/local/include/eigen3/>

4.安装Python & libssl-dev

sudo apt install libpython2.7-dev
sudo apt-get install libssl-dev

5.安装boost库

Boost 是一个功能强大、构造精巧、跨平台、开源并且完全免费的 C++ 程序库。
进入boost官网:https://www.boost.org/
或者和我下载一样的下载的是1.75.0
此处安装参考链接:

  1. Ubuntu20.04 —— 新系统从头安装ORB-SLAM3过程(2022年)
  2. Ubuntu20.04安装boost库

6.安装ceres库(不必须)

因为后续要运行PL-SLAM,才安装这个库。安装版本ceres-1.14.0版本。
参考链接:Ubuntu20.04安装Ceres和g2o库

7.安装Sophus库(不必须)

参考链接:高翔视觉SLAM十四讲Sophus安装指南(经历)
由于最新的Sophus是模板类的,需要fmt库支持,根据踩坑经验,建议安装8.1.1版本的,否则将导致Sophus安装失败.
Sophus安装1.22.4。

8. 安装g20库(不必须)

参考链接:Ubuntu20.04安装Ceres和g2o库,安装版本是20201223版本。

9. 安装DBoW2库(不必须)

参考链接:Ubuntu环境下安装DBoW2

运行安装ORB-SLAM2

参考链接:Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM+Gazebo仿真运行ORB-SLAM2+各种相关库的安装

(1)解压源文件,在该文件夹下打开终端:

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

chmod +x 赋予shell文件运行权限,注意系统若硬件不行(线程少),将build.sh里的make -j(默认启用最大线程)修改为make,防止卡死,电脑性能好可增加数字(线程):如make -j4/j8/jx
运行过程中报错:

/home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/System.cc: In member function ‘void ORB_SLAM2::System::Shutdown()’:
/home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/System.cc:309:13: error: ‘usleep’ was not declared in this scope309 |             usleep(5000);|             ^~~~~~
/home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/System.cc:315:9: error: ‘usleep’ was not declared in this scope315 |         usleep(5000);|         ^~~~~~
/home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/Viewer.cc: In member function ‘void ORB_SLAM2::Viewer::Run()’:
/home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/Viewer.cc:160:17: error: ‘usleep’ was not declared in this scope160 |                 usleep(3000);|                 ^~~~~~

这些错误表明在编译ORB-SLAM2时,出现了一些问题。具体而言,编译器无法识别 usleep 函数。在C++11中,usleep 已经被标记为过时,并且在头文件 <unistd.h> 中也不再被包含。

要解决这个问题,你可以采取以下步骤:
(1)包含正确的头文件:
在使用 usleep 函数之前,确保包含正确的头文件。在ORB-SLAM2的 System.cc 和 Viewer.cc 文件中添加以下行:

#include <unistd.h>

目前大部分解决方式都用这个方式,需要修改的文件包括
只需要在对应的System.cc或其他报错的文件路径中(如下)添加#include <unistd.h>, 参见链接:ORB_SLAM2安装与编译报错的解决办法

    ORB_SLAM2/src/LocalMapping.ccORB_SLAM2/src/LoopClosing.ccORB_SLAM2/src/System.ccORB_SLAM2/src/Tracking.ccORB_SLAM2/src/Viewer.ccORB_SLAM2/Examples/Monocular/mono_euroc.ccORB_SLAM2/Examples/Monocular/mono_kitti.ccORB_SLAM2/Examples/Monocular/mono_tum.ccORB_SLAM2/Examples/RGB-D/rgbd_tum.ccORB_SLAM2/Examples/Stereo/stereo_euroc.ccORB_SLAM2/Examples/Stereo/stereo_kitti.cc 

报错:

/usr/include/c++/9/bits/stl_map.h:122:71: error: static assertion failed: std::map must have the same value_type as its allocator122 |       static_assert(is_same<typename _Alloc::value_type, value_type>::value,|                                                                       ^~~~~
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:118:CMakeFiles/ORB_SLAM2.dir/src/LoopClosing.cc.o] 错误 1
make[2]: *** 正在等待未完成的任务....
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:244:CMakeFiles/ORB_SLAM2.dir/src/Optimizer.cc.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:95:CMakeFiles/ORB_SLAM2.dir/all] 错误 2
make: *** [Makefile:91:all] 错误 2

解决办法:

把incloud中LoopClosing.h中的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;

解决这两个问题,一般就可以编译成功了。

运行安装ORB-SLAM3

参考链接:
ubuntu 20.04+ORB_SLAM3 安装并行全记录(无坑版)(二)

./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml "$pathDatasetEuroc"/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
//修改数据集路径
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml /home/xiujie/Documents/ros-project/dataset/MH_01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt

注:此时大家会发现,运行ORB_SLAM3的时候,没有画面!,不要慌,是因为可视化界面没有打开
4. step4:打开可视化界面

打开mono_euroc.cc的第83行,将“false”改为“true”
参考链接:ORBSLAM3运行mono_euroc无图像窗口

ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, **false**);

将false改为true。

双目运行指令为(注意修改自己的数据集路径正确):

./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml /home/xiujie/Documents/ros-project/dataset/MH_01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt 

更多数据集运行请参考:实操指南:ORB-SLAM3的编译运行。

安装PCL

此处参考链接:Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+各种相关库的安装

安装使用PCL,直接使用指令:

sudo apt-get install libpcl-dev pcl-tools

安装octomap,使用指令:

sudo apt-get install liboctomap-dev octovis

测试是否安装成功:PCL是否安装成功测试(手把手超详细版)

此处用Clion 测试,遇到中文无法输入和显示的问题,clion 版本号是CLion 2023.2.2。解决办法参见:2023.1.3最新版CLion怎么解决中文输出乱码问题(已解决)

安装evo

参考链接:Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM+Gazebo仿真运行ORB-SLAM2+各种相关库的安装

(1)安装pip:

# 安装pip2
sudo apt install python-pip
#or 安装pip3, 一般安装pip3
sudo apt install python3-pip

(2)直接安装(我个人选择源码安装,未采用这种方法):

pip install evo --upgrade --no-binary evo --user
#或加速:
pip install evo --upgrade --no-binary evo --user -i https://pypi.tuna.tsinghua.edu.cn/simple

(3)源码安装:国内evo源码

cd evo
pip install --editable . --upgrade --no-binary evo --user

这样会很慢,可以通过国内镜像加速,在pip 语句后面增加指定源路径,如下:

pip install --editable . --upgrade --no-binary evo --user -i https://pypi.tuna.tsinghua.edu.cn/simple

首次运行若遇到:evo_traj:command not found,重启电脑。

安装时执行指令pip install --editable . --upgrade --no-binary evo --user -i https://pypi.tuna.tsinghua.edu.cn/simple, 遇到matplot版本不对
matplotlib版本不对
查看自己的matplotlib版本为3.1.2,升级matplotlib版本。
为解决该问题,使用pip3进行安装升级。
使用该指令升级到指定版本, 我的升级到3.7.0:

pip3 install --upgrade matplotlib==3.7.0

再次运行指令即可解决问题。

首次运行若遇到:evo_traj:command not found,重启电脑。

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

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

相关文章

jQuery UI简单的讲解

我们先进入一下问答时间&#xff0c;你都知道多少呢&#xff1f; &#xff08;1&#xff09;什么是jQuery UI 呢&#xff1f; 解答&#xff1a;jQuery UI 是以 jQuery 为基础的开源 JavaScript 网页用户界面代码库。包含底层用户交互、动画、特效和可更换主题的可视控件。我们…

Ubuntu 下C++数字雨

以前写过一个Window下的数字雨&#xff0c;像黑客帝国里那样的01数字&#xff0c;现在补充一版Linux下的。使用了curses库&#xff0c;安装方法与使用方法参照 Linux下curses函数库的详细介绍_libcurses库-CSDN博客 5-linux学习笔记之-----curses-CSDN博客 效果如下&#xf…

ERR_PNPM_INVALID_WORKSPACE_CONFIGURATION packages field missing or empty

vue执行 pnpm install命令时&#xff0c;报 ERR_PNPM_INVALID_WORKSPACE_CONFIGURATION  packages field missing or empty错&#xff0c;在网上查询了很久&#xff0c;也没有传出来结果&#xff0c;最后发现是pnpm的版本不对引起的。 我先执行的是npm install -g pnpm&…

实例解释遇到前端报错时如何排查问题

前端页面报错&#xff1a; 1、页面报错500&#xff0c;首先我们可以知道是服务端的问题&#xff0c;需要去看下服务端的报错信息&#xff1a; 2、首先我们查看下前端是否给后端传了id: 我们可以看到接口是把ID返回了&#xff0c;就需要再看下p_id是什么情况了。 3、我们再次请…

数字艺术藏品软件的独特创新与未来趋势

随着科技的飞速发展&#xff0c;数字艺术藏品软件逐渐崭露头角&#xff0c;为艺术爱好者们提供了一个全新的收藏方式。这类软件不仅为艺术家提供了展示作品的平台&#xff0c;也为收藏家们提供了收藏和分享艺术品的渠道。本文将从开发思路、技术实现、市场前景等方面探讨数字艺…

Postman批量运行用例

近期在复习Postman的基础知识&#xff0c;在小破站上跟着百里老师系统复习了一遍&#xff0c;也做了一些笔记&#xff0c;希望可以给大家一点点启发。 一&#xff09;注意点 有上传文件的接口&#xff0c;需要做如下设置&#xff1a; 1、打开能读取外部文件的开关 2、把需要…

2023数字科技生态大会-数字安全论坛 学习笔记

监管合规->价值创造的方向&#xff0c;在安全领域的发展方向-安全运营服务型 ICT->数字->数据 数字安全&#xff1a;网络安全数据安全 传统信息化以计算为核心&#xff0c;数字化以数据为核心 数字安全技术发展十大趋势&#xff1a; 一、 数字安全技术政策环境将不…

HarmonyOS 实战项目

引言 本章将介绍如何在 HarmonyOS 上进行实际项目开发。我们将从项目需求分析开始&#xff0c;逐步完成项目的设计、开发、测试和上线过程。 1. 项目需求分析 项目需求分析是项目开发的关键阶段之一&#xff0c;它有助于确定项目的范围、目标和功能&#xff0c;为项目的设计和开…

【Android】画面卡顿优化列表流畅度四之Glide几个常用参数设置

好像是一年前快两年了&#xff0c;笔者解析过glide的源码&#xff0c;也是因为觉得自己熟悉一些&#xff0c;也就没太关注过项目里glide的具体使用对当前业务的影响&#xff1b;主要是自负&#xff0c;还有就是真没有碰到过这样的数据加载情况。暴露了经验还是不太足够 有兴趣的…

在线协作工具都有哪些?推荐这10款

如今&#xff0c;互联网的快速发展不仅改变了我们的生活方式&#xff0c;也改变了我们的工作方式。 特别是对于一些与产品设计相关的公司或团体&#xff0c;网络不仅为其设计提供了稳定的资源和灵感&#xff0c;而且为成员之间的沟通和合作提供了更大的便利。 如果您也需要为…

ke11介绍本地,会话存储

代码顺序: 1.设置input,捕获input如果有多个用属性选择符例如 input[typefile]点击事件.向我们的本地存储设置键值对 2.在点击事件外面设置本地存储表示初始化的值.点击上面的事件才能修改我们想修改的值 会话(session)浏览a数据可以写到本地硬盘,关闭页面数据就没了 本地(…

基于SSM的大学餐厅菜品推荐和点评系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

基于数据库(MySQL)与缓存(Redis)实现分布式锁

分布式锁 分布式锁&#xff1a;分布式锁是在分布式的情况下实现互斥类型的一种锁 实现分布式锁需要满足的五个条件 可见性&#xff1a;多个进程都能看到结果互斥性&#xff1a;只允许一个持有锁的对象的进入临界资源可用性&#xff1a;无论何时都要保证锁服务的可用性&#x…

怎样备份电脑文件比较安全

域智盾软件是一款功能强大的电脑监控软件&#xff0c;它不仅具备实时屏幕监控、行为审计等功能&#xff0c;还能够对电脑文件进行备份和管理。下面将介绍域智盾软件如何备份电脑文件&#xff0c;以确保数据安全。 1、开启文档备份功能 部署后台&#xff0c;然后点击文档安全&a…

无需API实现MySQL与巨量引擎的对接

通过数环通&#xff0c;您可以使用不到几分钟的时间即可实现MySQL与巨量引擎的对接与集成&#xff0c;从而高效实现工作流程自动化&#xff0c;降本增效&#xff01; 1.产品介绍 巨量引擎是字节跳动旗下的营销服务品牌&#xff0c;它整合了字节跳动旗下的产品及海量内容&#…

Diffusion Models CLIP

Introduction to Diffusion Models 生成模型 主要指的是无监督学习中的生成模型&#xff0c;在无监督学习中的主要任务是让机器学习给定的样本&#xff0c;然后生成一些新的东西出来。比如&#xff1a;给机器看一些图片&#xff0c;能够生成一些新的图片出来&#xff0c;给机器…

Jmeter进行压力测试不为人知的秘密

jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使用方便&#xff0c;是一个比较轻量级的测试工具&#xff0c;使用起来非常简单。因为jmeter是java开发的&#xff0c;所以运行的时候必须先要安装jdk才可以。jmeter是免…

窗口管理工具 Mosaic mac中文版功能特点

MosAIc mac是一种窗口管理工具&#xff0c;可帮助您在计算机屏幕上有效地组织和管理多个应用程序窗口。它提供了一种直观的方式来调整和排列窗口&#xff0c;以最大化工作效率。 MosAIc mac窗口管理软件功能和特点 窗口布局&#xff1a;MosAIc允许您选择不同的窗口布局&#x…

跟李沐学AI-深度学习课程00-03【预告、课程安排、深度学习介绍、安装】

目录 00 预告 01 课程安排 02 深度学习介绍 03 安装 本地安装 04 数据操作数据预处理 数据操作 数据类型 创建数组 访问元素 数据操作实现 入门 运算符 广播机制 索引和切片 节省内存 转换为其他Python对象 数据预处理实现 读取数据集 处理缺失值 转换为张…

【Linux】环境变量--PATH环境变量/环境变量的操作/命令行参数

文章目录 一、PATH环境变量1.什么是PATH环境变量2.如何添加PATH环境变量3.系统中的其他环境变量4.环境变量的来源 二、环境变量的操作1.设置环境变量2.通过getenv获取环境变量3.环境变量的意义 三、命令行参数 一、PATH环境变量 1.什么是PATH环境变量 这里我们先提出一个问题…