前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【VSLAM】ORB-SLAM3安装部署与运行

【VSLAM】ORB-SLAM3安装部署与运行

作者头像
DevFrank
发布于 2024-07-24 07:26:00
发布于 2024-07-24 07:26:00
89506
代码可运行
举报
运行总次数:6
代码可运行

😏1. ORB-SLAM3介绍

ORB-SLAM3是一种基于视觉传感器的实时单目、双目和RGB-D SLAM系统

SLAM代表同时定位与地图构建,是指在未知环境下通过机器人上搭载的传感器获取数据并运用算法进行实时处理,从而在机器人运动中同时完成对机器人自身姿态的估计和构建三维环境地图。

ORB-SLAM3是由英国伯明翰大学开发的,是ORB-SLAM2的改进版本,加入了语义信息处理,能够更加准确地估计相机的位置和方向,并且可以识别场景中的物体和结构,实现更加智能化的SLAM过程。

😊2. 代码安装部署

1. 安装ros与opencv

安装依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get update
sudo apt-get install git cmake build-essential libglew-dev libgtk2.0-dev \
libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff5-dev \
libopenexr-dev libeigen3-dev libboost-all-dev libprotobuf-dev protobuf-compiler \
libgoogle-glog-dev libgflags-dev libatlas-base-dev liblapack-dev libsuitesparse-dev \
libvtk6-dev python3-pip python3-dev python3-numpy python3-yaml

安装完ros后,会自带opencv 3.2.0版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pkg-config --modversion opencv
2. 安装Pangolin作为可视化和用户界面

安装依赖:sudo apt-get install libglew-dev libpython2.7-dev libgl1-mesa-dev libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols

下载代码:git clone https://github.com/stevenlovegrove/Pangolin.git

编译安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd Pangolin
mkdir build
cd build
cmake ..
make -j8
sudo make install
3. 安装Eigen3一个开源线性库,可进行矩阵运算

安装eigen3:sudo apt-get install libeigen3-dev

4. 安装ORB-SLAM3

下载代码:git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3

构建ORB-SLAM3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ORB_SLAM3
chmod +x build.sh
./build.sh

可能的问题:AR编译不通过,删除即可;se3库有问题,重新编译对应库。

构建ROS版本的ORB-SLAM3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/ORB_SLAM3/Examples_old/ROS

chmod +x build_ros.sh
./build_ros.sh

可能的问题:改一下CMakeList.txt中的参数。

😆3. 案例运行

1. 运行数据集

编译完成后会在ORB_SLAM3/Examples文件夹下生成各种可执行文件。这里以单目相机为例运行:

  1. 下载数据集:有TUM、KITTI、EuRoC三种数据集,这里使用TUM数据集,从https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download下载序列并解压缩。
  2. 执行命令,其中PATH_TO_SEQUENCE_FOLDER为数据集的存储路径,并将tumx.yaml与下载的数据集对应,比如TUM1.yaml,TUM2.yaml 和TUM3.yaml分别对应 freiburg1, freiburg2 和 freiburg3,根据自己的情况对路径(相对路径或绝对路径)做修改。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./Examples/Monocular/mono_tum /home/dev/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/dev/ORB_SLAM3/Examples/Monocular/TUM1.yaml /home/dev/ORB_SLAM3/dataset/rgbd_dataset_freiburg1_xyz

2. 用真实相机usb_cam运行

ORB_SLAM3自带了ros的版本,在Examples_old/ROS中,编译完成后,先运行usb相机:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
roslaunch usb_cam usb_cam-test.launch

然后执行单目vslam命令(注意将订阅的topic改成对应相机的):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rosrun ORB_SLAM3 Mono /home/dev/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/dev/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/Asus.yaml

以上。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Three.js教程(5):光源
Three.js的作用就是做3D效果,一说到3D就绕不过一个话题,那就是阴影。而要出现阴影的效果,那么就要涉及光源。本章介绍Three.js中光源相关的知识。
kai666666
2020/10/17
2.8K0
【愚公系列】2023年08月 Three.js专题-光源
光源是能够发出光的物体或设备,它能够发出光线,使我们看到周围的环境和物体。常见的光源包括太阳、灯泡、蜡烛、火把、手电筒等。根据发光方式不同,光源可以分为自发光源和非自发光源。自发光源是指能够自行发出光线的物体,如太阳等;而非自发光源是指需要外部能量刺激才能发出光线的物体,如灯泡、荧光棒等。
愚公搬代码
2025/05/28
640
【愚公系列】2023年08月 Three.js专题-光源
ThreeJs 基础学习
如果你要实现一个机器人在跑步,那么机器人的头、四肢、躯干等都是要整体移动的,group可以将一系列的mesh模型组成一个整体,这样就可以实现整体移动了。
心安事随
2024/07/29
2910
Three.js中光源
官方文档:https://threejs.org/docs/index.html#api/zh/lights/SpotLight
小刀c
2024/04/03
2270
Three.js中光源
Three.js 这样写就有阴影效果啦
在学习 Three.js 时,很多知识点其实记住几个重要的步骤就能实现相应的效果。
德育处主任
2022/09/23
2.7K0
Three.js 这样写就有阴影效果啦
Three.js光照效果实战案例解析
在当今数字化的时代,3D图形在网页、游戏、虚拟和增强现实等多个领域发挥着重要作用。Three.js作为一款强大且流行的JavaScript 3D库,极大地简化了在网页上创建和展示3D内容的难度。而光照效果在3D图形中犹如灵魂一般的存在,它能够赋予场景真实的质感和立体感,让虚拟的世界栩栩如生。本文将通过一系列实战案例深入解析Three.js光照效果的实现与应用,带您领略Three.js在光照处理方面的独特魅力。
Front_Yue
2025/03/15
1690
Three.js光照效果实战案例解析
Three.js 场景创建基础
在当今数字化的时代,Web 开发已经不再局限于传统的二维界面。随着技术的不断进步,越来越多的开发者开始探索将 3D 图形引入到网页中,为用户带来更加沉浸式和交互性的体验。而 Three.js 作为一款广受欢迎的 JavaScript 3D 库,为开发者提供了强大而便捷的工具,使得在网页上创建和展示复杂的 3D 场景变得不再困难。本文将深入探讨 Three.js 场景创建的基础知识,包括其简介、引入方式,以及场景构建的关键要素。
Front_Yue
2025/03/12
3080
Three.js 场景创建基础
如何实现一个3d场景中的阴影效果(threejs)?
跟OpenGL不同,在threejs中实现一个阴影效果很简单,只需要简单的几个设置。
程序你好
2021/07/23
2.9K0
如何实现一个3d场景中的阴影效果(threejs)?
【愚公系列】2023年08月 Three.js专题-基本概念和使用
Three.js是一个用于创建和呈现3D图形的JavaScript库。它提供了一组易于使用的工具和API,使得开发人员可以轻松地在Web应用程序中创建复杂的3D场景和动画。Three.js可以与其他JavaScript库和框架一起使用,如jQuery和React等。它是一个开源项目,有一个活跃的社区在支持和扩展它。
愚公搬代码
2025/05/28
1110
【愚公系列】2023年08月 Three.js专题-基本概念和使用
Three.js基础
通过scene.overrideMaterial = new THREE.MeshLambertMaterial({ color: 0xffffff });来强制设置场景中对象的材质,极端情况可以做性能优化。
小刀c
2024/04/03
3190
Three.js基础
threejs中实现物体阴影
在Three.js中实现阴影需要几个步骤,包括设置渲染器、光源以及物体的材质等。以下是一个基本的实现阴影的步骤:
用户8703799
2024/08/20
1360
Three.js深入浅出:4-three.js中的光源
本篇文章将带你深入了解Three.js中的光源类型、属性和使用方法,助你在创建虚拟世界时获得更加生动逼真的效果
用户6297767
2023/11/26
6900
Three.js深入浅出:4-three.js中的光源
学习Three.js
window resize 需要设置camera的aspect 属性,设置renderer的尺寸
小刀c
2024/04/03
2370
【愚公系列】2023年08月 Three.js专题-纹理
纹理是指由于物体内部或表面的微观结构、形态、组成、排列等因素所形成的外观或质感特征。它可以是线性的、非线性的、均匀的或不均匀的,可以在物体的表面或内部出现。纹理可以是自然界中的,也可以是人工制造的,是视觉艺术和设计中一个非常重要的元素。在数字图像处理中,纹理是图像分析和识别的一个重要因素。
愚公搬代码
2025/05/28
820
【愚公系列】2023年08月 Three.js专题-纹理
Threejs入门之十七:给物体添加阴影
在前面的章节中,我们已经实现了将物体添加到场景中,并设置了灯光等效果,但是,这并不是很真实,在真实的世界中,被灯光照射的物体是有阴影的,这一节我们就来给物体添加阴影。 在Threejs中给物体添加阴影,需要注意以下几点 1.要选择具有投射阴影效果的材质 我们前面也提到过,基础网格材质MeshBasicMaterial是不受光照影响的,我们如果需要有阴影效果,就不能选择该材质 2.需要投射阴影的物体要设置castShadow属性 castShadow属性用于设置物体是否被渲染到阴影贴图中,默认为false,如果需要投影,则设置为true 3.接收阴影的物体要开启receiveShadow属性 receiveShadow属性用于设置材质是否接收阴影,默认为false,如果需要接收物体的投影,设置为true 4.灯光开启投射阴影castShadow属性 灯光也要设置castShadow为true,默认为false 5.渲染器设置允许在场景中使用阴影贴图 将渲染器的shadowMap.enabled属性设置为true,允许场景中使用阴影贴图 经过上面五步的设置,就可以开启物体的阴影效果了,具体实现代码如下
九仞山
2023/04/30
7300
Threejs入门之十七:给物体添加阴影
【带着canvas去流浪(11)】Three.js入门学习笔记
官方文档中的新手示例过于简单,所以本节对Three.js中的概念进行一些补充描述:
大史不说话
2019/07/15
4K0
【带着canvas去流浪(11)】Three.js入门学习笔记
three.js中的重要基础概念
Three.js 是一个功能强大的 JavaScript 库,用于创建和展示基于 WebGL 的三维图形。在学习使用Three.js来构建3D世界之前,有一些基本概念是需要牢记的,否则,在你绘制3D世界时,思绪会是杂乱无章的:
fastmock
2025/04/26
1310
【愚公系列】2023年08月 Three.js专题-几何体
几何体是指由点、线、面所构成的空间实体。其中,点、线、面是几何体的基本元素,几何体包括球体、立方体、圆锥体、圆柱体、棱柱、棱锥、棱台等。这些几何体都有自己的特定形状和特征,可以应用于各种数学、物理和工程领域。
愚公搬代码
2025/05/28
640
【愚公系列】2023年08月 Three.js专题-几何体
Three.js可视化企业实战WEBGL网-2024入门指南
Three.js 是一个功能强大的 JavaScript 库,用于在 Web 浏览器中创建和显示动画 3D 图形。它的丰富 API 和模块化设计使得开发者可以轻松构建复杂的 3D 场景和动画效果。本文将详细介绍 Three.js 中的一些重要组件和模块,包括场景、相机、几何体、材质、光源、渲染器和控制器等。
用户11130883
2024/05/31
3730
Three.js 手写跳一跳小游戏(上)
玩家从一个方块跳到下一个方块,如果没跳过去就算失败,跳过去了就会再出现下一个方块。
神说要有光zxg
2023/08/28
7250
Three.js 手写跳一跳小游戏(上)
相关推荐
Three.js教程(5):光源
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验