合并两个或两个以上的入住率地图
26日视图(30天)
显示旧的评论
你好,
我试图建立一个占用一个环境使用MATLAB的导航和地图ROS工具箱和露台。我有三个TurtleBot3地面机器人在三个不同房间的露台环境和我navigationg他们激光雷达扫描数据。现在,我想建立一个单一的环境地图。
什么将是一个理想的方式将所有三个入住率地图合并到一个地图/图吗?
答案(2)
Sooraj苏尼尔
2021年10月17日
编辑:Sooraj苏尼尔
2021年10月18日
你好阿卡什&布拉姆
如果已知机器人之间的初始对准,那么合并非常简单:
- 您可以使用insertRay像雷莫建议
- 或者你可以使用个人的概率矩阵映射occupancyMatrixMatlab函数,你可以从概率log-odd空间然后简单地添加合并它们的概率。最后重建入住率地图基于新的概率(log-odd转换为概率)和已知的分辨率使用occupancyMap函数。
然而,如果不知道初对准你应该使用一个合并技术计算对齐。我不建议
multirobot_map_merge
但是如果你想要一个快速的解决方案你可以看一看它。它可以很容易地使用这在Matlab中实现
Matlab的例子
。
1评论
卡梅伦稳定
2021年10月29日
编辑:卡梅伦稳定
2021年10月29日
嗨,阿卡什,布拉姆
如果你的每个机器人都是建立在隔离和您想要使用自己的地图
地图
更新结合地图(而不是插入射线从不同的传感器),这里有一些额外的选择:
worldMap = occupancyMap (repmat (0.75, 50、60));
localMap_1 = occupancyMap(兰德(20)/ 2);
localMap_2 = occupancyMap(眼睛(20)/ 2 + .25);
origin_1 = [0 0];
origin_2 = 30 [0];
localMap_1。GridLocationInWorld = origin_1;
localMap_2。GridLocationInWorld = origin_2;
worldMap。updateOccupancy (origin_1 getOccupancy (localMap_1));
worldMap。updateOccupancy (origin_2 getOccupancy (localMap_2));
显示(worldMap);
localMap_1.GridLocationInWorld (1) = 20
localMap_2.GridLocationInWorld (1) = 20;
worldMap.syncWith (localMap_1);
worldMap.syncWith (localMap_2);
显示(worldMap);
注意,syncWith方法类似于直接获取/设置值:
localMap_1.GridLocationInWorld (1) = 40
localMap_2.GridLocationInWorld (1) = 40;
worldMap.setOccupancy (localMap_1.GridLocationInWorld getOccupancy (localMap_1));
worldMap.setOccupancy (localMap_2.GridLocationInWorld getOccupancy (localMap_2));
显示(worldMap);
但它也处理地图之间不匹配的决议和/或翻译补偿映射网格。万博 尤文图斯
希望这有助于
卡梅隆