如何预测弹丸运动?

时间:2018-06-17 10:38:50

标签: python math projectile

我需要进行一项项目工作,以预测在二维空中移动的移动球的轨迹。

那么处理它的可能方法是什么?如果您提供一些细节,它会有所帮助。另外,我不知道这是否是正确的问题。但是你看,只有专家可以展示出一条可以追随的道路!

我可以进行图像处理,如边缘检测和一些计算机视觉,如使用霍夫变换的车道检测,跟踪某些人体(但没有预测),人脸检测等。

我尝试使用卡尔曼过滤器来完成这个项目,但我被困了 无法找到出路。所以我想也许我应该寻找其他方法。

请建议我。感谢。

1 个答案:

答案 0 :(得分:2)

这是一个实用的计算机编程站点,所以我将讨论一种使用它的方法。由于您没有提供自己的详细信息,我也避免了细节。如果您想了解有关此方法的更多详细信息,则需要编辑您的问题以显示您自己的更多工作,最好使用一些代码。

与许多物理问题一样,这可能被认为是具有初始值的常微分方程中的问题。但是像许多问题一样,你需要列出你的假设。假设球在接近海平面的地球表面附近,在地球大气层中移动,速度远低于声速。因此,重力加速度,空气密度等可以被认为是常数。球的质量和大小可能很重要,但我们只考虑质量并将球的大小(和形状)的任何问题都包括在空气阻力中。对于给定的问题,您可以认为“空气阻力系数”也是恒定的。

您的初始值是:

  1. 球在开始时的位置。由于你写的是“二维移动”,我们可以相对于地面x(水平位置)和y(垂直位置)。它们确实需要水平和垂直,适合球的地球部分。
  2. 球的初始速度。这也有水平和垂直组件,因此我们可以使用变量vxvy
  3. 然后您有四个变更变量,xyvxvy。球上的方程来自牛顿运动定律和微积分(后者用vx等定义x。球上有两个主要力量:

    1. 重力,其大小为mg,并指向下方。
    2. 空气阻力,也称为阻力,与当前方向相反。幅度很棘手。有multiple formulas for drag。您选择的一个或多个取决于模拟的复杂程度。
    3. 同样取决于模拟的复杂程度,您可能需要考虑球的旋转,这会改变阻力,等等。但是这两个是你写的最低限度。

      然后使用ODE(常微分方程)求解器来模拟球的位置和速度。有很多,但是非常好且相当简单的是RK4, the fourth-order Runge-Kutta method。这很简单,你可以自己编程,但有很多软件包可以做到。 scipy包中的一个流行函数是scipy.integrate.odeint ,它可以执行各种方法。

      如果你不理解ODE求解器,你真的不应该做这种项目。你提到的技能似乎与这个项目无关。如果您删除了“空中”部分的要求,则可以进行更简单的模拟。