drone-vrp
Drone Vehicle Routing Problem solver with physics-based energy models for UAV delivery. Supports 9 drone platforms including 6 Ukrainian-made drones used for logistics and supply delivery.
Supported Drones
| Model | Manufacturer | Country | Type | Payload | Energy | Cruise | Range* |
|---|---|---|---|---|---|---|---|
| FlyCart30 | DJI | CN | Heavy-lift copter | 30 kg | 2000 Wh | 15 m/s | 36 km |
| Wing | Alphabet | US | Light delivery | 1.2 kg | 150 Wh | 30 m/s | 43 km |
| R18 | Aerorozvidka | UA | Octocopter | 5 kg | 1440 Wh | 12 m/s | 11 km |
| PD-2 | UkrSpecSystems | UA | VTOL fixed-wing | 11 kg | 29000 Wh† | 27.8 m/s | 320 km |
| Vampire | SkyFall | UA | Hexacopter | 15 kg | 3200 Wh | 16.7 m/s | 18 km |
| HeavyShot | Gurzuf Defence | UA | Quadcopter | 30 kg | 5000 Wh | 14 m/s | 18 km |
| Kazhan | Reactive Drone | UA | Hexacopter | 20 kg | 4000 Wh | 15 m/s | 19 km |
| Nemesis | UFORCE | UA | Quadcopter | 20 kg | 3800 Wh | 18 m/s | 23 km |
| Matrice350RTK | DJI | CN | Multi-rotor | 2.7 kg | 798 Wh | 15 m/s | 13 km |
* Range = max round-trip radius at full payload, 20% battery reserve, no wind.
† PD-2 uses gasoline propulsion; effective energy converted from 11L fuel at ~30% efficiency.
Energy Model
Based on Dorling et al. (2017):
Power = P_p + (P_l − P_p) × (payload / max_payload)
Energy (Wh) = Power × (Distance / GroundSpeed) / 3600
GroundSpeed = max(CruiseSpeed − WindSpeed, 1.0)
Installation
CLI Usage
# Show all drone specs
# Show specific drone (with aliases)
# Calculate energy for a flight leg
# Estimate max range
# Solve a full Drone VRP (from GeoJSON customers)
Library Usage
use ;
// Get a drone spec
let r18 = r18;
assert_eq!;
assert_eq!;
// Calculate energy
let energy = r18.calculate_energy_wh; // 5km, 3kg, 2m/s headwind
// Estimate max range
let range = r18.estimate_max_range_m; // full payload, no wind
println!;
// Parse by name (with aliases)
let vampire = from_name.unwrap;
assert_eq!;
// Solve a VRP
let instance = DroneVrpInstance ;
let result = solve.unwrap;
println!;
Aliases
| Alias | Maps To |
|---|---|
fc30, dji_fc30 |
FlyCart30 |
aerorozvidka |
R18 |
pd-2, ukrspecsystems |
PD-2 |
baba_yaga, skyfall |
Vampire |
heavy_shot, gurzuf |
HeavyShot |
kazhan630, reactive_drone |
Kazhan |
uforce |
Nemesis |
m350, m350rtk, matrice, dji_m350 |
Matrice350RTK |
Drone Details
🇺🇦 R18 (Aerorozvidka)
Ukrainian octocopter used since 2019 for strike missions, cargo delivery, and reconnaissance. 8 motors for redundancy. Armed with RKG-1600 cumulative anti-tank grenades. Official specs: 17 kg MTOW, 5 kg payload, 45 min flight, 12 m/s cruise, 2× Li-ion 6S 24V 32.5Ah battery packs.
🇺🇦 PD-2 (UkrSpecSystems)
Ukrainian VTOL fixed-wing UAV with 100cc gasoline engine + electric VTOL motors. 55 kg MTOW, 11 kg payload, 100 km/h cruise, 8+ hours endurance. Modular design converts from VTOL to conventional in 15 minutes. Gasoline-powered, modeled here as hybrid with effective 29 kWh energy store.
🇺🇦 Vampire (SkyFall)
The most famous Ukrainian "Baba Yaga" hexacopter. 15 kg payload, ~23 min endurance, combat radius up to 20 km. Used for night strikes, mine-laying, and humanitarian supply delivery. Production: thousands per month as of 2025.
🇺🇦 HeavyShot (Gurzuf Defence)
Ukrainian heavy quadcopter with 30 kg payload and Starlink control. Combat radius up to 25 km. Among the heaviest Ukrainian bomber drones.
🇺🇦 Kazhan (Reactive Drone)
Ukrainian hexacopter with 20 kg payload, AI-assisted targeting, and triple communication (encrypted radio + Starlink + LTE). Self-heating Li-Po solid-state batteries for winter operations.
🇺🇦 Nemesis (UFORCE)
Ukrainian heavy quadcopter developed for the 412th separate SBS brigade. 20 kg payload, Starlink satellite control for beyond-line-of-sight operations up to 25 km radius.
🇨🇳 Matrice 350 RTK (DJI)
Industrial multi-rotor widely deployed in Ukraine for ISR and light delivery. IP54 rated, 2× TB65 batteries (798 Wh total), ~55 min flight time, 2.7 kg payload.
License
MIT OR Apache-2.0