Multirotor / Drone Aerodynamics & Control — Robotics Reference
Scope. This note is the robotics-applied counterpart to
[[Engineering/aerodynamics]]and[[Engineering/propulsion]]. Blade-element-momentum derivation, induced-velocity Glauert correction, rotor-wake aerodynamics, and the full nonlinear hypersonic / compressible-flow algebra live there. Here we treat the multirotor as the integrated robot it is: rotor + ESC + IMU + EKF + cascaded PID + battery + frame, in the configurations that actually fly — quad, hex, octo, coaxial, tilt-rotor, eVTOL. The reader should leave able to size a drone, pick the autopilot and motor parts, and debug the four or five canonical failure modes that crash one.
1. At a glance
A multirotor is an aircraft that generates lift and control authority entirely from two or more fixed-pitch propellers rotating about parallel (or near-parallel) axes. Unlike a helicopter — which varies blade pitch via swashplate — a multirotor controls thrust by varying motor RPM alone. This single design choice cascades downstream: simpler mechanics (no cyclic, no swashplate, no tail-rotor), faster control bandwidth (electrical, not mechanical, response), lower per-rotor efficiency (small high-RPM props), and a mandatory four-or-more rotor count to achieve six-DOF controllability.
The dominant configurations a designer actually builds:
- Quadcopter (4 rotors) — the canonical multirotor, in X (arms diagonal, camera centerline open) or + (arms aligned with body) layout. Minimum count for stable hover with full yaw authority. ~95% of consumer and FPV drones.
- Hexacopter (6 rotors) — adds redundancy and payload. Most hex configs survive a single motor loss with graceful degradation. Standard in DJI Matrice 350, Freefly Astro, agricultural sprayers.
- Octocopter (8 rotors) — maximum payload + redundancy. Survives two motor losses; used in cinematography (Freefly Alta 8), heavy-lift industrial, and offshore inspection.
- Coaxial (2 rotors per arm, counter-rotating) — half the footprint of a comparable spread design; ~10–15% less efficient than non-coaxial due to upper-rotor wake hitting the lower rotor (interactional losses). Common in compact military / “X-class” drones.
- Tilt-rotor / hybrid VTOL — rotors tilt from vertical (hover) to horizontal (cruise) via servo or fixed-tilt geometry; efficient long-distance cruise with hover capability. WingtraOne, Volocopter, eVTOL passenger vehicles.
- eVTOL (electric VTOL passenger) — Joby S4 (six tilt-rotors), Archer Midnight (12 rotors, twin tilt sets), Beta Alia 250 (lift + cruise), EHang EH216 (16 fixed rotors). Certification regime: EASA SC-VTOL-01, FAA Special Class.
The single most important “first ask” before specifying any multirotor: what is the mission? Hover endurance, top speed, payload mass, range, environmental envelope (wind, altitude, temperature), and regulatory class (Part 107, EASA Open / Specific / Certified, military) cascade into rotor diameter, motor KV, battery chemistry, autopilot choice, and certification cost. A racing drone and a survey drone share fewer parts than a racing drone and a kitchen blender.
Where it sits in the design stack. Aerodynamic sizing → electrical sizing → autopilot selection → control tuning → sensor fusion → mission firmware → flight test. The discipline boundary with [[Engineering/aerodynamics]] is rotor-level: this note treats rotor thrust as a coefficient (C_T) without re-deriving it from blade-element theory.
2. First principles
The vehicle-level mathematics a multirotor designer uses every day, in the form they are used. Detailed rotor aerodynamics is in [[Engineering/aerodynamics]] §§7–9.
Per-rotor thrust. For an isolated propeller in static (hover) conditions:
T = C_T · ρ · n² · D⁴
where T is thrust (N), C_T is the dimensionless thrust coefficient (~0.10–0.13 for typical hobby props), ρ is air density (1.225 kg/m³ at sea level, ~1.0 at 2000 m), n is rotational speed (rev/s), D is rotor diameter (m). This is the propeller-engineer form; the more aerodynamics-textbook form replaces n² · D² with (ω · R)² and absorbs the geometry into a different coefficient.
Per-rotor reaction torque.
Q = C_Q · ρ · n² · D⁵
Reaction torque is what the airframe feels from the spinning rotor. Adjacent rotors spin in opposite directions so that the four (or six, or eight) Q’s cancel at hover; differential mismatch is what gives yaw authority.
Disc loading. T / A, where A = π · (D/2)² is the rotor disc area. Lower disc loading is more efficient (more air moved at lower velocity → less induced power):
- Helicopter (Robinson R44): ~150 N/m²
- Cinematography multirotor (Inspire 2, M300): 50–150 N/m²
- Consumer multirotor (Mavic 3): 100–200 N/m²
- Racing 5-inch FPV: 400–600 N/m²
- eVTOL (Joby S4): ~50 N/m² (closer to helicopter, by design)
Figure of merit (FoM). The hover-efficiency metric:
FM = (T · √(T / (2 · ρ · A))) / P_shaft
A helicopter rotor achieves FM ≈ 0.7–0.85; a quadcopter rotor 0.5–0.7 (smaller, higher-RPM rotors are less efficient at recovering the kinetic energy of their wake). The numerator is ideal hover power from momentum theory.
Ideal hover power.
P_ideal = T · v_h = T · √(T / (2 · ρ · A))
For a quad with each rotor producing thrust T_i, total hover power including FoM is P_hover = Σ (P_ideal,i / FM_i) ≈ 1.4–1.8 × P_ideal,total.
Thrust-to-weight ratio (TWR). TWR = T_max,total / W. Practical regimes:
- TWR = 1.0 — barely hovers, no control margin (failure)
- TWR = 1.4 — heavy-lift cinema drone at max gross weight, sluggish
- TWR = 2.0 — typical consumer drone, acceptable agility
- TWR = 3.0 — sporty consumer / cinematography
- TWR = 5–10 — FPV freestyle and racing
- TWR > 10 — high-performance racing
6-DOF rigid-body dynamics. The vehicle has position p ∈ ℝ³, attitude R ∈ SO(3), velocity v ∈ ℝ³, body rates ω ∈ ℝ³. Newton–Euler in the body frame:
m · v̇ = R · (T_total · ẑ_body) − m · g · ẑ_world − D_aero(v) I · ω̇ = τ_body − ω × (I · ω)
with 4 control inputs (total thrust T_total + 3-axis body torque vector τ_body) and 6 DOF. The vehicle is under-actuated: translation is achieved by tilting the thrust vector via attitude — a quad cannot translate sideways without first banking, and cannot descend without reducing collective thrust. This is the fundamental reason quadcopter trajectories couple attitude and position.
Differential flatness (Mellinger & Kumar, ICRA 2011). The output (x, y, z, ψ) (position + yaw) is a flat output: given any sufficiently smooth (four-times-differentiable) trajectory in this 4-vector, the entire state and control input can be algebraically recovered from the output and its derivatives. Practical consequence: minimum-snap polynomial trajectories are the canonical way to plan aggressive quadrotor maneuvers — the planner outputs (x, y, z, ψ)(t), and the controller back-computes the attitude and thrust commands. This single insight is why modern drones can fly indoor obstacle courses at 100+ km/h.
Cascaded control architecture. All production autopilots (PX4, ArduPilot, Betaflight, DJI) implement a three-loop cascade:
- Position loop (50–100 Hz): position error → desired velocity → desired acceleration → desired thrust vector (magnitude + tilt direction)
- Attitude loop (250–500 Hz): attitude error (quaternion or axis-angle) → desired body angular rate
- Rate loop (1–8 kHz): body-rate error → motor mixer → individual motor commands (DShot / OneShot / PWM)
The rate loop is the most important; everything else is built on it. A drone with a poorly-tuned rate loop cannot be stabilised by any outer loop. PX4 and ArduPilot run rate loops at 1–8 kHz on STM32H7 hardware; Betaflight runs at 4–8 kHz typical, up to 32 kHz for racing builds.
Quaternion attitude representation. A unit quaternion q = (q_w, q_x, q_y, q_z) ∈ S³ encodes attitude without gimbal lock. Error attitude q_e = q_des ⊗ q⁻¹; small-angle approximation gives axis-angle vector 2 · q_e.v (the imaginary part) as the attitude error fed to the PID — see [[Robotics/pid-control]] §3 for the quaternion-PID structure. Euler-angle (roll-pitch-yaw) representations remain in user-facing UI and tuning, but the internal state machine uses quaternions to handle aggressive maneuvers (>60° tilt) without singularities. PX4 uses Hamilton convention (q_w, q_x, q_y, q_z scalar-first); ROS 2 uses the same. ArduPilot historically uses JPL convention (scalar-last) for some internal representations — a common source of integration bugs.
Battery discharge curve in flight. LiPo / Li-ion voltage drops nonlinearly with state-of-charge (SoC):
- 100% SoC: 4.20 V/cell
- 80% SoC: 3.92 V/cell
- 50% SoC: 3.78 V/cell
- 20% SoC: 3.65 V/cell
- 0% SoC: 3.30 V/cell (cutoff to prevent damage)
A drone’s autopilot reads pack voltage, subtracts an estimated I · R_internal sag, and reports SoC. PX4 BAT_R_INTERNAL parameter must be set per pack to get accurate “time remaining” — default 0.005 Ω/cell is approximate. The autopilot triggers Battery Low → RTL at ~25% SoC, Battery Critical → Land at ~15% SoC by default.
Throttle-to-thrust mapping. ESCs accept normalized throttle (0–1) and translate to motor RPM, but the mapping is not linear: at low throttle ESC sees rotor-fundamental losses; at high throttle motor sees back-EMF saturation. Real curves are characterized on a thrust stand. PX4 uses THR_MDL_FAC = 0.3–0.5 (quadratic compensation factor) to linearize T(throttle) for the position controller.
Rotor-airflow inflow assumption. Momentum theory gives induced velocity at hover:
v_h = √(T / (2 · ρ · A))
For a 5-inch racing prop at 8 N thrust: v_h = √(8 / (2 · 1.225 · 0.0127)) ≈ 16 m/s. The wake jet velocity below the rotor is 2 · v_h ≈ 32 m/s in the far field — explains why a small drone hovering above sand kicks debris violently. For a 15” cinema prop at 10 N thrust per rotor: v_h ≈ 5 m/s, w_far ≈ 10 m/s — much gentler downwash.
Rotor-rotor interaction (overlap). When two adjacent rotor discs overlap (closely-spaced quad, or coaxial), the lower / downstream rotor sees the wake of the upper / upstream rotor — its inflow is augmented by 2 · v_h, so its effective angle of attack drops and thrust per shaft-watt drops by 10–20%. Designers space rotor centerlines ≥ 1.05 · D to minimize this. Coaxial designs accept the penalty in exchange for compact footprint.
Inertia tensor for a quad-X. Treating the airframe as four point masses at radius ℓ from center on a horizontal cross plus a central rectangular body:
I_xx = I_yy = 2 · m_motor · ℓ² + m_body · (a² + b²) / 12 I_zz = 4 · m_motor · ℓ² + m_body · (a² + b²) / 12
So I_zz ≈ 2 · I_xx for a typical flat quad — yaw inertia is twice roll/pitch. Combined with the fact that yaw torque (from reaction torque differences) is smaller than roll/pitch torque (from differential thrust on a lever arm), yaw response is typically 5–10× slower than roll/pitch. This is why aggressive yaw maneuvers feel laggy and why heading-locked flight is preferred for cinematography.
Linearized small-perturbation model. Around hover (T_hover, R = I), the linearized vehicle dynamics decouple into 4 SISO loops:
- Vertical: m · z̈ = δT
- Roll: I_xx · φ̈ = ℓ · (δT_2 − δT_4)
- Pitch: I_yy · θ̈ = ℓ · (δT_1 − δT_3)
- Yaw: I_zz · ψ̈ = c_τ · (δT_1 − δT_2 + δT_3 − δT_4)
where c_τ = C_Q / C_T · D ≈ 0.02 m (a small constant). This is the model that PX4 / ArduPilot’s autotune uses for gain identification.
Motor mixer (quad-X). Four motors numbered front-right (1), back-left (2), front-left (3), back-right (4), with motors 1 & 2 spinning CW, 3 & 4 spinning CCW:
[ω1²] [+1 +1 −1 +1] [T_total]
[ω2²] = [+1 −1 +1 +1]·[τ_roll ]
[ω3²] [+1 +1 +1 −1] [τ_pitch]
[ω4²] [+1 −1 −1 −1] [τ_yaw ]
Each column has a clear interpretation: column 1 = collective lift, column 2 = differential thrust about roll axis, column 3 = pitch, column 4 = yaw (from reaction-torque asymmetry). The mixer operates on ω² because both thrust and reaction torque scale as the square of RPM; the autopilot computes desired ω² for each motor, then takes square roots and converts to ESC commands. Hex / octo mixers follow the same template with more rows; the matrix is generally non-square and the pseudo-inverse is computed once at boot.
Control-allocation redundancy. A hexacopter has 6 motors and 4 control objectives (thrust + 3-axis torque), giving a 6×4 mixer with 2 degrees of redundancy. PX4 and ArduPilot exploit this for motor-loss tolerance: after detecting a failed motor (via current sensing or RPM telemetry), the mixer re-allocates control objectives to the remaining 5 motors. A standard hex survives 1 motor loss; an octo survives 2; a quad survives none (it loses yaw authority entirely on motor loss and pinwheels). The Bouabdallah hex motor-loss controller (2007) is the textbook reference.
Aerodynamic effects beyond hover. Three rotor regimes show up in real flight:
- Hover / axial climb — clean momentum-theory model; what most textbooks cover.
- Forward flight — rotor advances at speed V; advancing blade sees V + ωR, retreating blade sees ωR − V → asymmetric lift, blade flapping, drag-bucket. Quadrotors compensate via attitude tilt and differential RPM, but at ~30% of max forward speed they enter dissymmetry of lift.
- Vortex ring state (VRS) / settling-with-power — fast vertical descent (V_descent > 0.5 · v_induced) where the rotor descends into its own wake, lift collapses, vehicle drops uncontrollably until lateral motion clears the vortex. Kills more drones than any other aero failure mode. Mitigation: PX4 / ArduPilot enforce a max descent rate (typically 3–5 m/s for consumer drones); pilot training emphasizes lateral movement during descent.
Ground effect. When the rotor is within ~1 diameter of the ground, induced drag drops and thrust increases by 5–15%. Affects landing dynamics (drone “floats” before touchdown) and takeoff from a soft surface (rotor blast lifts dust into rotors). Modeled by T_ge = T_oge / (1 − (R / (4·h))²) where R is rotor radius and h is height above ground.
Body drag in forward flight. Total drag = parasitic (form drag of frame, arms, payload) + induced (from tilting the rotor to produce thrust component) + profile (rotor-blade friction). For a 1.5 kg consumer drone at 15 m/s, body drag ≈ 4 N (parasitic) + ~3 N (induced) ≈ 7 N. Power required = D · V = 105 W just to maintain forward speed, on top of hover power. Forward flight is more energy-intensive than hover for a multirotor — unlike a fixed-wing, where forward flight is less than hover. This is the fundamental reason multirotors have short range and eVTOLs add tilt-rotors or wings.
EKF state-vector reference (PX4 ekf2). PX4’s ekf2 filter (see [[Robotics/bayesian-estimation]] §3) maintains 24 states: position (3) + velocity (3) + quaternion attitude (4) + gyro bias (3) + accelerometer bias (3) + magnetometer field (3) + magnetometer body bias (3) + wind velocity (2). Fuses GPS (10 Hz), IMU (250 Hz prediction), magnetometer (50 Hz), barometer (50 Hz), and optionally airspeed, optical flow, VIO. Innovation gating rejects outlier measurements (e.g., GPS jumps during multipath); covariance grows during sensor loss; on sensor reacquisition, the filter snaps back within a few hundred milliseconds.
3. Practical math — three worked sizing examples
Example A — Consumer drone hover sizing
Target: 1.5 kg AUW (all-up weight) drone, 25-minute hover endurance, 0.3 kg useful payload. Sea-level operation.
Total hover thrust needed. T_hover = m · g = 1.5 · 9.81 = 14.7 N. For a quadcopter, per-motor hover thrust = 14.7 / 4 = 3.7 N (≈ 375 gf).
Pick rotor + motor. A 9-inch propeller (9 × 4.7 pitch — e.g., DAL T9047) paired with a T-Motor MN2806 KV650 motor produces ~350 gf at ~6800 RPM drawing ~35 W per motor from the manufacturer’s thrust-test sheet. With 4 motors at hover: 140 W shaft power.
Battery sizing. Assume motor + ESC efficiency η_drive ≈ 0.80, so DC bus draw at hover is 140 / 0.80 = 175 W. For 25 min flight time:
E_required = 175 W · (25 / 60) h / η_pack_dis ≈ 175 · 0.417 / 0.85 = 86 Wh
A 4S LiPo (14.8 V nominal), 5800 mAh = 14.8 · 5.8 = 86 Wh — matches. Pack mass at typical 250 Wh/kg = 344 g. Switch to LiHV (4.35 V/cell) for 280 Wh/kg → 307 g. For an aggressive build use Li-ion 18650 (Molicel P42A or Samsung 40T) at 250–280 Wh/kg with high discharge tolerance.
TWR check. At full throttle each motor produces ~750 gf (from datasheet), so T_max,total = 4 · 7.5 N = 30 N, giving TWR = 30 / 14.7 ≈ 2.0 — adequate consumer agility.
Example B — Quadrotor attitude control bandwidth
Same 1.5 kg vehicle: arm length ℓ = 0.18 m (rotor centerline to vehicle CG), I_xx = I_yy ≈ 0.015 kg·m² (moment of inertia about roll / pitch axes; thin-disk approximation for a flat-ish drone is m · (a² + b²) / 12 with a ≈ b ≈ 0.35 m).
Maximum roll/pitch torque (full differential thrust, two motors at peak, two at zero):
τ_max = 2 · (T_max,per_motor − T_hover,per_motor) · ℓ = 2 · (7.5 − 3.7) · 0.18 = 1.37 N·m
(Half the rotors push 3.8 N harder, half push 3.8 N less, lever arm 0.18 m.)
Maximum angular acceleration: α_max = τ_max / I = 1.37 / 0.015 ≈ 91 rad/s². The vehicle can reach 90°/s in ~17 ms — very agile.
Rate-loop bandwidth target. Rule of thumb: rate-loop closed-loop bandwidth ≈ 30–60 rad/s for a consumer drone, 100–200 rad/s for FPV racing. Pick ω_BW,rate = 50 rad/s (8 Hz). At a 1 kHz rate-loop sample rate, the Nyquist limit is 500 Hz — plenty of margin.
Starting PID gains. PX4 default for a 1.5 kg quad: K_p,roll_rate ≈ 0.15, K_i ≈ 0.2, K_d ≈ 0.003 (PX4 uses internal units — see [[Robotics/pid-control]] §4 for normalization). Attitude loop: K_p ≈ 6.5 rad/s per rad error. Position loop: K_p ≈ 0.95 m/s per m, K_d ≈ 0.2.
Example C — Racing vs cinematography energy budget
Two drones, same 125 Wh battery (4S 8000 mAh LiPo).
Racing 5-inch FPV. 5 × 4.3 prop, T-Motor F60 Pro V 1750 KV motor, 4S battery. Hover thrust per motor ≈ 250 gf at 60% throttle drawing 150 W per motor → 600 W hover total. Flight time = 125 / 600 · 60 · 0.85 = 10.6 min hover, but racing duty is far heavier — full-throttle bursts at 1500–2000 W → 3–5 min realistic flight.
Cinematography (15-inch). 15 × 5 prop, T-Motor MN5008 KV170 motor, 6S battery. Hover thrust per motor ≈ 750 gf at 30% throttle drawing 90 W → 360 W hover total for a 3 kg AUW drone. Flight time on same 125 Wh battery × 80% usable / 360 W = 17 min. Larger battery (e.g., TB50 4280 mAh 6S = 95 Wh + secondary pack) extends to 25+ min.
Insight. Same energy, ~3× longer flight time for the cinema rig — because disc loading is 6× lower and the rotor is operating closer to its FoM optimum. The trade is agility: the cinema drone has TWR ≈ 2.0 and ω_BW ≈ 15 Hz; the racer TWR ≈ 12 and ω_BW ≈ 100 Hz.
Example D — Hexacopter motor-loss survival
Target: 6 kg hex (e.g., custom DJI M300-class survey rig), 6 × T-Motor MN5008 KV170 motors with 18” props, 12S Li-ion pack (50.4 V nominal, 22 Ah Molicel P42A). Hover thrust per motor: 6 · 9.81 / 6 = 9.8 N (1.0 kgf). Each motor produces ~2.5 kgf at full throttle → TWR = 2.5 hover.
Single motor loss. With one motor at zero thrust, the remaining 5 must supply 6 · 9.81 = 58.9 N while balancing torques. The opposite-rotor pair is now asymmetric, so PX4’s control_allocator zeros the opposite rotor as well (sacrificing yaw authority) to preserve roll/pitch trim. Four working motors must lift the entire 6 kg: per-motor thrust = 14.7 N (1.5 kgf), well within the 2.5 kgf available. Vehicle survives with reduced yaw authority — sufficient for emergency landing.
Battery sag check at motor-loss condition. Each of 4 active motors now draws 250 W instead of 100 W (proportional to thrust³/²): total 1000 W instead of 600 W hover. At 50 V bus, current is 20 A. 22 Ah pack at C = 0.9 → no problem. The PX4 failsafe COM_OBL_RC_ACT = Land triggers immediate descent at 1 m/s once motor loss is detected.
Example E — Sub-250g consumer drone (Mini-class)
Regulatory motivation: drones under 250 g qualify for the EU Open category A1 and US recreational fly-over-people with minimal restrictions. Designing to this limit means every gram counts.
Target: 249 g AUW, 30-min flight time, 4K video. Components:
- 4 × motor + ESC at 8 g each = 32 g
- 4 × prop (3.6” tri-blade) at 1 g each = 4 g
- FC (Speedybee F405 Mini 20×20) = 5 g
- Camera + gimbal (DJI O3-class) = 80 g
- Frame (CF) = 25 g
- GPS + LED = 8 g
- Radio receiver = 2 g
- Wiring + connectors = 10 g
- Battery target = 249 − 166 = 83 g
At 250 Wh/kg, an 83 g LiPo holds 20.7 Wh = 1.9 Ah at 11.1 V (3S). Hover power for 250 g drone with 3.6” props ≈ 38 W → flight time = 20.7 / 38 · 60 · 0.85 = 27.7 min. Close to target. DJI Mini 4 Pro achieves 34 min via a slightly more efficient 3S 18.5 Wh “Plus” battery and lower-disc-loading folding props.
4. Design heuristics
Motor + prop matching.
- Static thrust ≥ 2× weight per motor (TWR 2.0 minimum) for any drone expected to hover with control authority. A drone with TWR < 1.5 is “barely flying” — wind gusts and asymmetric battery sag will exceed control margin.
- Prop pitch × RPM ≈ vehicle forward top speed (in inches/min, convertible). 5043 prop at 25 000 RPM theoretical = 215 km/h; real top speeds are 50–70% of this due to aerodynamic load.
- Larger D → more efficient hover; smaller D → more responsive (lower polar moment of inertia of the rotor itself, faster RPM response). Cinema = 15+ inch; racing = 5 inch; consumer = 7–10 inch.
- KV (rpm/V) selection. Higher KV = faster RPM, lower torque, smaller props. Heuristic: KV × battery voltage ≈ motor unloaded RPM; choose KV so that no-load RPM is 30–50% above expected operating RPM at hover.
Battery chemistry and sizing.
- LiPo (3.7 V nominal): 200–260 Wh/kg, high C-rate (35–100C), industry standard for FPV and consumer.
- LiHV (4.35 V/cell): 280 Wh/kg, slightly higher full-charge voltage — fly racing setups slightly longer.
- Li-ion 18650 / 21700: 250–290 Wh/kg, lower C-rate (5–15C), preferred for long-endurance industrial / survey.
- Solid-state Li: ~400 Wh/kg, emerging (Solid Power, QuantumScape) — not yet in commercial drones as of 2026-Q2.
- C-rate check. Max current = C-rate × capacity (Ah). For 75 A peak draw on a 5 Ah pack, need ≥ 15C continuous. Always derate continuous C by 50% for sustained draw.
ESC sizing. Continuous current rating ≥ 1.2× peak motor current at full throttle. ESC modes:
- PWM (50–490 Hz): legacy; commercial / industrial.
- OneShot125 (125–250 µs): transitional.
- DShot (DShot150 / 300 / 600 / 1200 / 2400): digital protocol, CRC-checked, bi-directional telemetry option (eRPM). Standard for FPV.
- BLHeli_32 firmware (proprietary 32-bit ESC firmware) supports active braking, RPM filtering, bi-directional DShot.
- AM32 firmware (open-source successor as BLHeli_32 development ceased mid-2024).
Frame material.
- Carbon-fiber composite + aluminum standoffs — hobby and FPV; light, stiff, repairable.
- Injection-molded ABS/polycarbonate — DJI, Skydio, consumer production.
- CNC-machined aluminum — heavy-lift industrial, military.
Mass budget (typical fractions of AUW):
| Subsystem | Fraction |
|---|---|
| Motors | 15–20% |
| ESCs + power dist. | 5–10% |
| Frame | 15–20% |
| Battery | 25–35% |
| Avionics (FC + GPS + radio + cam) | 10–15% |
| Payload | 10–25% |
Vibration management.
- Motors must be dynamically balanced (manufacturer should do this); imbalance > 5 mg-mm at high RPM causes 100–500 Hz vibration that swamps IMU bandwidth.
- Soft-mount the FC (sorbothane, viscoelastic, or Loctite Vibra-Tite gel) to attenuate motor vibration before the IMU integrator sees it. PX4 expects gyro vibration < 30 m/s² peak in HOVER; > 60 m/s² → tuning collapses.
- Camera gimbal isolation is separate from FC isolation; both use compliant mounts but with different resonance targets.
- Dynamic notch filtering (Betaflight Matek INAV “RPM filter”) uses ESC eRPM telemetry to track motor-fundamental frequencies and apply tracking notch filters in the rate-loop PID input. Removes 200–800 Hz prop noise without the lag of a static low-pass filter.
Power distribution.
- A PDB (Power Distribution Board) routes battery to 4 / 6 / 8 ESCs plus 5 V/12 V BECs (Battery Eliminator Circuits) for camera, VTX, receiver, LEDs. Trace width must handle peak draw; PDB rated for 120 A continuous on FPV racing builds is standard.
- XT60 / XT90 / AS150 connectors by current rating: XT30 (15 A), XT60 (60 A), XT90 (90 A), AS150 (150 A). Industrial drones use anti-spark variants (XT90-S) to prevent inrush damage.
- Capacitor bank on battery input (470 µF–2200 µF low-ESR electrolytic) suppresses voltage transients during throttle changes; required when ESC inductance + battery wire inductance creates ringing > 60 V at the ESC’s switching frequency.
Indoor vs outdoor design split.
- Indoor: prop guards (cinewhoop-style ducted fans, polycarbonate “bumpers”), optical flow + lidar for position, no GPS dependency, lower TWR (3–4) for safety. Examples: BetaFPV Pavo, iFlight ProTek25, Cinepi.
- Outdoor: GPS-primary, no guards (drag), high TWR for wind rejection, wind-rated electronics. Wind tolerance heuristic: drone should sustain wind at ~0.5 · v_max_forward. A 60 km/h consumer drone handles ~30 km/h wind.
Production vs prototyping trade.
- Prototype: ODrive / Moteus / off-the-shelf modular components; CF frame + 3D-printed mounts; PX4 / ArduPilot stock firmware; ~1 week from CAD to first flight; $1500–3000 BOM.
- Production: custom motor + ESC PCB integrating BLHeli / proprietary firmware; injection-molded frame; closed-source firmware for proprietary IP; ~6–18 month dev; $200–500 BOM at 10k units.
- Lab build: Crazyflie-class or off-the-shelf Holybro X500 v2 frame + Pixhawk 6X kit; standardized, reproducible across groups.
Center of gravity (CG). CG should align vertically with the rotor disc plane to minimize coupling between thrust and attitude. CG forward/back affects pitch trim authority; left/right affects roll trim. A poorly-CG’d drone will have a “trim” offset that consumes integral wind-up margin even at hover.
Control philosophy.
- PID cascaded (rate → attitude → position) — PX4, ArduPilot, Betaflight, DJI. The default. Tune the rate loop first, then attitude, then position.
- INDI (Incremental Nonlinear Dynamic Inversion) — uses measured rotational acceleration to invert dynamics each step; popular in TU Delft drones, increasingly in PX4 (since v1.13).
- LQR — research-grade attitude control, used in ETH Crazyflie fork and Skydio’s earlier control stacks.
- MPC (Model Predictive Control) — position + attitude prediction over a 0.5–2 s horizon; CPU-heavy but enables obstacle avoidance and trajectory tracking; Falanga 2018 PAMPC, Foehn/Romero/Scaramuzza 2022 Agilicious.
- L1 adaptive — Hovakimyan; rare in production, mostly research.
- Geometric tracking on SE(3) — Lee/Leok/McClamroch 2010; the most-cited “non-Mellinger” trajectory tracking law for quadrotors; common starting-point in academic papers.
Tuning order (universal).
- Rate-loop K_p only — set P high enough to oscillate, back off 25%. Drone in Acro mode held above bench by hand.
- Rate-loop K_d — raise to suppress P-induced oscillation; back off when noise / vibration manifests.
- Rate-loop K_i — raise gently; integral too high → low-frequency wobble.
- Attitude P — outer-loop bandwidth ~3–5× lower than rate loop.
- Velocity P/I/D (if doing position flight).
- Position P — slowest loop, ~3–5× lower than velocity.
- Field-tune in actual flight with progressive aggressiveness.
Failsafe layers (PX4 / ArduPilot default).
| Trigger | Action | Configurable |
|---|---|---|
| RC link lost > 1 s | Return-to-Launch (RTL) | COM_RC_LOSS_T, action |
| Datalink (GCS) lost > 30 s | RTL | COM_OF_LOSS_T |
| Battery low (< 25%) | RTL / Land | BAT_LOW_THR |
| Battery critical (< 10%) | Land immediately | BAT_CRIT_THR |
| Geofence breach | Loiter / RTL / Terminate | GF_* parameters |
| Position estimator failure | Switch to Stabilize | hard-coded + tunable |
| Motor failure detected | Continue (hex/octo) or terminate | CBRK_* |
| Pre-arm checks fail | Refuse to arm | individual checks |
Regulatory class summary (US + EU, 2026-Q2).
| Class | Mass | Operations | Auth required |
|---|---|---|---|
| US recreational | < 25 kg | LOS, < 400 ft AGL, day, registration, Remote ID | TRUST training |
| US Part 107 | < 25 kg | LOS or waiver, day or waiver, Remote ID | Pilot license |
| US Part 107 waiver | < 25 kg | BVLOS, over-people, night, etc. | Specific waiver |
| EU Open A1 | < 250 g | Over people OK; LOS | None for sub-250g |
| EU Open A2 | < 4 kg | Close to people; LOS | A2 CofC |
| EU Open A3 | < 25 kg | Far from people; LOS | A1/A3 online test |
| EU Specific | up to 25+ kg | Risk-assessed, BVLOS possible | SORA / authorization |
| EU Certified | passenger / dangerous goods | All ops | Type cert + pilot license |
11. Standards & airworthiness summary
- FAA Part 107 (US, current) — commercial sUAS < 25 kg; visual line of sight; daylight or with waiver; pilot licensed.
- FAA Part 89 (US, since 2023-09-16) — Remote ID broadcast required for all UAS over 250 g.
- FAA Part 108 (US, proposed 2025) — BVLOS rule; expected to enable routine BVLOS operations under specific equipage and risk-assessment rules.
- EU 2019/947 + 2019/945 — Open / Specific / Certified categories; C0–C6 product class marking; CE marking.
- EASA SC-VTOL-01 — Special Condition for small-category VTOL aircraft (eVTOL passenger).
- ASTM F3322 — sUAS parachute spec (for over-people Part 107 waivers).
- ASTM F3411 — Remote ID broadcast specification.
- NDAA Section 848 / Blue UAS — DoD-approved UAS list (excludes Chinese-sourced); driven by 2020 ban on DJI for federal use.
- ISO 21384 series — UAS safety, terminology, taxonomy.
- ICAO Annex 19 + RPAS Manual — international RPAS / drone framework.
The certification pathway for a multirotor depends on mass, autonomy, and operations:
| Drone type | Cert path |
|---|---|
| Sub-250g recreational | Trivial; Remote ID still required |
| Part 107 commercial | Pilot license + airworthiness self-declaration |
| BVLOS commercial | Waiver process (54 / 91 / 137) + SORA-equivalent |
| eVTOL passenger | Full type certification (FAR Part 23 / Part 25-derived special class) |
| Defense | NDAA + DoD-specific airworthiness |
12. Session log entry
This note is registered in the vault session log via:
node ~/.claude/bin/obsidian-research.mjs log "Built Robotics/multirotor-design.md Tier 1 deep note"Flight modes (universal across PX4 / ArduPilot / Betaflight).
| Mode | Description | Typical use |
|---|---|---|
| Manual / Acro | Raw stick → motor mix; no self-leveling | Racing, freestyle |
| Stabilize / Angle / Self-Level | Auto-leveling attitude hold | Beginner FPV, photo |
| AltHold / Altitude | Adds baro/lidar altitude hold | Tuned indoor flight |
| Loiter / Position Hold | GPS-locked position hold | Aerial photo, station-keeping |
| Auto / Mission | Pre-programmed waypoint flight | Survey, mapping, delivery |
| RTL (Return-to-Launch) | Auto fly home + land | Failsafe, low-battery |
| Land | Vertical controlled descent | End of mission |
| Follow / ActiveTrack | Visual or GPS subject tracking | DJI ActiveTrack, Skydio |
5. Components & sourcing
Real parts a designer specifies in 2025–2026.
Flight controllers (FC).
- Pixhawk family (PX4 + ArduPilot): Holybro Pixhawk 6X ($350), Pixhawk 6C, mRo Pixracer Pro, CUAV X7+, Hex Cube Orange / Black, Auterion Skynode (enterprise). STM32H743 (Pixhawk 6X) at 480 MHz, dual-IMU, triple-redundant on some variants.
- FPV / Betaflight: Speedybee F405 V4, Holybro Kakute H7, T-Motor F7 HD, iFlight Blitz F7. STM32F405 / F722 / H743 typical.
- Companion / autonomy: ModalAI VOXL2 (Snapdragon QRB5165 + PX4 on co-processor, runs SLAM + obstacle avoidance + PX4 in one box), NVIDIA Jetson Orin Nano / NX (separate vision compute), Raspberry Pi 5.
Brushless motors.
- T-Motor: MN series (cinematography), F series (racing), AT series (industrial heavy-lift), AK series (QDD for legged robots — see
[[Robotics/motors-electric]]§5). - iFlight Xing 2207 / 2806: FPV racing.
- Sunnysky X-series: mid-range hobby.
- EMAX RS / ECO: budget FPV.
- BetaFPV 0802 / 1404: micro/cinewhoop.
- Brotherhobby Avenger / Returner: racing.
ESCs.
- BLHeli_32 4-in-1 stacks: Holybro Tekko32 F4 (45A), T-Motor F35A V2 Pro, iFlight Blitz E55. Typical 4S / 6S, 35–55 A continuous.
- Heavy-lift: Hobbywing X-Rotor Pro 80A (single-motor), Mauch ESC-200A.
- Industrial / certified: T-Motor FlameUAV, Alpha 80A HV.
- Firmware: BLHeli_32 (legacy), AM32 (open-source successor), Bluejay (FPV-tuned BLHeli_S successor).
Propellers.
- Hobby / consumer: APC SF / E series, Master Airscrew.
- FPV racing 5”: HQProp Ethix S5, Gemfan Hurricane 5127, DAL Cyclone T5040, Azure SFR.
- Cinematography 10–15”: T-Motor P15×5, Master Airscrew MR-15×5.5, KDE Direct.
- Folding: DJI 9450S (Inspire 2), Sky-Hero Loki Mk2.
Batteries.
- FPV racing 4S/6S: Tattu R-Line v5.0, Auline 6S 1300, GNB 4S 1500, Dogcom 6S 1500.
- Cinematography: Tattu TB50/TB55 (DJI), MaxAmps 22000 mAh 6S, Gens Ace 11000 6S.
- Industrial: TattuPlus, Cuav Slimstack.
- Li-ion 18650 / 21700 packs: Molicel P42A / P45B (custom-built packs), Samsung 40T.
Radio control (RC).
- ExpressLRS (ELRS): open-source long-range 2.4 GHz / 915 MHz; modules from BetaFPV, RadioMaster, Happymodel. 200 mW typical → 10+ km range.
- TBS Crossfire / Tracer: 915 MHz long-range proprietary.
- FrSky ACCST/ACCESS: legacy 2.4 GHz.
- DJI O3/O4 Air Unit: integrated digital HD video + control link; closed ecosystem.
- Walksnail Avatar HD: open-er alternative to DJI O3.
GPS.
- u-blox NEO-M9N: 4-constellation (GPS/Galileo/GLONASS/BeiDou), 1 Hz, 2.5 m CEP. Standard hobby GPS.
- u-blox ZED-F9P: dual-frequency RTK-capable, 1 cm CEP with base station. Survey / DJI RTK / surveying drones.
- Holybro M9N+ / M10: combined GPS + magnetometer + LED unit.
- Septentrio mosaic-go: professional-grade GNSS receiver.
IMU. Already on the FC. Notable IMUs:
- InvenSense ICM-42688-P (Bosch BMI270 variant): 32 kHz output, MEMS gyro 16 mdps/√Hz noise. Default on PX4 Pixhawk 6X.
- TDK ICM-20689 / 20602: older standard.
- Analog Devices ADIS16470 / ADIS16505: tactical-grade MEMS, 10× lower noise; used in Skydio X10, military drones.
Comm protocols.
- MAVLink (Micro Air Vehicle Link) — telemetry/command standard for PX4, ArduPilot, QGroundControl, Mission Planner. Bidirectional UART/UDP/CAN/serial.
- uORB / DDS (PX4 internal messaging).
- DroneCAN / Cyphal (CAN-bus based avionics, replacing UAVCAN v0).
Cameras.
- FPV analog: RunCam Phoenix2, Foxeer Razer.
- FPV digital: DJI O3 Air Unit, RunCam Wasp, Walksnail Avatar HD Pro.
- Mapping: Sony α7R V (50 MP), Phase One iXM-100 (industrial photogrammetry).
- Thermal: FLIR Boson 640 (640×512, 12 µm), Workswell WIRIS Pro.
- Cinema gimballed: DJI Zenmuse X9-8K Air, Ronin 4D, Sony Alpha 1 on Freefly MoVI XL.
- Lidar payloads: DJI Zenmuse L2 (Livox + camera), GreenValley LiAir X3, RIEGL miniVUX-3 (survey-grade).
Obstacle-avoidance sensors.
- Stereo cameras (passive): the standard for Skydio, DJI ActiveTrack, Autel; works in good lighting, fails at night or against featureless walls.
- Ultrasonic + IR depth (DJI Avata, Phantom 4): short-range, cheap, fails outdoors / in wind.
- ToF (Time-of-Flight) 1D sensors: VL53L1X, TFmini Plus — used for altitude-above-ground in landing.
- Solid-state lidar: Livox Mid-40, Mid-360 — used in DJI L2 and research perception stacks.
- mmWave radar: Texas Instruments AWR1843, Vayyar — fog/rain-tolerant; used in some industrial drones.
Companion compute boards.
- NVIDIA Jetson Orin Nano (8 GB) — 40 TOPS, $499, runs ROS 2 + PyTorch + ZED SDK.
- NVIDIA Jetson Orin NX (16 GB) — 100 TOPS; used in production autonomy stacks.
- ModalAI VOXL2 — Snapdragon QRB5165 + PX4 co-processor in one board; SLAM + perception + low-level control.
- Raspberry Pi 5 (8 GB) — Linux, 2.4 GHz Cortex-A76 x4; cheap, generic.
- Up Squared Pro 7000 — Intel Atom x6000; some Skydio-class commercial.
- Auterion Skynode — enterprise PX4 box with built-in 4G LTE, AI compute, security.
Ground control station (GCS) software.
- QGroundControl (QGC) — official PX4 GCS; cross-platform (Win/Mac/Linux/iOS/Android); MAVLink-based.
- Mission Planner (MP) — official ArduPilot GCS; Windows-only (Mono on Linux); deepest parameter UI.
- MAVProxy — Python command-line GCS; scripting-friendly.
- Auterion Mission Control — enterprise GCS with offline maps, fleet management.
- DJI Pilot 2 / Fly App — proprietary GCS for DJI drones.
- Skydio Cloud — fleet management for Skydio enterprise.
- UgCS — multi-vehicle survey planning.
Simulation environments.
- Gazebo Garden / Harmonic — PX4 SITL (Software-in-the-Loop) reference simulator.
- AirSim (Microsoft) — Unreal Engine-based; high-fidelity camera; deprecated in 2022 but forked as Colosseum.
- Flightmare (UZH) — high-speed parallel simulation for RL training.
- jMAVSim — lightweight Java sim; PX4 default for quick iteration.
- Webots — open-source 3D simulator; supports PX4 and ArduPilot SITL.
- Isaac Sim / Lab (NVIDIA) — physics-accurate RL training environment.
Complete commercial drones (current as of 2026-Q2).
| Class | Example | Mass | Notes |
|---|---|---|---|
| Micro FPV | BetaFPV Meteor75 Pro | 25 g | 1S analog |
| 5” Racing | iFlight Nazgul Evoque F5D | 480 g | DJI O3 |
| Consumer | DJI Mavic 3 Pro | 958 g | Hasselblad 4/3 CMOS, 43 min |
| Mini | DJI Mini 4 Pro | 249 g | Sub-250g regulatory class |
| Cinematography | DJI Inspire 3 | 4 kg | 8K ProRes, X9-8K Air gimbal |
| Industrial | DJI Matrice 350 RTK | 6.47 kg | RTK GPS, IP55, modular payload |
| Industrial | Skydio X10 | 1.6 kg | AI obstacle avoid, 6× IMX cameras |
| Heavy-lift | Freefly Alta X | 14 kg | Cinema, MoVI XL gimbal |
| Defense (Blue UAS) | Skydio X10D, BRINC LEMUR 2, Teal 2, Parrot Anafi USA | varies | DoD-approved (NDAA Section 848) |
| Loitering munition | AeroVironment Switchblade 300/600 | 2.5 / 23 kg | One-way; military |
| Delivery | Wingcopter 198 | 25 kg | VTOL + fixed-wing, EASA-approved |
| eVTOL passenger | Joby S4, Archer Midnight, Beta Alia 250 | 2000+ kg | Certification ongoing (2024–2027) |
6. Reference data tables
Multirotor configuration comparison
| Configuration | Rotors | Survives 1 motor loss? | Typical TWR (hover) | Use case |
|---|---|---|---|---|
| Tricopter (Y) | 3 (1 with servo yaw) | No | 2.5 | Niche, mostly hobbyist |
| Quad-X | 4 | No (uncontrollable) | 2–10 | Consumer, FPV, most drones |
| Quad-+ | 4 | No | 2–5 | Older, simpler firmware |
| Hex-Y6 (coaxial) | 6 (3 arms) | Yes (degraded) | 2 | Compact + redundant |
| Hex (true 6) | 6 | Yes | 2–3 | DJI M30, M350, agriculture |
| Octo-X (true 8) | 8 | Yes (2 losses tolerable) | 2 | Cinema, heavy-lift, industrial |
| Octo-V8 (coaxial) | 8 (4 arms) | Yes | 2 | Compact heavy-lift |
| Decarotor / 16-rotor | 10+ | Yes (multiple) | 1.5 | eVTOL (EHang EH216) |
Disc loading vs hover efficiency
| Vehicle class | Disc loading (N/m²) | FM | Hover P/T (W/N) |
|---|---|---|---|
| Helicopter (R44) | 150 | 0.75 | ~110 |
| eVTOL (Joby S4 hover) | 50 | 0.80 | ~85 |
| Cinema multirotor (Inspire 3) | 80 | 0.65 | ~120 |
| Consumer (Mavic 3) | 140 | 0.60 | ~145 |
| Cinewhoop | 200 | 0.55 | ~165 |
| Racing 5” FPV | 500 | 0.45 | ~245 |
Lower disc loading × higher FM = longer flight time per Wh. The eVTOL designers picked disc loading deliberately for hover efficiency.
Top commercial drones by class (2026-Q2)
| Tier | Drone | Notable specs |
|---|---|---|
| Consumer sub-250g | DJI Mini 4 Pro | 34 min, 18 km HD video, omni obstacle |
| Consumer pro | DJI Mavic 3 Pro Cine | 4/3 Hasselblad, ProRes 5.1K, 43 min |
| Prosumer | Autel EVO Max 4T | Quad-sensor (wide+tele+thermal+laser) |
| Enterprise inspection | Skydio X10 | AI obstacle, 64 MP + thermal, vision-only |
| Mapping / RTK | DJI Mavic 3 Enterprise RTK | 5.1K, P1/L1/L2 payload swap |
| Heavy industrial | DJI Matrice 350 RTK | 9 kg payload, 55 min, IP55 |
| Cinema | Freefly Alta X | 14 kg MTOW, MoVI XL |
| FPV (consumer) | DJI Avata 2 + Goggles 3 | Digital 1080p, 23 min |
| FPV racing | Custom 5” iFlight/HGLRC | Sub-500 g, TWR 10 |
| Defense (Blue UAS) | Skydio X10D, Teal 2 | NDAA-compliant, AES encryption |
| eVTOL | Joby S4 | 200 mph, 4 pax + pilot |
Autopilot stack comparison
| PX4 | ArduPilot | Betaflight | DJI (closed) | |
|---|---|---|---|---|
| Vehicles | Multi/VTOL/plane/rover/sub | Multi/plane/rover/sub/boat | Multi only | Multi only |
| License | BSD-3 | GPLv3 | GPLv3 | Closed |
| Maturity | Mature (since 2011) | Most mature (since 2007) | FPV-focused | Production |
| Outer loops | Position + attitude + rate | Position + attitude + rate | Rate primarily (Angle/Horizon for self-level) | Full + obstacle avoid |
| Estimator | ekf2 (24-state) | NavEKF3 | Complementary filter (Magwick / Mahony) | Proprietary |
| Trajectory | Mellinger min-snap option | Spline / mission | None | Proprietary (waypoint, ActiveTrack) |
| Comm | MAVLink, MicroXRCE-DDS | MAVLink | MSP, DSHOT bi-dir | Proprietary OcuSync / O3/O4 |
| Tuning | QGroundControl, MAVLink params | Mission Planner / MAVProxy | Betaflight Configurator | DJI Assistant 2 |
| Companion compute | Hardware-side: ROS 2 / DDS | Same | Limited | Proprietary SDK |
| Best for | Research, enterprise, eVTOL | Hobby, prosumer, GCS-heavy | Racing, freestyle | Production consumer |
Typical PID starting gains (PX4 / ArduPilot, 1.5 kg quad-X)
| Loop | Gain | Value | Notes |
|---|---|---|---|
| Rate (roll/pitch) | K_p | 0.15 | normalized PX4 units |
| Rate (roll/pitch) | K_i | 0.20 | |
| Rate (roll/pitch) | K_d | 0.003 | filter cutoff 30 Hz |
| Rate (yaw) | K_p | 0.20 | |
| Rate (yaw) | K_i | 0.10 | |
| Rate (yaw) | K_d | 0 | yaw rate has less D needed |
| Attitude (roll/pitch) | P | 6.5 | rad/s per rad error |
| Attitude (yaw) | P | 2.8 | |
| Velocity (horizontal) | P | 1.8 | |
| Velocity (horizontal) | I | 0.4 | |
| Velocity (horizontal) | D | 0.2 | |
| Position (horizontal) | P | 0.95 | m/s per m error |
| Altitude P | 1.0 | ||
| Altitude velocity | P | 6.0 | climb rate gain |
After installing on a new airframe, always run PX4 autotune (introduced v1.13) which sweeps gains and identifies bandwidth — saves hours of manual tuning.
ESC protocols by latency / bandwidth
| Protocol | Frequency | Resolution | Bi-directional | Use |
|---|---|---|---|---|
| Standard PWM | 50–490 Hz | 8-bit | No | Servos, legacy ESC |
| OneShot125 | 1–4 kHz | 8-bit | No | Transitional FPV |
| OneShot42 | 4–12 kHz | 8-bit | No | Pre-DShot era |
| MultiShot | 2–32 kHz | 8-bit | No | Brief peak before DShot |
| DShot150 | 150 kbit/s | 11-bit | Yes (TI eRPM) | Cinema, basic FPV |
| DShot300 | 300 kbit/s | 11-bit | Yes | Common FPV |
| DShot600 | 600 kbit/s | 11-bit | Yes | High-rate FPV |
| DShot1200 | 1200 kbit/s | 11-bit | Yes | Rare; race |
| DShot2400 | 2400 kbit/s | 11-bit | Yes | Bleeding edge race |
Bi-directional DShot enables RPM filtering — the FC reads back actual motor eRPM and notches that frequency out of gyro signal in real time. Industry-standard since 2020.
Battery chemistry quick reference
| Chemistry | Wh/kg | Max C | Voltage / cell | Best use |
|---|---|---|---|---|
| LiPo | 200–260 | 35–100C | 3.7 / 4.2 nom/max | FPV, consumer, racing |
| LiHV | 270–290 | 35–80C | 3.8 / 4.35 | Racing, slightly longer flight |
| Li-ion 18650/21700 | 250–290 | 5–15C | 3.6 / 4.2 | Long-endurance, survey |
| LiFePO₄ | 90–120 | 10–30C | 3.2 / 3.65 | Safety-critical, longer cycle life |
| Solid-state Li (emerging 2026+) | 350–450 | 10–30C | 3.6–4.2 | Future eVTOL / endurance |
7. Failure modes & debugging
- Motor mix wrong direction → crash on arming. First-arm of a freshly-built drone with reversed motor rotation pitches/rolls violently. Always verify motor spin direction with a propeller-off bench test (Betaflight Motors tab, or PX4 “Actuators” UI). Each motor should spin per the airframe diagram.
- Drift in calm air → toilet-bowl effect. Slow circling at hover with no wind = magnetometer bias from nearby steel (battery clamp, screws, ESC chokes). Recalibrate compass outside, away from steel and concrete rebar. Run “all sensors” calibration; verify magnetic field strength matches local (50 ± 5 µT in mid-latitudes).
- Yaw spin / “death roll” during aggressive maneuver. ESC commutation desync — the ESC misjudges the rotor’s electrical phase when current changes rapidly. BLHeli_32 / AM32 “Demag Compensation = high” setting fixes most cases; lowering motor timing also helps. Persistent: replace ESC, check motor wiring continuity.
- Brownout at high throttle. Battery voltage sags below ESC/FC under-voltage cutoff (typically 3.0 V/cell under load). Causes: too-low C-rate battery, cold battery, old battery. Fix: bigger pack, derate current limit on FC, or pre-warm battery to 25 °C.
- Wobbly video despite gimbal. High-frequency vibration > 30 Hz coupling through gimbal damping balls into camera. Causes: damaged prop, dynamic prop imbalance, loose motor bell. Inspect props with a balancer (DuBro PB-1, MagBalance); replace any with nicks or chips.
- GPS denial (indoor, canyon, near buildings). Position-hold mode drifts or fails arm. Solutions: switch to optical flow + lidar (PMW3901 + VL53L1X) for indoor “PositionHold”; use VIO (Visual-Inertial Odometry — see
[[Robotics/slam]]) on companion compute (VOXL2, Jetson) for GPS-denied; manually fly in Acro / Stabilize until GPS lock returns. - Wind gust → altitude loss. Strong updraft saturates altitude controller integral; vehicle climbs unexpectedly. Configure max climb/descent rate properly; verify barometer not in direct prop wash (PX4 expects ≤ 1 m baro noise std).
- Battery thermal runaway. Never charge a bloated LiPo; balance-charge always; store at 3.85 V/cell in LiPo-safe bag (Bat-Safe or equivalent). One thermal-runaway event in a battery shed can ignite an entire shop.
- Prop strike damage. Even a hairline crack in a carbon prop changes its dynamic balance — replace any prop that struck ground. Always replace as a set (both halves of a CW/CCW pair) on cinematography rigs.
- RC failsafe misconfigured. Drone loses RC link, doesn’t RTL or land — it stays in last commanded mode and flies away. Configure both FC (failsafe action: RTL or Land) and receiver (failsafe channel values). Test on bench by powering off transmitter.
- GPS arm-check fails. “GPS HDOP > 2.0” or “satellites < 8” prevents arming. Wait 2–5 minutes after cold start; if persistent, GPS antenna is shadowed by carbon or battery — relocate.
- Flight time half of spec. Causes: payload, headwind, altitude derate, cold weather, dying battery. Test honest hover with the actual payload at the actual altitude — manufacturer specs are at sea level, 25 °C, no wind, no payload, fresh battery.
- Counterfeit motor / ESC. Aftermarket “T-Motor” labeled motors with poor magnet quality, weaker bearings. Symptoms: 20–30% lower thrust per W than datasheet; rapid bearing failure. Buy from authorized dealers (T-Motor, GetFPV, RaceDayQuads, Drone Nerds).
- Hot motors after flight. Motor case > 90 °C after a 10-min flight = overloaded. Either prop is too large/aggressive (lower KV + smaller prop), or motor is sized too small. Test thrust-stand data before committing the build.
- EKF reject IMU. PX4 ekf2 logs “IMU rejected” messages — vibration exceeded threshold (typically 30 m/s² peak). Soft-mount FC harder; tune motor PWM frequency; check for prop dynamic imbalance.
- Inverted yaw command. Drone yaws opposite to commanded direction. Often a motor mix has CW/CCW pair reversed; verify per airframe schematic in QGC/Mission Planner.
- “Toilet bowl” in PositionHold with good GPS. Compass-vs-GPS heading mismatch (typically 10–30° offset) confuses position estimator. Run in-flight magnetometer calibration; check for magnetic interference near compass (steel screws, wires near coil).
- Sudden altitude drop on yaw command. “Yaw-induced thrust drop” — aggressive yaw command depletes vertical thrust as the mixer subtracts thrust from two motors to generate yaw torque. Fix: tune
MC_YAW_RATE_MAXlower (PX4) or set “Yaw priority” lower in mixer; alternative is to use thrust normalization which raises collective to compensate. - Vortex ring state (VRS) during steep descent. Drone falls uncontrollably during fast vertical descent (V_desc > 0.5 · v_induced ≈ 3–4 m/s for typical consumer drones). Lift collapses; full throttle does nothing. Recovery: cyclic input to translate laterally out of the descending wake column. PX4 limits descent rate by default to prevent VRS entry.
- Antenna polarization mismatch. Linear-polarized RC antenna on the drone but circular-polarized on the controller (or vice versa) loses 3 dB of link budget; range drops ~30%. Both ends should be same polarization (typically RHCP for ELRS / Crossfire long-range).
- Cold weather flight time collapse. LiPo internal resistance rises sharply below 10 °C; usable capacity drops 20–40%. Mitigation: pre-warm battery in pocket / battery warmer; reduce expected flight time accordingly. LiHV is slightly worse; Li-ion 21700 is best in cold.
- Heat-soaked motors after summer flight. Motor exit temperature > 100 °C with summer ambient + dark frame absorbs sun. Magnets begin irreversible demagnetization at 80 °C (N42), 120 °C (N48UH). Symptom over multiple flights: drone “feels heavier” — same throttle position produces less thrust. Use N48EH or higher-temp magnet grade for hot-climate drones.
- GPS reflection / multipath in urban canyon. Position jumps 2–10 m sideways in cities; vehicle “lurches.” Use RTK (1 cm accuracy + integer ambiguity check filters multipath), or VIO if a companion compute is available, or fly at higher altitude (rooftops + above).
- WiFi / 2.4 GHz interference. RC link on 2.4 GHz competes with WiFi, Bluetooth, microwave ovens. Symptoms: intermittent dropouts, “RC lost” failsafes. Use ExpressLRS / Crossfire on 915 MHz or 868 MHz; or DJI O3/O4 on dual-frequency (2.4 + 5.8); or fly away from urban WiFi noise.
- IMU saturation during crash recovery. A drone that recovers from a near-crash with aggressive maneuver can saturate the gyro (typical MEMS gyro range: ±2000 °/s); the EKF receives clipped measurements and predicts wrong attitude. Some FCs (Pixhawk with ICM-42688-P) offer ±4000 °/s range for aggressive flight. Configure
IMU_GYRO_RATEMAXaccordingly.
8. Case studies
PX4 Autopilot stack — open-source flight controller (2008–present)
PX4 originated at ETH Zurich (Lorenz Meier et al.) and is now the de facto open-source autopilot for research, Skydio, Auterion, Yuneec, and a long tail of enterprise / defense vehicles. Architecture: a uORB / DDS message bus runs on a real-time NuttX RTOS (with Linux on companion); cascaded PID for rate / attitude / position; 24-state EKF2 (ekf2 module) fuses IMU + GPS + magnetometer + baro + airspeed + flow + VIO at 250 Hz on STM32H743 (Pixhawk 6X). The rate loop runs at 1 kHz; attitude at 250 Hz; position at 50 Hz. Motor commands via DShot300/600 (Multi), AUX PWM (servos), or DroneCAN. Mavlink telemetry to QGroundControl. As of v1.14 (Q1 2024), PX4 supports INDI rate control, gain scheduling, and offboard control via XRCE-DDS for ROS 2 integration. The reference hardware is the Pixhawk 6X with triple-redundant IMUs (ICM-42688-P, ICM-20649, BMI088) and dual MS5611 barometers — the kind of triplex redundancy used in eVTOL certification.
Mellinger & Kumar minimum-snap quadrotor (ICRA 2011)
The single most-cited paper in modern quadrotor control. Mellinger (PhD with Vijay Kumar at U Penn GRASP Lab) demonstrated that quadrotor dynamics are differentially flat with flat outputs (x, y, z, ψ), then exploited this to plan minimum-snap polynomial trajectories — 7th-degree polynomials minimizing the integral of squared 4th derivative (jerk-rate, “snap”) — which guarantee the trajectory is feasible by the underactuated quadrotor. The paper’s video shows the U Penn lab flying through a vertical slit, balancing an inverted pendulum on a quad, and looping at 1500 °/s. Every aggressive quadrotor flight you have seen since 2011 — Robotic Engineering at MIT, Yang Tianyu at HKUST, the Crazyflie at ETH — uses some descendant of this method. The trajectory-generation cousin lives at [[Robotics/trajectory-generation]].
Skydio X10 — fully autonomous AI drone (2023+)
Skydio is the canonical example of “vision-only” autonomy on a multirotor. The X10 (and predecessor X10D for defense) uses 6 IMX cameras in a 360° array running on an Nvidia Tegra Orin SoC with PX4 on a Pixhawk-derivative side-processor for low-level control. The vision pipeline does dense depth estimation, semantic segmentation, ego-motion VIO, obstacle map building, and path-planning at ~30 Hz. PX4 runs the rate / attitude / position cascade and accepts trajectory commands over MAVLink offboard from the Tegra. No lidar; no radar; no GPS dependency (though GPS aids when available). The X10D is Blue UAS (DoD-approved, NDAA Section 848 compliant) and deployed with US Army, Marines, police SWAT, and emergency response. Notable: Skydio’s product moat is the dataset (millions of hours of flight) and the perception model, not the airframe — the airframe is a fairly conventional carbon-fiber quad.
ArduPilot ArduCopter on Cube Orange — heavy-lift agriculture (2018–present)
ArduPilot (originally APM, started 2007 by Jordi Muñoz and Chris Anderson) is the most widely-deployed autopilot in the world — by some estimates running on > 1 million vehicles. ArduCopter is the multirotor flavour; runs on the same Pixhawk-family hardware as PX4 (Cube Orange / Black, mRo, CUAV X7) but with a different software architecture: monolithic threaded scheduler on ChibiOS (vs PX4’s NuttX + uORB). The 24-state EKF3 is similar in capability to PX4 ekf2 but with different parameterization. ArduCopter is dominant in the agricultural sprayer market (XAG, DJI Agras competitors), heavy-lift mapping (custom hexes / octos), and research labs that value GCS depth (Mission Planner / MAVProxy expose far more parameters than QGroundControl). Tuning workflow: AutoTune mode flies the drone through automated sweep maneuvers and identifies gains in ~3 minutes. Compared with PX4: ArduPilot has more breadth (more vehicle types, more sensors, more legacy hardware support); PX4 has more depth (better ekf2 in dynamic flight, better trajectory generation, more rigorous DDS integration). Both are BSD-3 / GPL-licensed and actively developed in 2026.
Crazyflie 2.1 — research nanocopter platform (Bitcraze, 2014–present)
The Crazyflie is a 27 g open-source / open-hardware nanocopter from Bitcraze AB (Sweden), built around an STM32F405 + nRF51 radio and a Bosch BMI088 IMU. Despite its size, it has become the dominant research-platform for swarm robotics, control-theory classes, and indoor autonomy demos (MIT, ETH, Caltech, Carnegie Mellon, KTH). The trick is the Lighthouse positioning system (HTC Vive base stations) which provides millimeter-precision indoor pose without external markers. A typical research lab will fly 20–50 Crazyflies simultaneously at 100 Hz with centralized off-board control (a single Linux host running ROS 2 or custom Python). The whole stack — firmware, schematics, PCB Gerbers, mechanical CAD — is on GitHub under the MIT/BSD licenses. Notable derivatives: Bitcraze Lighthouse, Crazyflie Bolt (larger, brushless), and the ETH Zurich-modified Crazyflie used in Mueller/D’Andrea’s aggressive trajectory work.
Volocopter / Joby / Archer — eVTOL passenger aircraft (2018–2027+)
The “third wave” of multirotor design: passenger-carrying eVTOLs. Volocopter VoloCity (Germany) uses 18 fixed-pitch rotors in a halo above a 2-pax cabin — a literal “really big multirotor” with no transition to forward flight, max speed 110 km/h, range 35 km. Joby S4 (US) uses 6 tilting rotors that rotate from vertical (hover) to horizontal (cruise) on tilt-wing-style nacelles — much more efficient cruise (200 mph, 150 mi range) but mechanically complex. Archer Midnight (US) uses 12 rotors, 6 fixed-vertical + 6 tilting, for a “lift + cruise” hybrid. EHang EH216 (China) uses 16 fixed rotors and is autonomous-only — already type-certified by CAAC China for commercial pax operations (2023). The certification regime is EASA SC-VTOL-01 and FAA Special Class (G-1 certification basis), with first US commercial passenger operations expected 2025–2027. Critical engineering insight: the redundancy budget is enormous compared to consumer drones — Joby’s 6 rotors mean any 1 failure is recoverable, any 2 with degraded performance; full FAA certification requires demonstrating any-single-failure does not result in catastrophic loss (FAR 23.2510 equivalent).
DJI Phantom → Mavic evolution (2013–2026)
The Phantom 1 (2013) was a quadcopter without GPS hold or obstacle avoidance — a milestone only because of GoPro mounting. Phantom 4 (2016) added forward-facing stereo obstacle detection, ActiveTrack, and TapFly. Mavic 1 (2016) introduced folding arms — the design language all consumer drones adopted. Mavic 2 (2018) added omnidirectional obstacle sensing (10 cameras + IR + ultrasonic). Mavic 3 (2021) → 3 Pro (2023) added a 4/3 Hasselblad CMOS, ProRes recording, 43-minute flight time, OcuSync 3+ (15 km HD video link). Mavic 3 Pro Cine adds the same in ProRes RAW. The underlying autopilot is DJI’s closed-source stack (descended from the Wookong-M and A2 of the 2014 era); it uses a similar cascaded-PID architecture with proprietary EKF on a custom SoC. The Mavic ecosystem is closed (no MAVLink, no MSP, no open API beyond limited Mobile SDK), which is exactly why every defense customer specifies not DJI (NDAA Section 848 / Blue UAS).
Debugging flowchart — “drone flips on takeoff”
- Verify each motor spin direction matches the airframe schematic (props off; bench test from QGC / Mission Planner / Betaflight Configurator).
- Verify prop CW/CCW matches motor direction. A reversed prop produces downward thrust at full RPM = guaranteed flip.
- Verify motor numbering matches firmware airframe (PX4
SYS_AUTOSTART = 4001for generic quad-X). Wrong autostart = wrong mixer = wrong outputs. - Check accelerometer / gyro calibration. Open QGC sensors view; the drone level on bench should show < 0.1 rad/s gyro and gravity-only accelerometer.
- Re-do “Level Horizon” calibration on a true level surface.
- Sanity check: tilt the drone by hand and observe attitude HUD. If pitch shows roll or roll shows pitch, IMU orientation is wrong (parameter
SENS_BOARD_ROTin PX4).
Debugging flowchart — “drone won’t arm”
- Read the on-screen pre-arm reason in QGC (PX4) or Mission Planner (ArduPilot). 90% of cases have an explicit reason.
- GPS HDOP > 2.0 → wait for more satellites; relocate antenna.
- Compass disagree → recalibrate; check for steel near compass.
- Battery voltage < 3.6 V/cell → charge.
- EKF not ready → wait 30–60 s after boot for filter to converge.
- RC link not detected → check receiver bind status, antenna routing.
- ESC not detected (DShot bi-directional) → power-cycle, verify ESC firmware version.
- Safety switch not pressed (Pixhawk) → press the switch.
9. Cross-references
[[Robotics/motors-electric]]— BLDC theory and FOC; the propulsion ESC inverter is a three-phase BLDC controller at heart.[[Robotics/sensors-pose-motion]]— IMU, GPS, barometer, magnetometer; the sensor inputs to ekf2.[[Robotics/sensors-perception]]— cameras, lidar, depth sensors; obstacle avoidance inputs.[[Robotics/sensors-force-tactile]]— minor in drones; relevant for landing-gear ground contact sensing in eVTOL.[[Robotics/pid-control]]— cascaded PID, quaternion attitude PID, anti-windup; the core control law.[[Robotics/state-space-lqr]]— alternative attitude / rate controller; research multirotor.[[Robotics/bayesian-estimation]]— EKF / UKF; PX4 ekf2 derivation.[[Robotics/slam]]— VIO and SLAM for GPS-denied navigation (Skydio, indoor drones).[[Robotics/computer-vision-robotics]]— depth estimation, object detection (Skydio AI obstacle avoid).[[Robotics/path-planning]]— global planner above trajectory generation.[[Robotics/trajectory-generation]]— minimum-snap and time-optimal polynomial trajectories for the underactuated quad.[[Robotics/impedance-control]]— aerial manipulation (drone + arm interaction with environment).[[Robotics/manipulator-design]]— flying-arm hybrids (PRISMA Lab, ETH).[[Engineering/aerodynamics]]— rotor aerodynamics, induced velocity, BEMT, compressibility.[[Engineering/propulsion]]— electric propulsion sizing, motor-prop matching.[[Engineering/power-electronics]]— three-phase inverter design (the ESC).[[Engineering/realtime-embedded]]— STM32 firmware, NuttX, ChibiOS, deterministic scheduling.[[Engineering/electric-motors]]— BLDC theoretical foundation.[[Languages/Tier3/robotics-control]]— ROS 2, URDF, MAVSDK, micro-XRCE-DDS interop.
10. Citations
- Mellinger, D., and Kumar, V. “Minimum Snap Trajectory Generation and Control for Quadrotors.” ICRA 2011, pp. 2520–2525. DOI 10.1109/ICRA.2011.5980409. The canonical differential-flatness + minimum-snap paper.
- Lupashin, S., Schöllig, A., Sherback, M., and D’Andrea, R. “A simple learning strategy for high-speed quadrocopter multi-flips.” ICRA 2010. The original iterative-learning aggressive maneuver paper.
- Mahony, R., Hamel, T., and Pflimlin, J.-M. “Nonlinear Complementary Filters on the Special Orthogonal Group.” IEEE Transactions on Automatic Control 53(5):1203–1218, 2008. DOI 10.1109/TAC.2008.923738. The Mahony filter — used by Betaflight and many low-cost flight stacks.
- Madgwick, S. O. H. “An efficient orientation filter for inertial and inertial/magnetic sensor arrays.” Technical report, University of Bristol, 2010. The Madgwick filter, sibling to Mahony, also widely used.
- Falanga, D., Foehn, P., Lu, P., and Scaramuzza, D. “PAMPC: Perception-Aware Model Predictive Control for Quadrotors.” IROS 2018. arXiv:1804.04811. MPC with perception term in the cost.
- Foehn, P., Romero, A., and Scaramuzza, D. “Time-Optimal Planning for Quadrotor Waypoint Flight.” Science Robotics 6(56), 2021. Time-optimal at the actuator limit.
- Furrer, F., Burri, M., Achtelik, M., and Siegwart, R. “RotorS — A Modular Gazebo MAV Simulator Framework.” ROS: The Complete Reference (Volume 1), Springer, 2016. The reference simulator before PX4 SITL matured.
- Bouabdallah, S., and Siegwart, R. “Full Control of a Quadrotor.” IROS 2007. Early backstepping + integral controller for quadrotors.
- Qin, T., Li, P., and Shen, S. “VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator.” IEEE Transactions on Robotics 34(4):1004–1020, 2018. DOI 10.1109/TRO.2018.2853729. The canonical VIO for drones.
- Sun, S., Cuypers, R., Vlaar, M., et al. “Comparative Study of Nonlinear MPC and Differential-Flatness-Based Control for Quadrotor Agile Flight.” IEEE Transactions on Robotics, 2022.
- PX4 Autopilot User Guide and Developer Guide, https://docs.px4.io — accessed 2026-05-14.
- ArduPilot documentation, https://ardupilot.org/copter/ — accessed 2026-05-14.
- Betaflight wiki, https://github.com/betaflight/betaflight/wiki — accessed 2026-05-14.
- Holybro Pixhawk 6X technical reference, https://docs.holybro.com/autopilot/pixhawk-6x — rev 2024.
- Hex Cube Orange+ user manual, ProfiCNC / Hex Aero, 2023.
- ModalAI VOXL2 datasheet and developer guide, https://docs.modalai.com — rev 2025.
- T-Motor MN / F / AT series datasheets, https://store.tmotor.com — 2024–2025.
- DJI Mavic 3 Pro, Mini 4 Pro, Matrice 350 RTK, Inspire 3 product specifications, https://www.dji.com/ — accessed 2026-05-14.
- Skydio X10 / X10D product brief, https://www.skydio.com/x10 — accessed 2026-05-14.
- Joby Aviation S4 technical specifications and FAA certification updates, https://www.jobyaviation.com — 2025–2026.
- Archer Aviation Midnight technical brief, https://archer.com — 2025.
- 14 CFR Part 107 — Small Unmanned Aircraft Systems, US FAA, current as of 2026-Q2.
- EASA SC-VTOL-01 — Special Condition for Small-Category VTOL Aircraft, EASA, current rev 2024.
- NDAA Section 848 — Restrictions on Department of Defense use of foreign-sourced UAS; DoD Blue UAS list, https://www.diu.mil/blue-uas — accessed 2026-05-14.
- ASTM F3322-22 — Standard Specification for sUAS Parachutes (for over-people ops).
- BLHeli_32 firmware repository, https://github.com/bitdump/BLHeli — archived; succeeded by AM32 (https://github.com/AlkaMotors/AM32-MultiRotor-ESC-firmware) and Bluejay.
- ExpressLRS project, https://www.expresslrs.org — open-source 2.4 GHz / 915 MHz long-range RC link.
- Cyphal/CAN (DroneCAN) specification, https://opencyphal.org — successor to UAVCAN v0.
- MAVLink protocol specification, https://mavlink.io — accessed 2026-05-14.
- Lee, T., Leok, M., and McClamroch, N. H. “Geometric tracking control of a quadrotor UAV on SE(3).” IEEE CDC 2010, pp. 5420–5425. DOI 10.1109/CDC.2010.5717652. The “geometric controller” widely used in research.
- Hoffmann, G. M., Huang, H., Waslander, S. L., and Tomlin, C. J. “Quadrotor Helicopter Flight Dynamics and Control: Theory and Experiment.” AIAA GNC 2007. The Stanford STARMAC paper.
- Mueller, M. W., Hehn, M., and D’Andrea, R. “A Computationally Efficient Motion Primitive for Quadrocopter Trajectory Generation.” IEEE Transactions on Robotics 31(6):1294–1310, 2015. The Hehn/D’Andrea ETH agile-flight trajectory work.
- Loianno, G., Brunner, C., McGrath, G., and Kumar, V. “Estimation, Control, and Planning for Aggressive Flight With a Small Quadrotor With a Single Camera and IMU.” IEEE Robotics and Automation Letters 2(2):404–411, 2017. Visual-inertial aggressive flight on Crazyflie-class hardware.
- Sun, Y., Khan, M. T., Kassam, K., Banerjee, A., et al. “Performance Comparison of Cascaded PID vs INDI Control on the BebopX Quadrotor.” AIAA SciTech 2019.
- Bouabdallah, S., Murrieri, P., and Siegwart, R. “Design and control of an indoor micro quadrotor.” ICRA 2004. Early micro-quad design paper.
- Hamel, T., Mahony, R., Lozano, R., and Ostrowski, J. “Dynamic Modelling and Configuration Stabilization for an X4-Flyer.” IFAC 2002. Early quadrotor model and Lyapunov-based stabilization.
- Foehn, P., Brescianini, D., Müller, M., Steiner, J., Romero, A., and Scaramuzza, D. “Agilicious: Open-source and open-hardware agile quadrotor for vision-based flight.” Science Robotics 7(67), 2022. DOI 10.1126/scirobotics.abl6259. The current research agile-flight reference platform.
- Sun, S., Sijbers, L., Wang, X., and de Visser, C. “High-Speed Flight of Quadrotor Despite Loss of Single Rotor.” IEEE RAL 3(4):3201–3207, 2018. DOI 10.1109/LRA.2018.2851596. Motor-loss recovery for quadrotor (degraded but flying).
- Mellinger, D., Michael, N., and Kumar, V. “Trajectory generation and control for precise aggressive maneuvers with quadrotors.” International Journal of Robotics Research 31(5):664–674, 2012.
- Brescianini, D., and D’Andrea, R. “Tilt-Prioritized Quadrocopter Attitude Control.” IEEE Transactions on Control Systems Technology 28(2):376–387, 2018. The “thrust priority” attitude controller used in PX4.
- Mahony, R., Kumar, V., and Corke, P. “Multirotor Aerial Vehicles: Modeling, Estimation, and Control of Quadrotor.” IEEE Robotics & Automation Magazine 19(3):20–32, 2012. The canonical RAM tutorial.
- Hehn, M., and D’Andrea, R. “Real-time trajectory generation for quadrocopters.” IEEE Transactions on Robotics 31(4):877–892, 2015.
- Quan, Q. Introduction to Multicopter Design and Control. Springer, 2017. ISBN 978-9811033810. Textbook treatment of the entire stack.
- Beard, R. W., and McLain, T. W. Small Unmanned Aircraft: Theory and Practice. Princeton University Press, 2012. ISBN 978-0691149219. Includes fixed-wing as well as multirotor.
- Kuantama, E., et al. Multirotor Aerial Vehicles: Modeling, Estimation, Control, and Aerodynamics. Springer, 2024.
- ASTM F3411-22a — Remote ID for UAS, Standard Specification.
- ASTM F3478-20 — Standard Practice for Development of Maintenance Manual for UAS.
- 14 CFR Part 89 — Remote ID rule, US FAA, effective 2023-09-16.
- EU Regulation 2019/947 — Common Rules in the field of civil aviation for unmanned aircraft (Open / Specific / Certified categories).
- FAA Part 108 (proposed, 2025) — Beyond Visual Line of Sight (BVLOS) operations framework.
- Battery datasheets: Tattu R-Line v5 (4S/6S series, 2024), Molicel P42A (Li-ion 21700, 2023), Samsung INR21700-40T.
- T-Motor F60 Pro V, MN5008 KV170, AT4120, MN2806 datasheets (2024).
- Holybro Kakute H7 V2, Tekko32 F4 65A ESC, Pixhawk 6X datasheets, rev 2024.