002Independent Researcher / Engineer
RAMDRONE
Model-Based Design (MBD) toolchain for a small expendable solid-boosted, liquid-fueled ramjet UAV — spanning a Python library, mirrored MATLAB/Simulink, parametric CAD, and 32 tiered Jupyter notebooks.

Why I Built It
I wanted a single, end-to-end model-based-design environment for a small ramjet UAV — one where every numerical constant has a provenance, every design lock-in is captured as a numbered tier, and every Python module has a one-to-one MATLAB counterpart so cross-platform regression is actually possible. The codebase is organised as a research repository rather than a product: each notebook captures a design tier; each change to the physical parameters propagates from one canonical source.
Abstract
RAMDRONE is a complete MBD toolchain for an expendable, solid-fuel-boosted, liquid-fueled ramjet-powered UAV. The repository spans the full analysis stack — from a single CSV registry of physical inputs, through a layered Python library and a parallel MATLAB / Simulink implementation, to parametric CAD and a hierarchy of 32 Jupyter notebooks that progressively close the design from cruise sizing to full 6-DOF, actuated, sensor-in-the-loop trajectory simulation.
Design targets (Tier 29 trim cache)
- Cruise Mach 1.2 (legacy spec); envelope explored to 2.7
- Cruise altitude 8 000 m
- Burn time 300 s
- Total mass (4-fin, fueled) 27.97 kg
- Body length 2.340 m, max diameter 0.1995 m
- Trim thrust @ M = 2.0 — 1 566 N
Architecture
A layered, dataclass-based MBD package. Each module owns one physical sub-discipline and is consumed by both the notebooks and the MATLAB-side regression harnesses.
- Inputs / units, atmosphere, geometry, aerodynamics, inlet / capture, propulsion internals, thrust, mass & mission, closure & matching, stability & dynamics, envelope / design space, and whole-vehicle assembly.
- The notebooks (00–31) form a directed chain — each tier consumes artefacts and calibration constants produced by the previous one (registry → design point → Mach sweep → dynamics → physics audit → envelope → matching → unified forward model → inverse design → optimisation → Pareto sampling → closure → geometry basis → state solver → vehicle system → tier freezes → translating cowl → three-zone thermal → 4-surface stability → dynamic envelope → booster sizing → trajectory sweep → analytic range-interval optimum).
- A mirror MATLAB / Simulink chain extends to a Tier-29 actuated 6-DOF model with mission management, autopilot, actuators with rate-limit and first-order lag, fuel-CG migration, sensor models, failure monitor, and scenario-matrix execution.
- Parametric CAD via FreeCAD macros driven by the same mould-line CSVs — conformal segmented fuel tanks, bleed slots, translating cowl rails, injector ring datums.
Key results to date
- Cruise sustainable at M ≈ 2.3 with Tier-31 fuel sizing and corrected aerodynamic coefficients (
Cd0 = 0.06,k_wave = 0.022). - Endurance peaks at m_fuel ≈ 12.0 kg (t_end ≈ 324 s); heavier fuel loads trigger γ-runaway with current autopilot gains.
- Passive short-period damping is insufficient (ζ_sp ∈ [0.07, 0.22]); a q → δe flight-control loop is the documented closure path (Tier 28 verdict).
- Inlet–shock coupling is low across the envelope (f_shock ∈ [116, 716] Hz vs. f_sp ∈ [0.6, 4.4] Hz).
- Control authority (δe = ±15°, η_c = 0.6) clears the 1.5× inlet-upset moment criterion across the envelope (Tier 27).
Conventions
SI throughout (m, kg, s, N, Pa, K). Body-axis FRD (x-forward, y-right, z-down). Numerical constants live only in python/ramdrone/params.py and the mirrored matlab/ramdrone_params.m; all other modules are derivations. Notebook outputs are regression-checked against python/notebook_regression_results.json.
002Gallery



