Team 15



Welcome to Chaim and Kate's minimalist robot webpage. In the same vein as their 'destroyer' 'bot, Chaim and Kate present this page as a testimony to the ability of man to do as little work as possible while still fulfilling all Institvte requirements expected of them.

Strategy

Our strategy was quite straightforward. After initially orienting its front side away from the center wall, the 'bot immediately scores the four balls directly in front of it for an automatic +2 points. Next, it continues in a counterclockwise direction, gathering the next eight balls in its path and votes them. Finally, it scores the next four balls at its nearest square. We played with the idea of what we would have liked the 'bot to do afterwards, such as intentionally ramming the other 'bot or knocking balls out of its scoring area, but we assumed that not much time would remain for such grandoise plans. An important advantage of this generic strategy was that it was not necessary to design our code depending on whether we started on black or white. By consistently traveling in a counterclockwise fashion, we ensured that our robot would always have something to do. (This was only possible, of course, due to the symmetric nature of the board). A downside of our strategy was that it was unresponsive to the actions of the other team, though we assumed that the implementation of our simpler strategy would be sufficiently complex to occupy us for the whole month, which certainly proved to be true.



One of several of our 6.270 handyboards used in our robot
before its sudden Kirchoff-defying demise. (Thanks Gleason!)

Design

Kate, a veteran of the FIRST robotics high school competiton, was responsible for the mechanical design of our robot. We decided on a differential drive train for our driving mechanism because of its simplicity and its (somewhat) dependability. To each wheel we attached a ~125:1 gear train and a single motor. Two additional smaller wheels were attached to the back for support and stability. In retrospect, the weight of the handyboard and hawker batteries probably necessitated additional motors, but hindsight is always 20:20.

Between the left and right gear trains, a simple enclosure was built to house the hawker batteries, and on top of that the handyboard was fitted. At the front of the robot we attached two claws hooked up to servos with which to grab balls. Kate cleverly chose lightweight Lego pieces (see picture) for the claws so as to minimize the necessary torque (and battery drain) for opening and closing the claws. Three phototransistors were attached to the underside of the 'bot for the initial orientation.

Code

The code is the brains of the robot. Once a team is able to get their robot's basic functions (driving straight, turning, grabbing balls) to a consistent level of reliability, then the AI design comes into play, namely providing the robot with intelligent instructions to navigate the board and perform the desired tasks. As suggested by the TA's, our code was designed using a closed loop mechanism, relying on feedback from sensors to decide when to continue on to the next stage of our plan for world domination (or at the very least, the crushing of all other 6.270 robot competitors). Our most important sensor was Analog Devices' specially designed 6.270 gyroscope which provided us with our angle bearings relative to an arbitrary coordinate axes, with a ± 5 degree accuracy.

As an example of the implementation of our strategy using a closed loop method, we will demonstrate how our robot was meant to initially orient itself at the start of the round. After being placed on the table, the robot was to read the analog output from its three phototransistors and to determine whether it was on the white or black square. Then, a servo would open on top of the 'bot, carrying the colored swatched along with it. Comparing the previous and current coordinates of the swatch transmitted via RF signal, the robot would then be able to determine its orientation (whether it was facing the +x direction, +y direction, etc.). Combining these two pieces of information (cross color and orientation) with the aid of the gyroscope, the robot could then rotate itself the exact 90*k degrees necessary in order to face towards the first four balls in its path. Below is sample pseudo code showing how this was accomplished.

void main() {
int color;
....
/* necessary calibration and start codes */
....
/* will return 0 if located on black, 1 if located on white */
color = whichsquare();

/* points robot towards first 4 balls */
orient_forward(color);
....
/* implement team strategy */
....
}

int whichsquare() {

if (phototransistors return white reading)
     return(1);
else
     return(0);
}

void orient_forward(int color) {

/* record current coordinates, move servo, record subsequent coordinates */

/* all movements taken relatively, so that turns are made to
(current_angle + additional number of degrees) and not
according to an absolute coordinate system */

if (color == 0) {
   if ( facing +y ) {
    go_to_angle(current_angle + 180);
  }
   if ( facing +x) {
    go_to_angle(current_angle - 90);
  }
   if ( facing -x) {
    go_to_angle(current_angle + 90);
  }
   if ( facing -y ) {
    /* do nothing */
  }
if (color == 1) {

   if ( facing +y ) {
     /* do nothing */
  }
   if ( facing +x) {
    go_to_angle(current_angle + 90);
  }
   if ( facing -x) {
    go_to_angle(current_angle - 90);
  }
   if ( facing -y ) {
    go_to_angle(current_angle + 180);
  }
 }
}

Note: The previous code is slightly misleading since it was also necessary to determine whether we were Team 0 or Team 1 with respect to the RF readings before we could save our coordinates. I leave the details as an exercise for the reader. (As all pompous and arrogant math texts will tell you).


Chaim in a moment of distress (and sporting quite the fashionable white, knitted yarmulka). (Pictures of Kate were not available for publication. If you would like to stalk her, please send her an email at: kdweston@mit.edu. You might have to wait in line behind Andy and various other beer guzzling frat boys. Thank you for your cooperation.)

Results

Due to an abundance of 'technical difficulties' (including two blown out handyboards, two quitting teammates, three schizophrenic phototransistors ... and a patridge in a pear tree), our team's grand plans failed to materialize. This was mostly due to poor planning, failed gear trains and lots of procrastination (and possibly Chaim not hooking up a Mountain Dew IV during coding sessions as per his original plans). Several important lessons were learned from this experience:

Our team would like to thank our organizer, Michael Thilmont, TA, Cliff Frey, über-organizer, David Ziegler, and all the other men and women who selflessly dedicated themselves to this course. We would like to give a special thanks to our team mascot, Andy the Groundhog, without whose support and kind words in times of frustration and difficulty we could have never accomplished as little as we did.


Back to Team Robot Webpages
Back to 6.270 Main Website
Get Firefox