最近在看VINS-MONO的代码,网上有很多相关的代码解读,关于畸变理论感觉说法众多,但或多或少有些错误,或解说有些绕,甚至在SLAM 14讲中,畸变坐标前后说明也不一致,故写一篇有关去畸变的文章。给后续再度观看代码降低学习成本。算力和精度是个SLAM学习者值得平衡的问题。文章安排如下: 一.去畸变相关基础原理介绍 二.一...
这一部分的代码主要在ProjectionFactor类中实现,这一部分和初始化中的BA优化有很相似的地方。VINS-Mono中支持两种相机模型,下面详细说明下代码中涉及到的推导和理解: 针孔模型 针孔模型重投影误差的定义和代码中reduce这个变量的理解与推导如下: 鱼眼模型 鱼眼模型重投影误差的定义和代码中reduce这个变量的理解与推导如下...
Vins-Mono是视觉与IMU的融合中的经典之作,其定位精度可以媲美OKVIS,而且具有比OKVIS更加完善和鲁棒的初始化以及闭环检测过程。同时VINS-Mono也为该邻域树立了一个信标吧,视觉SLAM的研究和应用会更新偏向于 单目+IMU。因为在机器人的导航中,尤其是无人机的自主导航中,单目不具有RGBD相机(易受光照影响、获取的...
这里应该还有个很重要的步骤, IMU和图像的数据同步, VINS-Mono代码中貌似没有体现, 不知道Mobile版本中是否有. 2. Initialization: vision-only SfM用纯视觉估计相机运动和特征深度, 视觉得到一个相对运动, IMU预积分得到一个相对运动, 二者做alignment, 从而标定出尺度, 重力加速地, 速度, 和bias. 3. Local BA...
VINSMono中相机模型对应代码在/VINS-Mono/cameramodel/src/camera_models/CataCamera.cc文件**liftSphere**()函数中,该函数是将$2d$ 投影到$3d$ 点(单位球面上),首先对$2d$去畸变,然后再投影到单位球面上。 去畸变过程代码如下: 代码语言:javascript ...
VINS-Mono代码分析总结 参考⽂献 1 2 3 4 5 6 7 8 CamOdoCal:9 前⾔ 视觉与IMU融合的分类:松耦合和紧耦合:按照是否把图像的Feature加⼊到状态向量区分,换句话说就是松耦合是在视觉和IMU各⾃求出的位姿的基础上做的耦合。滤波法和优化法: Vins-Mono是视觉与IMU的融合中的经典之作...
VINSMono中相机模型对应代码在/VINS-Mono/cameramodel/src/camera_models/文件**liftSphere**()函数中,该函数是将$2d$ 投影到$3d$ 点(单位球面上),首先对$2d$去畸变,然后再投影到单位球面上。 去畸变过程代码如下: //去畸变过程 int n = 6;
vins-mono代码分析 vins-mono的关键帧选择策略 1 与前⼀帧的平均视差。如果跟踪特征的平均视差超过某个阈值,我们会将此图像视为关键帧。2 另⼀个是跟踪质量。如果跟踪特征的数量低于⼀个阈值,我们把这⼀帧看做⼀个新的关键帧。具体在bool FeatureManager::addFeatureCheckParallax()中实现。bool ...
在这项工作中,介绍了VINS-Mono:一种坚固耐用且多功能的单目视觉惯性状态估计器。方法从用于估计器初始化和故障恢复的强大过程开始。使用基于紧密耦合的非线性优化方法,通过融合预先集成的IMU测量和特征观察来获得高精度的视觉惯性里程计。环路检测模块与紧密耦合配方相结合,能够以最小的计算开销实现重新定位。还执行四个...
VINS-Mono 代码详细解读4——feature_manager.cpp 文章内容:在对关键函数 processImage()以及 IMU预积分的 integrationBase类进行解读后,本文将深入解析 estimator.cpp 中的 feature_manager.cpp 文件,重点聚焦于特征点管理。主要涉及的类有 FeatureManager、FeaturePerId、FeaturePerFrame。特征点管理器的...