07 oktober 2010

Working as a trainee


Being an IAESTE member, I've heard several stories about trainees not getting any interesting tasks to do, because nobody really planned what to do with them. I was also a bit nervous, as I'm not good at all at differential equations, which my colleges are working with. And I didn't know if I screwed up by not being formal enough to the professor and supervisor. It has, however, turned out good. As for the tasks, I was actually set to work with the Lego Mindstorms set that they had bought in. And they suggested I make an inverted pendulum (youtube video), which is also a very exciting task. So I was very eager to start.

Colleges


I work at the mathematics institute of the university, and most of the other people are quite young, and luckily not too formal (this can be a problem with the German language). Every day at 12, we go to the Mensa (canteen) together to eat lunch. For me it's usually breakfast, due to the poor kitchen, though I try to buy some fruit for the morning. And after the lunch, it's often an informal meeting at the institute. The topic is often the decline in new math students, now that the new semester starts, probably due to a reduction in the number of programs.

FEM-Conference


The first week at work, I was also invited to a conference in Chemnitz which ran from 27-29. September. Most of the talks were way over my head, but I managed to get something from the introductions and figures. And also from a talk that actually was not about the finite element method. Most of the participants were from Germany, and there were many from Austria, and also some other countries. But even though almost everyone were talking in German during the breaks, all talks were held in English. Some with a strong German accent, so I was reminded of this video sometimes :)

I also found it interesting how the moderators always had to prepare at least one question, in case the audience didn't ask any. Only once he didn't, to keep the schedule. And when the talks are finished, everyone knocks on the table, applause German style.

Progress


Warning: this may get technical

After the first days passed, I feel I have gotten more into the work, and on the picture you see the workspace. And I'm usually left on my own now. True, there is some progress, but it is difficult. The task of building an inverted pendulum requires several things. Basically you need a good sensor, to know where you are, you need a good motor to move the system the way you want, and you need a computer to analyze the sensor data. Mindstorms have good and accurate motors. The sensors supplied in the basic pack are not very good though. The sound and touch sensors are useless for my purpose, the distance sensor is inaccurate and work only when the wall is directly in front. Which leaves me with only one light sensor only able to distinguish between light and dark colors. And it performs different under different lighting settings, for instance if there is sun outside. The last problem is the NXT brick or the "brain". It's awfully slow and has very little memory, only 256 KB for the program and firmware.

Another master student had already made a self-balancing robot with supporting points so that it wasn't able to move more than about 30 degrees anyway. He uses a self-made light sensor with a greyscale to measure the position. But it needs to be calibrated every time, to account for different battery values and ambient light. So I wanted to do it differently, in particular not needing a very accurate calibration.


So I made a wheel with a bar-code attached on the outside. So when the wheel turns, the light sensor will read a different part of the bar-code. The wheel can then easily be turned into a pendulum by adding weights. There are however several challenges with this approach. The most important is that the speed is not constant, and it's hard to say which direction it is turning. But that's just a challenge :)

Luckily, it is possible to send direct commands to the NXT brick, and somebody made a toolkit in Matlab. So I only have to send commands and receive data through an USB cable, and let the computer do all the hard work. Soon I will also try out the motor, in order to move it. Hopefully it will work :)