高斯迭代优化过程中会用到IMU测量残差对状态量的雅克比矩阵,但此处我们是对误差状态量求偏导,下面对四部分误差状态量求取雅克比矩阵。 雅克比矩阵计算的对应代码在class IMUFactor : public ceres::SizedCostFunction<15, 7, 9, 7, 9>中的Evaluate()函数中。 3.2 视觉(td) 测量残差 视觉测量残差 即特征点的重...
Monocularvisual-inertial odometrywith relocalization achieved via nonlinear graph optimization-based, tightly-coupled, sliding window, visual-inertial bundle adjustment. 代码(注释版):cggos/vins_mono_cg 1. 测量预处理 1.1 前端视觉处理 Simple feature processing pipeline 自适应直方图均衡化(cv::CLAHE) 掩模处...
Vins-mono是香港科技大学开源的一个VIO算法,用紧耦合的方法,通过单目+IMU恢复出尺度,效果非常棒。VINS的功能模块可包括五个部分:数据预处理、初始化、后端非线性优化、闭环检测及闭环优化。代码中主要开启了四个线程,分别是:前端图像跟踪、后端非线性优化(其中初始化和IMU预积分在这个线程中)、闭环检测、闭环优化。
last_marginalization_info的赋值出现在后面的代码里。 数据结构: last_marginalization_info 这个数据结构定义在marginalization_factor.cpp里面,比较复杂。 class MarginalizationInfo { public: ~MarginalizationInfo(); int localSize(int size) const; int globalSize(int size) const; void addResidualBlockInfo(Residual...
【SLAM】VINS-MONO解析——初始化(代码部分) 6.2 代码解析 这部分代码在estimator::processImage()最后面。初始化部分的代码虽然生命周期比较短,但是,代码量巨大!主要分成2部分,第一部分是纯视觉SfM优化滑窗内的位姿,然后在融合IMU信息,按照理论部分优化各个状态量。
VINS论文解读与代码详解目录 Vins-mono是香港科技大学开源的一个VIO算法,用紧耦合的方法,通过单目+IMU恢复出尺度,效果非常棒。VINS的功能模块可包括五个部分:数据预处理、初始化、后端非线性优化、闭环检测及闭环...)计算预积分误差的Jacobian矩阵和协方差。 2 初始化 SFM纯视觉估计滑动窗所有帧的位姿和3D路标点逆...
上面理论搞清楚了其实只是第一步,由于VINS-mono优化的变量较多,VINS-mono的边缘化操作实际上要复杂很多,VINS-mono的边缘化相关代码在estimator.cpp的Estimator类的optimization()函数中,该函数先会先进行后端非线性优化然后紧接着就是边缘化操作,下面就针对这个函数中的边缘化相关代码进行剖析。
对应代码在InitialEXRotation::CalibrationExRotation中。 // 相机与IMU之间的相对旋转 if(ESTIMATE_EXTRINSIC == 2) { ROS_INFO("calibrating extrinsic param, rotation movement is needed"); if (frame_count != 0) { // 选取两帧之间共有的Features ...
上面说的是vins-mono的回环检测,BRIEF匹配是在loop closure中的,匹配后会通过几何方法验证并去除误匹配,得到当前帧与回环帧的回环约束,最后进行pose graph优化;vins-mono的前端部分使用的是光流匹配,没有对图像做仿射变换,对大幅度旋转不理想。 2019-06-21 回复喜欢 flyaudio “这时整个滑窗的状态量的维度...
港科vins mono 系统学习 一 .git 系统框图如下 主要分为: 1、测量数据预处理:IMU预积分、Harris特征提取和跟踪 2、外参标定和初始:手眼标定法获得外参旋转量、纯视觉SFM、Visual-Inertial调整 3、里程计...Psoe-Graph优化 有不对的地方欢迎指正! 参考文献:Technical Report:VINS-Mono: A Robust and VersatileMono...