多目slam论文阅读系列一:MULTICOL-SLAM论文阅读

news2024/12/27 13:06:44

论文地址:https://arxiv.org/pdf/1610.07336.pdf

 代码:GitHub - urbste/MultiCol-SLAM: This repository contains a multi-fisheye camera SLAM. The underlying SLAM system is based on ORB-SLAM.参考文档:【算法】跑MultiCol-SLAM遇到的效果展示(环境:Ubuntu18.04+ROS melodic)_BigHandsome2020的博客-CSDN博客

论文贡献

1. 介绍了multi-keyframes(MKFs), multi-camera-system(MCS)

2. A hyper-graph formulation of MultiCol (MultiCol的混合图模型)

3. 多相机回环检测

4. Minimal non-central absolute pose estimation methods forre-localization  重定位使用了最小化去中心点的位姿估计

5. 基于本质图的不同的初始化方法

6. several performance improvements

系统框架

下图红字表示为multicol新增部分。而其中可以看到,我们对于BA,位姿估计,地图点三角化和相对反向计算都提供了创新。

其具体细节包括:

* 每一个图像集合的特征被提取,用于匹配。利用hash map加速特征点到地图的匹配。

* 局部地图点被投影到多相机系统和当前帧的地图点匹配。

* 如果初始位姿估计失败,GP3P和RANSAC会被用于执行重定位。(orb slam2中通过epnp执行此操作)

* 因为一个地图点可以同时被多个相机观测,因此,我们使用hyper graph 而不是 graph去进行优化。

MultiCol 模型

上式表达一点经过从world -> body -> camera的坐标转换

Map entities 地图主体

map points

* 在世界坐标系的三维坐标

* 用d_{max} 和d_{min}来表示点被观察的距离范围

* 视线方向 ni = [n_x, n_y, n_z]

Multi-Keyframes

因为每个关键帧包含多张图片,因此被称为Multi-Keyframe, MCS包含相机外参和内参

  • pose
  • 每一个相机提取的特征点存储它的图像坐标系的位置(用于BA和位置估计),以及3D bearing vector(用于本质矩阵估计以及GP3P)。

Co-Visibility Graph

Map Initialization

地图初始化包括相机位姿和初始地图点的建立,初始化的精确程度关系到整个系统的效果。

The accuracy and robustness of the initial reconstruction has asignificant impact on the overall performance of the system.

在orb slam中,初始化基于足够的视差,所以在纯旋转和只对于一个平面观察时,初始化会失败。

作者尝试了基于多相机多位姿的几种方法,但是效果不理想,而Ventura et al在2015的作品值得进一步关注。

我们提出了一种相对实际的方法,我们通过Ransac估计矩阵E,然后选择有最大inliners和旋转尺度的位姿,然后寻找在多个相机中的共视点。最后,我们针对所有相机位姿使用BA。

Tracking线程

tracking线程最重要的是保证实时性。

所有的优化都采用基于LM的iterative re-weighted least squares(IRPLS)

特征点 

FAST特征在新环境下通常需要训练,因此,我们使用AGAST角点作为取代。我们对于每个AGAST特征提取ORB描述子。

基于上一时刻的跟踪

基于固定的地图点,我们进行跟踪,然后对于位姿进行优化,然后基于优化后的位姿接着寻找匹配点。

重定位

在跟踪失败后,我们会进行重定位,在ORB SLAM2中,初始位姿估计是通过EPnP和RANSAC实现的。而我们替换掉它有两点原因。

1. EPnP在点数较少的时候,估计非常不准确。

2. 我们多相机的场景不适用。

我们使用UPnP,GP3P的方法。

 Mapping线程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java小区物业管理系统源码带本地搭建教程

技术架构 技术框架:springboot mybatis thymeleaf Mysql5.7 运行环境:jdk8 IntelliJ IDEA maven 宝塔面板 本地搭建教程 1.下载源码,本地电脑新建一个数据库,导入wuye.sql文件至数据库中。 2.使用IDEA打开wuyeadmin目录&…

web随想笔记

1 OJ大概架构 1.0 OJ页面–>WEB服务器(SpringBoot)–>判题机(Linux) OJ页面将提交的代码封装成json格式发给web服务器端,服务器端接收json获取信息,进行进一步封装,转发给判题机,拆解json数据获得程…

擦除编码(EC)数据中心中的最优机架协调更新

擦除编码EC在数据中心中的最优机架协调更新介绍与背景工作文章外主流的工作文章摘要RackCU, the optimal Rack-Coordinated Update solution数据增量基础更新奇偶校验基础更新RackCU其他的更新方法一些数值实验可以仅需改进的地方参考文献介绍与背景工作 擦除编码(…

Simulink建模:CRC校验模型

本文研究CRC校验的Simulink模型及其代码生成。 文章目录1 CRC校验2 C代码形式3 Matlab/Simulink建模及代码生成3.1 Matlab Function建模3.2 For Iteration子系统建模4 总结与思考1 CRC校验 在汽车软件开发中,CRC校验常用于CAN通信中。通常将某个CAN报文中的数据通过…

【AVL树】

目录基础知识AVL树的定义结点的平衡因子结构体部分操作思路AVL树的插入平衡化旋转左单旋转右单旋转先左后右双旋转先右后左双旋转插入函数AVl树的删除左平衡代码右平衡代码删除函数基础知识 AVL树的定义 一棵AVL树或者是空树,或者是具有谢下列性质的二叉搜索树&am…

Docker 实战——部署 Nginx 镜像容器、Tomcat 镜像容器、MySQL 镜像容器

3.安装 Docker 可使用 yum list docker-ce --showduplicates | sort -r 命令来查看 Docker 的所有版本。 [rootDocker ~]# yum -y install docker-ce-17.12.1.ce #安装docker 4.启动 Docker 并设置开机自启 [rootDocker ~]# systemctl start docker [rootDocker ~]# syste…

uniClound云开发创建流程

uniClound是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。云服务创建项目,使用熟悉的js,轻松搞定前后台整体业务,使前端开发离全栈开发又进一步,尤其是一键生成代码的功能&…

海外的 SEO 网站如何进行优化

作为一个已经出海12年的专业平台,米贸搜为你整理了一份海外SEO优化方法,希望对你有所帮助。 无论是平台还是外贸网站,无论是外贸还是内销,一个绕不开的话题就是流量。随着各平台和外贸网站竞争的加剧,流量的获取成本也…

【ML】基于机器学习的心脏病预测研究(附代码和数据集,逻辑回归模型)

心脏病是人类健康的头号杀手, 全球大约1/3的人口死亡是由心脏病引起的。而我国,每年大概有几十万人口死于心脏病。如果我们可以通过提取人体相关的指标(既往病史、家族病史、血压情况、血糖情况等等),通过数据挖掘方式来分析不同特征对于心脏病的影响,或者建立电子病历,…

flink1.13.2 text文本数据迁移为orc+snappy数据解决方案

1.表结构不变(列名,分区不变),表存储和压缩算法改变 1.1. 外部表(未分区) 1.1.1. 拷贝源表结构,创建外部表 create table if not exists [目标表名] like [源表名] 示例: create table if not exists dwm_soh_estimate_nopartition_out_snappy like dwm_soh_estimate_n…

10x倍加速PDE的AI求解:元自动解码器求解参数化偏微分方程

研究背景 科学和工程中的许多应用需要求解具有不同方程系数、不同边界条件甚至不同求解域形状的偏微分方程(Partial Differential Equation,PDE),即需要求解一个方程族而不是单个方程。这类应用经常在反问题求解、控制和优化、风险评估和不确定性量化领域…

C++GUI之wxWidgets(4)-编写应用涉及的类和方法(1)

目录wxApp ClasswxApp::OnInit()wxFrame ClasswxFrame处理的事件wxApp Class 当wxUSE_GUI1时,wxApp类代表应用程序本身。 除了wxAppConsole提供的特性外,它还可以跟踪顶部窗口(SetTopWindow()),并添加了对视频模式的支持(SetDisp…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java小区宠物信息管理系统0v9l2

最近发现近年来越来越多的人开始追求毕设题目的设创、和新颖性。以往的xx管理系统、xx校园系统都过时了。大多数人都不愿意做这类的系统了,确实,从有毕设开始就有人做了。但是很多人又不知道哪些毕设题目才算是新颖、创意。太老土的不想做,创…

高低JDK版本中JNDI注入(上)

目录 前言: (一)RMI 0x01 低版本 1.1 服务端 1.2 客户端 1.3 ExportObject.java 0x02 高版本 (二)LDAP 0x01低版本 1.1 服务端 1.2 客户端 1.3 ExportObject.java 前言: 这篇文章主要是分析在高低版本JDK中JNDI注入RMI和LDA…

痞子衡嵌入式:浅析IAR下调试信息输出机制之硬件UART外设

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是IAR下调试信息输出机制之硬件UART外设。 在嵌入式世界里,输出打印信息是一种非常常用的辅助调试手段,借助打印信息,我们可以比较容易地定位和分析程序…

泰迪·滇西科技师范学院智能工作室分享:第一章NumPy库——先基础区别数组和列表

前言 来看NumPy库的应该都是接触到庞大数据处理的朋友吧。NumPy是一个简洁好用的数据库,尤其是在科学计算上,专为进行严格数字处理而产生的。其中的ndarray可以说是NumPy库的心脏,它提供了一个强大的N维数组对象,这一章我们先来简…

2 寄存器

寄存器 CPU是由运算器、控制器、寄存器等器件构成,他们依靠内部总线连接。 运算器进行信息处理:寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各种器件,在它们之间进行数据的传送。 寄存器是程序员可…

[附源码]Python计算机毕业设计Django社区住户信息管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

AI 绘画整体认知

体验 ChatGPT 之后,深刻感觉到 “了解 AI 绘画” 这件事必须得安排上了。 于是用了两三个日夜,了解如下: (文末附完整脑图链接) 一、发展时间线 二、使用已有的AI绘画云平台(目前国内外有很多&#xff09…

华为与思科路由器静态路由配置

一、华为路由器配置静态路由 1、静态路由基础 拓扑如下: 配置静态路由,使得PC1可以ping通PC3。 R1: interface Ethernet0/0/0ip address 124.16.8.1 255.255.255.0 # interface Ethernet0/0/1ip address 110.69.70.1 255.255.255.0 # # ip route-static 172.16.3.0 255.25…