我正在使用ROS和C ++开发机器人仿真。
我已经创建了一张地图,该地图是这样一个封闭房间中的空缺职位列表:
0.1,0;0.2,0;0.3,0;...
它们是{x,y)个位置,以;
分隔。该列表中的所有位置都是地图上的空闲位置。如果某个位置有障碍物,则该位置将不在列表中。
如何使用该列表作为A *搜索算法的地图?
我曾经考虑过将列表转换为2D矩阵,但是我不知道该在矩阵单元格中放置什么内容。
答案 0 :(得分:0)
的确,听起来您可以通过解析文本文件将列表简单地转换为2D矩阵(将x设置为逗号前的字符序列,跳过逗号,将y设置为分号前的字符序列,跳过分号,转换x / y转换为数字,并相应地使用x / y作为索引等更新矩阵)。
对于矩阵本身,仅考虑房间的鸟瞰图,其中单元格中的“ 0”表示自由空间,而“ 1”表示障碍物(反之亦然;值是任意的,只要您始终使用它们即可)。对于A *算法,任何单元格基本上都与4个相邻单元格“相邻”(或您使用的任何移动方案)。
答案 1 :(得分:0)
您将不得不将数据转换为图形(如在节点和边中,而不是在功能图中)。为此,您不仅需要转换为节点(又称为顶点)的位置,还需要转换为边的位置。当您可以从一个节点直接移动到另一个节点时,两个节点之间存在一条边缘。换句话说,它们之间没有节点,也没有阻碍运动的障碍。减少该部分后,就可以轻松在结果图上运行A *算法。
步骤:
注意: