首页 文章

连续空间最短路径

提问于
浏览
2

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

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

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

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

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

1 回答

  • 4

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

    Continuous path on a discrete grid

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

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

相关问题