Deep dive ② · Full technical report
The complete write-up behind the performance deep-dive: a full rigid-body model of the QX-250, built and simulated entirely headless from Python, then exercised across 8 flight scenarios, 3 parametric sweeps, a 20-run Monte-Carlo study and a 161-state linear stability analysis — the whole battery in 170 s.
At a glance
Headline numbers, each traceable to a run in the results set.
3 translation · 3 rotation, multibody
8 scenarios · 13 sweep pts · 20 Monte-Carlo · 1 linear
±9° attitude, 0.45–0.55 kg
lightly damped, ζ≈0.15
max Re(λ)≈0 · marginally stable
no GUI, one Python session
Method
The model is Siemens' shipped Drone_3D_Mechanical 6-DOF quadcopter — a genuine multibody
rigid body (libm6dof) with four electric-motor drives (libemd PMSM), seven PID control loops, gravity and
aerodynamic damping — reparametrized to the QX-250's 0.50 kg all-up weight. It is driven through
Amesim's ame_apy API: open → generate code → set parameters → run → extract,
entirely in one Python process. Every run logs CoG position (x,y,z), velocity (u,v,w), attitude
(roll,pitch,yaw), body rates (p,q,r) and all four motor speeds.
libM6DOF / libEMD link archives, so the model fails to compile with
undefined reference to m6dof*. The final link was completed by hand — those archives inside a
linker --start-group — producing a working 4.4 MB model DLL that Amesim's own runtime executes.
Without this, no headless 6-DOF drone simulation is possible on this install.The closed loop is excited by initial-condition perturbation — offset attitude or position, then observe recovery — a standard, controllable way to characterize a closed-loop vehicle. All results are produced by Amesim's compiled model, not a re-implementation.
The vehicle
From the project record (spec table & FMECA). The all-up weight is what drives flight.
| Quantity | Value | Applied in model |
|---|---|---|
| All-up weight (AUW) | 0.50 kg | mass = 0.49 kg |
| Airframe | Quad-X, 250 mm wheelbase, 3K carbon | see note ↓ |
| Battery | 4S1P LiPo, 14.8 V, 1500 mAh | — |
| Motors | 4× 2306, 1700 KV, 3-phase BLDC | PMSM drive (demo map) |
| Props | 4× 5″ tri-blade (2 CW / 2 CCW) | — |
| Thrust : weight | ~5 : 1 | — |
Time domain — 8 scenarios
From a 1 m level start; attitude perturbations are released and the closed loop recovers.
| Scenario | Initial | 1st zero-crossing | 1st overshoot |
|---|---|---|---|
| Roll step | 15° | 0.86 s | −14° |
| Pitch step | 15° | 0.87 s | −7.3° |
| Combined roll+pitch | 10° / 10° | 0.85 / 0.86 s | ≈ −4° |
Parametric sweeps
Hover behaviour swept against all-up weight, arm length and gravity.
| mass [kg] | motor [rpm] | z @ 6 s [m] |
|---|---|---|
| 0.40 | 25,855 | 2.06 |
| 0.45 | 27,345 | 1.98 |
| 0.50 | 28,356 | 1.90 |
| 0.60 | 31,339 | 1.76 |
| 0.70 | 33,518 | 1.63 |
Monotonic both ways — heavier needs more rpm and climbs less under fixed thrust authority. (0.55 kg point diverged; omitted.)
Robustness
20 randomized runs — mass U(0.45, 0.55 kg), initial roll & pitch U(−9°, +9°).
| Runs | 20 |
| Stable | 20 / 20 |
| Peak |roll| — min | 3.9° |
| Peak |roll| — mean | 7.1° |
| Peak |roll| — max | 9.2° |
No run exceeded 10° peak roll or lost control — a clear robustness margin inside the tested dispersion.
Linear analysis
The full model linearized at the hover operating point.
The system is marginally stable: the rigid-body and heading/position modes sit on the imaginary axis (integrators, as a free-flying body with no position hold must), and the attitude modes are only lightly damped, hugging the axis. That is the linear counterpart of the time-domain finding — attitude actively but weakly damped, translation and heading neutrally stable. Precisely why the roll step rings before it settles.
Conclusions
These flight-mechanics findings sit alongside the stage-0 MADe reliability result (single-fault-intolerant — 24 order-1 cut sets). Together they say the QX-250 is aerodynamically flyable and robust in-envelope, but wants a firmer control law and has no rotor redundancy — both caught in simulation, before a test bench.
Transparency
Every choice made without a human in the loop, recorded.
| Area | Choice | Why |
|---|---|---|
| Base model | Siemens 6-DOF Drone_3D_Mechanical demo, reparametrized | Robust vs. building a sketch blind; Siemens' own documented RFLP→Amesim practice |
| QX-250 identity | Mass 0.49 kg applied; demo arm/inertia/gains retained | The 125 mm geometry destabilised the tuned controller (measured); re-tune is design work, not an unattended step |
| Motor model | Demo libemd PMSM map retained | Exact 2306/1700 KV map identification out of scope; hover throttle set by demo curve |
| Excitation | Initial-condition perturbation | Controllable, needs no setpoint-wiring reverse-engineering |