I set up beagaroo to be controllable with my TI EZ430-Chronos development kit (ahem watch). The watch has accelerometers whose data can be transmitted to a wireless access point. The data can be read out from the access point as if you were reading over a serial port.
I also multi-threaded my program such that the thread writing wheel-speeds to the Roomba actually smooths out its output. This is done such that the difference between the set and requested speed halves on each iteration. I don’t need a feedback loop like PID because that’s already built into the Roomba. The Roomba does allow you to make dramatic changes to the inputs that can harm the motors and mechanics. The smoothing ensures this doesn’t happen.
The manual control with the watch was also a test of this algorithm. There are delays between my actions and Roomba’s movements. So there might still be some fine-tuning to be done with the smoothing.
So here’s a video of all this in motion: