# W1 simulation videos

Every frame is a **simulated pose**. The animator steps the same physics
the verification gates use and draws the robot where the solver put it.
It does not animate the commanded shape along an assumed path - that
would look identical and prove nothing.

The distance readout in the corner of every frame is read from the
simulation state, not typed into a caption. So is every number below:
`animate.main()` writes this file from the runs it just produced.

| file | what it shows |
|---|---|
| `w1_travel_world.mp4` | fixed camera, 20 s of travel with the path drawn |
| `w1_isotropic.mp4` | the same run with the friction anisotropy switched off |
| `w1_drive_falsification.mp4` | **the important one.** Same gait, same 20 s, side by side: keels vs no anisotropy |
| `w1_gait_chase.mp4` | chase camera - the travelling wave, close up |
| `w1_obstacle_avoidance.mp4` | 3 obstacles on the robot's own path, avoidance closed-loop |
| `w1_come_when_called.mp4` | IR-beacon homing, beacon shown as the red marker |

## Why the falsification video is the one to watch

Lateral undulation on isotropic ground gets almost nowhere, so the claim
"this design crawls" is really the claim "the printed keel rails make the
floor anisotropic". The way to test that is to switch the anisotropy off
in simulation and see whether the travel collapses.

    keels              1096 mm in 20 s
    anisotropy off      241 mm in 20 s

Both panels are rendered at the **same fixed world scale**. That matters:
the camera originally auto-fitted to the path, which zooms in on a robot
that went nowhere and makes it look like a traveller. Two runs being
compared have to be drawn at one scale or the picture lies while every
number stays true.

The breadcrumb trail exists for the same reason. At a scale that fits
1.1 m of travel, a 412 mm robot is a speck, and a speck
that moved looks just like a speck that did not.

## What these videos do NOT show

- No robot has been built. This is simulation.
- **The floor is flat, rigid and frictionally uniform.** For a keel-driven
  machine that is a bigger idealisation than it was for a wheeled one: the
  rails work by sinking into carpet pile, and pile is neither uniform nor
  rigid. The mu values are estimates - see `spec.MEASURE_MU`.
- Servo lag is not modelled: the joints are assumed to track the
  commanded wave. At 42 deg and 0.70 Hz that needs 3.22 rad/s against a
  derated 3.67 rad/s, so it is inside the MG90S's rating with
  1.14x margin - but it is not free, and the gate that
  checks it (`servo_rate_and_travel`) did not exist until the keels forced it.
- The obstacle run is one layout. Measured across ten RANDOM fields the
  honest result is 310 body-obstacle contacts without avoidance and 0
  with, clearing 10/10 fields.
- Homing is 18/18 arrivals, median 41 s. The keeled machine is slower than
  the wheeled one was, so it takes longer to get there.
