A graduate lab in six-degree-of-freedom rigid-body flight dynamics
This repository is a teaching laboratory built around one required reading:
M. Khalil, H. Abdalla, O. Kamal, “Trajectory Prediction for a Typical Fin Stabilized Artillery Rocket”, ASAT-13-FM-04, 13th International Conference on Aerospace Sciences & Aviation Technology, Military Technical College, Cairo, 2009. (
FM04.pdf, repo root.)
The paper is short (14 pages) but dense: in one block diagram (its Fig. 1) it packs a full 6-DOF rigid-body simulation — translational and rotational dynamics, Euler kinematics, navigation, an atmosphere model, an aerodynamic-coefficient lookup, and a Monte-Carlo dispersion study. Reading it once is not enough to understand it. This lab exists so you can:
equations.md).numerical-methods.md).src/gui/app.py).uncertainty-analysis.md).This is not an operational trajectory/fire-control engineering tool, and
it is not a faithful bit-for-bit reproduction of the paper’s numbers. Several
of the paper’s tables (notably Table 1, the Datcom aerodynamic-coefficient
table) are corrupted in the source PDF’s text layer — columns of numbers ran
together during OCR/text-extraction and cannot be reliably un-scrambled. We
digitized representative coefficients that preserve the reported trend
(the transonic hump around M≈1–1.4, the supersonic falloff) and are
rescaled to numerically well-behaved, textbook-typical magnitudes. Every
place this happens is flagged in the code and in
aerodynamic-model.md. Treat all numbers here as a
fictional teaching dataset, not design data.
docs/ <- you are here: theory, math, assignments
src/simulator/ <- the physics: frames, EOM, atmosphere, aero, integrators
src/visualization/ <- reusable Plotly figure builders
src/gui/ <- the Streamlit multipage lab notebook
examples/ <- short standalone scripts (run without Streamlit)
tests/ <- pytest unit/regression tests for the simulator
assets/ <- static figures / diagrams used by the docs and GUI
mathematical-model.md — the assumptions and the big picture.coordinate-systems.md — frames and Euler angles.equations.md — every term of Eqs. (1)–(4) explained.numerical-methods.md — how we turn ODEs into numbers.atmosphere-model.md and aerodynamic-model.md — the two “black boxes” that feed forces/moments into the equations of motion.uncertainty-analysis.md — the dispersion study.assignments.md — do the exercises.instructor-guide.md — if you are teaching this material.pip install -r requirements.txt
streamlit run src/gui/app.py
Or, without the GUI, run any of the examples/*.py scripts directly.