Posts tagged 'robotics'

Catching Up

A lot has happened since my last entry. I visited Salisbury and Stonehenge, my Erasmus stay in Cardiff officially ended, I went back home via London on a flight that felt like magic due to the sun setting while we were above the clouds, and last but not least I'm in the early stages with another robotics project at my home university in Bremen.

Unfortunately getting the latter started didn't leave much time for anything else, but things are looking promising now, so I'm taking a bit of a break tagging and uploading photos and should have some slightly more detailed blog entries ready soon.

LISP

I've been looking into LISP recently (initially for university stuff). Historically, I think it played an outstanding role in the development of computing. Bringing functional programming to a world of assembler and low-level C hacking is clearly an achievement in its own right. I am particularly impressed learning that LISP was used to control some NASA spacecraft - today most people don't even use anything higher level than C or perhaps C++ on robotic systems, and that's on much more powerful and significantly more accessible hardware (try attaching a JTAG interface to a probe on another planet to debug a problem with your code).

From a language design point of view I'm not overly impressed by (Common) LISP though. Some of the criticism I have for it is arguably purely a question of taste: I find the lack of mixfix operators rather annoying, but of course it makes parsing by orders of magnitude easier. More of a problem is the apparent lack of strong typing - e.g. LISP will happily allow you to have elements of differents types in a list, among other more serious issues. It also appears to be possible to change semantics based on input types of a function. The fact that functions (like +) can take a variable number of arguments is a bit of a nail in the coffin from my point of view. I'll keep using Haskell for real world functional programming.

New toys for the RoboCup community

I noticed today that the Four-Legged-League has been renamed to Standard Platform League and will be using a new humanoid robot at future competitions. There isn't a whole lot information available about the Aldebaran Nao but it definitely makes me wish I was starting with my 2 year project now (rather than being almost finished) so I could join the local team.

Why is a standard humanoid platform so exciting? If you've ever worked with robotics hardware and prototypes in particular, you'll know only too well that you rarely get to do the stuff you want to. There's always one hardware component or another that fails on you, not to speak of the usual pain of (systematically) incorrect sensor readings. A standard platform makes sure that everyone has the same starting point and (ideally) allows people to concentrate on algorithmic work rather than developing and fixing hardware.

GNU Octave

I've recently been doing algorithm prototyping in GNU Octave. Although not fully compatible with Matlab, it usually interprets code written for Matlab correctly. Some functionality (specialized functions) is missing but usually slightly different but equally capable replacements are available.

I must say I'm impressed with how quickly you can develop mathematical algorithms in Matlab/Octave. Basically, you're all done at about the same time you'd start debugging your matrix library in any other language. It's definitely an approach people in computer science in general and robotics in particular should use more often.

Octave uses gnuplot for plotting but hides the gory gnuplot details from you which is really pleasant. On the other hand, if you're used to computer algebra systems such as Maple or GNU Maxima it feels a bit odd to plot a set of points rather than a (symbolic description) of a function. Considering the internal representation of a function in Matlab/Octave it does however make sense the way it's implemented.

Now on to the next algorithm on the list of algorithms to evaluate...