从零学习VINS-Mono/Fusion源代码(一):主函数

本文深入剖析VINS-Mono/Fusion源代码中的feature_tracker_node.cpp文件,详细解读了主函数main()的功能实现,包括节点初始化、配置文件参数读取、图像主题订阅与发布等关键步骤。

从本文开始,从头阅读VINS源代码。
本节主要阅读feature_tracker_node.cpp中的主函数main(),代码实现了feature_tracker节点初始化,配置文件yaml参数读取,topic订阅与发布。
本文只探讨针孔模型

VINS-Mono/Fusion代码学习系列:
从零学习VINS-Mono/Fusion源代码(一):主函数
从零学习VINS-Mono/Fusion源代码(二):前端图像跟踪
从零学习VINS-Mono/Fusion源代码(三):IMU预积分公式推导
从零学习VINS-Mono/Fusion源代码(四):误差卡尔曼滤波
从零学习VINS-Mono/Fusion源代码(五):VIO初始化
从零学习VINS-Mono/Fusion源代码(六):后端优化

从零学习VINS-Mono/Fusion源代码(一):主函数

1 系统节点结构

vins-mono源码:https://github.com/HKUST-Aerial-Robotics/VINS-Mono

首先,利用rqt_graph查看ros下系统整体节点图,给出了各个topic的发布和订阅关系。

在这里插入图片描述


2 主函数main()

主函数的部分主要是搭建一个ros框架,定义节点、订阅者、发布者,读取配置文件参数,通过回调函数对订阅到的图像信息进行处理。

其整体流程如下图所示:

Alt

int main(int argc, char **argv)
{
   
   
    ros::init(argc, argv, "feature_tracker");//节点名称
    ros::NodeHandle n("~");//n句柄
    ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME, ros::console::levels::Info);
    //读取配置参数
    readParameters(n);
	
	//在VINS-Mono中 NUM_OF_CAM=1,只有单目
    for (int i = 0; i < NUM_OF_CAM; i++)
        trackerData[i].readIntrinsicParameter(CAM_NAMES[i]);//读相机内参

    if(FISHEYE)
    {
   
   
        for (int i = 0; i < NUM_OF_CAM; i++)
        {
   
   
            trackerData[i].fisheye_mask = cv::imread(FISHEYE_MASK, 0);
            if(!trackerData[i].fisheye_mask.data)
            {
   
   
                ROS_INFO("load mask fail");
                ROS_BREAK();
            }
            else
                ROS_INFO("load mask success");
        }
    }

	//订阅图像,回调函数img_callback
    ros::Subscriber sub_img = n.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值