(Yeah, I’m a bit late — the contest was over two weeks ago and I’m just now posting about it..)
Most of our customers know Info Support as a company that specializes in administrative applications, mostly web-based. Little do they know that when the day’s work is done, some of us switch to something rather different — such as building and programming fully autonomous robots!
The StarTel RoboChallenge is an annual contest held in Groningen, The Netherlands. The aim is for students, companies and individuals to build robots that compete against each other for fame and fortune. Unlike in such pathetic spectacles as Robot Wars, in which the devices are remote controlled by human operators, these robots need to be truly autonomous: once the referee starts the game, you push the “start” button and after that, all you can do is watch and pray..
A brief summary of the rules of the game: the robots are placed in an arena of 5 x 5 meters. In this arena, plastic balls in various colours hang suspended from the ceiling at heights ranging from 10 to 60 cm above the ground. The contest is divided into three different “missions”, each with its own rules about which balls to collect. The first mission is a qualification round, in which the robot’s objective is to collect at least 3 out of 8 yellow balls, while avoiding the green ones. In the second mission, two robots are placed in the arena at the same time, but each has its own colour of balls to collect. In the third and final mission, both robots compete for the same balls, with points being awarded based on their colour. The winner of the third mission is the winner of the competition, with points scored in the first two missions being used as tie-breakers.
Here’s our robot, called SeeSharp, after the programming language in which it was written and after the (intended) quality of our image recognition algorithms.
Almost all of the hardware work was done by Willem Jan, our excessively capable head system administrator, but yours truly also got to briefly handle a soldering iron in the course of the proceedings (and you know what they say about trusting programmers with soldering irons). Some notable components are, from top to bottom: Firewire camera from theimagingsource.com, robotic arm from Lynxmotion, servo controller board, Car-PC mini-ITX board running WinXP, another servo controller board, two heavy lead batteries and four wheels, of which two are powered. All of this is arranged on a number of plywood planks in a “Tower of Pizza” configuration.
Here’s another pic, in which our little guy (this time wearing its sponsorship clothes) is competing against Jack the Gripper.
The software was written in C# for the .NET 2.0 platform (I voted for Java of course, but I was outvoted by the rest of the team, which may be a good thing in hindsight because I’m not sure that we would have gotten the proprietary camera drivers working just as easily). At the core of the system is our own port of the CMVision library for classifying colour areas. Based on the size of such an area, a coarse estimation is done of the ball’s position in 3D space, relative to the robot’s position, which is then refined continuously as the robot moves towards the ball. The robot arm also has its own laser-based distance sensor for helping to grab the ball once it’s close enough. Most of the software was written by my colleagues Mark and Marco and myself, with Mark doing the lion’s share of the work.
In their current form, our ball detection and movement algorithms are rather sensitive to the exact positioning of the camera, the ambient light conditions, the battery charge levels, and so on. As a result, whenever any of these variables had changed, we needed to spend some time calibrating everything again. This made the actual contest very exciting for us, as we never knew for certain how well our creation was going to perform this time.
So, how did we do? Quite well actually, or at least so we like to believe. In the qualification mission, little SeeSharp (or “ducky” as we sometimes affectionately called him, after the duct tape used for various last-minute repairs) attained a shared second place by collecting four yellow balls, with no green balls and no fumbles. The fourth ball was succesfully dropped off in the last second of our allotted time, with the entire audience holding their breath.. Seventeen teams appeared at the start, out of which nine made it through the qualification, so we did very well there.
In the second mission we were considerably less sucessful, unfortunately — the poor little thing got confused about which colour of ball it was supposed to collect, and was driving around rather sadly (while our opponents did only marginally better, by the way — this was definitely the most complex part of the contest in terms of the high-level logic involved).
In the third and final mission, we actually did pretty well again in terms of the number of points we scored: 40 points, same as in the qualification, and I believe that would have gotten us another shared second place if scoring were based on points. Unfortunately, it was a knockout race, and we had the misfortune to be placed against Jack the Gripper in the very first round. Jack the Gripper, a very professionally-designed robot, consisted of some 15000 euros of hardware and several man-years of programming work. Our little boy was good, but not quite that good, and so we were out of the race after the first round (Ole Jack developed some hardware trouble later on, otherwise he would almost certainly have won the contest; instead he placed second, after having won against the LogicaCMG robot despite not actually moving at all).
But, most importantly of course, we had lots and lots of fun. The intellectual challenges involved in building something very different from our usual jobs, the camaderie, the endless tweaking and tuning, the last-minute disasters (“why is our motherboard suddenly rebooting spontaneously?”), watching the other teams’ robots do their thing, the “geek chic” feeling of the whole event..
Even the weekly run-ins with the security guard were fun, in their own way. I don’t think there ever was a thursday evening or saturday afternoon that we did not accidentally set off the alarm. “Hi, the alarm went off, everything OK?” “Yeah sure, we’re just building a robot over here.” “Huh? Oh well, can I have your name?” “Sure, it’s Martin Wolf.” “Can you spell your last name?” “W-O-L-F. Whiskey Oscar Lima Foxtrot” “Eh, what was that first part again?” “WHIS-KEY! Whiskey Hotel India Sierra …”
I’ll definitely be there again next year, and so will all of the other team members, plus quite a few other colleagues who watched jealously from the sidelines this time. And next year, we’re going to win!
To the best of my knowledge, this is just a funny coincidence..