racer多机探索代码解读——multi_map_manager.cpp【多图管理、子图融合】

一、概述

multi_map_manager.cpp是racer多机探索中特有的关于多图管理和子图融合的模块。若集群共含有3台无人机,则每个无人机维护4张子图【3张无人机子图、最后一张地面node(不发送chunk)】,每张子图包括两类信息:
1、本机多图中<某无人机>子图已经接受到chunk数据{每个chunk包含200个珊格体素,chunk是多机地图交换的基本单元}
2、本机多图中<某无人机>子图含有chunk的idx_list_信息
【chunk最小id (id对(buffer中相邻chunk的id差值大于1的前chunk的id、后chunk的id)) chunk最大id】
偶数索引起,相邻之间为已经完全接收到的chunk的id范围;奇数索引起,相邻之间为没有接受到的chunk的id范围

二、主要函数及作用

1、MultiMapManager::setMap

输入:sdf_map的this指针
作用:sdf map赋值

2、MultiMapManager::init

作用:1、launch参数读取;
     2、ros定时器、pub、订阅声明;
     3、本机多图、子图包围框初始化、chunk缓存数据及接受时刻初始化

3、MultiMapManager::updateMapChunk

输入:当前无人机的当前帧点云中的新发现的体素【可能free也可能占据】的一维数组地址
作用:
1、将本机当前帧点云中新发现体素存入chunk珊格缓存,并按照200个珊格地址为一组进行chunk拆解【一维地址集合、本机map所处chunk id、标志位等】并压入本机chunks集合
2、若此次为首次压入chunk,将本机map的idx_list_变为【1,本机map含有chunk的个数】;
3、adr_buffer_中已经插入到本机map中的新体素chunk删除

4、MultiMapManager::stampTimerCallback

定时器函数0.1s执行一次:1、本体无人机向其与无人机的进行chunk stamp的发布:本机id、发布时刻、本无人机保存的多图chunks{
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值