6.270

Team 37
Doppelgänger

Alex Artola
Toliver Jue
Rajay Kumar

Facts about Doppelgänger

Physical Features

Our robot had a very simple design. Its main feature was a roller with a gear ratio of 15:1 which was a long rod with wheels on it which spun and knocked balls off the table. Our robot used a differential drive with ratios of 45:1 for each side which came in hand when line-following which we did with help from bottom-mounted light sensors. Each side had two motors.

Size

11.8 inches by 10.4 inches

Electronics Used

We used the Handy Board, six LED/phototransistor pairs, five motors, an IR beacon, and four bump sensors.

Drive Used

We used the differential drive.

Code Features

Our code had functions for line-following. We did this by using some of the bottom mounted sensors. We also had code to react to objects hitting a front bumper. If an object hit the left bumper, the robot would make a right turn and if an object hit the right bumper, the robot would make a left turn.

Here are the files we used for our robot:

behavior.c Behaviors exhibited by our robot such as moving forward with the roller engaged.
button.c Code which controls extra buttons added to our robot.
defines.c Special definitions such as ports for sensors determined by a #define command.
init.c Code which must be run when the robot is started.
linefollow.c Code for following lines.
main.c Obligatory main file which ties everything together.
menu.c A special menu put on our robot to make it easier to test multiple programs.
motor.c Code controlling motors, like code which sets their speed.
orient.c Code used to orient the robot.
sensor.c Code to read directly from sensors.
temp.c Temporary file for testing code.
timeout.c Code for handling timeouts such as when the robot gets stuck.

Competition

Competition Results

Doppelgänger made it to the fifth round. We suffered a loss in the first round, had three double-wins and then lost in the fifth round.

Assessment of Performance

Part of the reason it did so well is that it could knock off two balls reliably. It probably would not have gotten farther than it did since it did not return to the line after performing a 180 degree turn after hitting a side of the wall.

Expectations

Our robot did better than we expected. Judging by our first round loss, where we did not score any points, it seemed unlikely we would make it to round three, let alone round five.

Strategy and Development

Our strategy was to basically sweep back and forth on the opponent's side, knocking balls off the table. Here's the breakdown of our strategy:

1) Orient and face in the direction of the opponent's side.
2) Go straight for the ball directly in front of the robot.
3) Push that ball over the small wall behind it.
4) Back up and perform a 90 degree left turn to detect the line.
5) Follow the line until the ball had been thrown over the wall and both front sensors touched the wall.
6) Backup for a short distance, perform a 180 degree turn.
7) Goto step 5 and repeat until time runs out and then shutdown.

It took us a long time to develop this strategy. We went through many, many ideas and robot designs until finally settling on this one. We chose this strategy because it did not require us to make a trip back to our side again and it could do well against many strategies, except for ones which exhibited a cage.

Tasteful Pics of our Robot