Original URL: http://www.theregister.co.uk/2006/06/16/hack_vac/
Hacking your vacuum cleaner
Turn a Roomba into, well, anything
What's the difference between a dishwasher and a robot that washes dishes? Pay enough for your dishwasher and it will use fuzzy logic to decide how much water to use given the number of plates you put in.
iRobot CEO Colin Angle agrees that's robotic technology, but he wants more.
"The right thing to happen with my dishes is that a robot takes them from the table, cleans them and puts them away. That's not something a robotic dishwasher could do - although it might use a robotic dishwasher."
His definition of a robot is a machine with sensors to perceive its environment, that thinks about what it perceives and performs some kind of physical action in response to that decision making. Getting the job done - for Roomba and Scooba, iRobot's vaccuming and floor-scrubbing robots, and the Packbots the US army uses to defuse bombs in Iraq - usually involves moving around. Angle calls his robots "inherently interactive".
You can make a Roomba even more interactive: iRobot has released the documentation  for the Roomba SCI serial protocol, which lets you control the motors, LEDs and speakers, or get data from the various sensors. You can add to the existing behaviours (vacuuming, finding the dirtiest spots on the floor, not falling down stairs, backing away from obstructions and calling for help if it gets stuck) or tell it to do something completely different.
The hackers at Make magazine dressed a Roomba in green and played Frogger with it in traffic. We've already seen the first Roomba cockfights. Hopefully, there will be some more productive uses as well; you could get a report on whether the dirtiest spot on the floor is always in the same place, experiment with new algorithms for how the Roomba gets round the room, or fit it with a webcam and use it as a security system that cleans the floor at the same time.
You'll need a serial port connector for the Mini DIN port; RoombaDevTools  (has the Bluetooth-connecting RooTooth as well as USB and RS232 connectors. And you'll need software to connect to the serial port and send and receive binary data; RoombaDevTools has the simple SCI Tester software and there's a C# and VB.Net class library called RoombaFX  under development.
Other robotics systems may have better programming environments. Visual Studio Express can control LEGO MINDSTORMS and there will be open source firmware plus an SDK, a hardware development kit and a Bluetooth development kit for the new LEGO MINDSTORMS microprocessor, the NXT brick due in August. If you're after something much simpler and you have £195 spare, the Indium Smart  is a torch you can program via USB; cycle through strobe patterns and brightness levels, or have it flash out messages in Morse code.
But with the Roomba you've got a ready-built robot with built-in sensors and behaviours to work with. Plus, if you get fed up with hacking, it will still get the floor clean. ®