Project Overview
For the Winter '18 ME 218B project, teams were tasked with designing an autonomous robot capable of navigating a field and scoring goals while in competition with another team. During a game, two robots face off on different sides of the field (red and blue). When the game starts, robots must query the Radio Equipped Facilitator (REF) and receive the appropriate face-off command via SPI communication. The robots then drive to the reload station, and the first to successfully reload a ball gets first possession to score. The shot clock starts any time a team gains possession, and can be any time between 10-25s, with possession changing sides every time the shot clock expires. This continues until the end of the game (at the end of 2 minutes, 18 seconds). The team with the highest score wins, and in the event of a tie-break, the first robot to reload a ball successfully in the allotted 20s tie-break time wins. If no team is able to successfully reload during this time, a winner is chosen at random.
For field navigation, there were a number of options. Each reload station and goal had a long-distance IR beacon pulsing at different frequencies. On the field floor, there was a color gradient varying from red to blue, a wire carrying a 100 mA current modulated at a frequency of 20kHz, and black tape, as shown in the diagram of the field below.
For field navigation, there were a number of options. Each reload station and goal had a long-distance IR beacon pulsing at different frequencies. On the field floor, there was a color gradient varying from red to blue, a wire carrying a 100 mA current modulated at a frequency of 20kHz, and black tape, as shown in the diagram of the field below.
Our Approach
Our team combined mechanical, electrical, and software design in order to achieve the core functionality for the game.
At the beginning of a game, we flipped a mechanical switch to determine whether we were on the red or blue side, and an indicator light of the same color would turn on accordingly. Once the REF determined that the game started and we were in the face-off state, a green indicator light would turn on to show that the game was in play, and our bot drove forward until it hit the wire running across the field. We had optical encoders installed on our two driving motors, which allowed us to drive straight and rotate more accurately by implementing closed-loop control on our motors' RPM speed. Once we caught the wire, the robot straddled the wire and implemented a different PI control algorithm in order to drive straight along the wire path until it hit the wall at the reload station. We had a limit switch at the front of the robot, and once this switch was triggered, the robot backed off by 1 inch in order to clear the reload station and be able to see the short-range IR receiver/emitter on the reload station. We had a short-range IR emitter/detector circuit, which we used to read the frequency being pulsed to us (between 500-1000 Hz), and return double this frequency to the reload station to request a ball. Our bot had an IR break beam sensor at the location where a ball was reloaded onto our platform, and once this was triggered by a ball being successfully loaded on, our bot backed away from the reload station, and turned by a fixed angle to face our goal.
Once we were in the proper position facing the goal (positioning double checked by reading the long-range IR beacon and ensuring that we were facing the correct tower with the frequency we received), the robot would start up the flywheel motor. When the REF determined that we had possession, a servo holding the ball in place with its attached spokes would release a ball into the flywheel shooter, and shoot it out - clearing our robot and rolling it along the field into the floor goal. After scoring, the bot would back up to the center of the field using our encoders to ensure we were driving straight - this was our defensive move (used to block any floor shots made by the other team during that time). Our bot would then drive forward again, catch the wire, and drive back to the reload station, and this would repeat until the end of a game. At the end of the game, our bot would stop and turn off its green play indicator light.
At the beginning of a game, we flipped a mechanical switch to determine whether we were on the red or blue side, and an indicator light of the same color would turn on accordingly. Once the REF determined that the game started and we were in the face-off state, a green indicator light would turn on to show that the game was in play, and our bot drove forward until it hit the wire running across the field. We had optical encoders installed on our two driving motors, which allowed us to drive straight and rotate more accurately by implementing closed-loop control on our motors' RPM speed. Once we caught the wire, the robot straddled the wire and implemented a different PI control algorithm in order to drive straight along the wire path until it hit the wall at the reload station. We had a limit switch at the front of the robot, and once this switch was triggered, the robot backed off by 1 inch in order to clear the reload station and be able to see the short-range IR receiver/emitter on the reload station. We had a short-range IR emitter/detector circuit, which we used to read the frequency being pulsed to us (between 500-1000 Hz), and return double this frequency to the reload station to request a ball. Our bot had an IR break beam sensor at the location where a ball was reloaded onto our platform, and once this was triggered by a ball being successfully loaded on, our bot backed away from the reload station, and turned by a fixed angle to face our goal.
Once we were in the proper position facing the goal (positioning double checked by reading the long-range IR beacon and ensuring that we were facing the correct tower with the frequency we received), the robot would start up the flywheel motor. When the REF determined that we had possession, a servo holding the ball in place with its attached spokes would release a ball into the flywheel shooter, and shoot it out - clearing our robot and rolling it along the field into the floor goal. After scoring, the bot would back up to the center of the field using our encoders to ensure we were driving straight - this was our defensive move (used to block any floor shots made by the other team during that time). Our bot would then drive forward again, catch the wire, and drive back to the reload station, and this would repeat until the end of a game. At the end of the game, our bot would stop and turn off its green play indicator light.