6.270 IAP 2005 Team 1's
Daniel LaRusso of Miyagi-Do Karate
(the robot, not the kid who happens to perform karate)
by Matt Brown, Kevin Chevalier, and Troy Hart (aka. Team 1)
First of all, "The Karate Kid" is awesome, and it was an honor to name our robot honoring the greatest karate master that the world has ever, and probably will ever, see.
Building The Robot
This is our initial robot, while we didn't exactly copy the original design for our final robot, one can see significant similarities in the board mounting system, the gearbox design, and the overall structure.
First, for the real robot, we needed to design the gearbox. First, we used a differential to enable two motors to drive each wheel for additional torque. Other than that, the only real improvement we made on the old gearbox was being more careful about how the gear connections were meshing together (we obviously also increased the bracing, as the final robot is subject to many more stresses than the first one).
One of the most important design questions was "How do we trap the balls?". We designed this initial mockup of our door. This version was extremely heavy, and we had to significantly decrease the weight, to ensure that the servo would be able to move it quickly, and the Lego gears would be able to support its weight.
With two completed gearboxes, and an understanding on how we wanted the door mechanism to work, we built the frame of the robot, utilizing the gearboxes for much of the main structure.
With a frame complete, we built the battery pack holder, and braced it to the main structure, adding a support to the bottom of the battery pack to keep the robot balanced. We decided to place the battery pack on the rear of the robot so as to keep the weight distributed around the three contact points (two wheels and a support on the rear).
We attached the lighter gate to the front of the robot. We were able to make it much lighter, and lose only small amounts of structural integrity. We attached the servo to the side of the robot, it supported the gate perfectly. This was our initial implementation of the final robot.
After completing the initial implementation, we were able to start uploading code to our robot. Our strategy was simple, follow the positions from the RF reciever to pick up all the balls of a specific color, and finish over either our scoring are or our opponent's, depending on the status of the vote.
Testing, though, proved that the RF signal was neither accurate nor reliable. We also assumed we could use the RF signal to determine our orientation, which proved extremely difficult in practice... additionally, we realized our box had gotten stretched, and our robot was slightly oversized as a result (we could fit our box over the robot, but not others' boxes).
A couple of small edits made the robot smaller, and the gate wider (the old gate was only barely able to take in two balls at a time). Light sensors were attached to determine orientation, and the movements were detached from the RF signal. After some testing and tweaking, the robot was ready to compete.
Results of the Competition
Our robot's results were extremely varied throughout the competition. We were extremely pleased (and surprised) with the result of the competition, as our robot ended up tied for 7th place overall, doing much better than we had expected. On the other hand, many of our wins were quite lucky.
Our first match pitted us against a robot that false started twice. Hence, we ended up facing a placebo. The problem, though, was that our robot ran into the dividing wall and never actually did anything, resulting in a double loss. At the end of the round, we discovered that one of our light sensors had gotten loose and caused the problem. Additionally, the tables were lit in a way that produced very dark shadows. Since we couldn't change our thresholds to compensate, we had no choice but to put our light sensor back into place and hope that it would be able to recognize light from dark in the next round.
The next round started off with our robot being calibrated correctly, as the robot oriented itself and started on it's path, knocking the four "easy 2 points" balls into our scoring area, and started collecting the green balls. Our opponent did the same, and the robots ended up colliding and standing there for the rest of the match. Both teams had two points, resulting in a double win.
The next round we weren't so lucky with the calibration, and the robot oriented itself correctly. Our opponent also wasn't working properly, and neither robot really did anything correctly. Thankfully, we accidentally knocked a single negative ball into their scoring area, and they scored a couple of points for us. By pure luck and randomness, the result was a win. Similarly with the subsequent round, both robots didn't really work as they were supposed to, and when the smoke had cleared, we ended up with another win.
The next round (and our final round), pitted us against Team 2, who would eventually end up in third place. Our robot started out perfectly, knocking the four "easy 2 points" balls into our scoring area and collecting a lot of green balls (we had collected around 10 balls by the end of the round, which is better than we got even in lab testing). Our opponent did a similar thing with the red balls. We got to their scoring area, but while attempting to push out their balls, we just managed to push out their negative balls (missed the wall by an inch or two), and got to our waiting stage. If our robot moved the balls we held into the correct scoring area, we'd have won by a very good sum, but sadly, we missed the scoring area by a couple of inches, resulting in a 1-4 loss.
We are extremely happy with our robot's performance. Our primary goal was simply to qualify, and the competition success was just extra.
Our philosophy throughout the class was "Keep it Simple". We knew that in previous years, people had attempted to make some really cool robots, which had so many cool features they became a huge time sink and didn't perform particularly well. Therefore, we decided to just try to do it simply but correctly. Our robot didn't try anything particularly interesting, and we truly didn't design in that meticulously. We knew what we wanted to do, and built the robot around that plan, but it was more about making sure it was solid and braced well than making it look good. The one feature that really distinguished us from others is our strong servo-operated gate, which we use in lieu of the rubber band / tire sucker, or the one-way gate system that many people used. This gave us great benefits in that we had a very strong pushing surface, and in our second match we were able to tie the other robot up on the wall because of our gate and our high amount of torque. If it came down to it, we knew that we had the power to stand our ground in a pushing match, and that was one of our goals.
The code for the robot was, as I said before, extremely simple. That simplicity, though, did not compromise the robot's effectiveness. With the problems others had (false starts, stack overflows, etc) much of our success can be attributed to our code's straightforward simplicity. While all it really did was follow a hard-coded path, at least it functioned quite reliably most of the time. We had a more complicated pathfinding system in place, but it was buggy, and was scrapped in favor of our simple current code. If we had spent more time, we would have simply been able to tune our values better and avoid the other robot by going the other way (we had 2 paths in the robot, that code would have made it 4 paths). But one thing that we realized very quickly is that there is no reason to build your robot simply to take down the best of the best, because the complexity gets too high. We simply created a robot that could beat an average opponent, and it ended up working quite well.
While the competition may be over, our plans for our robot aren't completely over. Future additions may include a) sleeping a lot, and b) modifying the robot to bring us beverages while we sit on the couch. Hey, maybe that would be a good competition for next year...
While that IAP may be over, it will forever be in our minds and our hearts... the day when three scrappy young lads made everyone think... "why not me?".
Troy Hart went on to design robots for ILM, NASA, and Playboy. His most infamous creation, the Playboy "Lovebot", sold over 127 million units in the first week alone, and is seen as single-handedly responsible for the plummeting population around the world. Troy himself has since retired at the age of 24, but is now in the arduous process of opening up a chain of quick oil change shops in which the entire service is performed by Lego robots.
Kevin Chevalier, irate over the late-round loss, immediately took off on a panty raiding spree within the women's colleges across the greater Boston area, and his reign of fear now spans not only the 48 contiguous states, but the lower provinces of Canadia as well. A massive manhunt was coordinated between Wellesley and Simmons Campus Polices, the Federal Bureau of Investigation, and the Royal Canadian Mounted Police, with the goal of finally bringing Mr. Chevalier to justice.
His whereabouts are still, currently, unknown.
Matt Brown swore to never build a robot again until the world could provide him with a RF system that matched his amazing abilities. After winning the 2009 Nobel Prize in RF, he decided to finally build a robot he could be proud of. After years of work, that robot came in 5th, prompting Mr. Brown to throw it across the room in disgust. An observer described the resulting explosion as "totally awesome".
Daniel LaRusso of Miyagi-Do Karate retired from robot competition after his very first tournament. Bored with his life after the glory had all been had, he developed a serious drinking problem. After numerous failed attempts at rehab, his alcohol problem widened into drugs and performance-enhancing servos. He traveled around Boston, offering to manipulate balls in exchange for a heroin fix. He died of a alcohol related handyboard failure in the summer of 2010.
You're the best around.... nothing's gonna ever keep you down.
6.270 Main Page