我正在制作一款有导弹的导弹。此刻他们只是转向他们的目标,这会产生一个相当愚蠢的结果,所有的导弹跟随目标。

我想制造一种更具致命性的导弹,它将瞄准目标“将会”的目标。当它到达那里时,我对如何做到这一点感到困惑和困惑。

我猜我将需要在将来的某个时刻找到我的目标(无论如何都是猜测),但是我无法理解未来的目标。它需要基于导弹远离目标的距离,但目标也在移动。

我的导弹有不断的推力,而且转向能力很弱。希望是他们会快速而令人兴奋,但是像牛一样操纵(即,对于非HitchHiker的粉丝来说非常糟糕)。

无论如何,Stack Overflow看起来像是一个有趣的问题,可以帮助我解决,所以任何想法,或更好或更“有趣”的建议。所有的导弹都会被感激地收到。

接下来将是人工智能躲避他们......

有帮助吗?

解决方案

你所建议的是“命令指导”。但是有一种更简单,更好的方法。

真实导弹通常采用的方式(并非所有都是相同的)都使用称为比例导航的系统。这意味着导弹“转向”在与导弹和目标之间的视线(LOS)相同的方向上转弯,转弯速率为“比例”。到LOS率...这将满足您的要求,因为当LOS率为零时,您正处于碰撞过程中。

您可以通过比较一秒钟与下一秒钟之间的误导线和目标线之间的斜率来计算LOS率。如果斜率没有变化,那么你就处于碰撞过程中。如果它正在改变,计算变化并按比例角速率转动导弹......你可以使用任何代表导弹和目标位置的指标。

例如,如果使用比例常数2,并且LOS以2度/秒向右移动,则以4度/秒向右转动导弹。 LOS以6度/秒的速度向左移动,以12度/秒的速度向左导弹......

三维问题是相同的,除了“LOS率的变化”,(和导致的导弹转弯率)本身就是一个矢量,即它不仅有一个幅度,而且还有一个方向(我是否转向导弹)向左,向右或向上或向下或向右水平向上30度,等等......想象一下,作为导弹飞行员,你可以“设置机翼”来应用升力......

雷达制导导弹,“知道”导弹。关闭率。根据闭合调整比例常数(闭合越高,导弹试图转动的速度越快),以便导弹在高闭合情况下(当飞行时间较短时)转向更积极,而在低闭合时则不那么积极(尾巴追逐)它需要节约能源。 其他导弹(如Sidewinders),不知道闭合,使用恒定的预定比例值)。 FWIW,越南时代AIM-9侧翼使用比例常数为4。

其他提示

我之前使用过这个CodeProject文章 - 它有一些非常好的动画来解释数学。

“目标和模拟导弹的数学:从微积分到四次方程式”: http://www.codeproject.com/KB/recipes/Missile_Guidance_System.aspx

(另外,隐藏在该文章底部的评论中的是对完成的一些C ++代码的引用)来自虚幻维基的相同任务

查看 OpenSteer 。它有代码来解决这样的问题。看看'steerForSeek'或'steerForPursuit'。

您是否考虑过最近轴承随时间变化的负面反馈?

作为练习留下的详细信息。

建议是完全严重的:如果目标没有机动,这应该获得接近最佳的拦截。即使目标正在积极躲避,它也应该收敛。

需要更多细节?

在二维空间中求解以便于表示法。将 \ vec {m} 作为导弹的位置,并将 \ vec {t} 作为目标的位置。 上一次运动方向上的当前航向单位: \ vec {h} = \ bar {\ vec {m} _i - \ vec {m} _i-1}} 。设r是导弹和目标之间的规范化矢量: \ vec {r} = \ bar {\ vec {t} - \ vec {m}} 。方位是 b = \ vec {r} \ dot \ vec {h} 计算每次刻度时的方位及其变化,并改变方向以最小化该数量。

由于需要在每一步找到作用平面,因此数学在3d中是较为困难的,但过程是相同的。

你需要插入目标和导弹的轨迹作为时间的函数。然后查找对象坐标在某个可接受的误差范围内的时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top