Algorithm 简单停车算法

Algorithm 简单停车算法,algorithm,game-physics,physics,parking,Algorithm,Game Physics,Physics,Parking,我正在寻找一个简单的游戏停车算法 汽车和车库的位置分别由3个数字定义(x,y,θ)。其中x和y-对象的中心和theta-对象轴和x轴之间的角度 汽车运动被简化了-这是一个点(无需计算精确的轮胎运动),它可以以固定速度向前或向后行驶,或者沿着半径R的圆圈转弯(转弯半径可以是固定的或灵活的-没关系-任何选择都可以)而且它没有惯性或加速度 车库有三堵墙,汽车不应该碰它。可以使用精确的碰撞尺寸,但为了简单起见,可以通过测量汽车和车库之间的角度以及汽车轴和车库中心之间的距离来检查碰撞。当汽车和车库足够近

我正在寻找一个简单的游戏停车算法

汽车和车库的位置分别由3个数字定义
(x,y,θ)
。其中
x
y
-对象的中心和
theta
-对象轴和x轴之间的角度

汽车运动被简化了-这是一个点(无需计算精确的轮胎运动),它可以以
固定速度向前或向后行驶,或者沿着半径
R
的圆圈转弯(转弯半径可以是固定的或灵活的-没关系-任何选择都可以)而且它没有惯性或加速度

车库有三堵墙,汽车不应该碰它。可以使用精确的碰撞尺寸,但为了简单起见,可以通过测量汽车和车库之间的角度以及汽车轴和车库中心之间的距离来检查碰撞。当汽车和车库足够近(中心之间的距离小于某个常数
足够近
)时,
(alpha,d)<(maxapha,maxDistance)

在ticks模拟的世界中,我们采用当前车辆控制-
向前或向后移动方向和
转弯角度
,并计算车辆的下一个位置

该算法应产生一系列控制命令,如
[前进,左],[前进,左],[后退,直],[前进,右]

如果它是迭代的,并且一次生成一个命令,那么就可以了,然后检查下一个勾号上的情况,并生成另一个命令根据控制命令,它可以要求模拟引擎模拟并生成新坐标使用模拟引擎尝试多个选项并选择最佳选项


同样,如果它通过一系列近似的运动来实现,也没关系,比如它尝试过一次-错过,尝试过另一次-靠近,第三次-最后停下来(但它应该或多或少合理,不要做几十次或几百次来回迭代)。

有一些问题需要解决,例如,成功停靠需要多少精度,以及“刻度”允许多少精度。你必须进行实验。但这里有一个通用方法:

在不丧失一般性的情况下,假设汽车沿直线和最小半径圆移动。(较大的圆圈将提供较短和较温和的乘坐,但留待以后。)在实践中,这将意味着交替的路线

最终目标是直接驶入车库

在此之前(“倒数第二”)的目标是进入与该路径相切的一个圆圈,尽可能靠近车库。因此,如果车库位于(0,0,0),则圆的中心位于(0,+/1r)。通常,如果车库位于(x,y,θ),则圆的中心位于(x-/+rsinθ,y+/-rcosθ)

在此之前的目标(“倒数第二个”?)是从汽车已经在的一个圆圈(硬左或硬右)到达与该圆圈和目标圆圈相切的直线上

在此之前的目标是,如果需要的话,在车库周围走动,这样汽车就可以执行前面描述的动作,而不会撞到它。解决这个问题的一种方法是以车库的每个角落为中心画一个圆圈,然后从一个圆圈转到另一个圆圈


这就足够了吗?

我认为协调将车库改造成固定位置是有益的。这种机器人是“非完整的”,因为它的运动受到限制。您描述的车辆完全匹配。你可以简单地通过处理汽车必须绕过停车场的情况,将页面上描述的算法(处理点和方向控制)转换为停车算法。我有点明白了,问题是我的电脑不够智能,需要更详细的说明:)。谢谢,这很有意义,我也在考虑使用树搜索。@AlexeyPetrushin:是的,需要有人编写一些代码。