这里应该还有个很重要的步骤, IMU和图像的数据同步, VINS-Mono代码中貌似没有体现, 不知道Mobile版本中是否有. 2. Initialization: vision-only SfM用纯视觉估计相机运动和特征深度, 视觉得到一个相对运动, IMU预积分得到一个相对运动, 二者做alignment, 从而标定出尺度, 重力加速地, 速度, 和bias. 3. Local BA...
当满足最大迭代值或精度要求时,跳出迭代。关于相关代码及注释可以参考原文:OpenCV去畸变undistortPoints原理解析 2.3 VINS-MONO中的图像去畸变 与传统使用优化来求解优化问题来求解畸变不同,VINS中的去畸变并未对坐标进行强制逆向迭代数值求解(看到一些文章中说,opencv会在计算畸变过程中追求一些没必要的精度),而是使用了...
公式和细节代码在其他博客中都有介绍,这里只简要说明。 vins-mono中使用的是ceres::SizedCostFunction这个功能(是用ceres求残差的其中一种方法,不了解的话可以搜一搜): class IMUFactor : public ceres::SizedCostFunction<15, 7, 9, 7, 9> 自己的IMUFactor类继承ceres::SizedCostFunction这个类并重写其中的函数...
上面说的是vins-mono的回环检测,BRIEF匹配是在loop closure中的,匹配后会通过几何方法验证并去除误匹配,得到当前帧与回环帧的回环约束,最后进行pose graph优化;vins-mono的前端部分使用的是光流匹配,没有对图像做仿射变换,对大幅度旋转不理想。 2019-06-21 回复喜欢 flyaudio “这时整个滑窗的状态量的维度...
代码解读 VINSMono中相机模型对应代码在/VINS-Mono/cameramodel/src/camera_models/CataCamera.cc文件**liftSphere**()函数中,该函数是将$2d$ 投影到$3d$ 点(单位球面上),首先对$2d$去畸变,然后再投影到单位球面上。 去畸变过程代码如下: 代码语言:javascript ...
VINSMono中相机模型对应代码在/VINS-Mono/cameramodel/src/camera_models/CataCamera.cc文件**liftSphere**()函数中,该函数是将$2d$ 投影到$3d$ 点(单位球面上),首先对$2d$去畸变,然后再投影到单位球面上。 去畸变过程代码如下: //去畸变过程 int n = 6; ...
VINS-MONO ProjectionFactor代码分析及公式推导 2019-12-05 17:18 − ProjectionFactor继承自Ceres的SizedCostFunction。它表示的是第i帧中单位相机平面上的点pts_i重投影到第j帧单位相机平面上的点与匹配点pts_j的投影误差。需要实现构造函数以及重载Evaluate函数。 ``` class ProjectionFactor : ... 念念无滞...
vins-mono代码分析 vins-mono的关键帧选择策略 1 与前⼀帧的平均视差。如果跟踪特征的平均视差超过某个阈值,我们会将此图像视为关键帧。2 另⼀个是跟踪质量。如果跟踪特征的数量低于⼀个阈值,我们把这⼀帧看做⼀个新的关键帧。具体在bool FeatureManager::addFeatureCheckParallax()中实现。bool ...
VINSMono中IMU预积分残差、雅克比和协方差以及processIMU函数的解读:IMU预积分残差:定义:预积分残差是指通过预积分模型计算得到的PVQ与通过优化得到的PVQ之间的差值。作用:残差用于衡量预积分结果与优化结果之间的一致性,是优化过程中的重要指标。雅克比:定义:雅克比矩阵描述了预积分残差对状态量的敏感...
VINS-Mono代码分析总结 参考⽂献 1 2 3 4 5 6 7 8 CamOdoCal:9 前⾔ 视觉与IMU融合的分类:松耦合和紧耦合:按照是否把图像的Feature加⼊到状态向量区分,换句话说就是松耦合是在视觉和IMU各⾃求出的位姿的基础上做的耦合。滤波法和优化法: Vins-Mono是视觉与IMU的融合中的经典之作...