避免在追求转向行为中绕轨道行驶


9

我有一枚确实具有追捕行为的导弹,可以追踪(并试图影响)其(静止)目标。

它工作正常,只要你不扫射,当你发射导弹。如果您在进行攻击,导弹会趋向其目标飞行。

在此处输入图片说明

我先通过切向加速到目标,杀死速度的切向分量,然后对目标进行弯腰来解决此问题。

在此处输入图片说明

因此,我在-vT中加速直到vT接近0。然后在vN方向上加速。

在此可行的同时,我正在寻找一种更优雅的解决方案,使导弹能够在首先杀死切向分量的情况下撞击目标。


我认为如果不解释您的转向算法,您将无法获得满意的答案。我很确定问题出在您的启发式方法上。
sam hocevar

1
实际上,就是我使用的答案
bobobobo 2012年

Answers:


5

看来问题在于,导弹只是将自身指向目标,而不考虑其当前速度。为您的导弹分配最大角度,以使推力可以偏离运动线。

在每次制导迭代时,您都将计算其垂直于目标的速度。弄清楚必须将其引擎倾翻多少,以便将速度的这一分量清零,然后将其裁剪到可以使引擎倾翻的最大值。

在飞行的第一部分中,它会稍微向图2中直线的右边移动,但是随着飞行,引擎会将这个分量归零,最终将直线驶向目标。

请注意,在这种情况下,将只有一帧,其中引擎的偏差不为零或最大值。如果您跟踪的是移动的目标,则随着目标的移动,每个周期的偏转都较小。


4

这可能不是您所追求的优雅解决方案,但是我发现,如果我放慢导弹的速度,如果它会错过,它会在接近目标时有效地跟踪和转向,并且可以击中目标。您可以在导弹靠近时增加其转弯速率,而不是降低速度,但这可能会给玩家“哇,我敢肯定这会错过”令人讨厌的惊喜。

这看起来可能不太好,但是它肯定会阻止导弹进入轨道,并阻止敌人从导弹上空盘旋直到燃料耗尽。

这是我完成的演示示例(第三枚或第四枚导弹在1:05演示了这一点):http : //www.youtube.com/watch?v= 9uiGMC_nH2w

当导弹也接近目标时,您还可以提高导弹的准确性(因为它有更近的信号要锁定)。视频也显示了大约一分钟。红色圆圈表示导弹的实际目标。在远距离飞行时,这会使其产生混乱的飞行路径,然后拉近距离。

就像我说的那样,它可能不是您要找的答案,但我希望它能有所帮助。


很酷 我要最大加速度,但是让导弹减速是一个绝妙的窍门(如果您称它们为“特技导弹”,可以使用吗?)
bobobobo 2012年

4

直觉

这是一种方法:让我们旋转图表。

原始问题插图的旋转

现在火箭是炮弹了

物理

它具有固定的“向下”加速度,即垂直于从其发射位置到目标的矢量。我在上面画了一条绿色虚线。我们称其为“ 参考地平线”。(请注意,此参考水平是恒定的!火箭是从固定位置发射的,以固定位置为目标。)

我们(从维基百科)知道对于没有空气阻力的炮弹d = v^2 * sin(2 * theta) / g

  • d 是行进的水平距离(射击位置与目标之间的距离)
  • v 是射弹发射的速度
  • theta是相对于射弹射击的地平线的角度(射击方向矢量相对于参考地平线的角度

重新整理的方程g给出g = v^2 * sin(2 * theta) / d

炮弹方程中的常数g重力引起的加速度。我们可以用它来表示由于火箭推进而产生的加速度。这也很好– 在恒定的方向上仍然是恒定的加速度

怎么办?

g在发射火箭时运行该方程式。它会告诉您将火箭垂直朝参考地平线加速多少,以击中目标。由于该加速度的方向是恒定的,因此不会形成轨道。

繁荣。


这是一种整洁的方法。我认为这将导致火箭跟踪一个圆,您正在提供使一个圆运行的正向力,而该圆恰巧会影响目标。我相信这可能是用于该方法在马里奥赛车红壳的,因为我一直以为他们往往弧圆
bobobobo

这里施加的力不是向心的。力的方向垂直于参考水平线,如果目标是固定的,则不变。这意味着不会发生绕行行为。
安科2012年

我已经编辑了答案以使答案更清楚。
安科2012年

@Anko:我不确定您的数学方法是否适用于移动目标,因为这似乎是OP案的触发因素。
Mooing Duck

@Mooing是的,这仅适用于移动目标可预测地移动并且您将预测作为目标的情况。问题在第一句话中确实提到目标是固定的。
Anko 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.