Click & Whirr needs a wider screen
Open it on a laptop or desktop (1280px or wider recommended). The Learn · Code · Watch workspace needs the room to breathe.
Lesson e2
The confident liar
Checkpoints · 0 of 2 (waiting for Run)
- Lock on before the first burst (waiting for Run)
- Hold through the bursts: judge the wild fixes (waiting for Run)
A confident, wrong fix
Your e1 Estimator is running, complete, in the editor. Slip on, heading corrected, belief locked. Press Run and watch it hold beautifully for about six seconds.
Then the yank. Real range sensors have a failure mode called multipath: the signal bounces off something (here, the workshop wall) and arrives late, having traveled a path that is not the straight line you assume. The readings are not noisy garbage you could average away; they are clean, confident fixes that happen to describe a world about 220 px away from the real one. Worse, the whole tower link glitches together, so tower A and tower B agree with each other about the lie. Your filter treats every fix like gospel, pulls hard, and your belief sprints toward a phantom. Three bursts per run, on a schedule.
- Lock on before the first burst (waiting for Run)
Judge the fix before you believe it
Hold through all three bursts
▸API reference
- Estimator(x, y, theta, gain=0.15, h_gain=0.1, ...)
- Your e1 filter, built at the true start pose. The gate you add is a ctor default too: edit it in the code and press Run to retune.
- update(v_left, v_right, range_a, bear_a, range_b, bear_b, dt)
- Same contract as e1. Most ticks the fixes are honest; during a burst BOTH towers coherently report a world about 220 px away. Nothing in the readings tells you which is which, and the towers agree with each other either way.
- the fixed scenario
- The loop drive and slip from e1, plus three scheduled multipath bursts (around 6 s, 10 s, and 14 s). Every run is identical; there is nothing to set.
- how you're graded
- Checkpoint 1 (locked) latches once the belief settles before the first burst; both versions manage that. Checkpoint 2 (steady) requires holding through all three bursts: trusting every fix gets yanked and fails, gating too hard starves every correction and the e1 drift returns.
space pause · r reset · ctrl/cmd+enter run