Monday, October 17, 2011

Testing the Turtlebot

I recently received a Turtlebot to test out.  This is based on the iRobot Create, and like my main robot also uses ROS and a Kinect RGBD sensor.  It's construction is fairly simple, and I found that it takes more time to remove the packaging than it does to put together.  There were no obvious instructions included, although there is a Turtlebot web site with some downloadable assembly details.

One thing that I hadn't noticed previously is that the Turtlebot is also an open hardware design:
"Open source hardware is hardware whose design is made publicly available so that anyone can study, modify, distribute, make, and sell the design or hardware based on that design."

So in principle you could make and sell these, or produce derivative variants based upon a similar design.  Bilibot is another comparable iRobot Create oriented design, although as far as I know that's not open hardware.


The assembly consists of four shelves held together by metal struts and screws.  As a framework it's quite sturdy, and doesn't wobble or distort if you try applying some sideways force, so this may be suitable for carrying objects such as cups or plates.

I had no previous experience with the iRobot Create, but I was an early adopter of the Roomba cleaner.  My first generation Roomba is now quite aged and out of service, having endured years of tireless service.  The Create is really just a Roomba, but with the cleaning gadgetry removed such that there is an empty space in the trailing section within which alternative electronics could be stowed.

There's a socket which looks like an old parallel printer port into which a separate circuit board is connected, which provides power to the Kinect sensor and (I think) exposes some digital I/O.

Software Installation

The USB drive suppled is 4GB in size, and seems to be exclusively for the purposes of installing a modified version of Ubuntu to the netbook hard drive.  Just to be awkward I chose to eschew any hard drive installations and stick to keeping everything on a USB drive containing a liveCD install.  From experience with my other robot I knew that 4GB wasn't large enough for ROS, but I had an old 8GB Sandisk USB drive not in use which has just about enough capacity to install the Turtlebot related parts of ROS.

One problem that I came across while installing the software was that it looks as if there are missing components for the i386 architecture version of ROS Electric, so I reverted to a diamondback installation instead.  Why use i386?  Well, it just so happens that I have an ISO for Ubuntu 11.04/i386 already downloaded, and that architecture is highly likely to work on all of my currently running computers.  So for instance I could pull out the USB drive from the Turtlebot, plug it into my laptop and boot from it for testing purposes even though my laptop doesn't support 64bit processing.  The near universal functionality of a liveCD installation on a USB drive, together with it's low power consumption and near indestructibility are attractive attributes.

One note of caution is that installing and using the software does to some extent assume a familiarity with Linux.  This might be off-putting to Windows using hobbyists who have never previously encountered Linux, but I expect that the majority of people interested in this sort of robotics will already be technical types who are accustomed to a variety of modern operating systems and their use.  There is quite a lot of help available on the ROS wiki and also on the answers site.  So in summary this might not be the best Christmas gift if the receiver is someone who just expects it to switch on and do something interesting immediately, like a Roomba or a WoWee robot, without some technical software effort being required.

Another problem which I came across was that if you're installing the OS from scratch without using the pre-built Turtlebot ISO image then the turtlebot service described in the bringup tutorial doesn't exist.  This flummoxed me for a while, but after asking questions it seems that you can just use roslaunch to run the appropriate demos.

Some observations on design

From trying some demo programs, such as teleop and follower, some design limitations become apparent.  Switching on the Create base involves pressing the power button on its upper surface towards the centre (you can see it in the picture above).  However, with the Turtlebot fully assembled this is quite a fiddly operation.  Also powering on the netbook is of course a very manual operation involving removing it from the robot and opening it up.  Ideally there would be a way of powering on the robot without a lot of awkward fiddling about.  For a hobby or research robot this is probably just about acceptable, but if you wanted to turn the Turtlebot into a workhorse platform then I think the power buttons would need to be exposed in a more convenient location.

Another design limitation is common to all Roomba form factors.  The Roomba has very little ground clearance.  Measuring it it's about 10mm.  This means that on occasion it has a habit of getting stuck on transitions between carpets.  While this doesn't happen all of the time it does happen some of the time, especially with thicker carpets.  This may be a minor point, or it may be a non-issue if all of your floors are perfectly flat, but it's always the small percentage of failures which are the gotcha in any engineering endeavor.  For a cleaning robot there will always be a trade-off between the ground clearance and the brushing efficiency.

The power button fiddlyness probably can be resolved with a certain amount of hacking.  For anyone buying a Turtlebot I'd suggest that instead of using a high end netbook you use a mini-ITX board, as I did with the GROK2 robot.  I used an Intel D525MW Atom board, and this means that you can connect up an external momentary switch which can then be mounted in some convenient location on the robot.  Just make sure that the board has at least three USB sockets and that it fulfills the minimum processing/memory specification recommended by Willow Garage, which is at least dual core and about 2GB of RAM.  The mini-ITX route is also cheaper, even including the memory and power adapter, although the cost equation will no doubt change over time as low end netbooks become more powerful.

A good aspect of the Turtlebot's design is the way that the Kinect sensor is relatively protected by the top shelf, and that the top shelf potentially acts as a surface for transporting objects.  On my larger robot, and also on other robots such as Bilibot, the sensor is far more exposed and could be damaged more easily.

A demo

The following behavior is certainly the most fun demo to run.  It works pretty well and manages to follow me from one room to another fairly reliably at a slow walking pace.

This behavior probably could be improved by initiating a search for new people to follow if it comes up against a flat surface (a wall).  There are some existing functions within the point cloud library for detecting planar surfaces.  Alternatively it could search based upon a simple timeout (rotates, waits to observe any nearby motion, then follows).


Turtlebot ticks many of the boxes which robot hobbyists have been waiting for.  It's sufficiently low cost to be within the bounds of sanity.  It's based upon a PC, so that people who previously were not robotics developers can transition to becoming so with minimal relearning of new languages or software tools.  It's sensing is of sufficiently high resolution for there to be interesting possibilities (this was the main barrier for a very long time).  And also the open source nature of ROS means that conventional development methodology can be applied such that you can stand on the shoulders of giants and not have to reinvent the wheel all the time.

Obviously the Turtlebot isn't the last word in hobby robotics.  There's still a long way to go.  But it is a kind of transition point moving beyond the limited sensing capabilities and pure teleoperation of the past, with the potential for increasingly autonomous navigation and learning behavior in a way which is cognitively more sophisticated than your typical Roomba.

No comments: