当前位置: 首页 > news >正文

ORB-SALM3配置流程及问题记录

目录

前言

一、OPB-SLAM3基本配置流程

1.下载编译Pangolin

二、ORB-SLAM3配置

1.下载源码

2.创建ROS工作空间并编译ORB-SLAM3-ROS源码

3.尝试编译

三、运行测试


一、OPB-SLAM3基本配置流程

ORB-SLAM3是一个支持视觉、视觉加惯导、混合地图的SLAM(Simultaneous Localization and Mapping,即同时定位与地图构建)系统。本项目场景基于ubuntu18.04在ROS-noetic基础上进行配置。

1.下载编译Pangolin

Pangolin 是一个轻量级、跨平台的库,主要用于3D、数值或视频程序和算法的原型设计。它在计算机视觉领域被广泛使用,旨在简化数据可视化的过程。主要用于算法开发中的调试过程当中,具有丰富的图像界面;

下面为安装流程:

sudo apt-get install libglew-dev
sudo apt-get install cmake
sudo apt-get install libpython2.7-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev
sudo apt-get install libdc1394-22-dev libraw1394-dev
sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev# 下载并编译Pangolin
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
sudo make install

测试安装是否成功:

在当前目录下测试输入:

./HelloPangolin

若能出现三色立方体,说明安装成功;

 

二、ORB-SLAM3配置

1.下载源码

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

此时代码包括完整的ORB-SALM项目代码,在ROS环境下,只需部分编译对应部分即可。

2.创建ROS工作空间并编译ORB-SLAM3-ROS源码

新建ROS工作空间:

mkdir -p ~/orbslam3_ws/src
cd ~/orbslam3_ws/
catkin_make
source devel/setup.bash

生成功能包框架:

cd src
catkin_create_pkg orbslam3_ros std_msgs rospy roscpp
cd ..

将ORB-SLAM3的ROS源码复制到工作空间:

cd ~/orbslam3_ws/src/orbslam3_ros
cp -r ~/ORB_SLAM3/Examples/ROS/ORB_SLAM3/* .

 关注CMakeLists.txt中OpenCV版本:

find_package(OpenCV 4.2 REQUIRED)

这里对于opencv的版本要求要具体情况具体分析,如果编译成功,运行出现以下报错,可怀疑为opencv版本问题:

(1)错误信息指出 ORB-SLAM3 在运行过程中遇到了一个 OpenCV 异常,具体是在 setSize 函数中一个断言失败了。

what():  OpenCV(4.6.0) /home/roy/opencv-4.6.0/modules/core/src/matrix.cpp:246: error: (-215:Assertion failed) s >= 0 in function 'setSize'

(2) 这个错误信息再次表明 ORB-SLAM3 在运行过程中遇到了内存不足的问题,导致程序异常终止。具体错误信息是 OpenCV 无法分配足够的内存来处理数据。这通常是因为数据集过大或配置参数不合理导致的,也有可能是版本不匹配。

  what():  OpenCV(4.6.0) /home/roy/opencv-4.6.0/modules/core/src/alloc.cpp:73: error: (-4:Insufficient memory) Failed to allocate 31420881834160 bytes in function 'OutOfMemoryError'

在修改opencv版本前,可优先猜测计算负荷过重问题,修改特征点数目或分辨率即可;

修改 TUM2.yaml 文件(依据实际使用的配置文件)中的 ORBextractor.nFeatures和图像分辨率参数:

ORBextractor.nFeatures: 500  # 原来是 1000
Camera.width: 320  # 原来是 640
Camera.height: 240  # 原来是 480

3.尝试编译

cd ~/orbslam3_ws
catkin_make
source devel/setup.bash

三、运行测试

首先下载TUM数据集 https://vision.in.tum.de/data/datasets/rgbd-dataset/download 

注意下载tag格式或ROS-bag格式,此处以tag格式为例,下载完成后解压是一个文件夹格式:

其中,assocoate.txt文件为深度图像和RGB图像的时间戳对齐文件,通过associate.py生成:

打开终端,进入到 associate.py  所在目录,即/ORB_SLAM3

/Examples/RGB-D/,之后运行:

python associate.py ../../data/rgbd_dataset_freiburg2_pioneer_360/rgb.txt ../../data/rgbd_dataset_freiburg2_pioneer_360/depth.txt > associations.txt  

其中文件路径以实际情况为准,注意associate.txt文件要与rgb.txt和depth.txt放在同一文件夹下。

可以编写launch文件进行测试:

<launch><!--<node pkg="rosbag" type="play" name="playbag" args="/home/spurs/dataset/rgbd_dataset_freiburg1_plant.bag" />--><node pkg="rviz" type="rviz" name="rviz" args="-d $(find orb_slam3)/rviz/orb_viz_rgbd_mapping.rviz" /><node pkg="orb_slam3" type="ros_rgbd_mapping" name="orb_slam3" args="$(find orb_slam3)/Examples/RGB-D/TUM2.yaml $(find orb_slam3)/Vocabulary/ORBvoc.txt /home/roy/orbslam_ws/dataset/rgbd_dataset_freiburg1_desk" output="screen" /></launch>

注意更改数据路径;

也可以参照官方README文件内容进行测试:

纯单目

rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml
rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/image_raw

纯双目

rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false
rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw

RGB-D

rosrun ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml
rosbag play rgbd_dataset_freiburg1_xyz.bag

 测试效果:


http://www.mrgr.cn/news/83336.html

相关文章:

  • 数据库作业02
  • IP 地址与蜜罐技术
  • 5G学习笔记之SNPN系列之UE入网和远程配置
  • 【LeetCode】力扣刷题热题100道(21-25题)附源码 接雨水 合并区间 字母异位词 滑动窗口 覆盖子串(C++)
  • 网络基础1 http1.0 1.1 http/2的演进史
  • AI工具推荐
  • kubeneters-循序渐进Cilium网络(二)
  • 二、智能体强化学习——深度强化学习核心算法
  • Spring bean的生命周期和扩展
  • 鸿蒙面试 2025-01-10
  • C#Halcon二维码识别
  • 第十四章 SQL性能分析
  • 【Python】Python之Selenium基础教程+实战demo:提升你的测试+测试数据构造的效率!
  • PySpark广播表连接解决数据倾斜的完整案例
  • 高等数学学习笔记 ☞ 洛必达法则与泰勒公式
  • 【Rust自学】11.5. 在测试中使用Result<T, E>
  • Formality:默认配置文件
  • 【python翻译软件V1.0】
  • 【数据链电台】洛克希德·马丁(Lockheed Martin)
  • P2249 【深基13.例1】查找
  • kubernetes第七天
  • notebook主目录及pip镜像源修改
  • 代码随想录 哈希 test 8
  • 【神经网络中的激活函数如何选择?】
  • 使用 Maxwell 计算母线的电动势
  • 赛车微型配件订销管理系统(源码+lw+部署文档+讲解),源码可白嫖!