由于程序里有非常多的实现细节,建议读者在读本文前,先读一遍vins-mono的程序。 1.特征点跟踪 首先用cv::goodFeaturesToTrack在第一帧图像上面找最强的150个特征点,非极大值抑制半径为30。新的特征点都有自己的新的对应的id。然后在下一帧过来时,对这些特征点用光流法进行跟踪,在下一帧上找匹配点。然后对前后帧...
classFeaturePerId{public:constintfeature_id;intstart_frame;vector<FeaturePerFrame>feature_per_frame;//管理对应帧的属性intused_num;//出现的次数boolis_outlier;boolis_margin;doubleestimated_depth;//逆深度intsolve_flag;// 0 haven't solve yet; 1 solve succ; 2 solve fail;Vector3dgt_p;FeaturePer...
Vins-mono是香港科技大学开源的一个VIO算法 是用紧耦合方法实现的,通过单目+IMU恢复出尺度,效果非常棒。 1.特征点跟踪 首先用cv::goodFeaturesToTrack在第一帧图像上面找最强的150个特征点,非极大值抑制半径为30。新的特征点都有自己的新的对应的id。然后在下一帧过来时,对这些特征点用光流法进行跟踪,在下一帧上...
我们选择性地从滑动窗口中边缘化IMU状态\mathbf{x}_k和特征\lambda_l,同时将对应于被边缘化状态的测量转化为先验。 如图7所示,当第二个最新的图像帧为关键帧时,它将保留在滑动窗口中,而最旧的帧与它对应的测量被边缘化。否则,如果第二个最新的帧为非关键帧时,我们丢弃视觉测量,并且保留连接该非关键帧的IMU...
第一类特征点有比较精确的深度信息,它在世界坐标系下的3维坐标是已知的,在old keyframe中找到它们的匹配点就可以用solvePnP的方法获得当前keyframe和old keyframe的相对位姿。如果两个关键帧之间的yaw和T小于某个阈值才认为是一个真正的闭环。 需要注意的是FAST点和第一类点是通过不同方式检测出来的点,它们往往是不...
【基于改进Vins-Mono的INS/视觉组合定位方法研究】针对现有Vins-Mono算法在惯性导航系统(Inertial Navigation System, INS)与视觉组合定位中存在图像特征点提取分布不均匀、特征点匹配准确率低和系统定位精度不高的问题,提出一种改进的Vins-Mono算法。首先,采用四叉树算法划分图像特征点疏密不同的区域,在各个区域内同时进...
VINS-Mono的原理可以分为视觉前端、状态估计和优化三个主要部分。 首先,视觉前端负责从单目相机的图像中提取特征点并跟踪它们,同时估计相机的运动。这一步通常使用特征点提取和匹配的算法,如ORB特征点算法,来获取相机的运动信息。 其次,状态估计阶段使用IMU提供的加速度计和陀螺仪数据,结合视觉前端得到的相机位姿信息,...
VINS-mono 论文解读(IMU预积分+Marg边缘化) 前面,我们已经对接下来的VIO系列主要内容有所介绍(感兴趣的可以关注:视觉与惯性传感器如何融合?),本文是VIO系列的第一节内容:VINS-mono论文解读(IMU预积分+Marg边缘化)。 论文《VINS-Mono: A Robust and Versatile ...
relativePose方法中首先通过FeatureManeger获取(滑动窗口中)第i帧和最后一帧的特征匹配corres,当corres匹配足够大时,考察最新的keyFrame和sliding window中某个keyFrame之间有足够feature匹配和足够大的视差(id为l=i),满足这两个条件,然后这两帧之间通过五点法恢复出R,t并且三角化出3D的特征点feature point,这里是使用...