我正在实施A *,用于在走廊内寻找移动机器人。到目前为止,路径是在走廊内产生的,但它沿着障碍物的所有边缘向右滑动,但我更喜欢路径应该位于走廊的中间。 这有什么平滑的算法吗? 2.如何包含转向约束以便我可以获得现实/可行的路径? 3.如何惩罚'转向'以避免锯齿形路径。
由于我是A * algo的新手,我在上述问题中发现了困难。参考任何链接,书也欢迎.. 感谢..
答案 0 :(得分:0)
您可以简单地将可用区域限制在走廊的中间位置。
答案 1 :(得分:0)
您可以预先形成运行A *的字段,方法是将其缩小1个图块,以便在4向邻域中与无法通行的单元格相邻的单元格将无法通过。然后你的合成A *路径将更接近走廊的中心。当然,一些走廊可能完全无法通行,但这是我们所期望的,因为我们实际上模拟了一个3x3十字形机器人在网格中走动,而3x3交叉不能通过2xN路径。
关于向转弯添加成本 - 您必须将当前方向添加到包含A *数据的数组,并实现一个双参数函数,该函数将返回(旧方向,新方向)参数对的非负值。比如说,“如果old_direction不等于新方向,则返回1,否则返回0”。然后将该函数的结果添加到为A *迭代的每个步骤计算的任何成本中。