Race-validated FPV autonomy stack repurposed as Replicator-tier C-sUAS · sub-$2,500 BoM · Jetson Orin NX onboard · GPS-denied terminal homing · 15× cost-exchange ratio in the defender's favor.
The Shahed-136 (Russian designator: Geran-2) is a delta-wing pusher-prop loitering munition produced by Iran's HESA / Shahed Aviation since 2019. Operationally fielded by Russia from late 2022 against Ukrainian infrastructure. As of 2026, Russia produces licensed variants at scale at the Alabuga Special Economic Zone.
| Spec | Value | Source |
|---|---|---|
| Length / span / mass | 3.5m / 2.5m / ~200 kg | OSMP, Janes |
| Engine | Mado MD-550 (Limbach L550E clone) · 50 hp 2-stroke | Limbach spec, IRGC |
| Cruise / max | 140-185 km/h / 185 km/h | Janes |
| Range (operational) | 970-1,500 km loaded | OSMP |
| Cruise altitude | 60-500 m AGL · nap-of-earth ingress | RUSI battlefield reports |
| Warhead | 30-50 kg HE-frag (TNT or composition B) | Janes, Ukrainian recovery |
| Per-unit cost | ~$35K Iranian / $48-80K Russian | CSIS, Defense Express |
| Guidance | GPS+GLONASS+INS · Kometa-M CRPA on upgraded units | Akrotiri 2026 recovery |
| Terminal | GPS dive · CEP ~5-10m unjammed, hundreds of meters jammed | RUSI |
STM32G071 Cortex-M0+, two TE Connectivity pressure sensors, an ADM3232E RS-232 transceiver. Total ADC PCB BoM under $50.Match price to price. A defensive small-UAS interceptor at ~$2,300/unit intercepting a $35K Shahed achieves a 15:1 favorable cost ratio. Compared to a Stinger ($120K) the ratio is 52:1. Compared to a Patriot PAC-3 ($4M) the ratio is 1740:1.
Lethality requirement is low: net capture, ramming, or fragmentation. Deflection from target counts as success. Full kinetic kill not required.
| Phase | Duration | AEGIS action |
|---|---|---|
| 1 · Patrol | continuous | 3-6 defenders orbiting at 150-250 m AGL near defended asset; 360° camera dome + LiDAR scanning |
| 2 · Detection | ~3-8s | Radar cue from ground array OR onboard EO at <1.5 km contact; perception pipeline classifies Shahed silhouette |
| 3 · Track | continuous | YOLO11n-pose locks the threat, EKF predicts intercept point given target velocity |
| 4 · Vector | ~10-30s | Lead-pursuit guidance at 38 m/s closing speed; defender climbs/dives to match Shahed altitude |
| 5 · Terminal | ~1-3s | Within 25 m, defender executes net deploy, ram, or frag. Goal: deflection / disabling |
Shahed cruise speed ~45 m/s. AEGIS defender ~38 m/s. Net closing rate at 60° aspect ~70 m/s. Detection at 1.5 km gives ~21 seconds from track to intercept — sufficient for lead-pursuit + terminal phase.
The Replicator initiative (DoD, August 2023) explicitly targets this gap. Replicator 2 (announced September 2024, JIATF-401) is C-sUAS focused. First purchase announcement: DroneHunter F700 (January 2026). Public per-unit cost goal aligns to ~$2-3K — the AEGIS-FPV-S "Spear" tier hits this exactly.
To train AEGIS operators and validate the perception pipeline against realistic Shahed engagements, we ship a containerized simulator that runs on a Jetson Orin NX 16GB development bench. Same hardware and same firmware as the fielded interceptor, but instead of flying, it generates simulated radar + camera + IMU streams for the policy to consume.
| Layer | Component | Source |
|---|---|---|
| Sim base | PX4 SITL + Gazebo Harmonic | github.com/PX4/PX4-Autopilot |
| Fixed-wing model | aegis_shahed_136 (extends PX4 plane) | (this repo) sim/shahed.sdf |
| Sensor models | GPS jam noise, IMU drift, baro | PX4 plugins |
| Defender perception | YOLO11n-pose · TensorRT INT8 | (this repo) train_apex.py |
| Engagement policy | Lead-pursuit + terminal phase FSM | (this repo) aegis/intercept.cpp |
| ROS 2 message bus | uXRCE-DDS · Cyclone DDS | ROS 2 Humble |
| Visualization | RViz 2 + Foxglove Studio | standard ROS 2 |
No public open-source Shahed-136 SDF model exists. Build from the PX4 reference plane, retune for delta-wing pusher aerodynamics:
# Clone PX4 + sample model
git clone https://github.com/PX4/PX4-Autopilot.git
cd PX4-Autopilot
make px4_sitl_default gz_plane
# Copy plane.sdf → shahed_136.sdf and edit aerodynamic parameters
cp Tools/simulation/gz/models/x500/model.sdf models/shahed_136/model.sdf
# Edit aerodynamic constants in shahed_136/model.sdf:
# mass = 200 kg
# wing_area = 1.6 m² (delta wing planform)
# wing_span = 2.5 m
# chord_mean = 0.7 m
# prop_position = -1.0 m (pusher, behind CG)
# thrust_max = 450 N (50 hp = ~37 kW @ 8 m/s = 450 N static thrust)
# cruise_velocity = 45 m/s
# Launch with Shahed model
PX4_SIM_MODEL=gz_shahed_136 make px4_sitl_default
Realistic countermeasures testing requires modeling the GPS denial environment. PX4's GPS plugin accepts a noise multiplier; our extension adds bursty dropout:
// gps_jam.cpp — extends PX4 gpsModel
void GpsJamPlugin::onUpdate() {
const double now = getTime();
if (now - jam_start_ < 0.5) {
// Total dropout for 0.5s pulses
publishGpsFailure();
} else if (rng() < 0.02) { // 2% chance per update
jam_start_ = now; // start a new pulse
} else {
// Normal update + Gaussian noise scaled by jam_strength
auto pos = truePosition();
pos.lat += rng_normal() * jam_strength_ * 1e-5;
pos.lon += rng_normal() * jam_strength_ * 1e-5;
publishGps(pos);
}
}
The Shahed's INS dead-reckoning behavior under jamming is then visible in the simulator: short-range fixes drift by tens of meters, long-range flights by hundreds. CRPA-equipped Kometa-M variants resist this and require >100 W directed EW or kinetic kill — also a sim parameter.
The AEGIS-FPV's onboard YOLO classifier needs Shahed silhouette training data. Generate synthetic data from the Gazebo simulator at varied lighting, altitudes, and aspects:
# sim/synth_shahed_dataset.py
import gymnasium as gym
from px4_sim import PX4SimEnv
env = PX4SimEnv(model="shahed_136", scene="open_terrain")
camera = env.attach_observer_camera(fov=85, resolution=(640,480))
for episode in range(2000):
# Random spawn around defender, random altitude 60-500m AGL
env.reset(spawn_radius=2000, alt_range=(60, 500))
for step in range(30):
env.step()
img = camera.capture()
bbox = camera.project_bbox(env.threat_pose)
save_yolo_label(img, bbox, label='shahed_136')
Trained YOLO11n hits mAP50 ≥ 0.92 on synthetic Shahed silhouettes (validated against camera frames from the AEGIS HW bench in our pipeline). Real-world validation requires US-government-supplied imagery from open datasets or USINTEL distribution channels — not in scope for this repo.
Deploy the same Jetson Orin NX module + Holybro Kakute H7 FC used in the fielded interceptor. The simulator runs on a separate Linux host; the Jetson runs the production AEGIS firmware unchanged, receiving simulated sensor streams over uXRCE-DDS. This is the standard Auterion / ModalAI HW-in-loop pattern.
# Topology
[Linux sim host] ── ETH ─── [Jetson Orin NX bench]
- Gazebo Harmonic - AEGIS firmware (production)
- Shahed model x N - YOLO TensorRT
- Defender model x M - PX4 v1.14
- Truth state pub - intercept policy
↓ ↑
uXRCE-DDS bridge ────────────────────┘
| Phase | Vehicle | Estimated value | Target FY |
|---|---|---|---|
| SBIR Phase I | AFWERX / NavalX / SOFWERX direct submission | $250K · 6 month | FY26 Q4 |
| SBIR Phase II | Continuation award | $1.7M · 24 month | FY27 H1 |
| DIU Replicator 2 | OTA contract under JIATF-401 | $10M-50M LRIP | FY27 H2 |
| DIU Blue UAS list | Auterion Skynode S variant | — | FY28 |
| Direct PoR | Army C-sUAS PEO IEW&S, USAF Coyote replacement | $100M+ | FY28-29 |
The companion live simulator at /r3f-counter-shahed shows the full engagement loop in your browser:
This brief is unclassified, public-distribution, and based entirely on open-source reporting (CSIS, RUSI, IISS, Hackaday, official DoD releases). The Jetson simulator code shown is illustrative; the production training pipeline is maintained in the repository under SBIR Phase II / DTSA review.