Working and Working on LEGO Mindstorms EV3
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.