4

我正在做一个关于 ROS 的课程项目,并且被困在相当简单的任务上。

我的机器人模型有一个激光扫描仪,我在凉亭中使用我的机器人模型生成了一个包文件

我被要求像在 SLAM 中那样生成一个占用网格图。我不允许使用 gmapping 或 hector 映射,所以我必须编写自己的代码。

现在我已经实现了我初始化地图并在rviz中可视化它。这相当简单,因为我只是设置了高度、宽度、分辨率并在 .data 中放置了所有零。

我的下一个任务应该是使用正在发布的传感器数据并生成地图。在这里我被困住了,因为我找不到一些合适的教程。然而,我发现了相同任务的一个很好的实现,但它对我来说太冗长而无法破译。它在这里

你能解释一下我在哪里可以得到帮助吗?或者你也可以帮助我回答。

如果你问,我也可以粘贴我的代码。

4

2 回答 2

1

首先,您必须区分两个任务:同时定位和映射 (SLAM),以及使用已知姿势进行映射。虽然在第一个问题中您要同时解决映射和定位,但第二个问题是“只是”将所谓的逆传感器模型绘制到地图中。对于这两种情况,Thrun的书都提供了很好的算法和理论来解决这个问题。无论如何,请查看Dirk Hähnel 的论文HEISE Bot 实施(德语),以深入了解映射。

于 2018-07-29T00:10:27.493 回答
-2

如果您解决了本地化问题剩下的比这更简单,您所要做的就是将您的 LaserScan 数据转换为 Occupancy_grid(以防您使用 map_server)ROS Answers中有一些 Python 代码可能对您有所帮助,或者您可以查看Hector_mapping 或 Gmapping 代码查看他们如何转换激光数据并适应您自己的代码。

编辑1:

刚刚找到在 C++ 中执行此操作的GitHub 存储库。

于 2018-08-03T16:27:01.703 回答