drone-vrp 1.0.0

Drone Vehicle Routing Problem solver with physics-based energy models for UAV delivery — supports DJI FlyCart 30, Ukrainian drones (R18, Vampire, PD-2, HeavyShot, Kazhan, Nemesis), and DJI Matrice 350 RTK
Documentation

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

cargo install drone-vrp

CLI Usage

# Show all drone specs
drone-vrp specs

# Show specific drone (with aliases)
drone-vrp specs --drone R18
drone-vrp specs --drone baba_yaga    # → Vampire
drone-vrp specs --drone m350         # → Matrice350RTK

# Calculate energy for a flight leg
drone-vrp energy --drone Vampire --distance 10000 --payload 10 --wind 3

# Estimate max range
drone-vrp range --drone Kazhan --payload 15 --wind 0

# Solve a full Drone VRP (from GeoJSON customers)
drone-vrp solve --drone Vampire --customers customers.geojson \
    --depot-lat 48.5 --depot-lon 32.2 --wind 3

Library Usage

use drone_vrp::{DroneSpec, DroneModel, DroneSolver, DroneVrpInstance};

// Get a drone spec
let r18 = DroneSpec::r18();
assert_eq!(r18.model, DroneModel::R18);
assert_eq!(r18.country, "UA");

// Calculate energy
let energy = r18.calculate_energy_wh(5000.0, 3.0, 2.0); // 5km, 3kg, 2m/s headwind

// Estimate max range
let range = r18.estimate_max_range_m(5.0, 0.0); // full payload, no wind
println!("R18 range at full payload: {:.1} km", range / 1000.0);

// Parse by name (with aliases)
let vampire = DroneSpec::from_name("baba_yaga").unwrap();
assert_eq!(vampire.model, DroneModel::Vampire);

// Solve a VRP
let instance = DroneVrpInstance {
    drone_model: DroneModel::Vampire,
    depot: [48.5, 32.2],
    customers: vec![[48.55, 32.25], [48.6, 32.3]],
    demands_kg: vec![5.0, 10.0],
    wind_speed_ms: 3.0,
    no_fly_zones: vec![],
};
let result = DroneSolver::solve(&instance).unwrap();
println!("Routes: {}, Energy: {:.0} Wh", result.routes.len(), result.energy_used_wh);

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