VINS-Mono+Fusion源码解析系列(一):视觉前端流程

本文是VINS-Mono+Fusion源码解析系列的第一篇,主要关注视觉前端流程。介绍了VINS-Mono数据流思维导图,以及视觉前端如何为后端提供特征点信息,包括像素坐标、去畸变坐标、特征点ID和速度。此外,概述了主函数`feature_tracker_node.cpp`的功能,涉及配置文件读取、相机内参读取和ROS节点的订阅与发布。
摘要由CSDN通过智能技术生成

前言:本系列文章以VINS-Mono+Fusion源码流程为导向,对源码进行了详细的逐行注释,并结合原理首推IMU预积分,对滑动窗口、边缘化等进行了详细阐述,旨在细致入微地对VINS-Mono+Fusion做一个全面整体的了解。

1. VINS-Mono数据流思维导图

 下图为VINS-Mono思维导图,梳理了其中的数据流,对里面的函数和功能做了通俗的解释,可以对VINS-Mono的整体流程有一个清晰的了解,后面就以该数据流为导向,对其中的重点部分代码和原理进行详细解释。
在这里插入图片描述

2. 视觉前端流程

(1)节点流程图
节点流程图
(2)视觉前端的作用

​ 视觉前端为后端提供图片的特征点信息,这里的特征点信息包括:第一,由特征点提取算法获取的像素坐标;第二,由特征点去畸变算法获取的去畸变后归一化坐标;第三,通过光流追踪算法获取不同帧上特征点的id;第四,获取特征点速度,用来进行相机和IMU的时间矫正。

3. 视觉前端实现代码

3.1 主函数(feature_tracker_node.cpp)

(1)主函数大致内容

  • 初始化ros节点
  • readParameters读取配置文件
  • readIntrinsicParameter读取相机内参
  • 订阅topic,触发img_callback回调函数
  • 注册publisher
    • 发布/feature_tracker/feature,用于后端优化
    • 发布/feature_tracker/feature_img,用于rviz可视化
    • 发布/feature_tracker/restart,用于重启

(2)主函数代码实现

int main(int argc, char **argv)
{
    ros::init(argc, argv, "feature_tracker");   // ros节点初始化
    // 声明一个句柄,消息的收发、通过参数服务器获取参数等都是通过句柄来实现的
    // ~代表这个节点的命名空间,后续句柄n操作的节点是在feature_tracker下实现的
    ros::NodeHandle n("~"); 
    // 设置ros log级别
    ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME, ros::cons
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值