A 2D missile-target engagement simulator implementing four classical guidance laws for interceptor/missile flight path control.
| Law | Full Name | Key Property |
|---|---|---|
| PP | Pure Pursuit | Always aims at target — simple, energy-wasteful |
| PN | Proportional Navigation | Industry standard — proportional to LOS rate |
| APN | Augmented PN | PN + target acceleration feedforward |
| CLOS | Command Line-of-Sight | Keeps missile on LOS from launch point |
src/
├── kinematics.py # Point-mass Body + maneuvering Target
├── guidance.py # PP / PN / APN / CLOS guidance laws
├── simulator.py # Engagement runner (intercept detection, miss distance)
└── visualize.py # 2D trajectory + miss distance comparison plot
tests/
└── test_guidance.py
docs/
└── guidance_comparison.png
pip install -r requirements.txt
cd src
python visualize.pyPurePursuit miss= 42.3m t=MISS
ProportionalNavigation miss= 4.1m t=12.34s
AugmentedPN miss= 1.8m t=11.97s
CLOS miss= 18.7m t=MISS
The workhorse of modern missile guidance:
a_cmd = N · Vc · λ̇
where:
N = navigation constant (3–5 typical)
Vc = closing velocity (m/s)
λ̇ = LOS angular rate (rad/s)
Applied perpendicular to the line-of-sight, this drives the missile toward a collision triangle geometry — zero-effort miss.
Extends PN with target acceleration feedforward:
a_cmd = N · Vc · λ̇ + (N/2) · aT⊥
Where aT⊥ is the target acceleration perpendicular to LOS. Significantly improves performance against maneuvering targets.
pytest tests/ -v