在Ubantu22.04中运行ORB_SLAM3

在Ubantu22.04中运行ORB_SLAM3

一、概述

ORB-SLAM3是一个支持视觉、视觉加惯导、混合地图的SLAM系统,可以在单目,双目和RGB-D相机上利用针孔或者鱼眼模型运行。从第一版的单目相机系统,到第二版加入了对stereo以及RGBD camera的支持,再到目前最新版本的orb-slam整合了visual,以及visual-inertial的融合方案,使得整个算法系统可以非常快速地应用于不同的硬件平台上。从这样的进化史来看,他们组的研究者们非常致力于将orb-slam打造成一个通用性很高的系统。这样的观点在论文原文中其实也得到了证实,而orb-slam最优秀,贡献最大的地方就在于这是一个完备,且精度很高的系统。

二、环境配置

1. 安装cv_bridge库:

1) sudo apt-get install libopencv-dev

之前已经安装过,所以此处并不需要继续安装。

  1. sudo apt-get install ros-noekit-cv-bridge

之前已经安装过,所以此处并不需要继续安装。

2.安装openCV

1)安装依赖项目:

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

sudo apt install python3-dev python3-numpy

sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev

2)下载openCV源文件:

官网下载source文件:

https://opencv.org/releases/

安装engen库

sudo apt-get install libeigen3-dev

  1. 安装Pangolin库
    git clone https://github.com/stevenlovegrove/Pangolin.git

安装依赖:

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

sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libpng-dev

创建build:

执行:cmake -DCPP11_NO_BOOST=1 ..

之后执行:make

再执行:sudo make install

安装boost库

进入官网:http://www.boost.org/users/download/

下载后,解压:tar -xvf boost_1_77_0.tar.gz

依次执行: cd ./boost_1_77_0

./bootstrap.sh

sudo ./b2 install

下载ORB-SLAM3

执行:git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

修改ORB-SLAM3/CMakelist.txt文件中第20行:

第41行:

修改ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt文件中:

修改ORB_SLAM3/Thirdparty/DBoW2 /CMakeLists.txt文件中:

修改ORB_SLAM3/Thirdparty/g2o/CMakeLists.txt文件中:

安装python

sudo apt install libpython2.7-dev

编译ORB-SLAM3

依次执行: cd ORB_SLAM3

chmod +x build.sh

./build.sh

三、ORB-SLAM3运行

1. 创建工作空间:

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/src

catkin_init_workspace

cd ~/catkin_ws/

catkin_make

source ~/catkin_ws/devel/setup.bash

2.先启动roscore,然后运行驱动节点usb_cam_node

roscore

rosrun usb_cam usb_cam_node

摄像头启动后启用rqt工具查看图像

rqt_image_view

接收话题名称更改

在运行程序之前,需要将ORB_SLAM3/Examples_Old/ROS/ORB_SLAM3/src/ros_mono.cc和ORB_SLAM3/Examples_Old/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc的接收话题名称更改

4.执行单目实时usb_cam效果

rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml

f061c36d824fb1b8527cb2077e15c91

四、结论

目前能够编译运行诸如此类的特征法SLAM开源项目了,虽然初学经历了各种尝试,但是熟悉了Linux系统和ROS系统的操作、cmake、shell、OpenCV等等,为了能够自己进行开发,还需要更深入的学习。

从开源项目入手,学习其理论和工程实现,是入门的捷径,只有看懂的代码才改的动代码,深入之后在其基础上做一定的改进。

工程实现只是科研的一部分,作为研究生,更重要的是抓住SLAM中的一个小问题,看看能否对现有的算法进行改进或者比较。所以还是要从论文出发,寻找灵感,去实现,并验证效果。

posted @ 2024-07-05 13:48  ggBondDemo01  阅读(536)  评论(0)    收藏  举报