// 参数依次是:损失函数(由VINS重写了)、鲁棒核函数、左目相机到IMU外参、右目相机到IMU外参、特征点逆深度、相机与IMU的时间差 problem.AddResidualBlock(f, loss_function, para_Ex_Pose[it_per_id.feature_per_frame[0].camera_id], para_Ex_Pose[it_per_id.feature_per_frame[0].camera_id + 1],...
printf("please intput: rosrun vins vins_node [config file] \n" "for example: rosrun vins vins_node " "~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml \n"); return 1; } // 在启动程序的时候将参数文件路径作为参数 string config_file = argv[1]; printf("config_...
VINS-FUSION是在VINS-Mono的基础上,添加了GPS等可以获取全局观测信息的传感器,使得VINS-FUSION可以利用全局信息消除累计误差,进而减小闭环依赖。如果你不关心GPS等全局传感器,只关心IMU、摄像头传感器的处理,那么VINS-FUSION代码和VINS-Mono几乎一样,本博客也只介绍VINS-FUSION的前端和后端处理。 我们先看一下VINS-FUSION...
VINS_estimator是VINS_Fusion的节点,其不包含回环检测部分,该节点可以单独对相机进行位姿估计。 在阅读源码之前,可以先了解一下VINS特征追踪策略:VINS_Fusion 特征追踪策略 文件树目录 guoben@guoben-WRT-WX9:~/Project/VIO/Source/VINS_VR/vins_estimator$tree. ├── cmake │ └── FindEigen.cmake ├──...
MEI模型是一个常见的鱼眼相机模型,下面试图解析VinsFusion使用的camera_models中的MEI模型.源码链接:CataCamera (本文公式较多,建议在电脑端打开!!!) (本文公式较多,建议在电脑端打开!!!) (本文公式较多,建议在电脑端打开!!!) MEI模型 对于此模型来说,核心就是在轴添加了一个偏移,这样可以使得水平摄入的光线也...
VINS 根据次新帧是否为关键帧,分为两种边缘化策略:通过对比次新帧和次次新帧的视差量,来决定 marg 掉次新帧或者最老帧。 (1)MARGIN_OLD:如果次新帧是关键帧,则丢弃滑动窗口内最老的图像帧,同时对与该图像帧关联的约束项进行边缘化处理。这里需注意,如果该关键帧是观察到某个地图点的第一帧,则需要把该地图...
总结:VINS-FUSION双目+IMU初始化都作了那些事情呢?为什么需要作这些事情? step1:首先我们使用三角化 + EPnP 不断计算出了滑窗每一帧的位姿(是视觉计算的,没有用IMU); step2:然后我们利用视觉部分求出了位姿来求解出了初始的陀螺仪零偏; step3:最终送入ceres优化; ...
VINS-Fusion(一):特征点的提取和跟踪 github.com/ShuyueLin/VI 一、相关原理解析 1、角点 将会介绍FAST角点,Harris角点以及Shi-Tomasi角点的相应原理(毕竟这是笔记,不仅仅会记录VINS涉及的,还会记录常见的知识点)。需要注意得是:在VINS中提取得是Shi-Tomasi角点。 关于角点的几种描述: a、某局部区域像素一阶导数...
Estimator::slideWindow()这个函数用于滑动窗口,根据当前帧判断是移除最老帧还是次新帧; 这个函数在初始化部分以及非线性优化部分用到,直接上代码: /*将滑窗内最老的一帧边缘化*/ if (marginalization_flag ==…