Rover firmware flashed and bench-validated
Before a robot moves under its own power, I want the layer closest to the motors to be boring and predictable. So the firmware came first, and the rule is simple: it doesn’t leave the bench until it passes its tests.
This session got the motor-controller firmware flashed and validated on the bench. Drive commands, the emergency-stop path, and the sensor reads all run against a test suite before any of it touches the floor. The bug worth remembering was a control-loop stall that only turned up once I added a sensor to the schedule - the kind of thing that would be miserable to chase with the rover loose in a room, and trivial to catch on the bench.
Next up is driving in a straight line under closed-loop control. That’s the first time the safety layer and the motors have to agree on what “stop” means.