Openvslam
文章目录
- Openvslam 学习报告
- 什么是Openvslam
- 概念
- 特点
- 安装和运行OpenVSLAM
- 克隆源代码
- 安装依赖库
- 测试(环境已经安装成功)
- 运行
- 运行失败的总结
- 运行成功
- 系统设计
- 模块和函数接口
- 调用流程
- 流程图
- 参考资料
Openvslam 学习报告
什么是Openvslam
概念
OpenVSLAM(Visual SLAM)是一个开源的视觉定位与地图构建(Visual Simultaneous Localization and Mapping,Visual SLAM)库。它旨在通过使用单目相机、双目相机、RGB-D相机或者其他传感器,实现实时的相机定位和地图构建。Visual SLAM 是一种技术,可以使机器(例如机器人、车辆或者无人机)在未知环境中通过感知视觉信息,实时地进行定位和建立地图。使开发者能够利用相机捕获的图像数据来定位相机自身并创建环境地图。它结合了特征提取、特征匹配、姿态估计、地图构建等核心技术,以实现准确和实时的相机定位和地图构建。
特点
- 多传感器的支持
- 实时性能
- 开源
- 易用
安装和运行OpenVSLAM
克隆源代码
git clone https://github.com/lp-research/openvslam
安装依赖库
- 安装Ubuntu系统依赖
sudo apt update -y
sudo apt upgrade -y --no-install-recommends
# basic dependencies
sudo apt install -y build-essential pkg-config cmake git wget curl unzip
# g2o dependencies
sudo apt install -y libatlas-base-dev libsuitesparse-dev
# OpenCV dependencies
sudo apt install -y libgtk-3-dev
sudo apt install -y ffmpeg
sudo apt install -y libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavresample-dev
# eigen dependencies
sudo apt install -y gfortran
# other dependencies
sudo apt install -y libyaml-cpp-dev libgoogle-glog-dev libgflags-dev# (if you plan on using PangolinViewer)
# Pangolin dependencies
sudo apt install -y libglew-dev
- 安装Eigen矩阵库
cd /Desktop/study/dir
wget -q http://bitbucket.org/eigen/eigen/get/3.3.4.tar.bz2
tar xf 3.3.4.tar.bz2
rm -rf 3.3.4.tar.bz2
cd eigen-eigen-5a0156e40feb
mkdir -p build && cd build
cmake \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_INSTALL_PREFIX=/usr/local \..
make -j4
sudo make install
- 安装OpenCV库
cd /Desktop/study/dir
wget -q https://github.com/opencv/opencv/archive/3.4.0.zip
unzip -q 3.4.0.zip
rm -rf 3.4.0.zip
cd opencv-3.4.0
mkdir -p build && cd build
cmake \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_INSTALL_PREFIX=/usr/local \-DENABLE_CXX11=ON \-DBUILD_DOCS=OFF \-DBUILD_EXAMPLES=OFF \-DBUILD_JASPER=OFF \-DBUILD_OPENEXR=OFF \-DBUILD_PERF_TESTS=OFF \-DBUILD_TESTS=OFF \-DWITH_EIGEN=ON \-DWITH_FFMPEG=ON \-DWITH_OPENMP=ON \..
make -j4
sudo make install
- 安装DBoW2
cd /Desktop/study/dir
git clone https://github.com/shinsumicco/DBoW2.git
cd DBoW2
mkdir build && cd build
cmake \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_INSTALL_PREFIX=/usr/local \..
make -j4
sudo make install
- 安装g2o
cd /Desktop/study/dir
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
git checkout 9b41a4ea5ade8e1250b9c1b279f3a9c098811b5a
mkdir build && cd build
cmake \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_INSTALL_PREFIX=/usr/local \-DCMAKE_CXX_FLAGS=-std=c++11 \-DBUILD_SHARED_LIBS=ON \-DBUILD_UNITTESTS=OFF \-DBUILD_WITH_MARCH_NATIVE=ON \-DG2O_USE_CHOLMOD=OFF \-DG2O_USE_CSPARSE=ON \-DG2O_USE_OPENGL=OFF \-DG2O_USE_OPENMP=ON \..
make -j4
sudo make install
- 安装Pangolin库
cd /Desktop/study/dir
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
git checkout ad8b5f83222291c51b4800d5a5873b0e90a0cf81
mkdir build && cd build
cmake \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_INSTALL_PREFIX=/usr/local \..
make -j4
sudo make install
- 编译源码
cd /Desktop/study/openvslam
mkdir build && cd build
cmake \-DBUILD_WITH_MARCH_NATIVE=ON \-DUSE_PANGOLIN_VIEWER=ON \-DUSE_SOCKET_PUBLISHER=OFF \-DUSE_STACK_TRACE_LOGGER=ON \-DBOW_FRAMEWORK=DBoW2 \-DBUILD_TESTS=ON \..
make -j4
测试(环境已经安装成功)

运行

运行失败的总结
爆红是我改过代码之后的输出。可能是爆内存了。听取老师的建议后我租了服务器。并且通过查阅资料,发现可以使用Docker一键安装。
运行成功
$ docker pull celinachild/openvslam:latest$ docker run --gpus all -it --ipc=host --net=host --privileged -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw -e NVIDIA_DRIVER_CAPABILITIES=all celinachild/openvslam# for mapping
$ ./run_video_slam -v ./orb_vocab/orb_vocab.dbow2 -m ./aist_living_lab_1/video.mp4 -c ./aist_living_lab_1/config.yaml --no-sleep --map-db map.msg# for localization
$ ./run_video_localization -v ./orb_vocab/orb_vocab.dbow2 -m ./aist_living_lab_2/video.mp4 -c ./aist_living_lab_2/config.yaml --no-sleep --map-db map.msg


系统设计
OpenVSLAM的整体系统设计可以概括为以下几个关键方面:
- 相机模型和传感器输入:OpenVSLAM支持多种不同类型的相机模型和传感器输入,包括单目、双目、RGB-D相机等。
- 特征提取和跟踪:OpenVSLAM使用视觉特征来进行定位和建图。特征提取和跟踪模块负责检测图像中的关键点,并在连续帧之间跟踪这些特征点。
- 视觉里程计:这个模块负责计算相机在连续帧之间的运动估计,以确定相机的位置和姿态。
- 回环检测:OpenVSLAM包括回环检测模块,用于识别在不同时间点拍摄的相似帧,并纠正可能的漂移。
- 建图:建图模块将特征点和运动估计转化为地图,用于表示环境的三维结构。
- 优化:优化模块用于全局地图优化,以提高定位的准确性和地图的一致性。
- 可视化和输出:OpenVSLAM还包括可视化工具和输出模块,以便于用户查看定位和地图结果。
模块和函数接口
OpenVSLAM的代码基本上按照上述系统设计分为多个模块,每个模块包含多个函数和类。以下是一些主要模块和它们的功能:
- FeatureExtractor 模块:负责特征点提取。
- Initializer 模块:执行初始化操作,例如初始化视觉里程计。
- Tracking 模块:执行相机的跟踪和定位。
- LoopDetector 模块:用于检测回环。
- Map 模块:管理地图的结构,包括关键帧和地图点。
- Optimizer 模块:执行全局地图优化。
- System 模块:系统的核心,协调各个模块的运行。
调用流程
OpenVSLAM的调用流程通常涉及以下步骤:
- 初始化OpenVSLAM系统,选择相机类型和配置。
- 提供传感器输入,如图像序列或相机数据流。
- 执行特征提取和跟踪,计算视觉里程计。
- 在运行中,回环检测模块可能会触发来检测回环。
- 定期执行全局地图优化,以提高地图的一致性和定位精度。
- 输出定位结果和地图数据,以便可视化或后续应用。
流程图

参考资料
lp-research/openvslam: OpenVSLAM Fork for LP-Research (github.com)
zm0612/openvslam-comments: openvslam的注释版代码 (github.com)
https://hub.docker.com/r/celinachild/openvslam
https://arxiv.org/abs/1910.01122 (论文:OpenVSLAM: A Versatile Visual SLAM Framework)
ChatGPT (openai.com)
相关文章:
Openvslam
文章目录 Openvslam 学习报告什么是Openvslam概念特点 安装和运行OpenVSLAM克隆源代码安装依赖库测试(环境已经安装成功)运行运行失败的总结运行成功 系统设计模块和函数接口调用流程流程图参考资料 Openvslam 学习报告 什么是Openvslam 概念 OpenVSL…...
Windows通过RDP异地远程桌面Ubuntu【内网穿透】
文章目录 前言1. ubuntu安装XRDP2.局域网测试连接3.安装cpolar内网穿透4.cpolar公网地址测试访问5.固定域名公网地址 前言 XRDP是一种开源工具,它允许用户通过Windows RDP访问Linux远程桌面。 除了Windows RDP外,xrdp工具还接受来自其他RDP客户端(如Fre…...
js 基础 (ES 模块)
ES 模块语法 1、模块化的背景 JavaScript 程序本来很小——在早期,它们大多被用来执行独立的脚本任务,在你的 web 页面需要的地方提供一定交互,所以一般不需要多大的脚本。过了几年,我们现在有了运行大量 JavaScript 脚本的复杂…...
K8s 多集群实践思考和探索
作者:vivo 互联网容器团队 - Zhang Rong 本文主要讲述了一些对于K8s多集群管理的思考,包括为什么需要多集群、多集群的优势以及现有的一些基于Kubernetes衍生出的多集群管理架构实践。 一、为什么需要多集群 随着K8s和云原生技术的快速发展,…...
德国金融监管机构网站遭遇大规模DDoS攻击后“瘫痪”
德国波恩的BaFin大楼 BaFin是负责监督和监管德国金融机构和市场的金融监管机构,其职责是确保德国金融体系的稳定性、完整性和透明度。 此外,BaFin 的网站还为企业和消费者提供银行、贷款和财产融资等方面的信息。它还提供消费者帮助热线和举报人信息共…...
关于特殊时期电力行业信息中心运营思路
一、防御思路 安全运营是一系列规则、技术和应用的集合,用以保障组织核心业务平稳运行的相关活动,是通过灵活、动态的实施控制以期达到组织和业务需要的整体范围可持续性正常运行。信息中心在特殊时期扮演着关键的角色,因此需要精心设计运营…...
机器人中的数值优化(八)——拟牛顿方法(上)
本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…...
mac安装adobe需要注意的tips(含win+mac all安装包)
M2芯片只能安装2022年以后的(包含2022年的) 1、必须操作的开启“任何来源” “任何来源“设置,这是为了系统安全性,苹果希望所有的软件都从商店或是能验证的官方下载,导致默认不允许从第三方下载应用程序。macOS sie…...
C/C++学习网址
1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts --提供数以百计的C和C脚本和程序。所有程序都分为不同的类别。 3、http://www.planetsourcecode.com/vb/default.asp?lng…...
Typora导出的PDF目录标题自动加编号
Typora导出的PDF目录标题自动加编号 在Typora主题文件夹增加如下文件后,标题便自动加上了编号: https://gitcode.net/as604049322/blog_data/-/blob/master/base.user.css 例如: 但是导出的PDF中,目录却没有编号: 这…...
【React】React学习:从初级到高级(二)
React学习【二】 2 添加交互2.1 响应事件2.1.1 添加事件处理函数2.1.2 在事件处理函数中读取props2.1.3 将事件处理函数作为props传递2.1.4 命名事件处理函数prop2.1.5 事件传播2.1.6 阻止传播2.1.7 传递处理函数作为事件传播的替代方案2.1.8 阻止默认行为 2.2 State: 组件的记…...
无法将类型为“Newtonsoft.Json.Linq.JObject”的对象转换为类型“Newtonsoft.Json.Linq.JArray”解决方法
对于“Newtonsoft.Json.Linq.JObject”的对象强制类型转换为类型“Newtonsoft.Json.Linq.JArray”报错 第一的图为对象{“*************”:“********”} 第二个图片为数组[{“…”:“…”}] 在我这里进行强制转换对象转换为类型“Newtonsoft.Json.Linq.JArray”报错. 那我们…...
从零开始,无需公网IP,搭建本地电脑上的个人博客网站并发布到公网
文章目录 前言1. 安装套件软件2. 创建网页运行环境 指定网页输出的端口号3. 让WordPress在所需环境中安装并运行 生成网页4. “装修”个人网站5. 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会,网络已经成为我们生活离不开的必需品,而纷繁…...
Excel VSTO开发6 -Range对象
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 6 Range对象 Excel中最重要的一个对象是Range对象,它可以代表某一单元格、某一行、某一列、某一区域(该区域…...
LeetCode 15 三数之和
题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 // 1. 排序双指针 // 2. 固定一个值nums[i] 然后去剩下的位置去找 两数之和符合nums[j]nums[k]是否等于-nums[i] // 3. 细节问题:由于题目中是不可以包含重复的三元组的…...
车船边缘网关是如何给车辆船只定位的?
随着智能交通系统的不断发展,车路协同成为了重要的研究方向之一。而AI边缘计算网关在这个领域中发挥着至关重要的作用。本文将重点介绍AI边缘计算网关在车路协同中的应用,并强调其中的重点词汇或短语。 首先,什么是AI边缘计算网关࿱…...
详解MAC帧、ARP、DNS、ICMP协议
局域网通信原理 比如新建了一个内网,如果一台机器A找机器B,封FRAME时(OSI的第二层用的数据格式),要封装对方的MAC,开始时A不知道B的MAC,只知道IP,它就发一个ARP包,源IP是…...
Leetcode:【169. 多数元素】
题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 难度:简单 题目链接:169. 多数元素 示例 1ÿ…...
好用免费的Chat GPT
MindLink麦灵 你问我答 灵感 持续更新中。。。。...
MySQL-MHA
目录 1、什么是 MHA 2、MHA 的组成 3、MHA 的特点 3.1 MHA工作原理总结如下 4、搭建 MySQL MHA 4.1 实验环境配置 MHA架构 故障模拟 4.2 安装MHA所有组件 4.3 故障模拟 4.4 总结 1、什么是 MHA MHA(MasterHigh Availability)是一套优秀的My…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
