jetson nano ubuntu18.04 编译安装ORB_SLAM3
2021/9/12 7:09:19
本文主要是介绍jetson nano ubuntu18.04 编译安装ORB_SLAM3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
该文章与我另一篇文章类似,只不过该篇是在jetson nano上编译的方法,
两者有细微差异
一、 前期准备
- 创建一个工作目录
cd.. mkdir myslam && cd myslam
- 安装依赖
sudo apt-get update #安装git和cmake sudo apt-get install git cmake #安装opencv sudo apt-get install libopencv-dev #安装glew sudo apt-get install libglew-dev sudo apt-get install glew-utils #安装boost sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev sudo apt-get install libx11-dev libxmu-dev libglu1-mesa-dev libgl2ps-dev libxi-dev g++ libzip-dev libpng12-dev libcurl4-gnutls-dev libfontconfig1-dev libsqlite3-dev libglew*-dev libssl-dev
注意,根据官方提示,DBoW2 和 g2o都不需要自行安装,官方有修改版本的,放在Thirdparty目录下,在编译安装SLAM时就会自行编译
二、 编译安装Panglin
Pangolin主要作用是可视化,用户界面相关API
官方GitHub https://github.com/stevenlovegrove/Pangolin
- 首先克隆代码,以下方式二选一
#直连方式 git clone https://github.com/stevenlovegrove/Pangolin.git #加速代理方式 git clone https://hub.fastgit.org/stevenlovegrove/Pangolin.git
注意,如果以上方式克隆的代码编译有问题并且无法解决,请到下面这个网址下载稳定发行版
点击进入 https://github.com/stevenlovegrove/Pangolin/tags
笔者下载的版本是v0.6,下载后解压到当前目录下
- 进行编译
cd Pangolin #安装依赖 ./scripts/install_prerequisites.sh mkdir build && cd build cmake -DCPP11_NO_BOOST=1 .. cmake --build .
不出意外编译完成后,使用以下命令安装
sudo make install
如果你没有注意,在执行make -j时,会出现:
make: *** 没有指明目标并且找不到 makefile。 停止。
解决办法:
sudo apt-get install libxkbcommon-x11-dev
再执行语句
cmake -DCPP11_NO_BOOST=1 …
make -j
就安装成功了
三、安装Eigen 3安装
sudo apt-get install libeigen3-dev
如果在编译ORB-SLAM3时报错找不到Eigen 3则使用编译安装
#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/
四、编译安装OPENCV
笔者安装的是opencv3.4.10
参考链接:https://blog.csdn.net/wup422457601/article/details/113087266
按照该博主要求安装即可,但是要注意一点
!除了三.3 将download文件夹中的*.i文件全部放入/home//opencv/opencv_contrib-3.4.10/modules/xfeatures2d/src目录 之外
!还需要将下载的download文件夹里面的以.i为后缀的文件全部放进/opencv/opencv-3.4.10/release/downloads/xfeatures2d文件夹下,没有该目录就创建该目录
五、编译安装ORB_SLAM3
官方GitHub https://github.com/Lu-tju/ORB_SLAM3
- 首先克隆代码,以下方式二选一
#直连方式 git clone https://github.com/Lu-tju/ORB_SLAM3.git #加速代理方式 git clone https://hub.fastgit.org/Lu-tju/ORB_SLAM3.git
- 进行编译
cd ORB_SLAM3 chmod +x build.sh ./build.sh #编译ros版本 cd ORB_SLAM3 chmod +x build_ros.sh ./build_ros.sh
- 添加环境变量
nano ~/.bashrc #在最后添加并保存退出 export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/.../ORB_SLAM3/Examples/ROS #上面...填上ORB_SLAM3的具体路径 source ~/.bashrc
编译过程中,如报错如下:
OpenCV > 2.4.3 not found.
解决方案:修改两处CMakeLists.txt
nano ORB_SLAM3/CMakeLists.txt
nano ORB_SLAM3/Thirdparty/DBoW2/CMakeLists.txt
找到 "find_package(OpenCV"字样
修改为自身OPENCV版本号
笔者为4.1.0,注释掉原来的,则修改如下
#find_package(OpenCV 3.0 QUIET) find_package(OpenCV 4.1 QUIET)
编译过程中,如报错如下:
error: no match for ‘operator/’
解决方案:修改以下两个文件的代码
nano ORB_SLAM3/src/LocalMapping.cc
nano ORB_SLAM3/src/CameraModels/KannalaBrandt8.cpp
在原有的#include与namespace之间 加入以下代码
namespace cv { template<typename _Tp, int m, int n> static inline Matx<_Tp, m, n> operator / (const Matx<_Tp, m, n> &a, float alpha) { return Matx<_Tp, m, n>(a, 1.f / alpha, Matx_ScaleOp()); } }
编译过程中,可能会卡死,解决方案就是手动编译make -j1
漫长的等待……
cd ORB_SLAM3/build make -j1
五、测试
- 修改代码订阅话题名(当然也可以编写launch文件remap话题名称)
在ORB_SLAM3/Examples/ROS/ORB_SLAM3/src目录下找到:ros_mono.cc文件,打开并修改成自己的订阅名称
ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);
如果想使用Imu融合,则修改ros_mono_inertial.cc文件
ros::Subscriber sub_imu = n.subscribe("/imu", 1000, &ImuGrabber::GrabImu, &imugb); ros::Subscriber sub_img0 = n.subscribe("/camera/image_raw", 100, &ImageGrabber::GrabImage,&igb);
回到ORB_SLAM3主目录执行编译
sh build_ros.sh
- 单目摄像头
#没IMU rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM3/Asus.yaml #有IMU rosrun ORB_SLAM3 Mono_inertial Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM3/Asus.yaml 双目IMU:
- 双目摄像头(博主未测试)
#没IMU rosrun ORB_SLAM3 Stereo_inertial Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM3/Asus.yaml #有IMU rosrun ORB_SLAM3 Stereo_inertial Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM3/Asus.yaml
可用功能一览
单目效果
其他资料
基于ROS下的安卓手机图像和IMU跑ORB-SLAM3 https://blog.csdn.net/h_372101/article/details/108235178
后续如果还有什么遗留问题,可留言
这篇关于jetson nano ubuntu18.04 编译安装ORB_SLAM3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南