您当前的位置: 首页 >  ubuntu

惊鸿一博

暂无认证

  • 0浏览

    0关注

    535博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ubuntu18.04配置ORB-SLAM3

惊鸿一博 发布时间:2021-09-04 11:06:37 ,浏览量:0

目录

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  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

在source文件的开头增加include #include

需要增加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=2048MB

sudo 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遇到的问题

关注
打赏
1663399408
查看更多评论
立即登录/注册

微信扫码登录

0.0392s