I set the Roomba about a mission to clean the floors and it kept getting stuck humping the edge of the bathroom scale. Kinda silly, counterproductive, and it left tire marks on the floor.

After I noticed this, I thought of something…
The Roomba has a nice multitude of sensors that regulate its operation, but it can deal with failures on some of them by determining their data is bad and ignoring them. For instance, this …
This is the front caster. Notice how it’s half black and half, well, sort of white?
An infrared LED and phototransistor sit above it and count its rotations.
Sorry I didn’t get a before pic, as if you needed to see a hair clogged axle that badly, but yeah…
Here’s what it looks like disassembled and cleaned out. It had hair wrapped in it and it couldn’t spin. It can be easily pried up from an end and the axle pressed out.
Now it spins freely.
So what was up with the bathroom scale and floor? The Roomba was hitting the edge and just starting to lift off the floor – the wheels were losing traction, but still both rotating, and the jammed caster with rotation sensor was being ignored by the firmware.
Thus, the system thought it was just rolling across empty floor.
So does it work now? Just after cleaning the caster and resetting the CPU, I restarted the cycle. Upon getting jammed in the laces of my boot, the Roomba promptly stopped and asked for assistance.
The underlying concept that’s valuable to see here is: garbage in, garbage out. When looking at any system, consider the fact that an assembly within will only work as well as its input. Verify correct input signals before you start chasing your tail forever.
And from now on, I’m putting away the scale before starting the Roomba. Well, it can’t dust under it anyway.