Alex Boutaud, Jim Roewe, Ethan Fenn
Our team's strategy has 3 main parts.
First, we attack the other robot.
This what we most wanted to do with our robot.
In attacking, we track the opponent down, using their infrared beacon.
When we find them, we try to lift them up and even flip them over, using a fork lift, hence the name for our robot.
After attacking, our robot could be anywhere on the game board.
When following the other robot, it tries to track it down as quickly as possible.
This makes it hard to remember where we have gone.
Plus, since the board is not all flat, even when we are driving straight, we might be turning since that will happen on a slope.
So, to find where it is located, the robot looks at the board color and then tries to find a slope.
Since there are only two slopes and each one is a different color, they are unique.
Then, using the accelerometer, the robot can aim itself whatever direction it wants on the slope.
The robot returns to its starting position and squares itself on the wall.
Now the robot is back in a known location.
Next, the robot moves up to the balls at the top of the table on its side.
These balls will likely not have been touched.
Instead of just assuming the balls are exactly where they are supposed to be, and that the robot can move precisely, the robot scans to find the balls.
This allows the balls to be in a large general area.
When the robot finds a ball, it grabs it with the gates on the back and tries to find more.
If an enemy ball is found, it is ejected from the holding area using a kicking device that is attached to the gate.
When of our balls are found, the robot will return to the center of the board and stop.
Our robot does a few really interesting things.
First and foremost, flipping over another robot is about as fun as things can get.
We were told that it wouldn't work, that robots were too heavy.
But, we went through a lot of different ideas and came up with something that works.
Our fork lift is directly driven by two motors.
The gear ratio from the motors to the final lift is somewhere around 250:1.
This gear ratio is accomplished using both gears and different pulley sizes.
The forklift can raise about 4~5".
Also, to help grab the robot, we used spring loaded pokers.
Since these have rubberbands keeping them extended, it allows some parts to not go into the robot while others do.
Basically, if the entire lifter was one solid piece, then if any one part of it ran into the opponent, it would keep the entire thing from grabbing the robot.
Plus, the axles that we used have a very good knack for finding their way into the structural lego beams of other robots.
All in all, it worked very well and completely flipped over a robot in the final competition.
To aid in our attacking stage, we modified the use of the IR beacon on our robot.
We repositioned and shielded the IR receivers on the beacon so that they would have a better idea of where the other robot is.
This allowed us to be more responsive in our tracking, rather than waiting until the robot was entirely next to us to turn.
Last, our robot had the ability to find itself anywhere on the game board and return to its home position.
This ability worked almost perfectly before the competition, but we realized it was running too long and had to be shortened, thus decreasing its effectiveness.
Essentially, as said before, the robot knows exactly where it is if it is on one of the slopes on the board.
Therefore, we move around the board in probably directions after chasing until we find a slope.
Then, we aim ourself towards the center of the board, find where the color changes and then follow that color change back to the starting position.
There were some difficulties with this.
First, the accelerometer code is buggy.
When the accelerometer was in use, the servos on the robot twitch a lot.
They twitch so much, in fact that it causes the accelerometer to give bad readings.
Our trick to getting around this problem wasn't to decrease the sensitivity of the accelerometer.
Instead, we turn off the servos very, very briefly while we read the accelerometer.
Then, since the accelerometer has two axes of measurement and we know what flat is, we can know how the robot is oriented.
Using this data, the robot can be pointed in any direction on a slope by moving until its side to side axis is at flat and the front to back axis is maxed.