cartographer从入门到放弃3---cartographer_ros/node_main .cc----2

上一节最多的是mian函数,run()函数如何从配置文件中获取配置参数,这一篇继续分析run(),由于刚开始深入接触cartographer,知识比较分散,后期整体代码吃透后再更新,还请读者谅解,多提问题,共同进步。

1.map_builder

cartographer::mapping::MapBuilder;cartographer::mapping::MapBuilder这个类在/src/cartographer/cartographer/mapping/map_builder.h中定义。牵涉cartographer内部核心,在这里大致分析

 auto map_builder = absl::make_unique<cartographer::mapping::MapBuilder>( 
//auto关键字:auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。举个例子:int a = 10;auto au_a = a;//自动类型推断,au_a为int类型; cout << typeid(au_a).name() << endl;
      node_options.map_builder_options);//cartographer::common::make_unique定义在common文件夹下的make_unique.h文件中。
//构造map_buider
  auto map_builder = absl::make_unique<cartographer::mapping::MapBuilder>( //auto关键字:auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。举个例子:int a = 10;auto au_a = a;//自动类型推断,au_a为int类型; cout << typeid(au_a).name() << endl;
      node_options.map_builder_options);//cartographer::common::make_unique定义在common文件夹下的make_unique.h文件中。
  //构造node
  Node node(node_options, std::move(map_builder), &tf_buffer,//Node在/cartographer_ros/cartographer_ros/cartographer/node.h中定义;在该构造函数中订阅了很多传感器的topic。收集传感器数据
            FLAGS_collect_metrics);
 
  //从proto中加载之前离线保存的state(pbstream文件)
  if (!FLAGS_load_state_filename.empty()) {
    node.LoadState(FLAGS_load_state_filename, FLAGS_load_frozen_state);//加载数据包数据
  }
  // 以默认topics启动node,执行任务
  if (FLAGS_start_trajectory_with_default_topics) {
    node.StartTrajectoryWithDefaultTopics(trajectory_options);
  }

  /**
     * ros::spin() 将会进入循环, 一直调用回调函数chatterCallback(),
     */
  ::ros::spin();

  node.FinishAllTrajectories();//在node结束时执行的任务,任务1,finish trajectory
  //node.RunFinalOptimization();//任务2.最终优化(最后一次优化)
  
  if (!FLAGS_save_state_filename.empty()) { //任务3如果指定保存的最终状态,将PoseGraphbaoz保存下来
    node.SerializeState(FLAGS_save_state_filename,
                        true /* include_unfinished_submaps */);
  }

代码量确实过大,后续先分析核心代码流程后再对这部分详细补充

 

-----------------------------------------------------------------

参考文献

1.cartographer源码阅读2——从cartographer_node入手

2.Google Abseil 代码一览 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值