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.
I’ve tested this with my own bot, which is based on aÂ 1984 Tomy/Tandy Omnibot/Robbie SnrÂ toy robot. I have it driving around controlled by theÂ ROS Turtlebot vanilla implementation, no problems at all
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).