ubuntu18.04配置ORB-SLAM3
目录
1. C++11 or C++0x Compiler
2.Pangolin
3.opencv
4.eigen
5.boost安装
6.DBoW2 and g2o
7.下载编译ORB-SLAM3
8.运行ORB-SLAM3的测试数据集
9. 采坑记录
参考:
1. C++11 or C++0x Compiler
需要安装支持C++11特性的编译器
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install build-essential
sudo apt-get install cmake
2.Pangolin
安装依赖(Ubuntu18.04 为例)
sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
编译(Ubuntu18.04 为例)
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake .. #有的地方写 cmake -DCPP11_NO_BOOSR=1 .. 也可以,#待验证区别
cmake --build . #有的地方写 make 也是一样的
sudo make install (这个也是需要的,网上很多教程没有这个命令)
默认安装位置:/usr/local/include/pangolin
Ubuntu16.04 下安装Pangllin遇到的问题:
1). Cmake版本过低
解决方法:安装高版本Cmake(如:下载源码,配置~./bashrc中的PATH即可 共存多版本cmake)
2). 找不到 Eigen3Config.cmake
解决方法:先安装eigen ( 如下 sudo apt-get install libeigen3-dev)
3). template<auto > error: ‘auto’ parameter not permitted in this context
原因:最新版本的还未完善好 (记录时间2021-09-06)
解决方法: 换个低版本的(如pangolin-0.6) 文件 · v0.6 · mirrors / stevenlovegrove / pangolin · GitCode
3.opencv
ubuntu下的opencv安装是一件十分复杂的事情,我参照以下教程安装成功的。
参照以下教程安装
https://www.jianshu.com/p/f646448da265
或者:
// Ubuntu18.04为例:
sudo apt install libopencv-dev
拓展:Linux(Ubuntu)使用 sudo apt-get install 命令安装软件的目录在哪?
include文件理论:/usr/include
bin文件路径: /usr/bin
库文件路径: /usr/lib/
其它的图标啊什么的路径: /usr/share
配置文件路径: /etc/
apt-get是老版的命令,apt是新版的命令,apt还包含了apt-get cache等等,用起来更方便。因为apt刚刚出来,所以允许有apt-get和apt共存,以后apt-get就要淘汰了。
拓展:ubuntu16.04查看opencv版本
pkg-config opencv --modversion
//ubuntu16.04 的一个实例:2.4.9.1
拓展:opencv使用源码安装(ubuntu16.04+opencv3.4.3)路径在哪里?
/usr/local/include
/usr/local/share
/usr/local/lib
/usr/local/bin
4.eigen
两种方式安装eigen
直接上个超链接,两种方式安装eigen3。网上很多博客说建议源码安装,这样安装到的是/usr/local/include/eigen3/目录下,但是我直接使用命令安装最后也编译成功了ORB-SLAM3,安装在了/usr/include。可以先命令安装,编译的时候检测不到再回头来源码安装。如果安装好了但是还报错,按照这篇博客说的做
https://blog.csdn.net/qq_43872529/article/details/100937091
自带包(Ubuntu18.04 为例)安装:
sudo apt-get install libeigen3-dev
#上面的命令,会在 /usr/lib/cmake/eigen3 中创建Eigen的配置文件: Eigen3Config.cmake 或者 eigen3-config.cmake
#相关指令:
sudo updatedb #创建或更新 slocate/locate 命令所必需的数据库文件
locate eigen3
若出错则需要更换源!
(对应:ubuntu16.04中 apt-get默认版本3.2.92 记录日期2021-09-07)
源码安装:
(如 3.2.10版本 )
官网下载本地安装:
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/
报错:找不到eigen 的配置文件 Eigen3Config.cmake 或者 eigen3-config.cmake
解决方法: 在网上下载两个这样的文件,放到 /usr/lib/cmake/eigen3 目录下,如下所示
5.boost安装
网上的教程并没有说boost安装的事情,但是编译的时候会遇到这个错误,我们可以直接提前安装好https://www.jianshu.com/p/4c621a34ba69
Ubuntu 18.04 安装 boost 1.67_alen_feng的专栏-CSDN博客_ubuntu18.04安装boost
// ubuntu18.04 下默认boost版本 1.65.0
sudo apt-get install libboost-system-dev
或者
sudo apt install libboost-all-dev
6.DBoW2 and g2o
这两个库ORB-SLAM3的作者在他的文件夹里做了修改,不需要我们单独下载,直接去第7步即可。在ORB-SLAM3的Thirdparty文件夹下,编译ORB-SLAM3的时候会自动编译。
补充一下,需要下载这些,亲身实践。
在这里下载一个
sudo apt-get install libcanberra-gtk-module
sudo apt-get install libssl-dev
7.下载编译ORB-SLAM3
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
cd ORB_SLAM3
chmod +x build.sh
./build.sh
这里编译的时候可以vim build.sh文件,修改一下make -j8,8是cpu核数,这样编译的更快。同时修改CMakelist文件把warning去掉,因为有eigen库,定义的变量未使用也会报错,很烦。修改CMakelist和build.sh都是可选的,不想修改就可以直接./build.sh编译就完成了。
8.运行ORB-SLAM3的测试数据集
数据集链接
点进链接下载ASL格式的Machine Hall 01,然后解压后修改名称为MH01。放在需要放的位置,然后把MH01所在的文件夹的路径拷贝到euroc_examples.sh的第二行的引号内
pathDatasetEuroc=‘这里放路径’
然后进入ORB-SLAM3运行./euroc_examples.sh就大功告成了。
经过无数折磨,终于把ORB-SLAM3配置好了。
先说一下遇到的错误
9. 采坑记录
第一次
在虚拟机里装的ubuntu16.04里编译遇到的错误
./Examples/Monocular/mono_euroc: symbol lookup error: /home/jhw/ORB_SLAM3/lib/libORB_SLAM3.so: undefined symbol: _ZN5DBoW24FORB1LE。
链接错误是非常少见的,而且在ORB-SLAM3里边也有人遇到这个错误,但是没有方法解决,报的是DBoW的错误。我也尝试了很久,最终也没有解决,建议遇到这个错误直接重装系统。本人比较幸运,遇到这个错误的第三天实验室的师兄给我了一台台式机主机,感谢师兄。
第二次错误
在台式机的双系统里边遇到的
ORB_SLAM3/src/System.cc:315:20: error: ‘usleep’ was not declared in this scope
usleep(5000);
找到对应的System.cc加入 #include<unistd.h>
在source文件的开头增加include
#include <unistd.h>
需要增加unistd.h的文件有:
Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/RGB-D/rgbd_tum.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc
第三次
在台式机的双系统里边遇到的,错误不大,是漏装了一个库,但是由于eigen报warning(定义的变量未使用)太多,导致看不到真正的错误位置
CMakeFiles/Makefile2:289: recipe for target ‘CMakeFiles/ORB_SLAM3.dir/all’ failed
make[1]: *** [CMakeFiles/ORB_SLAM3.dir/all] Error 2
Makefile:83: recipe for target ‘all’ failed
make: *** [all] Error 2
这里建议编译的时候在ORB-SLAM3的cmakelist的-Wall后边加上-w屏蔽编译的warning便于发现错误的真正位置 一般这里少装了一个库sudo apt-get install libssl-dev
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=native")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native")
采坑记录1:
解决方法1:使用make –j2 或者 make -jn 或者 make(而不是make -j) (建议将n设为cpu逻辑数量)
运行./build.sh 编译24小时未果 果断放弃 查看其内部命令为 make –j 故改之
解决方法2:使用swap创建临时分区(主要是在编译过程中,内存不够造成的。)
sudo dd if=/dev/zero of=/swapfile bs=64M count=32
#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=2048MBsudo mkswap /swapfile
#把刚才空间格式化成swap格式chmod 0600 /swapfile
sudo swapon /swapfile#使用刚才创建的swap空间
// do something...#工作做完可以把临时空间关闭
swapoff -a#详细的用法可以:swapoff --help
#查看当前内存使用情况:free -m
采坑记录2:
原因没有安装:openssl
方法:
sudo apt-get install openssl
sudo apt-get install libssl-dev
采坑记录3:
解决方法: 安装:sudo apt-get install libboost-all-dev
采坑记录4:
ORB-SLAM3可编译通过,跑时,出现段错误,定位后在调用g2o的optimizer对象上
原因:自己又重新自己手动使用Thirdparty中的g2o的CMakeLists.txt遍历了一遍g2o.
解决方法:直接使用源码中原有的g2o
参考:
- Ubuntu16.04下ORB_SLAM3的编译及运行【完整教程】
Ubuntu18.04下编译ORB_SLAM3遇到的问题
ubuntu18.04配置ORB-SLAM3相关推荐
- Ubuntu18.04 配置nvidia 460驱动、cuda10.1和cudnn7.6.5
Ubuntu18.04 配置nvidia 460驱动.cuda10.1和cudnn7.6.5,并在同一系统中配置不同的CUDA版本以满足tensorflow版本的需求.以下源自各位大佬的博客,并进行整 ...
- Ubuntu18.04配置YCM
Ubuntu18.04和windows子系统Ubuntu18.04配置vim插件YoucompleteMe YouCompleteMe的安装麻烦程度也算是首屈一指了 目前安装配置方法一堆,坑太多,这里 ...
- Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台
这篇我觉得是写得比较详细完整的 摘自:https://dgzc.ganahe.top/ganahe/2021/uavgazebomoni.html Ubuntu18.04配置搭建基于Gazebo的虚拟 ...
- Ubuntu18.04配置静态ip后发现ping不通百度
在用ubuntu18.04配置静态ip时发现重启虚拟机后发现虚拟机ping 不同百度.原因是因为重启虚拟机后/etc/resolv.conf文件被清空.导致没有域名服务,在ping百度时域名解析失败. ...
- Ubuntu18.04配置robotiq-2F-85
一.配置环境 操作系统:Ubuntu 18.04 夹爪型号:Robotiq 2F-85 转换线:RS485转USB 二.配置步骤 2.1创建robotiq工作空间,克隆代码包到新创建的src文件夹: ...
- Ubuntu18.04配置 ROS2 dashing+ gazebo9 + Turtlebot3
Ubuntu18.04配置 ROS2 dashing+ gazebo9 + Turtlebot3 预备工作 1.换源 2.配置Hosts 一.安装ros2 dashing 1. 设置语言环境 2.添加 ...
- Ubuntu18.04配置无人驾驶赛车游戏TORCS(解决找不到GL/glut.h、AL/alut.h和libXmu,以及编译中出现‘isnan’was not declared等)
Ubuntu18.04配置无人驾驶赛车游戏平台TORCS 一.资源下载TORCS<The Open Racing Car Simulator> 二.环境搭建 三.运行游戏与测试 菜菜的博主 ...
- 【Ubuntu】——ubuntu18.04配置静态ip
ubuntu18.04配置静态ip 要点: 1.root权限: 2.打开 /etc/netplan/01-network-manager-all.yaml 3.修改内容如下: 1.查找netplan目 ...
- Ubuntu18.04配置carla0.9.11踩坑与解决方法总结,同时解决安装carla-ros-bridge遇到的问题,并复现OpenCDA成功与ros关联
Ubuntu18.04配置carla0.9.11踩坑与解决方法总结,同时解决安装carla-ros-bridge遇到的问题,并复现OpenCDA成功与ros关联 背景: 主要是为了复现叶小飞的Open ...
- Centos7或ubuntu18.04配置公共邮箱或个人邮箱发报警邮件
系统:Ubuntu18.04配置方法 使用的软件:heirloom-mailx 亲测可用,这篇文章说的是配置邮箱,并发送邮件,具体报警邮件及脚本后续有空写 1.配置软件源 ubuntu18.04上无法 ...
最新文章
- 解决PhpStorm卡顿的问题
- php manual 反射,Laravel框架源码解析之反射的使用详解
- Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解
- 辽宁省普通话水平测试软件,辽宁普通话水平测试报名入口
- [C++] Nested Radical Constant
- S如何边缘控制_强夯法效果如何?来看看这个检测结果
- 华为Mate30 Pro高清渲染图曝光:后置四摄+挖孔全面屏
- oracle11g 安装在rhel5.0笔记
- SecureCRT for Mac(SSH终端仿真工具)
- linux中级之HAProxy基础配置
- 数据结构回文数c语言,数据结构算法(字符串转整数和回文数)
- Gantt - attachEvent事件监听 - 无参数事件
- 补天漏洞厂商资产数据爬虫以及总漏洞量可视化分析
- java 多态(重写和重载)
- 索尼PS4破解之用户层代码执行(Part2)
- Linux系统发行版大全(历史大全含发展图)
- Android 4.2虚拟按键背景透明,Android 4.0 隐藏虚拟按键(导航栏)的方法
- 电脑屏幕黑屏的终极解决办法
- 2021互联网大会乌镇峰会
- 外置MOS 开关型 PWM调光 降压恒流驱动芯片