cartographer_ros的submap获取与保存

本文详细介绍了cartographer_ros中的occupancy_grid_node_main如何处理子图,包括子图的介绍、地图格式、保存和加载过程。在保存子图时,通过服务接口完成,而在加载时则需要正确处理子图的坐标变换以确保加载正确。
摘要由CSDN通过智能技术生成

cartographer:occupancy_grid_node_main

本文分析cartographer 使用二维激光传感器的SLAM, google cartographer的地图生成在occupancy_grid_node_main中实现。先放上生成的地图,走廊约为90m*60m 。左边的range_data_inserter中的insert_free_space = true,右边false。表示是否更新raytracy中的free栅格的概率。

系统简介
1. 系统采用local和global的方法来优化位姿 ξ=(ξx,ξy,ξz) ; 在local的方法中,每一帧与submap匹配;使用的是非线性优化将激光和地图对齐。因为在扫描匹配的过程中会累计误差,因此需要全局的方法来回环消除误差。
2. 在local的匹配中,采用的是类似hector_slam的线性插值的方式,不过为了解决双线性插值的不连续性,采用了双三线性插值; 在global的方法中借鉴了olson的相关性扫描匹配方式,通过全局位姿优化来解决误差累计。
3. 在子图构建完成(已经加入足够的激光数据帧), 会用来做loop closure,当激光现在的位姿估计和之前的子图足够近的时候(再次访问一个地图),在搜索窗口内,完成类似与olson的相关性扫描匹配,如果匹配结构很好就增加loop closing constraint

子图介绍

首先分析的是输出的地图,由次来分析采用的算法结构。这个ROS节点的任务是接受cartographer_node节点运行计算得到的子图序列和子图内容,拼接成一个大的地图的工作。如下图所示:上面的栅格地图是cartographer得到的整体的地图,下面的两张是其中两个子图对应的栅格地图。

occupancy_grid_node_main中维护的全局地图数据:

  std::map<SubmapId, SubmapSlice> submap_slices_ GUARDED_BY(mutex_);
<
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值