Since October I am working at the Leipzig University of Applied Science
as a researcher and project manager in a robotics project. The project is
called "Roberta" and is aimed at young people, specifically girls and young
women. With consumer-grade robotics sets, like LEGO Mindstorms, we try to
get them excited about robotics, computer science and STEM in general.
What we're doing is working with educators to get this project to schools.
I am doing project management but I am also doing research and testing the
limits of what we can do with those robots. Not from an engineering (or
software engineering) perspective. I am not throwing C-code at the machines.
The EV3 Bricks (the brain of the LEGO Mindstorms EV3) are running a small Linux.
Using the original proprietary LEGO Mindstorms programming software is a bit
lacking. You use the graphical interface to create a flow-graph that describes
the actions the robot should take. Sadly, this language doesn't support variable
scoping (meaning that every variable is global) and only support non-recursive
functions. Indirect recursion is prohibited as well (no tricks!). That's no fun.
Alternatively there are multiple (two) alternative Linux-based operating systems.
I have yet to try the other one, but the first one is basically a Linux with an
embedded JavaVM. This is usually used to, well, program Java. I've tried that and
it's boring because Java is boring. But having the JVM is, even with 300Mhz and 64MB RAM,
pretty powerful.
I've tried to run Jython on the brick but there wasn't enough memory to do it. Using
a USB Stick formatted as swap I was able to get it to run, but it took almost an hour
to even start the repl. Running any actual code took prohibitively long.
But Clojure also runs on the JVM and this worked quite nicely. The next article
will be about me, running Clojure on a LEGO Mindstorms Ev3.