在基于图的计划中(例如A *),状态被连接到它们的邻居。如何确定是连接到4个邻居还是8个邻居?每种方法的优缺点是什么?

评论

这个问题可能有点笼统,可能取决于机器人的动态特性以及环境的内部表示形式(即,它是否甚至基于网格)。

仅当环境基于网格时,此问题才有意义。此外,假设该环境是基于网格的,则可以解释为什么它取决于机器人的动力学-因为即使我看不到它。

至少使用8个方向或平滑生成的路径。

#1 楼

我相信它只是归结为您的机器人可以做的事情。 />如果可以沿8个方向移动,则将每个网格单元连接到8个。 >
没有通用答案。如果您打算与无法执行动作的机器人对角线走,那是不正确的计划。如果您打算只水平和垂直移动而机器人可以使用快捷方式,那也是不好的计划。

#2 楼

基于图形的计划算法通常用于高级计划,例如让机器人穿越办公室。但是,机器人的实际执行器计划是完全不同的计划。这意味着它完全取决于您的应用程序和所需的复杂程度。如果您有一个网格,其中的单元格被占用或未被占用,则您可能不希望机器人对角线过渡,以免与相邻单元格发生碰撞。

从技术上讲,对于A *之类的算法使用4或8路连接根本没有关系。

#3 楼

假设(1)您将环境表示为网格(这是4邻居与8邻居问题才有意义的唯一情况),并且(2)您正在计划导航(这是最常见的用例)对于基于网格的表示形式)

我个人认为4邻域的意义不大。通过每个单元仅连接4个邻居,您将执行以下操作:强制机器人仅沿“直线”方向移动。对于8个邻居来说,这已经是一个问题,因为通常已经必须“平滑”结果或使用其他方法来解释结果路径。

#4 楼

基于图的计划是将空间(可以是连续的)简化为一组可能的分支点,每个分支点都代表可以做出的决策。在纯模拟中,这种简化通常以步长而不是距离或时间来进行。因此,将运动限制在4个基本方向上将是正确的选择,因为您希望所有距离都相等。

对于对角线模拟,它仍然可以工作-只要您进行调整您的算法,使对角台阶的成本比垂直/水平台阶的成本高2倍(这会使您朝连续空间的方向退缩,难以模拟)。但是,如果您希望在正方形之间移动的方式更多,则仅采用六角形网格可能更有意义。 (有关网格类型及其算法的更多讨论,请参见http://www-cs-students.stanford.edu/~amitp/game-programming/grids/)

示例1

您有一个汽车式机器人-前轮转向。您可能代表每种状态的3个可能分支:左转,笔直和右转。在这种情况下,六角形网格将是最有意义的。在每个空间中,只有6个邻居中的3个有效,确切的邻居将取决于您的方向。这比基本方向网格更能反映现实,因为要到达最右边(或左边)的空间,需要在一些额外的空间上掉头。

示例2

您有一个龙门机器人-X和Y致动。在这种情况下,两个电动机都可以同时激活,因此沿对角线方向的移动与垂直或水平方向上的移动“成本”相同。 8个邻居的方格是正确的。

示例3

您正在模拟一个带有一些移动物体的大房间。如果您允许对角线移动,那么您将失去使用整数作为时间分量的能力-事情最终只会在正方形之间出现。四邻方格将是正确的。

#5 楼

通常,许多基于图的算法(例如A *,MRF(马尔可夫随机场),边缘检测算法等)在4和8邻域之间存在差异。

这取决于计算复杂性,时间,性能或诸如此类的事情(它们之间的权衡/平衡)。

我将举一些示例:


在MRF算法中,您可以在每个像素(左,右,上,下)中选择4个邻域
,也可以在每个像素(左,右,上,下,右上,左上,右下,左下)
,也可以在每个像素中再次选择8个邻域,其中4个邻域分配给当前帧邻域像素,而其中4个分配给最后一帧邻域像素