The primary goals for this project are to:
-
Develop a simplified missile intercept model and simulate the model in Google Earth
-
Investigate methods for predicting a missile's trajectory under various levels of uncertainty about the missile's launchpoint, intended target, current position, velocity, etc.
The environment.yml file contains all of the packages needed to run the code in this repository:
- Open an Anaconda Prompt
- Create a new virtual environment:
conda env create -f environment.yml
- Activate the virtual environment:
conda activate missile_env
All configuration parameters are set via the Config file.
Parameter descriptions, formats, and datatypes are specified in the Config file.
Additional missile simulations can be created by adding new columns to the right of the existing simulations.
To run the missile intercept model:
- Set the Config file parameters
- Open Anaconda prompt and activate the
missile_env
virtual environment - Run
python main.py
- View the resulting KML files (in the
kml
folder) in Google Earth
- User specifies the latitude and longitude of the missile launchpoint (LP) and aimpoint (AP) and the missile's constant horizontal velocity (km/s), which are used to calculate the great-circle distance to the target (km) and total time-to-target (sec)
- The apogee of the ballistic trajectory is reached when the missile is halfway to the target (i.e., 0.5 * total time-to-target)
- The time-to-apogee (sec) is multiplied by the absolute value of the gravitational acceleration (km/s^2) to determine the missile's initial vertical velocity (km/s)
- Integrating the vertical velocity equation, the missile's altitude (km) at timestep t (sec) is calculated as
alt_km(t) = initial_vertical_velocity * t + 0.5 * gravitational_acceleration * t^2
- [IN PROGRESS]
The plan is to add complexity to the model over time. Currently, the model does not take into account any of the following:
- Aerodynamic drag
- Propulsive thrust
- Changes in missile mass (e.g., after burning fuel)
- Rotation of the Earth
The 3D missile objects displayed in Google Earth are specified as COLLADA (.dae) files. The easiest way to create your own COLLADA file is through Blender.
The missile object created in Blender should be oriented such that the nose cone is parallel to and points in the direction of the positive z-axis (in a right-handed coordinate system), with the base of the missile sitting on the plane created by the x and y-axes (in other words, the missile should appear as though it were standing upright and centered on the launch pad).
Example orientation:
-
Trajectory Equations
-
Geodetic Equations
- Chris Veness, Movable-Type Scripts (Spherical Trigonometry and Vector-Based Methods)
-
Creating 3D Models in COLLADA Format