边缘化

VINS边缘化 原理与算法推导

ぃ、小莉子 提交于 2020-01-22 00:22:18
VINS边缘化是VINS中较难理解的一部分。对边缘化的原理以及VINS中的相关代码分析,不乏相关博客,但个人认为,对整个边缘化的处理逻辑讲解清楚的资料并不多。笔者用了接近2天的时间阅读网上相关资料,结合我认为最有价值的几篇博客,对边缘化的逻辑线进行了梳理,并对相关公式进行了详细推导。 VINS 根据次新帧是否为关键帧,分为两种边缘化策略 : 通过对比次新帧和次次新帧的视差量,来决定 marg 掉次新帧或者最老帧: 1) 当次新帧为关键帧时,MARGIN_OLD,将 marg 掉最老帧,及其看到的路标点和相关联 的 IMU 数据,将其转化为先验信息加到整体的目标函数中; 2) 当次新帧不是关键帧时,MARGIN_SECOND_NEW,我们将直接扔掉次新帧及它的视觉观测边,而不对次新帧进行 marg,因为我们认为当前帧和次新帧很相似,也就是说当前 帧跟路标点之间的约束和次新帧与路标点的约束很接近,直接丢弃并不会造成整个约束关系 丢失过多信息。但是值得注意的是,我们要保留次新帧的IMU数据,从而保证 IMU 预积分的连贯性。 文档:VINS边缘化的理解及公式推导.pdf(资源已上传,链接待更新) 为什么要进行边缘化 边缘化的实质和基本方法 结合边缘化进行非线性优化 参考: https://blog.csdn.net/weixin_41394379/article/details

VINS-mono详细解读

本小妞迷上赌 提交于 2020-01-20 03:58:54
VINS-mono详细解读 极品巧克力 前言 Vins-mono是香港科技大学开源的一个VIO算法, https://github.com/HKUST-Aerial-Robotics/VINS-Mono ,是用紧耦合方法实现的,通过单目+IMU恢复出尺度,效果非常棒。 感谢他们开源,我从中学到了非常多的知识。源码总共有15000多行,我在通读完程序之后,结合参考文献,把程序背后的算法理论都推导了一遍,总结成了本文,与各位分享。 本文目标读者:对vins-mono有一定了解的SLAM算法工程师。由于程序里有非常多的实现细节,建议读者在读本文前,先读一遍vins-mono的程序。 1.特征点跟踪 首先用 cv::goodFeaturesToTrack 在第一帧图像上面找最强的150个特征点,非极大值抑制半径为30。新的特征点都有自己的新的对应的id。然后在下一帧过来时,对这些特征点用光流法进行跟踪,在下一帧上找匹配点。然后对前后帧中这些匹配点进行校正。先对特征点进行畸变校正,再投影到以原点为球心,半径为1的球面上,再延伸到深度归一化平面上,获得最终校正后的位置。对于每对匹配点,基于校正后的位置,用F矩阵加ransac来筛选。然后再在匹配上的特征点之外的区域,用 cv::goodFeaturesToTrack 搜索最强的新的特征点,把特征点数量补上150个。 最后,把剩下的这些特征点