当满足最大迭代值或精度要求时,跳出迭代。关于相关代码及注释可以参考原文:OpenCV去畸变undistortPoints原理解析 2.3 VINS-MONO中的图像去畸变 与传统使用优化来求解优化问题来求解畸变不同,VINS中的去畸变并未对坐标进行强制逆向迭代数值求解(看到一些文章中说,opencv会在计算畸变过程中追求一些没必要的精度),而是使用了...
1.白话 最近开始学习VINS-Mono系统源码,梳理其系统框架及运行原理方便后续自己后续回顾。 2.工程搭建 VINS-Mono的代码路径:GitHub - HKUST-Aerial-Robotics/VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator VINS-Mono的概要介绍我们直接阅读github上README中指定的paper就可以进行了解,无需...
VINSMono中相机模型对应代码在/VINS-Mono/cameramodel/src/camera_models/CataCamera.cc文件**liftSphere**()函数中,该函数是将$2d$ 投影到$3d$ 点(单位球面上),首先对$2d$去畸变,然后再投影到单位球面上。 去畸变过程代码如下: //去畸变过程 int n = 6; Eigen::Vector2d d_u; distortion(Eigen::Vector...
Vins-Mono是视觉与IMU的融合中的经典之作,其定位精度可以媲美OKVIS,而且具有比OKVIS更加完善和鲁棒的初始化以及闭环检测过程。同时VINS-Mono也为该邻域树立了一个信标吧,视觉SLAM的研究和应用会更新偏向于 单目+IMU。因为在机器人的导航中,尤其是无人机的自主导航中,单目不具有RGBD相机(易受光照影响、获取的...
529944035/VINS-Mono Feature tracker 特征跟踪 这部分代码在feature_tracker包下面,主要是接收图像topic, 使用KLT光流算法跟踪特征点,同时保持每一帧图像有最少的(100-300)个特征点。 根据配置文件中的freq,确定每隔多久的时候, 把检测到的特征点打包成/feature_tracker/featuretopic 发出去,...
公式和细节代码在其他博客中都有介绍,这里只简要说明。 vins-mono中使用的是ceres::SizedCostFunction这个功能(是用ceres求残差的其中一种方法,不了解的话可以搜一搜): class IMUFactor : public ceres::SizedCostFunction<15, 7, 9, 7, 9> 自己的IMUFactor类继承ceres::SizedCostFunction这个类并重写其中的函数...
代码解读 VINS_Mono中相机模型对应代码在 /VINS-Mono/camera_model/src/camera_models/CataCamera.cc 文件liftSphere函数中,该函数是将2d投影到3d点(单位球面上),首先对2d畸变,然后再投影到单位球面上。 去畸变过程代码如下: //去畸变过程 intn =6;
VINS-Mono代码分析总结 参考⽂献 1 2 3 4 5 6 7 8 CamOdoCal:9 前⾔ 视觉与IMU融合的分类:松耦合和紧耦合:按照是否把图像的Feature加⼊到状态向量区分,换句话说就是松耦合是在视觉和IMU各⾃求出的位姿的基础上做的耦合。滤波法和优化法: Vins-Mono是视觉与IMU的融合中的经典之作...
vins-mono代码分析 vins-mono的关键帧选择策略 1 与前⼀帧的平均视差。如果跟踪特征的平均视差超过某个阈值,我们会将此图像视为关键帧。2 另⼀个是跟踪质量。如果跟踪特征的数量低于⼀个阈值,我们把这⼀帧看做⼀个新的关键帧。具体在bool FeatureManager::addFeatureCheckParallax()中实现。bool ...
而在VINS_MONO中将视觉跟踪模块(feature_trackers)为其前端。在视觉跟踪模块中,首先,对于每一幅新图像,KLT稀疏光流算法对现有特征进行跟踪。然后,检测新的角点特征以保证每个图像特征的最小数目,并设置两个相邻特征之间像素的最小间隔来执行均匀的特征分布。接着,将二维特征点去畸变,然后在通过外点剔除后投影到一个单...