The Task
Our task was to make a robot to compete against another robot in a game resembling a hybrid of basketball and hockey. The game works as follows. To start a game there is a face-off in which each robot attempts to reload from its designated reload station. The robot that reloads first has possession and attempts to score by shooting the ball along the ground or through the air. If the robot scores, or the shot clock runs out, the robot must then play defense. Possession goes back and forth like this until the game ends.
Each reload station has a beacon mounted on top. The beacon consists of a number of LEDs emitting infrared (IR) light modulated at a certain frequency. The reload station has other IR LEDs, as well as photosensors, in other position. To reload, a robot must measure an IR emission from the reload station and respond with an IR signal modulated at twice the frequency of the pulsed emission. There is black tape stretching from reload station to reload station, and underneath the tape is a wire carrying current modulated at 20 kHz.
In order to score a goal, a ball must pass through either the ground-level opening or the opening on the top side of the goal, and stay in the goal. Each goal has an IR beacon mounted to the top.
The robots get information about the game from the REF (Radio Equipped Facilitator). The REF communicates with the field wirelessly, then passes on this information to the robot's microcontroller over a 4-wire SPI bus. The REF lets the robot know the current game state (Waiting to Start, Face Off, Offense, Defense, Tie Break, Game Over) and the current score. Possession changes when the offensive team scores or when the shot clock runs out.
At the end of 2 minutes and 18 seconds, the robot with the highest score wins. In the case of a tie, the game goes into Tie Break; the first robot to successfully reload then wins the game. It is prohibited for robots to interfere with each other during the game.
Each reload station has a beacon mounted on top. The beacon consists of a number of LEDs emitting infrared (IR) light modulated at a certain frequency. The reload station has other IR LEDs, as well as photosensors, in other position. To reload, a robot must measure an IR emission from the reload station and respond with an IR signal modulated at twice the frequency of the pulsed emission. There is black tape stretching from reload station to reload station, and underneath the tape is a wire carrying current modulated at 20 kHz.
In order to score a goal, a ball must pass through either the ground-level opening or the opening on the top side of the goal, and stay in the goal. Each goal has an IR beacon mounted to the top.
The robots get information about the game from the REF (Radio Equipped Facilitator). The REF communicates with the field wirelessly, then passes on this information to the robot's microcontroller over a 4-wire SPI bus. The REF lets the robot know the current game state (Waiting to Start, Face Off, Offense, Defense, Tie Break, Game Over) and the current score. Possession changes when the offensive team scores or when the shot clock runs out.
At the end of 2 minutes and 18 seconds, the robot with the highest score wins. In the case of a tie, the game goes into Tie Break; the first robot to successfully reload then wins the game. It is prohibited for robots to interfere with each other during the game.
The Robot
The robot must begin within a volume of 1 cubic foot, be untethered, and operate autonomously. The robot most not expand horizontally past its original 1 foot cube volume, but it can expand vertically. It must not block the beacons for the opponent's goal and reload station. The robot must have a 2-inch strip of retroreflective material that covers the region between 2.5 and 3.5 inches from the floor. The robot must display the game state (waiting vs active) and its team (red vs blue). The robot's drive train can only use two 7.2-V batteries. The budget for building the robot is $200.
Our robot used a variety of sensors in order to effectively sense the field. It had two IR-sensitive photodiodes facing forward and laterally to detect our reloader and both goals. It also used two inductors as Hall effect sensors to find and follow the wire current. Two limit switches were used to line up with the reloader. To sense the opponent the robot housed an IR emitting/receiving pair that would take advantage of the retroreflective bumper required of every robot. Finally, there two Sharp proximity sensors in the front and the rear of the robot for collision avoidance.
For shooting, a fly wheel was used to launch the ball along the ground. A 3D-printed chute transferred the ball from the reloader to the shooting stage. A servo held the ball above the shooting stage until it was time to shoot.
Our robot used a variety of sensors in order to effectively sense the field. It had two IR-sensitive photodiodes facing forward and laterally to detect our reloader and both goals. It also used two inductors as Hall effect sensors to find and follow the wire current. Two limit switches were used to line up with the reloader. To sense the opponent the robot housed an IR emitting/receiving pair that would take advantage of the retroreflective bumper required of every robot. Finally, there two Sharp proximity sensors in the front and the rear of the robot for collision avoidance.
For shooting, a fly wheel was used to launch the ball along the ground. A 3D-printed chute transferred the ball from the reloader to the shooting stage. A servo held the ball above the shooting stage until it was time to shoot.
The Strategy
Our offensive strategy consists of two parts: reloading and shooting. First, our robot checks the number of balls on board. If two or more balls are loaded, the robot rotates until it faces the attack goal and then shoots. If fewer than two balls are loaded, the robot attempts to reload before shooting.
To reload, the robot rotates until it senses the IR beacon mounted on the appropriate reload station. Then it drives forward with a slight leftward drift until it senses the wire current. When this happens, the robot turns right for a set period, then drives using closed-loop control to maintain its position and orientation over the wire. When one limit switch is hit, the speed of the wheel opposite this limit switch is increased. When the other limit switch is pressed, the robot is aligned with the reloader and begins "handshaking," that is, receiving the reloader's IR signal and emitting to the reloader an IR signal with twice the frequency. In most cases, the handshake is successful and the robot collects a ball from the reloader.
The robot leaves the reload station by driving in reverse (straight back, away from the reloader). After a set period, it stops and rotates until it faces the attack goal. The robot emits an IR signal toward the goal. If the signal does not come back to the robot, the path is clear and the robot fires a ball along the ground toward the goal. If the signal comes back to the robot, the path is blocked by the opponent robot, so the robot then drives in reverse for a set period, stops, aligns with the goal and checks for the opponent robot. The process repeats until the robot shoots or the shot clock runs out. Every time that the robot drives in reverse, it checks its rear proximity sensor. If the opponent robot is in the way, our robot immediately stops, rotates to align with the attack goal, shoots, and almost certainly scores (if the opponent robot is behind us, it cannot also be between us and the attack goal, so the path to goal is clear).
On defense the robot rotates to the defend goal then drives forward, using the front proximity sensor to stop a few inches from the goal and thus blocking a large portion of the ground opening. The robot intentionally overturns with respect to the beacon to ensure that it is on the near side of the goal relative to the opponent reload beacon - the position from which the opponent robot is most likely to shoot.
To reload, the robot rotates until it senses the IR beacon mounted on the appropriate reload station. Then it drives forward with a slight leftward drift until it senses the wire current. When this happens, the robot turns right for a set period, then drives using closed-loop control to maintain its position and orientation over the wire. When one limit switch is hit, the speed of the wheel opposite this limit switch is increased. When the other limit switch is pressed, the robot is aligned with the reloader and begins "handshaking," that is, receiving the reloader's IR signal and emitting to the reloader an IR signal with twice the frequency. In most cases, the handshake is successful and the robot collects a ball from the reloader.
The robot leaves the reload station by driving in reverse (straight back, away from the reloader). After a set period, it stops and rotates until it faces the attack goal. The robot emits an IR signal toward the goal. If the signal does not come back to the robot, the path is clear and the robot fires a ball along the ground toward the goal. If the signal comes back to the robot, the path is blocked by the opponent robot, so the robot then drives in reverse for a set period, stops, aligns with the goal and checks for the opponent robot. The process repeats until the robot shoots or the shot clock runs out. Every time that the robot drives in reverse, it checks its rear proximity sensor. If the opponent robot is in the way, our robot immediately stops, rotates to align with the attack goal, shoots, and almost certainly scores (if the opponent robot is behind us, it cannot also be between us and the attack goal, so the path to goal is clear).
On defense the robot rotates to the defend goal then drives forward, using the front proximity sensor to stop a few inches from the goal and thus blocking a large portion of the ground opening. The robot intentionally overturns with respect to the beacon to ensure that it is on the near side of the goal relative to the opponent reload beacon - the position from which the opponent robot is most likely to shoot.