TEAM 57: DINO

Team Members:
Simon Lawrence Course 6-2 Senior
Terrence Strader Course 6-1 Sophomore
Oduwa Osarenkhoe Course 18C Junior


The Contest:
6.270 Contest Page

Our Robot:

First, we brainstormed on how we wanted to build our robot. Since we knew what the playing field looked liked and since we knew the goal of the contest, we strategized on how to best get the balls over the lip (We thought it would be best to push the ball over the lip, than to program our robot to go to the opening of the two troughs, since our robot may get stuck if the opposing team has the same strategy to go to the opening. Also, there would be a wider area where we could deposit the ball, since the lip ran the length of most of the wall). We thought about a claw that would be connected to a servo. It would be similar to the thing that construction people use, in that the servo would lower the claw, pick up the ball and deposit it where we wanted it. But we ruled out this idea and ended up with our final design, servo-connected “arms.” The arms opened up, went forward to collect the ball, and then closed its arms.

That was the basic physical design of our robot. Sensors (light sensors and bump sensors) were placed throughout the robot. We had a light sensor in order to detect the start light, and four other light sensors that we used for our calibration (to know which side, the dark or light side, the robot was on). We had back bump sensors, to know when we bumped into a wall whenever we were going backward, and bump sensors on the front of the arms, so that the robot could figure out where the block (the obstacle that was placed in our way by the opposing team) was placed. We also threw in some bump sensors in the inside of the robot, so that whenever a ball was in the “carrying area,” the arms would close.

We ran into some problems when we were building our robot. (Well, even before we began to build, we had a slight problem. While soldering the IR beacon, I (your resident genius), soldered a polarized piece (I can’t remember which one it was… I think it was a MOSFET) in backwards, which caused the IR beacon to blow. But our wonderful organizer, Jan, worked on it and was able to fix it. Yay Jan!). We had our motors mounted side by side and wire from one of the motors was touching another motor. No matter how high our gear ratio was, the robot wouldn’t move whenever it was placed on the ground (even thought the wheels were turning when we suspended the robot in the air). We found that problem and fixed it. Also, the way that we mounted some for our bump sensors weren’t too sturdy, so they didn’t last whenever they repeatedly bumped into something. Other than that, there were no major problems.

One of the last things that we did was to give our robot a name. Since none of us were particularly creative (or since none of us really cared), one of our greatest supporters, Laura, named our robot Dino, since it reminded her of a dinosaur. Worked for us :-)

Take a look at the Dino Photo Gallery.

Our Strategy:

One of the first things that we did was to make our robot go in a straight line. We had to play around with the numbers a little bit, but we got that to work. (Oduwa even wrote a little of the code! :-)) We also tried doing some line following. It wasn’t as successful as we wanted/needed it to be, so we scrapped that idea. We decided to use our bump and light sensors to tell where we were and to know where we were going.

The first thing our robot did (after calibration which determined which side, the dark or light, it was on) was to orient itself so that it was facing towards the opponents side, go forward a little bit, so that it could detect if the block was in front of it. Where the block was would determine which path the robot would take to get the other balls. After Dino determined where the block was, he turned so that his back was facing the ball closest to the lip and pushed that ball in (using the back bump sensors to stop). Then it went forward to collect the ball that was farther from the lip, but along the same line as the first ball (using the front light sensors to determine where it was). Then, based on where the block was placed, Dino went on the appropriate path. Our initial strategy was developed by Terrence. While we made changes as we went along, we stuck pretty close to the original idea.

Results:

Dino finished with a 1-2 record. We lost in the first round because Dino didn’t know what side he was on (our light sensors weren’t shielded enough, so the bright lights of 26-100 were able to get in and affect our calibration) so he just spun and spun his little heart out (well, at least until the 60 seconds were up) . We made some changes to Dino, shielded our sensor more, and coded more. The result was a win in the second round. We lost in the third round, to the eventual second place finisher

Code:

Here are links to Dino's Code. It was seperated into various files to aid in the development work.

The IC file used to load all of our code robot.lis.
The Calibration related code calibrate.c.
The Movement related code move.c
The Orientation Code orient.c
The Starting Point of the Robot Code final.c