首页 > 解决方案 > 如何计算发射角度和发射航向以在移动时射入目标?

问题描述

我正在尝试找到发射角度和发射航向,以达到轨迹末端的特定点。然而,挑战在于射手正在沿场地平移。因此,存在影响轨迹并将其弯曲到第三维的动量。同样,我需要计算与地平线和发射航向相比的发射角度以抵消动量。

标签: mathphysicsrobot

解决方案


我假设射手根据一些轨迹方程移动

x(t) = [x[0](t), x[1](t), 0]

在水平面上(这就是为什么x[3](t) = 0轨迹总是在平面上x[1], x[2])。在那个时候t_0,射手在那个点x_0 = x(t_0)并且有速度

v_0 = v(t_0) = dx/dt(t_0) = [v_0[0], v_0[1], 0]

我假设您知道w > 0子弹一次射击的速度大小,t_0并且您正在寻找一个定向单位矢量

u = [u[0], u[1], u[2]]
1 = u[0]^2 + u[1]^2 + u[2]^2

这将保证射击将击中位于点的固定(我希望)目标

x_1 = [x_1[0], x_1[1], x_1[2]]

所以子弹是t_0从某个时间点开始发射的x_0,后者随着速度移动,v_0发射子弹的幅度是w。因此,子弹相对于地面坐标系的初始速度为v_0 + w*u,其中u为未知单位向量。运动的矢量化微分方程是

dx/dt = v

dv/dt = - g * e_3

哪里e_3 = [0, 0, 1]g = 9.8。这些方程的解,从时间x_0速度开始,遵循矢量化方程描述的轨迹v_0 + w*ut_0

x(t) = x_0 + (t - t_0) * (v_0 + w*u) - g*(t - t_0)^2 * e_3

t_1所以,子弹击中目标有一个未知的时刻x_1,即

x_1 = x(t_1) which yields

x_1 =  x_0 + (t_1 - t_0) * (v_0 + w*u) - g*(t_1 - t_0)^2 * e_3

表示为

x_10 = x_1 - x_0  (known) i.e.

for (int i=0; i<3; i++){x_12[i] = x_1[i] - x_0[i]}

t_10 = t_1 - t_0  (unknown)

然后你得到

x_10 = t_10 * (v_0 + w*u) - g * (t_10)^2 * e_3

如果你重写子弹击中目标的向量化方程,你会得到以下未知变量的四次方程组t_10, u[0], u[1], u[2]

x_10[0] = t_10 * ( v_0[0] + w*u[0] )
x_10[1] = t_10 * ( v_0[1] + w*u[1] )
x_10[2] = t_10 * w * u[1]  -  (t_10)^2 * g / 2
1 = u[0]^2 + u[1]^2 + u[2]^2   

如果你用前三个方程来表达变量u[0], u[1], u[2]t_12你会得到

u[0] = x_10[0]/(w*t_10) - v[0]/w
u[1] = x_10[1]/(w*t_10) - v[1]/w
u[2] = ( x_10[2] + (t_10)^2 * g / 2 )/(w*t_10)
1 = u[0]^2 + u[1]^2 + u[2]^2   

然后您可以将 的表达式u[0], u[1], u[2]t_12入最后一个方程,在两边乘以 后,您会得到(t_10)^2变量 中的四次多项式方程t_12。求解后,您会找到一个正根,您可以将其代入前三个方程中以计算单位向量的坐标u


推荐阅读