Having spent a couple of weeks playing with ROS on and off and getting robot vision, speech and a couple of other robot basics working a basic thought struck me.
Why don’t I look at the basic robots provided by ROS and see if it’s easier to reverse engineer them?
This probably should have struck me earlier, but I’d got involved with getting face detection working and was really quite enjoying it.
It turns out that the ROS Turtlebot used in the basic tutorials, has a physical counter part, also call turtlebot and is (will soon be in Europe) for sale. This platform is based on the iRobot Roomba (500 series?) vacuum cleaners.
Now I also don’t have a Roomba, and I’m not going to spend (well let’s face it, the wife wouldn’t sign it off) £200 odd on a robotic vacuum cleaner to then hack it apart for an experiment.
However the Roomba and Create both use Open Interface which handily has a pdf Protocol Document available. I did a bit of searching online, and could find a few Arduino based libraries to control Roombas, but not to emulate them.
So off I went and wrote this Open Interface Arduino Library.
Today it is a pretty complete implementation, it handles communication with a controller that thinks it’s talking to a iRobot device using callbacks to allow a developer to handle the driving, song playing and sensor interaction in their own way.
Now I’m not a C++ coder by any standard, so if someone would like to comment/code review/tear to shreds, please do so. I won’t be offended (much).