This way...


What in 'tarnations?!!
33: BALLS OUT
AUTONOMOUS ROBOT DESIGN COMPETITION 6.270
JANUARY 2002

The boys and the bot


I've never seen this before

team
Terry Gaige is a sophomore in course 2, mechanical engineering. He began the class with an intent to focus on construction, but is leaving with a deeper understanding of life and an appreciation for all things electronic. As a sophomore in course 2, he had to complete 2.670 during this particular IAP. As a result Terry missed all of the 6.270 lectures, but worked every evening and night with the team on the robot. Outside of classes Terry enjoys playing cello in the MIT Symphony Ochestra and Chamber mUsic Society and also participating in intermural sports, woodworking, and auto restoration.
Matt Neave is a junior in Course 16, Aero-Astro. He likes to think of himself as the bridge that connected the mech e and computer science parts of the team. Don't tell his Aero-Astro Profs, but he looked like a course 6 kid with all the soldering and coding he did and he couldn't even get the bot to fly. Aside from MIT he likes hanging out with his Chi Phi brothers, playing sports with his friends and listening to tunes. He's also really involved with Campus Crusade for Christ at MIT and is thankful to God for giving him peace through the struggles of this intense class.
Dacheng Zhao is a Junior in course 6, and 7. Dacheng agrees that building something with your hands beats programming any day. Nonetheless, the programming portion of this project turned out to be the most difficult in the end and Dacheng was glad he'd learned somethin in all his course 6 classes. When Dacheng is trying to avoid work he enjoys wood working, playing the violin and swimming. Strangely enough, despite all the course 6 nerdiness, this is the first webpage Dacheng has ever created.
Back to top


Abstract art or the 6.270 table?


What is this doohicky?

strategy
Our ball shooting design gave us a great speed advantage over other robots. Most robots had to take balls across the table to the trough, but we could shoot them from anywhere on the table. Our original strategy involved scoring the first ball in the corner quickly and then driving across the table in the path with three balls and shooting them into our trough and then attacking the other robot. With this strategy we would score 4 balls quickly, which we were hoping could beat any hole-blockers and score faster than other robots so we could attack them.
After the qualifying round we decided to change our strategy pretty drastically. We noticed that most robots were only scoring 1 or 2 balls in the first ten seconds and many took much longer. Our robot had the ability to score the first two balls in five seconds. We decided to score these two balls quickly and then block the opponent. Scoring two balls instead of four was also much more reliable because it only involved one turn and driving in a straight line to bump the corner ball in and then driving across the table to shoot the ball in the other corner in. If this strategy would work correctly we would be ensured, at worst, a double win.

Back to top


Bottom-up design

design
In designing our robot we originally explored many different strategies. We considered a robot that would collect one of our balls, plow a bunch of our balls in our own trough and then shoot the saved ball out the rear into the other team's tube. This idea developed into a design that would shoot all of the balls through the interior of the robot. We decided to use the same technology that is used by sports ball shooting/serving devices. We used a row of wheels that would pass over the ball close enough to shoot it through the other side.
The front and back of our robot used a V-shape to enable it to collect balls that it hit off-center. It was also symmetric to allow us to shoot balls out of either side. Our robot actually had some features that we didn't even use with our simplified strategy. Since the front and back wheels of the shooter were run on different motors we had the ability to carry a ball inside as we drove by running the wheels towards each other. We also had our IR beacon mounted on a servo and it could actually search out the other robot, but we didn't use this in the end either.

Back to top


Indigestion

implementation
Our first build of our robot was to test the ability of our shooting mechanism to get balls across the table and over the lip of the scoring trough. It wasn't the prettiest robot, but when we tested the shooting wheels run at full power it shot the ball so fast that it bounced over the plexiglass and off the table. We were pleased at this success so we returned home to build what we hoped would be our robot.
We had to use a lot of bracing in our design because the wheels on either side are only connected by the roof of the robot. The rear wheels were enclosed in a framework that also makes the "V" of the robot. A big change that we did for this new build was with our front wheels. Originally we had planned to use differential drive and let the front wheels slide on the table when we turned. We decided that we wouldn't be able to complete consistent turns this way and we would run the risk of getting caught on imperfections in the table. Our new design used two small wheels each mounted on a servo for steering similar to a car's. This design allowed us to spin about any point in line with the rear axle.
Our next major construction change came when we noticed a significant problem. Somehow our robot was sagging (tire or lego compression) and the shooting wheels were too low to shoot the balls quickly. To fix this we had to take apart the whole robot and add one layer of flat lego to raise the wheels. After this slight, but tedious correction our robot was almost in its final form (not including sensor changes).
In testing our robot on the contest table we found that it performed according to our desires most of the time. We faced one problem with balls getting stuck in our V-shaped collector. We tried many solutions including attaching extra motors to "suck" balls in and other creative approaches. We ended up attaching cool hook shaped parts to one V to give it more plow-like abilities.
In addition to changes made to the structure of our robot we also had to make some electrical modifications. We had problems with our motor driver chips overheating so we replaced those a few times and we used heat sincs to cool them down. Electrical problems were much more difficult to deal with because the solutions were not so obvious, but that's all part of the adventure.

Back to top


Tentacles

sensors
Without sensors an autonomous robot is completely blind. All 6.270 robots need a few basic sensors to survive: a start-light detector, and color sensors to determine orientation and/or infared detectors to know the direction of the opposing robot.
From the start we had the idea that the more sensors, the better. We mounted 25+ sensors onto our robot. After thorough testing of each sensor, we tweaked lengths of sheilding, perfected the distance sensor angles, and specialized bump sensor arms. In the end our robot was very capable to know its environment. It could tell its position, orientation, and location of the block, and follow lines and walls, and count number of wheel turns, AND pinpoint the location of the opponent by using IR detectors mounted on a servo. In the end we found that our final strategy only required a few light sensors and bump sensors, but it was nice to have the options available.

Back to top


It's not me

code
main.cmain() variables.call variables define.call constant defines calibrate.ccalibrate everything
start.cstart() orientation.corients the robo position.cpositions the robot drive.call drive functions
turns.call turns color.cline detection code terrysir.cterry's ir detection code
ball_1.ccode to score ball 1 ball_2.ccode to score ball 2 ball_7.ccode to block or score ball 7 error.cerror detection/time outs

Back to top


All lined up


Lights, camera...


Fateful round 6

competition
After several long nights preparing for competetion Balls Out was ready to go. In round one the robot performed exceptionally, but did not get a chance to complete its entire goal. At 6 seconds into the match, the opposing robot came charging as we headed out, and the two head-butted with all their might for the remaining time (see Video Blocked). Score: us 1 - them 0.
We streamlined our strategy between round one and two based on what we saw (see strategy) which required a couple more long nights to complete. In round two we witnessed our first encounter with luck. The first ball did not fall into the trough so when the robot shot the second ball in the same direction it could have deflected it, causing neither ball to score. But, as luck would have it, the second ball hit the first dead on and made it tip into the trough. Phew, almost a double loss. Score: us 1 - them 0.
Going into the final rounds with two wins made us quite proud of ourselves. We enjoyed the idea that we had a chance at the gold. We made it through two more rounds without a loss, one by a buy, the other was a perfect round by Balls Out, each manuever was performed flawlessy (too bad the other guys didn't score any).
Now here comes the sad part. Out of the four possible orientations, one was particularly troublesome; when the robots were oriented away from the trough, our robot had to make a forward, steering-style turn to complete the strategy (a turn not attempted often because of its difficulty). In the fifth round luck chose this orientation. We scored two balls easily, but were not able to make the turn fast enough to block the other robot from scoring more. We walk away with a loss.
Around comes the 6th round and who is our opponent? Its a team from our same fraternity. And again darn luck chose the same darn orientation (actually the third time this orientation was chosen for us: a probability of 27:4096). We score our first two reliably, but then Balls Out doesn't even get a chance to try the difficult turn because two little pieces used to deflect balls towards the shooter mechanism disconnect on one side from the robot and hook over the wall. Balls Out is imobilized. The guilty pieces had never shown that ability before. Darn darn darn luck. Our opponents (friends in reality) begged their robot to stop after two balls were scored to no avail. We recieve our second loss and numbly walk off the stage, amazed at how fast things can change.

Back to top


Eh....

conclusion
Design and ideas are cheap. Implementation and reliability are everything. Don't get caught up on building a perfect structural robot. The structure is important, but not nearly as important as insuring your drive system, turning system, detection system etc. are not only error-proof but reliable under a variety of different environments (e.g. varying battery voltages). In the end, we learned a lot about the virtues and difficulties of teamwork, and we built a pretty cool robot.

Back to top


Superbot!

videos
Orientation test
Day before competition success
Blocked in Round 1

Back to top


Bonny Lee

thanks
Many thanks to Bonny Lee for nourishing our team with her great cooking, and for constantly supporting us! White-board caricatures (seen above next to conclusion) also thanks to Bonny.

Back to top