|
|
|
|
|
Feelin'
Crabby is the robot we built for the MIT
6.270 competition in January 2001. With a basic
goal of getting balls from our oponent's side to our
side, our robot managed fairly well and was able to
return two balls very reliably - except for contest
night which was when it mattered.
Initial Strategy: Our
initial strategy was to bring the two opponent balls
(balls at locations 3 and 4 assuming we start at 1)
back to the baseline on our side. After bringing the
balls back to our side, we would use the remaining time
to seek out the other robot using the infrared beacon
and disrupt its activities by ramming it with the back
of our robot.
Final Strategy: After
much testing, it turned out that getting ball 3 was
very unreliable. After viewing other robots, we noticed
a lot of them went for one ball only and quickly went
back to their own side. This also disrupted ball 3 causing
us even more problems. To counter this we decided to
go for ball 3 first. In the process. we would stay in
the area between 2 and 3 for a few seconds to block
any robots trying to bring balls back to their own side.
Getting ball 3 was now easy since we could wall follow
and know exactly when to close our arms. After going
back to the other side to get ball 4, we would simply
return home.
|
|
|
|
|
|
|
|
|
|
|
By the time of the mock contest,
we still couldn't reliably grab the second ball and
get back to our side. The way our robot is designed
requires a lot of precision in the driving and turning
in order to successfully retrieve the two balls while
avoiding accidents like collisions with the center platform
or missing the balls when we grab them. We had a lot
of problems with our robot veering off to one side when
it's holding a ball, since the ball acts sort of like
a brake for our robot and slows down one side of the
robot as it drives with the ball in one of its arms.
A design problem was the way
the elbows of the arms stick out. They rub against the
wall and cause our robot to drive the back corner into
the wall as we drive backward along the wall. This was
the cause of our robot not returning to our side during
the second match in the mock contest. Our opponent knocked
the center ball back to their side and this ball moved
our first target ball from its initial location and
we weren't able to grab it. We successfully grabbed
on to the second ball but wasn't able to make it back
to our side since the single ball caused our robot to
swerve against the wall and the robot was stuck in the
on their side.
After the mock contest, we reevaluated
our strategy and decided to change it based on the strategies
of the robots that did well. Since a lot of robots tend
to grab their opponents' balls and bring the balls back
to their own side through their starting area, we decided
that it might be better to get the robot to the opposite
wall first and retrieve the farther opponent ball before
getting the ball closer to us. This was in response
to those robots that grab the ball closest to them in
the beginning and bring that back to their own side
before retrieving the other ball. Our robot is positioned
such that it would be able to get in the way of the
faster robots that can make it back to their side within
10 seconds and prevent the ball they're holding from
reaching their side. With this new strategy, our robot
should be able to get both balls back to our side after
we finish tweaking, unless our way back is blocked off
by some robot or something goes terribly wrong and our
robot isn't able to recover from the situation.
Our new strategy seemed to run
fairly well. The robot was able to grab the two balls
most of the time. However, we were still plagued by
the problem of backing up to our side due to our protruding
elbow rubbing against the wall. We attempted to fix
the problem by attaching four touch sensors to detect
the wall collisions that can potentially stall the robot.
While attaching extra pulley wheels could have helped
greatly, we were limited by size constraints and thus
couldn't add them without changing our robot design.
We also added code to ram with
the back side of our robot in case some robot happens
to get in its way while it attempts to return to its
own side with opponent balls.
|
|
|
|
|
|
|
|
|
|
|
Our robot uses differential
drive since it is simple and makes it easier to orient
the robot quickly. However, the downside to the differential
drive is that it's geared more towards driving straight
and then turning in place; it's very difficult to determine
how the robot will travel if it turns and moves simultaneously.
We doubled up the big thin wheels on both sides in order
to increase the traction, while decreasing the torque
exerted on each tire, so that the rubber won't slip off
the wheel. Each pair of wheels is driven by three motors,
for a total of six motors. Three servos were used: one
to rotate the steering wheel, and two to control the arms
of the robot. Our final design had five LED/photo-resistor
pairs for orientation and color identification, four touch
sensors to detect when we bump into walls or other robots,
and a distance sensor to help determine whether the robot
is near the center platform or at the ends of the table.
Since we built our robot with stability and ramming in
mind, the final area was just short of the allowed limit.
The height was well within the limit. |
|
|
|
|
|
|
|
|
|
With our new strategy and additions,
our robot did fairly well during the practice runs we
did in lab. It was able to grab the two opponent balls
(or one of the two, as the timing and positioning isn't
always perfect) and return to its own side most of the
time. We didn't do as well in the actual competition
as we wanted, due to some bad luck. Before round one,
we decided to put in an extra ten seconds of waiting
when our robot is positioned to grab the first ball.
This was in response to the strategies of robots that
grab one ball and return to its own side (robots using
that strategy went on to the final round of the competition).
With our robot's back toward the opponent, we were hoping
to screw up the other robot and withstand some ramming
before retrieving the first ball. This implementation
would have worked against most of the robots, except
we went against team #3, whose robot went back to their
own side through our starting position, something totally
unexpected, and had code to drive towards our robot.
With the ten-second sleep, our robot was helpless as
it was pinned to the wall from the side. We were unable
to free ourselves and retrieve any ball.
Round 2
Before impounding,
we just got rid of the ten-second wait and fine-tuned
the robot. We barely survived in round two, when we
faced the Microsoft placebo. It didn't orient properly
and went after its own balls, and so collided with us.
Since we didn't think any robot would disorient itself
like that, we didn't have error-correction code for
colliding with other robots during that phase of the
robot's routine. Our robot was "lost" due
to the collision and wasn't able to score. We would
have won on technicality, as the placebo wasn't supposed
to disrupt the other robot. Our robot also helped the
Microsoft placebo to tip over, and that disqualified
them since their IR beacon dropped below the legal height
range. We won round 2 with their disqualification.
Final Round
Our robot just wasn't
destined to score during the actual competition. In
round 3, we went scoreless again, for our second loss.
The robot we went against didn't really do anything,
so we should have won easily; but Lego pieces we added,
to prevent the front wheel from rolling on to the ball
and causing the robot to jerk and become disoriented,
came off when our robot was retrieving the second ball.
As a result, our robot jerked a few times and became
too disoriented to correct itself and make it back to
its own side within the time limit. When we went to
pick up our robot after the round, we noticed that part
of the robot was already in the neutral zone, and that
one of the balls was just two or three inches away from
the neutral zone. A few more seconds and we would have
won 2-1. Tough loss for our unlucky robot. The moral
of the story is: luck is everything.
|
|
|
|
|
|
|
|
|