Strategy
We adopted the "double-blocking" strategy. Since
the game table this year only featured two tubes in which our opponent could
score points, we planned on scoring 1 point and then blocking both tubes.
Our robot would first orient itself and then drive towards the trough,
pushing a ball into our tube. Then our robot would lower an arm that
dropped of a small car into the trough. As the car was released, blocking
flaps would swing ("flop") down to protect our own tube. The car would
then drive down the trough until it covered our opponent's tube. We
hoped that we could accomplish this quickly enough so that our 1 point would
be enough to give us a win (our opponent could also score 1 point, resulting
in a double win).
Construction
Flopbot's drive train consisted of two wheels in front
each indepently powered by a motor with a gear ratio of 75:1. The back
third wheel was unpowered and was used for steering by mounting it on a servo.
Since we only made a 90 or 180 degree turn, this back wheel servo was
only ever at two angles: one to make Flopbot drive straight, and one to make
Flopbot spin in place. The car featured 2 motors: one to drive the left
wheels, and one to drive the right wheels. Each of these gear ratios
was 20:1. The motor that drove the wheels closer to the plexiglass in
the trough was not powered as strongly. This helped the car steer into
the plexiglass and keep it inside the trough.
In addition to its start light sensor, Flopbot featured
4 CDS cells to determine the colors of the 4 patches underneath it, allowing
it to figure out what side it was on and what orientation it was in. A
shaft encoder was used on the back wheel to count how far it rolled during
turns. Two touch sensors were mounted at the front of Flopbot so that
it would tell when it was in full contact with the 1/2" lip in front of the
trough. A touch sensor was mounted at the front and back of the car,
and these were wired in an OR configuration since the car would need to be
able to drive either direction depending on what side of the table we were
playing. This sensor would tell the car to stop driving when it hit
the wall and was successfully parked over our opponent's tube.
The arm that held the car featured an "elbow" servo that
rotated the arm in a plane parallel to the table top. This servo would
rotate the arm from holding the car at the back of the robot to out in front
of the robot over the trough. The arm also included a "wrist" servo
that would then rotate the car from a position in which it was upside down
to flipped over and right side up in the trough. During the flipping
process, the car would power its motors so that its gears held it on the straight
gears we placed on the arm. While this didn't hold the car on, it slowed
it substantially so that it was not released until the arm was in position
to drop it straight down into the trough.
The last part of construction was making the tether to
connect the car to the robot by lego. Finding a place to mount this
on our robot so that it would not become snagged while the car drove off proved
very difficult. Eventually we decided to leave the tether on the left
side of the robot since we had placed the HandyBoard on the right side. This
made playing on the white side of the table somewhat more difficult because
the car would have to drive off to the right. Sometimes the tether
would become snagged on the arm, so before the car drove, the "wrist" of
the arm was raised up again temporarily.
How It Worked
Flopbot almost always successfully dropped the car into
the trough. Only once (during round 2) out of all the times we tested
it, the car got stuck on the gears on the arm and was not successfully placed
in the trough. Occasionally we had issues with the robot not turning
quite far enough. We thought this had to do with the charging of the
batteries because the turns were dependent on how much the robot would keep
spinning after its motors were turned off. Overall, the main issue halting
Flopbot's ability to reliably block both tubes was the tether. The tether
would often become caught on parts of our robot or other parts of the table,
especially the lip. We tried to add base plate to areas on our robot
that the tether often became snagged to smooth these areas out and make them
less likely to catch the tether. We also added a timer to the car,
so that if it did not reach the wall in a certain amount of time, it would
back up for a very short time, and try again. In lab testing, we were
able to achieve fairly successful release of the car, but in competition,
we did not fair as well.
Round 1: Win 1-0
Flopbot successfully deployed the car, blocking both
tubes. However, our opponents did not even turn on their batteries
and were disqualified for not transmitting IR.
Round 2: Double Win 1-1
Flopbot scored a point, but the car became stuck on the
arm. It never deployed, but luckily our opponents only scored 1 point
as well because they became stuck on the obstacle.
Round 3: Loss 0-1
Flopbot did not turn a full 180 degrees, probably due
to batteries that were not fully charged. When it drove towards the
ball, it got stuck in the corner of the back wall and the 1/2" lip. It
was not even able to push the first ball into the trough and score a point.
Round 4: Double Win 1-1
Flopbot successfully deployed the car, but it became
caught on its tether. This caused the car to turn into the plexiglass
wall of the trough, hitting the front sensor on the car, causing it to stop.
Luckily again, our opponent's only scored 1 point.
Round 5: Loss 1-6
Again, the car's tether got stuck on the arm because
we were playing on the white side of the table. When it finally got
free, our opponents were just dropping more balls into the trough, so our
car actually pushed the balls into the tube.
Final Thoughts
We had a fun time building our robot. It was pretty
sweet seeing it work and do everything it was supposed to. We realized
there were several robots that we would have slim chances against since they
scored two balls very quickly. In retrospect, we think the best strategy
would have been to make a robot that scored two balls quickly and then went
after the others on the table. However, reliability in this contest
was a big issue. The robot that ended up winning- Paco Lopez- was the
only robot that could score two balls reliably (it usually didn't score more
than this). We had a good time with our strategy though, since it was
gutsy and when we were able to pull it off, it looked pretty cool.