但在此迭代过程中,畸变点逐渐向A_{distorted}靠近,其畸变量的大小与方向也会逐渐靠近A_{undistort}。 三.VINS的代码学习 VINS-MONO去畸变的整体代码如下: void PinholeCamera::liftProjective(const Eigen::Vector2d& p, Eigen::Vector3d& P) const { double mx_d, my_d,mx2_d, mxy_d, my2_d, mx_u,...
VINSMono中相机模型对应代码在/VINS-Mono/cameramodel/src/camera_models/CataCamera.cc文件**liftSphere**()函数中,该函数是将$2d$ 投影到$3d$ 点(单位球面上),首先对$2d$去畸变,然后再投影到单位球面上。 去畸变过程代码如下: //去畸变过程 int n = 6; Eigen::Vector2d d_u; distortion(Eigen::Vector...
视觉测量残差 即 特征点的重投影误差,视觉残差和雅克比矩阵计算的对应代码在 ProjectionFactor::Evaluate 函数中。 (1)切平面重投影误差(Spherical camera model) // 将第i frame下的3D点转到第j frame坐标系下 Eigen::Vector3d pts_camera_i = pts_i / inv_dep_i; // pt in ith camera frame, 归一化平...
简介 VINS-Mono是香港科技大学开源的一个VIO,我简单的测试了,发现效果不错。做个简单的笔记,详细的内容等我毕设搞完再弄。 代码主要分为前端(feature tracker),后端(sliding window, loop closure),还加了初始化(visual-imu aligment) Feature tracker 这部分代码在feature_tracker包下面,主要是接收图像topic,使用K...
本文是对VINS-Mono工程代码分析的第一讲:光流跟踪前端。本讲将分析VINS工程前端光流跟踪部分的代码,说明其工作逻辑。笔者对原工程进行了部分的修改,进行了若干封装与重命名以提高代码可读性,功能与原工程是一致的。 代码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono ...
代码主要分为: 前端(feature tracker), 后端(sliding window, loop closure), 还加了初始化(visual-imu aligment) Feature tracker 特征跟踪 这部分代码在feature_tracker包下面,主要是接收图像topic, 使用KLT光流算法跟踪特征点,同时保持每一帧图像有最少的(100-300)个特征点。 根据配置文件中的freq,确定每隔多久...
mkdir-p ~/vins_mono_ws/src# 创建了第二层级的文件夹src,这是放ROS软件包的地方cd~/vins_mono_ws/src# 进入工作空间,catkin_make必须在工作空间这个路径上执行catkin_init_workspace# 初始化src目录,生成的CMakeLists.txt为功能包编译配置 安装VINS-Mono# ...
代码解读 VINS_Mono中相机模型对应代码在 /VINS-Mono/camera_model/src/camera_models/CataCamera.cc 文件liftSphere函数中,该函数是将2d投影到3d点(单位球面上),首先对2d畸变,然后再投影到单位球面上。 去畸变过程代码如下: //去畸变过程 intn =6;
VINS-Mono代码分析总结 参考⽂献 1 2 3 4 5 6 7 8 CamOdoCal:9 前⾔ 视觉与IMU融合的分类:松耦合和紧耦合:按照是否把图像的Feature加⼊到状态向量区分,换句话说就是松耦合是在视觉和IMU各⾃求出的位姿的基础上做的耦合。滤波法和优化法: Vins-Mono是视觉与IMU的融合中的经典之作...
vins-mono代码分析 vins-mono的关键帧选择策略 1 与前⼀帧的平均视差。如果跟踪特征的平均视差超过某个阈值,我们会将此图像视为关键帧。2 另⼀个是跟踪质量。如果跟踪特征的数量低于⼀个阈值,我们把这⼀帧看做⼀个新的关键帧。具体在bool FeatureManager::addFeatureCheckParallax()中实现。bool ...