当满足最大迭代值或精度要求时,跳出迭代。关于相关代码及注释可以参考原文:OpenCV去畸变undistortPoints原理解析 2.3 VINS-MONO中的图像去畸变 与传统使用优化来求解优化问题来求解畸变不同,VINS中的去畸变并未对坐标进行强制逆向迭代数值求解(看到一些文章中说,opencv会在计算畸变过程中追求一些没必要的精度),而是使用了...
VINS-Mono 中为了处理一些悬停的case,引入了一个 two-way marginalization: MARGIN_OLD:如果次新帧是关键帧,则丢弃滑动窗口内最老的图像帧,同时对与该图像帧关联的约束项进行边缘化处理。这里需要注意的是,如果该关键帧是观察到某个地图点的第一帧,则需要把该地图点的深度转移到后面的图像帧中去。 MARGIN_NEW:...
代码解读 VINSMono中相机模型对应代码在/VINS-Mono/cameramodel/src/camera_models/CataCamera.cc文件**liftSphere**()函数中,该函数是将$2d$ 投影到$3d$ 点(单位球面上),首先对$2d$去畸变,然后再投影到单位球面上。 去畸变过程代码如下: //去畸变过程 int n = 6; Eigen::Vector2d d_u; distortion(Eige...
这里应该还有个很重要的步骤, 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是视觉与IMU的融合中的经典之作,其定位精度可以媲美OKVIS,而且具有比OKVIS更加完善和鲁棒的初始化以及闭环检测过程。同时VINS-Mono也为该邻域树立了一个信标吧,视觉SLAM的研究和应用会更新偏向于 单目+IMU。因为在机器人的导航中,尤其是无人机的自主导航中,单目不具有RGBD相机(易受光照影响、获取的...
vins-mono代码分析 vins-mono的关键帧选择策略 1 与前⼀帧的平均视差。如果跟踪特征的平均视差超过某个阈值,我们会将此图像视为关键帧。2 另⼀个是跟踪质量。如果跟踪特征的数量低于⼀个阈值,我们把这⼀帧看做⼀个新的关键帧。具体在bool FeatureManager::addFeatureCheckParallax()中实现。bool ...
//jacobian:雅可比矩阵,初始化为单位矩阵,15 x 15//covariance:协方差矩阵,初始化为零矩阵,15 x 15//delta_p:对应于预积分量α,初始化为0向量,3 x 1//delta_q:对应于预积分量γ,初始化为单位四元数, ,3 x 1//delta_v:对应于预积分量β,初始化为零向量,3 x 1 ...
VINS_Mono中相机模型对应代码在 /VINS-Mono/camera_model/src/camera_models/CataCamera.cc 文件liftSphere函数中,该函数是将2d投影到3d点(单位球面上),首先对2d畸变,然后再投影到单位球面上。 去畸变过程代码如下: //去畸变过程 intn =6; Eigen::Vector2d d_u; ...
VINS-Mono代码分析总结 参考⽂献 1 2 3 4 5 6 7 8 CamOdoCal:9 前⾔ 视觉与IMU融合的分类:松耦合和紧耦合:按照是否把图像的Feature加⼊到状态向量区分,换句话说就是松耦合是在视觉和IMU各⾃求出的位姿的基础上做的耦合。滤波法和优化法: Vins-Mono是视觉与IMU的融合中的经典之作...