我正在做一个关于ROS的课程项目,并且我很难完成任务。
我的机器人模型有一个激光扫描仪,我在凉亭中使用我的机器人模型生成了一个包文件
我被要求像在SLAM中一样生成占用网格地图。我不允许使用gmapping或hector映射,因此我必须编写自己的代码。
现在我已经实现了我初始化地图并在rviz中将其可视化。这很简单,因为我只是设置高度,宽度,分辨率并将所有零都放在.data中。
我的下一个任务应该是使用正在发布的传感器数据并生成地图。在这里我被困住了,因为我找不到一些合适的教程。但是我找到了同样任务的一个很好的实现,但它对我来说太冗长了。它是here
您能否解释一下我可以从哪里获得帮助?或者你也可以帮我解答。
如果你问,我也可以粘贴我的代码。
答案 0 :(得分:0)
首先,您必须区分两个任务:同时定位和映射(SLAM)和已知姿势映射。 在第一个问题中,您想同时解决映射和定位问题,而第二个问题是“仅”将所谓的逆传感器模型绘制到地图中。 对于这两种情况,Thrun的书都提供了解决该问题的良好算法和理论。 无论如何,请查看Dirk Hähnel's thesis或HEISE Bot implementation (in German)以获得对映射的深入了解。
答案 1 :(得分:-1)
如果您解决了本地化问题,剩下的事情比这还简单,那么您要做的就是将LaserScan数据转换为Occupancy_grid(以防您使用map_server) ROS Answers中的python中有一些代码可以帮助您,或者您可以查看Hector_mappping或Gmapping代码,以了解它们如何转换其激光数据并适应您自己的代码。
编辑1:
刚刚发现GitHub Repo可以在C ++中实现。