Things that Went Well

I think the aspect of the design that I'm most pleased with is the wheels. These were the first aspect of the design to be realized. The design process moved rapidly and smoothly, and ordering the parts was relatively painless. It's satifying to send off a drawing you've spent a fair amount of time on, and get a perfectly cut part in return.

I was also pleased with the native code to read the sensors. It offered a substantial performance increase, and also gave me an opportunity to re-learn some C. It was nice that the native code "just worked", with very little configuration to go wrong.

After an initial setback, the motor drivers started working well. As hoped, they did not heat up excessively, and seemed to have no trouble controlling the motors. The driver boards turned out neat and compact, and mistakes during manufacture were kept to a minimum.

The robots appeared to perform quite well in the rounds where they worked. About 6 goals were scored by the robots before they were both permanently out of action. It was a shame that they didn't last longer. The bugs in the code were only ironed out by match 3, by which point it was too late for one of the robots.

Things that Went Badly

The biggest problem was the breakage of the motors. This unfortunately only revealed itself a week before going out to the competition in Istanbul. What happened is a tooth broke off one of the gears in the motors' gearboxes. It appeared to be the same gear every time.

This happened twice before travelling out to Istanbul, at which point four spare motors were bought. It happened again while testing in the hotel room in Istanbul, and again during the practice round. This left no spare motors for the competition. As a result, the first robot lasted until partway through round 1, and the second one died during round 5. That left four rounds with only one of these robots, and four without any of these robots at all! Fortunately, we brought the robots from last year along as backup. We had really hoped not to have to use them.

I still don't know what caused the motor to break. I softened the control system after the first one broke, but that didn't stop the next 7 from breaking. It looks as though it might be a fault in the motors themselves, in which case a refund might be in order. I'll make sure to ask pololu, the vendor of the motors, what they think happened.

The biggest disappointment was not being able to fine tune the robot strategy. Testing the robots was ruled out, since there was too great a risk of motor breakage. As such, the ultrasonic sensors were not used to their full potential.

Things I've Learnt

How motor drivers work

Before this project, I'd treated a motor as a black box that "just works". You send it a signal, and it does what you want it to. It turned out that it was actually a bit more complicated than that, and there was some more sophisticated electronics involved. It was a good experience to build, test, and use the motor drivers, but it was a lot of work, but if I do it again, I think I'll just buy pre-assembled ones.

How to program in C#

When I started this project, the only thing I knew about C# is that it was "like Java". I am now fairly competent at it, and will likely apply it in other areas in the future. As well as the .NET Micro Framework, C# can be used in desktop applications, and as of recently, the Windows Phone 7 app market. It's a good skill to have.


Last year, I'd worked with a version control system called Subversion, usually abbreviated to SVN. I'd been using it as a plugin to Eclipse, so using it was fairly easy. It had a couple of large shortcomings though. Firstly, it is very difficult to cope with conflicts originating from working in different places at the same time. More importantly though, it can't be used without access to a central server: Without internet access, the history can't be recorded.

I introduced myself to Git on the command line. It gave me more of an insight as to what was going on behind the scenes. In general, it felt like a more robust system that SVN. Later, I stumbled across a GUI for Git, which removed the command-line-induced headaches.

Git is likely to be of great value to me in the future, whether it is used for software, or even for a report, like this one. I haven't really explored much of the collaboration aspect yet.

Test things early and often

Had the motors been tested earlier on, the problem may have been diagnosed sooner, and a different type of motor could have been substituted. The way it went, there was not enough time for a redesign, only for a re-purchase.