Saturday, January 12, 2008

Robo-Olympic (1/10/08)

DC 1 is finally in the book. I slept on average 4 – 5 hours a day for the last 7 days, but the final outcome was rewarding (well, somewhat). Our team finished second out of 10 teams. Prof. Katz said in Human Side of Technology class that in a competition, the first place is the most satisfying, the third place is the next most satisfying, but the second place is the most pitiful because second place is always a loser. I have to disagree on this one. I felt I am a winner, because we set a goal and we reached the goal. Our goal wasn’t to win it all. Our goal was to do as much as we can and get more sleep than the other teams.

Key Lessons
1. Testing – Many teams stayed late on the last day, some even camped out in the breakout room, making changes, enhancements, tweaks, what have you. How much test have they done? How can you be sure that something you built 4 o’clock in the morning when your brain is on life support inside your skull is going to work in the real environment? “What happened? It was working this morning.” Well, answer to that is obvious.
2. Priority – I heard all of the teams said “We realized that we don’t have time to do everything”. So I asked one team “What are your priorities”, the answer is “Everything!” Our team decided priority level for each event and we planned everything around those priorities. We assigned tasks according priorities, we resolved conflicts according to priorities, and we wrote priorities on our forehead so others can see what current priority is.
3. Configuration management – We ran into troubles early with version management, both for hardware and for software. Who’s changing what, who’s updating what and at what version? Things were out of order quickly. We straightened out the issues at the end, but we should plan the configuration management process early in the project cycle.
4. Requirements – There are lots of bonus points other teams left on the table. Raising a flag worth 5 points but not every team is doing it. We had an extensive requirement review session and every tiny bit of details is captured. Other robots started doing salsa dance already, and we were still in requirement phase. But it paid off in the end. We were able to capture maximum points within our capability.
5. KISS – Our robot is the smallest and simplest. The crossbow design was unglamorous, but accurate. The tow-truck was powered by 4 motors with only 2 worm gears. Our opponent had 6 motors, 8 gears on each motor, take 20 minutes to tie the rope, but fell apart during the competition.
6. Coopetition - cooperative competition - From my observation, teams that worked in a vacuum did not perform well in the competition. For an idea that you think is so brilliant, 2 or 3 other teams were already collaboratively developing the next version. One team may lack a software resource while another may need a hardware advice. There is one team that thought its Tug-of-War setup is so strong that they didn’t even benchmark against other teams. They were out in the first round. They can either be all in stalemate or help each other out and make progress. I want to point out that the value-to-value trade won’t always happen at the same time, and certainly won’t be fair all the time. But if you are afraid to be on the short end of the deal, then you will lose the opportunity to those who are not afraid; opportunity seldom comes the second time.

What can I do better if I can do it all-over-again? Tons of things we can improve. But if I must pick a top-3, I would say
1) To find a better way to utilize all of the team member’s talents. Most of our team members are aggressive, but a few are more reserved. In today’s “who does it first takes it” world, they were left out. We collectively failed to find a better way to discover and leverage their talents.
2) To innovate continuously. I was one of the first few people who finished line tracking code, and I became complacent. I sat on my asses. I didn’t modify that code ever since. Other teams all knew the logic, and some enhanced it, while others built the newer and shiner one. Guess what! The race event was our lowest score for the 5 event. Granted that the race event was our lowest priority, but that face that I didn’t even bother to think improvements is scary.
3) To seek advices from SDM upper classmen or others inside the institution. There is no rule says that we can’t receiving some consulting. Every SDM cohort did this activity, what are their pitfalls? There are other robotic competitions in MIT, what are their secrets? They are sitting there watching and laughing their asses off, why not go out and ask. What can we loose?

Here is a quick re-cap:
Event 1 – open ceremony. Our theme song was “Who let the dogs out”. Our team name was “Dawg”. Our robot was built in a bull dog stand. Everyone on our team barked “Wolf Wolf” during our robot’s dance routine. To cap it off, our robot received no penalties. Judges loved it and gave us the second highest score.

Event 2 – archery. First shot, a medium range target. Our robot located both edges correctly, however, when rolling backwards to it’s finally shooting position, the left wheel slipped and misaligned our robot just a little. First shot missed the target by half an inch. Second shot, a medium range again, but this time the robot didn’t find the far edge of the target. Perplexed by this behavior, I ordered a third medium range, but this time, the judge put the target in maximum distance of the medium range. Our robot became completely blind as expected. With 2 shots left, we want to at least put points on the board, so a short range was a no-brainer. Locate, set, and shoot. “BOOM!” first hit of the day among all the teams. For the last shot, we inspected our robot and ordered another medium range. “BAM!” another hit, 43 points, and 1st place finisher in the event. Other teams either had a complete disaster (parts flying or shooting at the judges) or were unduly ambitious. I truly admire the ingenuity of some robots, they aim further, shoot further, only if their strategy were better…

Event 3 – relay race
Our strategy going in was not the take any penalties, since this is our lowest priority event, and we didn’t have enough time to do sufficient testing. Surprisingly, my algorithm still worked, but our bulldog stand didn’t give us enough ground clearance so we couldn’t overcome the obstacles on the course. 0 points, but still finished fourth place, because some teams took penalties and still couldn’t finish the course.

Event 4 - Tug of war
Our winch design caused many controversies. But read the requirements people, “A bot must be able to displace itself in the right direction”. Our robot moved away from the opponent for about one inch. Done, meet the regulations! After all, I don’t see what people are arguing about. Our robot was about 1/3 of their robots’ weight and size, drives on 4 motors instead 6. All they had to do is to pull a dead weight forward. Anyway, we reached final 4 and lost.

Event 5 – Synchronized Dancing: Kudos to our dance partner that worked late to fix their hardware issues so that we could participate in the event. One of our team members worked late for this event, and it turned out to be a great success. Our song was “YMCA” and, again, no penalties. I don’t know how much we score since this is the last event, but good enough to give us the silver metal.

No comments: