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

论文阅读 Relocalization, Global Optimization and Map Merging for Monocular Visual-Inertial SLAM...

看了一下港科的基于vins拓展的论文<relocalization, global optimization and merging for vins>,在回环的实现部分总体没有什么变化,DBoW2 + PnPRANSAC + 4DOF pose graph,唯一的改动是在pnp前面加了个fundamental matrix RANSAC,应该是有效果调优的,但是根据之前VINS和LDSO的写法,DBoW2 + PnPRANSAC也是够用的.别的一些不同的操作就是在用回环帧更新当前pose的位姿的时候不是直接修正,而是把回环帧作为一个固定帧加入到当期那滑窗.其他的工作更偏向纯实现吧,包括地图的保存和读取.

Abstract

VINS会漂移并且不能提供绝对的位姿估计.

衡量历史信息来进行重定位然后修正漂移是一个热点话题.

通过高效的存储和加载地图来重复使用地图.

现在的地图和以往的可以被融合,通过全局pose graph.

代码已经被融合近VINS-Mono了.

Introduction

里程计会产生drift,及时IMU可以修正在roll和pitch角的drift,其他4个维度还是会漂的.

另一个问题是里程计是一个基于第一帧计算相对变化的系统而不是计算一个绝对的位姿.每一次我们启动系统的时候,起始点都会变成第一帧然后输出一个不是固定坐标系下的里程.

[7, 8]松耦合IMU和相机,然后用KF.

一个比较有名的基于EKF的VIO方案是MSCKF.几个相机的位姿会被保持在状态向量里.所以连续帧看到的同样的特征会形成multi-constraint update.

重定位算法可以基于地图的类别分为两类.

  • offline-built地图

[17]-[19]

[18],[19] build an offline map in geometric configuration

[17] build the offline map by learning method.

  • online-built地图

[20]和[22]用BRISK特征,[21]用ORB.这些方法都缺少加载和复用之前地图的能力.

System Overview

1563258945405

基本pipeline就这样.

Algorithm

A. Visual-Inertial Odometry

就是个VINS简介.

B. Loop Detection

我们用了DBoW2,每一个关键帧,我们用了500个FAST特征,然后用BRIEF描述子.

比之前的VINS里回环操作多了一个2D-2D,可能是有好处的,不知道出于什么考量.因为只是PnPRANSAC工作的也很好,包括LDSO也是这么操作的.

我们用了两步,

  • 先是2D-2D的Fundamental Matrix RANSAC.
  • 然后是3D-2D的PnP RANSAC

1563260961985

C. Tightly-Coupled Relocalization

1563261373161

我们没有只是计算了两个匹配帧的相对位子,我们通过在局部滑窗联合优化loop closure frame来解决.

这个回环帧被看做一个局部滑窗中的固定的额外帧.

在cost function中也只是加了个回环帧的重投影误差.

1563261558819

这种联合优化的方式会生成更高精度的结果.

D. Global Pose Graph Optimization

当我们固定过去的状态的时候,local window会立刻飞到一个"没有漂移"的地方. 这样的话,轨迹就会有一个跳跃.为了使得整个轨迹持续而平滑,我们用了一个轻量级的4DOF的pose graph.

1563261036642

4DOF的优化是比一般的pose graph不一样一些,因为重力可观以后,角度中只有yaw角不可观.

1) Four Accumulated Drift Direction

pitch和roll是可观的.

2) Adding Keyframes into the Pose Graph

每一帧在它被边缘化呢以后就会被加入pose graph. (?)为啥

然后会有两种变,顺序边和回环边.

3) 4-DOF Pose Graph Optimization

4) Map Merging

E. Map Reuse

1) Pose Graph Saving

我们只需要保存每一个节点和边,和每一个关键帧描述子(节点).

原图被扔了(这个和VINS中的操作一致.)

特征的描述子消耗的内存最多,就是500*32一个关键帧.

2) Pose Graph Loading

没啥.

Experiment Result

..

Conclusion

..

转载于:https://www.cnblogs.com/tweed/p/11195333.html

相关文章:

  • 网络安全 简要记录
  • 【Linux】tar压缩解压缩笔记
  • Android App 实现分享功能及将应用加入分享列表 (分享功能可自定义需要分享的APP)...
  • 扩展C#与元编程
  • thinkphp session 跨域问题解决方案
  • 并行相关文章安全集合写的很好
  • Java List中数值排序
  • 蓝书《广搜的优化》整理
  • 树上染色+可怜与超市(树状DP)
  • MySQL修改最大连接数的两个方法,偏爱第一种
  • Spring Boot
  • 开放封闭原则 Open-Closed Principle(OCP)
  • 迅为iMX6Q开发板设备树内核-注册驱动例程介绍
  • spark-phoenix
  • PMP(第六版)中的控制账户、规划包、工作包
  • “大数据应用场景”之隔壁老王(连载四)
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 3.7、@ResponseBody 和 @RestController
  • Angular2开发踩坑系列-生产环境编译
  • angular2开源库收集
  • Brief introduction of how to 'Call, Apply and Bind'
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Effective Java 笔记(一)
  • JAVA SE 6 GC调优笔记
  • magento2项目上线注意事项
  • Rancher如何对接Ceph-RBD块存储
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • SAP云平台里Global Account和Sub Account的关系
  • spring cloud gateway 源码解析(4)跨域问题处理
  • WebSocket使用
  • 初探 Vue 生命周期和钩子函数
  • 浮动相关
  • 聊聊flink的BlobWriter
  • 面试遇到的一些题
  • 让你的分享飞起来——极光推出社会化分享组件
  • 鱼骨图 - 如何绘制?
  • 在Unity中实现一个简单的消息管理器
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​你们这样子,耽误我的工作进度怎么办?
  • #Java第九次作业--输入输出流和文件操作
  • #前后端分离# 头条发布系统
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)iOS字体
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • ../depcomp: line 571: exec: g++: not found
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .Net 垃圾回收机制原理(二)
  • .NET程序员迈向卓越的必由之路