cartographer 纯定位---pure_localization

举报
Hermit_Rabbit 发表于 2022/10/21 22:16:11 2022/10/21
【摘要】 0. 简介最近群里有些老哥在问cartographer纯定位相关问题,网上已有的方法均已失效,这里作者研究了下cartographer相关的流程以及源码,给出了一种简单的解决策略。 1. 旧版cartographer_ros launch文件的修改在启动cartographer_occupancy_grid_node节点时,增加pure_localization参数。<node name=...

0. 简介

最近群里有些老哥在问cartographer纯定位相关问题,网上已有的方法均已失效,这里作者研究了下cartographer相关的流程以及源码,给出了一种简单的解决策略。

1. 旧版cartographer_ros

launch文件的修改

在启动cartographer_occupancy_grid_node节点时,增加pure_localization参数。

<node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
      type="cartographer_occupancy_grid_node" args="-resolution 0.05
                                                    -pure_localization 1" />

源文件的修改

cartographer_ros/cartographer_ros/cartographer_ros/occupancy_grid_node_main.cc文件中

  • 增加纯定位参数
DEFINE_int32(pure_localization, 0, "Pure localization !");

  • 更改初始化函数,增加参数赋值
//Node::Node(const double resolution, const double publish_period_sec)
Node::Node(const int pure_localization,const double resolution, const double publish_period_sec) 
    : resolution_(resolution),
      pure_localization_(pure_localization),//kaikai.gao

  • 禁止地图话题发布:
void Node::DrawAndPublish(const ::ros::WallTimerEvent& unused_timer_event) {
  if (submap_slices_.empty() || last_frame_id_.empty()) {
    return;
  }

  // 非常重要,逻辑不能出错,否则影响导航地图!
  if(pure_localization_ == 1) return;

  ::cartographer::common::MutexLocker locker(&mutex_);
  auto painted_slices = PaintSubmapSlices(submap_slices_, resolution_);
  std::unique_ptr<nav_msgs::OccupancyGrid> msg_ptr = CreateOccupancyGridMsg(
      painted_slices, resolution_, last_frame_id_, last_timestamp_);

  occupancy_grid_publisher_.publish(*msg_ptr);
}

…详情请参照古月居

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。