Click here for more pictures.


Bite Me!

Physical Structure

From the ground up, our robot was designed to be fast and sturdy. The main gear ratio was 25:1, with two motors powering each wheel. We used a differential drive steering system on two drive wheels, and added a third caster wheel for stability. The basic strategy of the robot was to quickly capture balls and push them over the edge. To that end, we used a servo powered gate which bites down on the balls to capture them, thus the name "Bite Me!"

Bite Me's sensor suite included a shaft encoder on each wheel drive train for dead-reckoning navigation, a set of 9 color sensors used for orientation and basic feedback navigation, and bump sensors used for timeouts. In addition, a pair of distance sensors on the front arms were used to locate the obstacle.

We faced a number of design challenges while building and testing our robot. First and foremost, our robot was just too fast. Stopping the robot required a brief, precisely timed backdrive of the motors. Repeat runs with our robot caused the motor driver chips (H-bridges) to overheat and stall the motors, requiring us to install a heatsink and fan cooling system. Of course the color sensors on the back of the robot required shielding to operate under 26-100 lighting conditions. And let us not forget that the sheer speed and power of our robot overwhelmed even the best of lego engineering, causing our robot to lose pieces after 3-4 runs. We solved this problem by performing a brief, 12-point hardware check before each round, reinforcing parts of the robot structure which had loosened.

The biggest design challenge came on the day of the competition, when our robot double-false-started in the second round. Since we had never encountered this problem before, we inspected the start-machine code and discovered a bug in the program, which under the right lighting, position, and orientation would cause our robot to false start fairly consistently. Since we were not allowed to fix the code in the software, we implemented a simple fix by way of exact positioning of our robot and sensor shielding.

Strategy

Our strategy was to collect 4-5 balls as fast as possible, and then obstruct the opponent. Our robot would first orient itself so that it faced the top edge of the table (away from the lip). Then it would back up, push the ball at the lower edge of the table over the lip, and align itself with the line on the far end of our area. In the process of backing up, the readings obtained from the distance sensors mounted on the side of the robot determined one of the following three relevant positions:

  • close top: in this case, after pushing the first ball over, Bite Me would move forward and turn to align itself with the 3 balls in a straight line. It would then drive straight for a predetermined distance and capture the balls by closing the gate while still moving forward. After crossing the central black line, it would back up, turn to face the lip and drive forward, pushing the balls over the edge.
  • close bottom: the same strategy as above, except that the robot would move for a longer distance after dropping the first ball in, in order to get in line with the 3 free balls closer to the top of the table. Due to the inherent weaknesses of dead reckoning, the robot used its light sensors to determine the place where it should stop.
  • far: in this case, the strategy was to go the same distance as in the previous case, turn, and move forward. If, after moving a predetermined distance, the front bump sensors did not detect an obstacle, the robot concluded that the obstacle was in the "far bottom" position and continued as described above. If the bump sensors were activated, the robot concluded that the obstacle was in the "far top" position. The robot would then back up, turn, and deposit 3 balls by pushing them over the edge.
  • After depositing the center balls, Bite Me backed up, turned toward the opponent's side and attempted to capture some of the opponent's center balls.

    Contest

    Overall, we did fairly well in the contest. Like most other robots, Bite Me scored one point in the first round and won. In the second round, we suffered a shock when Bite Me double-false-started. After fixing the start light, the robot was scoring 10 points (four balls) consistently and attracted a fair amount of audience's attention. Unfortunately, in the sixth round, the opponents' robot double-false-started, and our robot false started once. Consequently, we had to calibrate four times - and the fourth time, we forgot to turn on the motor batteries! With batteries off, Bite Me lost the round (against a placebo!) and only made it to top 15 robots in the contest.


    New: Click on the button below to run a 3D simulation of Bite Me's strategy!
    alt="Your browser understands the <APPLET> tag but cannot run the simulation applet." In order to run this simulation, you need a browser which supports Java JDK 1.1 or greater.
    Did we get into a pet-like relationship with Bite Me?


    Vimal M Bhalodia
    Stanislav Funiak
    Abhinav Kumar