AIRVO视觉里程计每天一函数代码解析

主函数流程图逻辑

流程图有助于快速梳理清楚一个系统的思路,流程图有以下优点:

  1. 图比代码更清晰
  2. 沟通协作更顺畅(这也是题主比较关注的一点)

AIRVO视觉里程计每天一函数代码解析_第1张图片

主函数注释

AirVO主函数代码如下:

int main(int argc, char **argv) {
    // 初始化ROS节点,指定节点名为 "air_vo_ros"
    ros::init(argc, argv, "air_vo_ros");

    // 设置ROS日志级别为Info
    ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME, ros::console::levels::Info);

    // 如果命令行参数数量大于1,发出警告
    if (argc > 1) {
        ROS_WARN("Arguments supplied via command line are ignored.");
    }

    // 从ROS参数服务器获取左右摄像机图像话题
    std::string left_topic, right_topic;
    ros::param::get("~left_topic", left_topic);
    ros::param::get("~right_topic", right_topic);

    // 创建ROS节点句柄
    ros::NodeHandle node_handler;

    // 创建图像消息订阅者
    message_filters::Subscriber sub_img_left(node_handler, left_topic, 1);
    message_filters::Subscriber sub_img_right(node_handler, right_topic, 1);

    // 定义图像消息同步策略
    typedef message_filters::sync_policies::ApproximateTime sync_pol;
    // 创建图像消息同步器,并注册回调函数为GrabStereo
    message_filters::Synchronizer sync(sync_pol(10), sub_img_left, sub_img_right);
    sync.registerCallback(boost::bind(&GrabStereo, _1, _2));

    // 从ROS参数服务器获取AirVO配置信息和模型路径
    std::string config_path, model_dir;
    ros::param::get("~config_path", config_path);
    ros::param::get("~model_dir", model_dir);

    // 创建Configs对象,用于存储配置信息
    Configs configs(config_path, model_dir);

    // 从ROS参数服务器获取相机配置路径、保存路径和轨迹路径
    ros::param::get("~camera_config_path", configs.camera_config_path);
   

你可能感兴趣的:(视觉里程计,C++基础,机器人,自动驾驶,人工智能)