Posted by Tim
Filed under: News
Blog Spam
I can't believe it. Some stupid a... spammed my blog. Not once, not twice, but on three successive days! Because of this I added a new captcha method for the comment function of this blog. So this is what .NET is good for (according to the spammers user agent). Great - keep it home!
Posted by Tim
Filed under: University
Uptime: 44 hours
Last weekend I have been at the RoboLudens 2006 event as a member of the AllemaniACs Robocup Team. The RobuCup Dutch Open 2006 was a part of this event and we went there to participate in the Middle sized league and in the 3D simulation league. The event took place in Eindhoven.
We started on Thursday very early in the morning to maximize the time we had for setup (while at the same time maximizing the testing time in Aachen and thus we did not leave already on Wednesday). At that time we still thought that at 13:00 the technical challenge would take place, but that was delayed until 19:00 since most teams were not ready yet.
So some guys starting creating the map for the localization and I started calibrating cameras, creating color maps and bulb interpolation maps for the omni vision. I should put some more info online at some point so that you know what I'm talking about... short: a color map is a lookup table pointing (U, V) tuples from the YUV color space to an object index, for instance "ball".
Already at that time we noticed that there was a podium for the award ceremony - and it had an orange wall as background. In RoboCup the ball is orange (like the winter ball in soccer) to have a good feature to look for in the vision. So in general it is a bad idea to have orange walls. Oh, and to all who want to visit such an event and look: Do never ever wear anything red on those events. Especially if you are not keen in having a robot kiss your shin ungently...
But we continued and a somewhat working version of a color map was create quickly. The localization map didn't take much longer to be ready so we could start playing on the field. Time goes by quickly if you work with the robots.
At 19:00 there was the dribble challenge. In this competition each team gets a setup of fake opponents (black trashbins here) in three different settings on the field. Your task is now to take the ball (which is lying in front of your own goal), dribble through the field without touching any opponent and to score a goal in the end. You get three points if you pass the middle line and three if you score a goal. You get minus one point for each contact of the ball or your robot with an obstacle. And it worked pretty well! You have to know that we are now almost the only "believer" team, that does not use an omni-directional drive but a differential drive (like what you see on tanks, but just with wheels, no chains). In the end we were the fourth of twelve teams. This determined the positioning for the later robot football tournament.
After that we were on the field again, of course. At some time during that night we realized that we were going to play on field 3, which was the field closest to the orange podium. Doh! So we now had to do something against false positives on that end. For a longer time I had have the plan of implementing a simple 3D-model of the field and use it to determine the field borders in the image and use this as an artificial horizon and clip processing of the image there. This would also take threat away from red-clothed humans around the field... So we started reading in the computer graphics script - at about 3 pm. After about an hour or so we thought that we could do it much simpler if we would only calculate the highest field point in the image - and that is easy. So we implemented this artificial corner horizon. The brain almost stopped working at that time because it was tired (note to myself: beer is not a good drink to stay awake!). So it took some time writing down the formulas needed and putting it into the code. Then we wrote a short test program and saw that it basically worked. Great! Then I needed to integrate it into the software. This can be done elegantly but it took us hours because of stupid bugs we made. Since I was at the keyboard and so got physical stimulation in the end I was the only one awake. Fixing the last three lines of code took me about 45 minutes then... Shortly after 7am I could wake 'em all (easy, they were sitting next to me) and I could say: It works! So then we did some tests and really: the orange wall didn't bother us anymore. Great! I haven't look at the code yet afterwards, but I fear that I will just shout loudly if I see it...
So since it was morning already I just got a coffee and decided not to sleep. Fortunately there were two showers in the hall, so that helped to wake up again...
During that time I was every now and then working on Hector, our goalie. When we kicked (we have a strong kick...) one of the two PCs inside the robot crashed. Some log messages made us think that it would be a good idea to put a new hard drive into te robot. So we took one from our laptops and put it in there. Then I had to reconfigure the system "to be a robot"... That wasn't too easy since there were some strange partitioning problems. But in the end it worked out. I'm not sure anymore if it was before that or afterwards, but the laser in the robot (360 degree rotating laser which we use as a sensor for the localization) broke down. Fortunately we had a spare laser with us. So we put that into the robot. Unfortunately this laser was also nuts. It didn't work. So before the first game played our robot was paralyzed. A not moving robot is not a good Goalie as you can imagine... But we had no choice, we had to deal with it.
On friday we had the first games. We had a quiet strong group (the team that won the whole competition and the team that got second...). But that was not too bad since all reached the next round and this was just used to determine the grous for the second round robin. Hector was standing in our own goal defending some balls that were heading in his direction while just looking dumb to others...
The group in the second round wasn't too easy either. On this friday we still had one game of the second round - which we won against the Paderkickers.
At about 2:00 in the night on Saturday I decided to go to bed - finally after 44 hours of uptime. So I put my mat and sleeping bag under the tables in the team area and slept right away - no matter that robots were kicking merely ten meters away on the field and that the flood light on the fields was turned on all night. Six hours of wonderful deep sleep.
On the next day we lost the games against Minho and AIS which in the end resulted in the third place in that group and so we could get on to round three.
In round three we had the Tribots again in our group and 5dpo. We first played against the tribots. We managed to score a goal in this game which was pretty cool since it demonstrated how good our goal kick was working. The second game against 5dpo was close. Too close. No it was really a pity that Hector didn't move. It was a really slow ball that made them score a goal. So in the end it was a draw with 1-1 which wasn't enough for us to get to the next round - we were out.
We used the rest of the day for some analysis of how we performed and went to the social event. The finals were really a pleasure to watch. Hell you can do some great things with an Omni drive. For the whole results have a look at the RoboLudens result page for the mid size.
On Sunday Lutz and I tuned a little bit our Kalman filter which we use to get better results for the relative ball position. And it got a lot better!
It was a great event and a good kick of for RoboCup 2006 in Bremen.
Posted by Tim
Filed under: Geek
C++ suicide
"As long as you're careful, it's OK for an object to commit suicide (delete this)."
From the C++ FAQ Lite.
Posted by Tim
Filed under: Geek
Future and Fiction
I just go a link via Jabber to EPIC 2014, also have a look at EPIC 2015 (german version of EPIC 2015). Interesting. Google Grid...
Posted by Tim
Filed under: Personal
Five weird habits
I was asked by Tob to write about a few of my weird habits. Here they are:
1. I cannot sleep close to a wall. All the beds I sleep in regularly have a wall on one side and free air on the other side. I always choose the free air side. Anne arranged with that and takes the wall side. This was especially awkward for here in my old flat where I only had a 90cm bed and she couldn't avoid touching he (cold) wall. I had an extra blanket for this then. I think I feel locked in on the wall side or so, I can't really explain.
2. I like structures. I like free space. I like them almost everywhere. I like good structured code. I like a good structured room. I like matching clothes. I tend to rewrite code if I don't like the old one - sometimes even if it consumes much more time. I like an empty desktop (although this happens rarely). It just appeals the perfectionist in me. It can be annoying.
3. We (Helgar, Medha, Tob, Buck and myself) meet regularly every Tuesday for cooking and geeking. We have two kinds of cutlery. I usually take the silver one which is bigger and feels better. As Buck would say: it just has better haptics.
4. This is one that became obvious last weekend. I like ketchup, especially Heinz ketchup. I can eat it to almost everything. My favorite is "Ketchup Roll" which is a cold pancake, full of Heinz ketchup (don't use any other water-tasting brand) and then rolled. Great! Last weekend Anne and I head Spaghetti Bolognese. When I asked for the Ketchup I almost died of one of those crushing gazes... We had no Heinz so I didn't have any Ketchup this day.
5. I love dogs - almost all (they just have to surpass a subjective minimum size). Because of this I try to pet almost all dogs in reach, they don't have a chance. Anne says I'm always looking amorous to them. It's just unfair that I cannot (yet!) have my own dog. Flat and time are just too limited. This is one of the reasons why I like to get home every couple of weeks, Ando is a good pal. Last weekend at a bus station there was one of those "dangerous dogs", but it looked pretty friendly so I kneed down and started interacting. The dog obviously liked that and jumped towards me, not barking but playing. Besides dirty trousers great fun and good preparation for the Ikea trip we were heading for.