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

发布时间:2023年12月27日

主函数流程图逻辑

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

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

主函数注释

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<sensor_msgs::Image> sub_img_left(node_handler, left_topic, 1);
    message_filters::Subscriber<sensor_msgs::Image> sub_img_right(node_handler, right_topic, 1);

    // 定义图像消息同步策略
    typedef message_filters::sync_policies::ApproximateTime<sensor_msgs::Image, sensor_msgs::Image> sync_pol;
    // 创建图像消息同步器,并注册回调函数为GrabStereo
    message_filters::Synchronizer<sync_pol> 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);
   
文章来源:https://blog.csdn.net/u013590327/article/details/135249273
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。