Fixed-wing world model (5.5k parameters)

A small learned world model of a fixed-wing plane: given the last half second of what the aircraft felt and did, it predicts how it will fly under any sequence of future commands (throttle, aileron, elevator, rudder). It knows nothing about tasks. A sampling planner (MPPI) imagines a few hundred two-second futures with it every 50 ms, and each mission (orbit, waypoints, formation with quadrotors) is written as costs on those futures.

  • 5,526 learned parameters. A 6-DoF flight-dynamics backbone (Beard & McLain; Aerosonde coefficients on a 1.5 kg, 1.4 m trainer) does the physics. A GRU (24) reads 0.5 s of history and infers what the nominal physics cannot know: this airframe's mass and aerodynamics, the motor, the wind, the servo and motor lags. A 32 x 32 head adds residual linear and angular accelerations at each step. Untrained, it is exactly the physics.
  • Task-free. Trained on 1000 flights (8.3 h) of randomized airframes in wind, flown by an autopilot on random references. Half the flights carry step-wise, MPPI-like probing: the planner's jerky candidates are exactly where a model trained on smooth flight is wrongly optimistic.
  • Trained on a laptop CPU in 18 minutes.

By Edgar Moreau · huggingface.co/Ethgar

Try it

pip install torch numpy pyyaml
python example.py

fixed_wing/ holds everything it needs: dynamics.py (the batched 6-DoF backbone), learned.py (the correction and LearnedFixedWing.rollout(state_hist, action_hist, future_actions) -> (S, T, 18)), airframe.yaml.

How good

On 100 held-out flights (randomized airframes in wind), median error:

physics alone this model (5.5k) the 32k version
position at 1 s 0.85 m 0.48 m 0.42 m
position at 2 s 2.60 m 1.73 m 1.62 m
velocity at 1 s 1.39 m/s 0.94 m/s 0.86 m/s
attitude at 2 s, jerky probing 9.1 deg 8.5 deg 9.2 deg

In closed loop it matters more. MPPI orbits a 40 m circle on a randomized airframe in wind, measured as radial RMS over two seeds:

planner model seed 0 seed 1
physics alone 0.80 m 0.54 m
32k version 0.25 m 0.24 m
this model 0.26 m 0.24 m

It gives up ~6 % on open-loop position against the 32k version and flies identically: the backbone carries the dynamics, the network only the correction.

Interaction: a quadrotor lands on it

Watch: a quad lands on the plane in flight. The plane holds a steady 14 m/s leg on this model while a 0.55 kg quadrotor, flying its own world model, reads the plane's planned future, matches its speed and docks on its back (21.3 s, 14 cm from the pad, 0.41 m/s relative). Carried, the plane holds its altitude within ±0.16 m. Two world models sharing what they imagine.

Limits

  • The airframe's mass, inertia and propulsion are plausible guesses, not a measured build.
  • A load landing off-centre (a quadrotor docking on the wing) is outside its data: it takes the first seconds better than physics, then drifts (1.37 m settled error with 0.55 kg aboard). Landings in the data are the next step.
  • Simulation only.

The idea

The SkyJEPA recipe (Rao et al., 2026: a tiny latent world model of a quadrotor, physics-informed, flown by MPPI) carried to another vehicle. Learn each machine once, without tasks; then a task is only a cost function. Same family: quadrotor, cable robot.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading

Dataset used to train Ethgar/fixed-wing-world-model

Spaces using Ethgar/fixed-wing-world-model 2

Collection including Ethgar/fixed-wing-world-model