连续空间最短路径

时间:2016-05-15 19:43:48

标签: algorithm shortest-path euclidean-distance continuous

我需要一种最短路径算法来控制现实生活中的机器人。

假设我有一个矩阵形式的环境地图,其中1是障碍物,0是自由空间。如果我使用传统的最短路径算法,例如A *那么这将给我一个曼哈顿距离最短路径。所以没有实际的最短路径。出现这个问题是因为我无法想到一种以对角线优于两条直线的方式来惩罚运动的方法。我可以制作一个启发式,使A *首先尝试两个点之间的欧几里德最短路径,但实际上并不能使欧几里德最短路径成为更好的路径。

有没有人知道获得连续空间最短路径的方法?它不一定是实际的最佳路径,而是比直线和90度角更好的路径。

我有一个想法: 从起点开始制作一个圆圈。 增加圆的半径,直到圆上的一个点靠近墙壁或目标为止。圆的边缘上的所有点都被设置为子节点,具有圆的半径的罚分。圆圈内的所有未打开的点将被关闭,因为没有理由对它们进行测试。以A *方式重复此操作,以欧几里德最短路径作为启发式,直到达到目标状态。使机器人以直线从一个点移动到下一个点。

这应该让我更接近我想要的东西。一组具有各种角度的直线。连续弯曲的线条当然会更好......

1 个答案:

答案 0 :(得分:4)

我已经实施了一个连续的空间路径规划算法并在博客上发表了here。它使用A *来获得初始估计并最终确定它(并通过使用简单的gradient descent算法来确定急转弯和机器人在目的地的方向)。

Continuous path on a discrete grid

让我们说A *的离散路径有n"航路点" (网格上的坐标)。只要路径不经过阻塞的网格单元,就可以移动第一个和最后一个,但其他人可以移动。要最小化的函数由n - 2参数参数化,这些参数将航点垂直于其当前方向移动。

Shortest path (blue) and more optimal path (red)