本文目标读者:对vins-mono有一定了解的SLAM算法工程师。由于程序里有非常多的实现细节,建议读者在读本文前,先读一遍vins-mono的程序。 1.特征点跟踪 首先用cv::goodFeaturesToTrack在第一帧图像上面找最强的150个特征点,非极大值抑制半径为30。新的特征点都有自己的新的对应的id。然后在下一帧过来时,对这些特征点...
1、前端流程概述 VINS-Mono的前端整个封装成了一个ROS节点其订阅的topic是: 相机或者数据集发来的图片 其发布topic是: 由pub_img发布的"feature",发布的是当前帧的特征点,特征点分装成了sensor_msgs::PointCloudPtr类型,里
提取特征点相关参数:单帧图片最大特征点数目,特征点之间最短像素距离,对极约束求解inlier门限值 图像分辨率:宽度,高度 回到main函数,读取配置文件之后,读取每个相机的内参 for(inti=0;i<NUM_OF_CAM;i++)trackerData[i].readIntrinsicParameter(CAM_NAMES[i]);// 获得每个相机的内参if(FISHEYE){for(inti=0;i...
Vins-mono是香港科技大学开源的一个VIO算法 是用紧耦合方法实现的,通过单目+IMU恢复出尺度,效果非常棒。 1.特征点跟踪 首先用cv::goodFeaturesToTrack在第一帧图像上面找最强的150个特征点,非极大值抑制半径为30。新的特征点都有自己的新的对应的id。然后在下一帧过来时,对这些特征点用光流法进行跟踪,在下一帧上...
VINS-Mono的原理可以分为视觉前端、状态估计和优化三个主要部分。 首先,视觉前端负责从单目相机的图像中提取特征点并跟踪它们,同时估计相机的运动。这一步通常使用特征点提取和匹配的算法,如ORB特征点算法,来获取相机的运动信息。 其次,状态估计阶段使用IMU提供的加速度计和陀螺仪数据,结合视觉前端得到的相机位姿信息,...
SLAM的前端、后端系统本身没有特别明确的划分,但是在实际研究中根据处理的先后顺序一般认为特征点提取和跟踪为前端部分,然后利用前端获取的数据进行优化、回环检测等操作,从而将优化、回环检测等作为后端。 而在VINSMONO中将视觉跟踪模块(featuretrackers)为其前端。在视觉跟踪模块中,首先,对于每一幅新图像,KLT稀疏光流算法...
SLAM的前端、后端系统本身没有特别明确的划分,但是在实际研究中根据处理的先后顺序一般认为特征点提取和跟踪为前端部分,然后利用前端获取的数据进行优化、回环检测等操作,从而将优化、回环检测等作为后端。 而在VINSMONO中将视觉跟踪模块(featuretrackers)为其前端。在视觉跟踪模块中,首先,对于每一幅新图像,KLT稀疏光流算法...
FeatureTracker的主要作用是跟踪特征并三角化恢复深度以后发给后端去优化。 FeatureTracker功能相关的代码不只是存放在一个文件中,它存放在VINS-Mono/feature_tracker/src文件夹下的所有文件中,这包括: feature_tracker_node.cpp:特征跟踪功能的可执行文件,也就是main函数所在的文件 ...
SLAM的前端、后端系统本身没有特别明确的划分,但是在实际研究中根据处理的先后顺序一般认为特征点提取和跟踪为前端部分,然后利用前端获取的数据进行优化、回环检测等操作,从而将优化、回环检测等作为后端。 而在VINS_MONO中将视觉跟踪模块(feature_trackers)为其前端。在视觉跟踪模块中,首先,对于每一幅新图像,KLT稀疏光流...
1)VINS Mono 精度与VIORB Mono/Stereo比,精度要高一些; 2)VI ORB 是不能完全跑过所有测试集的,特别是快速运动的 V2_03_difficult 测试集结尾阶段会跟丢;而vins mono采用的光流跟踪,不易跟丢。 3、VI ORB 与 VINS Mono 对比(关闭闭环) 由表可以看出: ...