【深蓝学院】手写VIO第9章--课程总结--笔记

news2024/12/23 9:53:17

0. 内容

在这里插入图片描述

1. 课程回顾

在这里插入图片描述
最大后验概率MAP,如果不知道先验则是MLE,如果观测服从高斯分布(关于为什么服从高斯分布有个pdf)则可转化为LSP。

在这里插入图片描述

残差构建主要讲了IMU残差的构建,包括预积分模型,误差模型(详见第3章笔记),预积分的误差推导有:一阶泰勒展开(优化常用)和误差的一阶导数(Filter常用)两种方法。

构建出残差,计算出了协方差矩阵,就可以进行信息融合了(如果融合其他类型的传感器也是如此:gps,chassis,uwb等,观测和预测构建残差,计算出测量的协防差矩阵作为权重,加到残差项中对整个系统进行优化,就实现了对一个sensor information fusion)

在这里插入图片描述

  1. Dogleg算法相对于LM算法求解更快,迭代次数更少,原因是它迭代失败次数更少,不会出现LM中cost function上升而拒绝本次迭代的case。

  2. Shur Complement在Sliding window中的marg过程中用到,
    鲁棒核函数用于抑制outlier,赋予inlier和outlier不同的权重。

2. VIO拓展

主要推荐一些论文,供后续进一步深入研究。

2.1 VIO综述

主要是黄国强和Muzza(木吒,uzh)组的工作。
在这里插入图片描述

  • 2019年黄国强的综述很值得一读。
  • 2018对VIO的各种方法进行了对比,但是精度对比有待商榷,比如没有拿到MSCKF的源码,可能精度没有那么高
  • EVO论文(之前Ch7作业中将预测和GT进行align评估时使用的就是这个工具,当时挖了个坑,这里可以填上)
    木吒组的工作非常扎实和细致,建议follow

2.2 Filter based VIO

在这里插入图片描述

  • 最经典的还是MSCKF(2007年的,但是没开源)
  • 2018的stereo MSCKF
  • 2014li mingyang大神(博士论文)对MSCKF的各种改进和完善(MSCKF加入可观性约束,时间,标定,IMU内参标定等)

2.3 optimization based VIO

在这里插入图片描述

  • OKVIS最早的VIO系统,支持单目,双目,开源。
  • 2016年这篇是从李代数出发对IMU与积分进行详细的推导(课程中主要是以四元数进行推导,非常详细),wangjin大佬在开始复现这篇论文时还发现了论文中的一些错误,将复现代码开源在Github上:learnVIORB
  • VINS-MONO已经进行相关推荐

2.4 VIO一致性

在这里插入图片描述

  • 2008年huang guoquan FEJ论文(Ch4第4节提及),这篇解决了在优化过程中Jacobian线性化点的不同而导致的可观性矩阵的解的零空间发生变化的问题(被marg掉的点,后面关于此点的Jacobian在求取的时候,其线性化点就不能再改变,如果改变就会导致可观性退化的问题),解决思路是固定线性化点。
  • 2011对上述工作进行了改进,改为可观性约束,后面的关于MSCKF的开源的代码中使用的都是这个约束(上面的ref 4,6)。
  • 2015年不变性的论文非常本质,不是从工程方面出发,指出系统的不确定性应该与Jacobian无关(有关于不变形代码推导的matlab的代码),网上也有关于优化的不变性的代码,可以搜
  • 2017张腾(腾神?)不变性EKF的分析,比如用在BA中,用在VIO中,2018年开始有很多实验室开始做关于不变性的相关工作,invariant-EKF,invariant-optimization等工作

2.5 利用img构建不同的残差模型

在这里插入图片描述

  • 2016(高博读博的组,TUM)主要基于DSO和LSD SLAM做的一套
  • 2018针对点线面特征的分析(如果点特征够用的话,线面特征对于性能的提升不会很大)
  • 2017年MSCKF组(不需要角点这么强的约束,有梯度变化的地方就能形成边缘(曲线))此工作(没开源)跟上海交大zhouzhangmin老师的structure SLAM里的直线的参数化方式非常接近
  • 2017 (之前的REVO中了ICCV),将点的重投影误差变成线的
  • 2018将上面的工作加入了IMU投了期刊

关于点线面等不同的特征的方法,在17-19年有很多关于这方面的工作,最主要的是如何构建残差。

2.6 VIO和其他传感器融合

在这里插入图片描述

  • 2019(huangguoqiang组的交换生),在有激光先验地图的基础上进行VIO(精度更高)
  • 2018Qintong对VINS-MONO的扩展版,能融合GPS,但木,双目等信息
  • 2017做机器人的话值得一读,VIO+chassis的系统,也增加了平面约束(机器人在平面上做匀速直线运动时为什么IMU提供的尺度信息没用了?速度的导数为0?)
  • 2019年(港中文liuyunfei组,做AGV的),应该有平面假设,叫SE(2)-XYZ约束(一种参数化方式),虽然不是VIO系统,但值得一读。

2.7 初始化相关论文在Ch7已经有所推荐

https://blog.csdn.net/qq_37746927/article/details/133782580#t9

2.8 参考文献

  1. Guoquan Huang. “Visual-inertial navigation: A concise review”. In: arXiv preprint arXiv:1906.02650 (2019).
  2. Jeffrey Delmerico and Davide Scaramuzza. “A benchmark comparison of monocular visual-inertial odometry algorithms for flying robots”. In: 2018 IEEE International Conference on Robotics and Automation (ICRA). IEEE. 2018, pp. 2502–2509.
  3. Zichao Zhang and Davide Scaramuzza. “A tutorial on quantitative trajectory evaluation for visual (-inertial) odometry”. In: 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE. 2018, pp. 7244–7251.
  4. Michael Bloesch et al. “Iterated extended Kalman filter based visual-inertial odometry using direct photometric feedback”. In: The International Journal of Robotics Research 36.10 (2017), pp. 1053–1072.
  5. Anastasios I Mourikis and Stergios I Roumeliotis. “A multi-state constraint Kalman filter for vision-aided inertial navigation”. In: Proceedings 2007 IEEE International Conference on Robotics and Automation. IEEE. 2007, pp. 3565–3572.
  6. Ke Sun et al. “Robust stereo visual inertial odometry for fast autonomous flight”. In: IEEE Robotics and Automation Letters 3.2 (2018), pp. 965–972.
  7. Mingyang Li. “Visual-inertial odometry on resource-constrained systems”. PhD thesis. UC Riverside, 2014.
  8. Stefan Leutenegger et al. “Keyframe-based visual–inertial odometry using nonlinear optimization”. In: The International Journal of Robotics Research 34.3 (2015), pp. 314–334.
  9. Christian Forster et al. “On-Manifold Preintegration for Real-Time Visual–Inertial Odometry”. In: IEEE Transactions on Robotics 33.1 (2016), pp. 1–21.
  10. Guoquan P Huang, Anastasios I Mourikis, and Stergios I Roumeliotis. “Analysis and improvement of the consistency of extended Kalman filter based SLAM”. In: 2008 IEEE International Conference on Robotics and Automation. IEEE. 2008,pp. 473–479.
  11. Guoquan P Huang, Anastasios I Mourikis, and Stergios I Roumeliotis. “An observability-constrained sliding window filter for SLAM”. In: 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems. IEEE. 2011, pp. 65–72.
  12. Axel Barrau and Silvere Bonnabel. “An EKF-SLAM algorithm with consistency properties”. In: arXiv preprint arXiv:1510.06263 (2015).
  13. Kanzhi Wu et al. “An invariant-EKF VINS algorithm for improving consistency”. In: 2017 IEEE/RSJ International
    Conference on Intelligent Robots and Systems (IROS). IEEE. 2017, pp. 1578–1585.
  14. Vladyslav Usenko et al. “Direct visual-inertial odometry with stereo cameras”. In: 2016 IEEE International Conference on Robotics and Automation (ICRA). IEEE. 2016, pp. 1885–1892.
  15. Yulin Yang and Guoquan Huang. “Observability Analysis of Aided INS with Heterogeneous Features of Points, Lines and Planes”. In: IEEE Transactions on Robotics (Aug. 2019).
  16. Hongsheng Yu and Anastasios I Mourikis. “Edge-based visual-inertial odometry”. In: 2017 IEEE/RSJ International
    Conference on Intelligent Robots and Systems (IROS). IEEE. 2017, pp. 6670–6677.
  17. Juan José Tarrio and Sol Pedre. “Realtime edge based visual inertial odometry for MAV teleoperation in indoor environments”. In: Journal of Intelligent & Robotic Systems 90.1-2 (2018), pp. 235–252.
  18. Xingxing Zuo et al. “Visual-Inertial Localization with Prior LiDAR Map Constraints”. In: IEEE Robotics and Automation Letters (RA-L) (July 2019).
  19. Tong Qin et al. “A General Optimization-based Framework for Global Pose Estimation with Multiple Sensors”. In: arXiv preprint arXiv:1901.03642 (2019).
  20. Kejian J Wu et al. “Vins on wheels”. In: 2017 IEEE International Conference on Robotics and Automation (ICRA). IEEE. 2017, pp. 5155–5162.
  21. Fan Zheng and Yun-Hui Liu. “Visual-Odometric Localization and Mapping for Ground Vehicles Using SE(2)-XYZ Constraints”. In: Proc. IEEE Int. Conf. Robot. Autom (ICRA). 2019.

至此VIO课程的整体已经结束,后面有课程大作业和一次关于近期的Square Root BA的论文的复现工作,大家继续加油,一起推动SLAM领域的发展。
在这里插入图片描述

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

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

相关文章

使用Android Jetpack Compose渲染效果打造酷炫的动画效果

如何在Android Jetpack Compose中使用渲染效果打造令人惊艳的视觉体验 学习示例:如何使用渲染效果来改变UI界面 引言 Jetpack Compose提供了各种工具和组件来构建引人入胜的UI,而在Compose中较为鲜为人知的一个宝藏是RenderEffect。 在这篇博文中&a…

freertos任务参数

实现多个任务利用同一个函数,传进不同的任务参数,打印不同的任务内容。多个人用同一个电脑干不同工作,美工用电脑干美工,程序员用电脑敲代码 #include "stm32f10x.h" // Device header #include &quo…

.NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth

前言 我相信做开发的同学应该都对接过各种各样的第三方平台的登录授权,来获取用户信息(如:微信登录、支付宝登录、QQ登录、GitHub登录等等)。今天给大家推荐一个.NET开源好用的、全面的、方便第三方登录组件集合框架:…

【ES专题】ElasticSearch功能详解与原理剖析

目录 前言要点阅读对象阅读导航前置知识笔记正文一、ES数据预处理1.1 Ingest Node:摄入节点1.2 Ingest Pipeline:摄入管道1.3 Processor:预处理器——简单加工1.4 Painless Script:脚本——复杂加工1.5 简单实用案例 二、文档/数据…

C语言——从键盘任意输人一个三位数的自然数,求该数个位、十位、百位上的数字之和

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i,ge,shi,bai;printf("输入一个三位数整数&#xff1a;\n");scanf("%d",&i);gei%10; //个位shii%100/10; //十位baii/100; //百位printf("个位:%d,十位:%d,百位:…

51基于matlab模拟退火算法矩形排样

基于matlab模拟退火算法矩形排样&#xff0c;基于最低水平线算法完成矩形板材下料优化&#xff0c;输出最优剩料率和最后的水平线&#xff0c;可替换自己的数据进行优化&#xff0c;程序已调通&#xff0c;可直接运行。 51matlab模拟退火算法矩形排样 (xiaohongshu.com)

两个栈实现队列

要用两个栈实现队列&#xff0c;就需要了解栈和队列的特性&#xff0c;栈是先进后出&#xff0c;队列是先进先出。基本思路是&#xff0c;把数据先压入栈1中&#xff0c;然后数据在栈1中输出再压入栈2&#xff0c;输出后就能实现队列的先进先出。 package Package;import java.…

实施数字工厂管理系统对印刷企业来说有什么意义

随着科技的飞速发展&#xff0c;数字化转型已成为各行各业不可避免的趋势。对于印刷企业而言&#xff0c;实施数字工厂管理系统不仅意味着技术的升级&#xff0c;更关乎企业整体的运营效率、成本控制、市场竞争力等方面的提升。本文将详细分析实施数字工厂管理系统对印刷企业的…

Redis7--基础篇2(Redis的十大数据类型及常用命令)

1. Redis的十大数据类型及常用命令 Redis是key-value键值对类型的数据库&#xff0c;我们所说的数据类型指的是value的数据类型&#xff0c;key的数据类型都是字符串。 1.1 字符串&#xff08;String&#xff09; string是redis最基本的类型&#xff0c;一个key对应一个val…

Docker 学习路线 10:容器安全

容器安全是实施和管理像Docker这样的容器技术的关键方面。它包括一组实践、工具和技术&#xff0c;旨在保护容器化应用程序及其运行的基础架构。在本节中&#xff0c;我们将讨论一些关键的容器安全考虑因素、最佳实践和建议。 容器隔离 隔离对于确保容器化环境的强大性和安全…

CSDN每日一题学习训练——Java版(对给定的两个日期之间的日期进行遍历、子集 II、填充每个节点的下一个右侧节点指针)

版本说明 当前版本号[20231107]。 版本修改说明20231107初版 目录 文章目录 版本说明目录对给定的两个日期之间的日期进行遍历题目解题思路代码思路参考代码 子集 II题目解题思路代码思路参考代码 填充每个节点的下一个右侧节点指针题目解题思路代码思路参考代码 对给定的两…

【计算机组成】实模式/保护模式下地址分段(基段地址+偏移地址)的原因

一.硬编码/静态重定向 我们先来观察下没有地址分段时代CPU是怎么和内存们打交道&#xff0c;在8086CPU以前的老大哥们&#xff0c;访问内存时通常就是实打实的“指哪打哪”&#xff0c;程序指定要放在哪个地址&#xff0c;那就老老实实地放在哪个地址&#xff0c;比如程序A要放…

如何使新手小白编码能力暴涨之Devchat-AI

在这个快速发展的时代&#xff0c;开发者的任务越来越繁重&#xff0c;要求他们快速、高效地完成开发任务。然而&#xff0c;传统的开发方式已经无法满足这个需求。在这种情况下&#xff0c;Devchat的出现给开发者带来了新的帮助。Devchat是一个研发效能分析平台&#xff0c;它…

掌握未来技术趋势:深度学习与量子计算的融合

掌握未来技术趋势&#xff1a;深度学习与量子计算的融合 摘要&#xff1a;本博客将探讨深度学习与量子计算融合的未来趋势&#xff0c;分析这两大技术领域结合带来的潜力和挑战。通过具体案例和技术细节&#xff0c;我们将一睹这两大技术在人工智能、药物研发和金融科技等领域…

【Node.js入门之—1.1Node.js 简介】

Node.js入门之—1.1Node.js 简介 文章目录 Node.js入门之—1.1Node.js 简介什么是 Node.js错误说法 Node.js 的特点跨平台三方类库自带http服务器非阻塞I/O事件驱动单线程 Node.js 的应用场合适合用Node.js的场合不适合用Node.js的场合弥补Node.js不足的解决方案 什么是 Node.j…

Oracle RAC是啥?

Oracle RAC&#xff0c;全称是Oracle Real Application Cluster&#xff0c;翻译过来为Oracle真正的应用集群&#xff0c;它是Oracle提供的一个并行集群系统&#xff0c;由 Oracle Clusterware&#xff08;集群就绪软件&#xff09; 和 Real Application Cluster&#xff08;RA…

Linux之如何使用git提交代码到gitee上

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、创建gitee仓库1、进入gitee2、注册账号3、创建仓库 二、使用Linux创建1、打开Xshell创建一…

SpringBoot工程四种创建方式

创建SpringBoot项目时选择依赖&#xff1a;Spring Web、MySQL Driver、Thymeleaf、lombok 开发控制器类&#xff1a;标记了Controller的类就是一个handler类 handler类在SpringBoot中的作用就是&#xff1a;其内部的方法可以接受请求&#xff0c;处理请求&#xff0c;返回响应…

Intel oneAPI笔记(4)--jupyter官方文档(Unified Shared Memory)学习笔记

前言 本文是对jupyterlab中oneAPI_Essentials/03_Unified_Shared_Memory文档的学习记录&#xff0c;主要包含对统一共享内存的讲解 USM概述 USM (Unified Shared Memory)是SYCL中基于指针的内存管理。对于使用malloc或new来分配数据的C和C程序员来说应该很熟悉。当将现有的C…

如何定义类

类是将数据和方法封装在一起的一种数据结构&#xff0c;其中数据表示类的属性&#xff0c;方法表示类的行为&#xff0c;所以定义类实际上就是定义类的属性与方法。用户定义一个类实际上就是定义一个新的数据类型。在使用类之前&#xff0c;必须先定义它&#xff0c;然后才可利…