- ME 218B: Autonomous Robot
To design and implement an autonomous mobile robot that can compete against another team’s robot in a game of acquiring Nerf Ballistic Foam Balls (“Happy Fun Balls”) and depositing them in three possible goals on a playing field (see Figure 1 below) in two-minute rounds.
- 4 weeks to complete the project
- Project budget of $150
- 3-person team
- The robot must be a stand-alone entity, entirely battery-powered, and must execute from code contained in flash memory on the processor
- Robots must be autonomous and un-tethered
- The robot must fit within a footprint of 12” x 12” x 11.5” (L x W x H)
- The only parts of the robot that may ever touch the playing field are wheels or low-friction, non-marring sliding supports used to balance the robot
- An emergency stop button on the robot
- Each robot can carry a maximum of 10 Happy Fun Balls at one point in time
- The supplied pair of Maxon motors must be used to drive anything that transfers force to the ground
- Design Approach
Our strategy was based on our ability to traverse complex, “tape ridden” terrain in the most efficient way possible: with superior speed. Even though we only went for goal #1, which was the lowest scoring goal, by acting quickly and finishing the game early, we hoped to limit the other team’s points. Our mechanical and electrical designs were centered on our need for speed.
We designed an autonomous robot that implemented a simple strategy to collect balls, hold them, and release them into goal #1. To collect balls, we placed a piece of foam core in the front of our robot to depress the ball request button. As each ball dropped from the dispenser onto our robot, a funnel-like device channeled the balls into a hole, which led to a PVC pipe with a door motor acting as an electro-mechanical switch to prevent balls from leaving our robot. See Figures 2-7 for images.
Our robot’s chassis consisted of a ¼”-thick piece of laser-cut acrylic (10” x 3”) and a 1/8”-thick piece of laser-cut masonite (10” x 10” with ¼” fillets). We placed the front edge of the acrylic piece two inches from the front edge of the masonite, which was also the front edge of our robot. This decision was based on our desire to place the drive wheels closer to the front of our robot rather than in the middle.
The ¼” piece of acrylic was attached to our drive transmission system consisting of the following parts/mechanisms (see Figure 4 below):- Two provided Maxon DC motors- Two laser-cut acrylic pieces to attach to the front of the DC motors using M2 screws- Two laser-cut acrylic pieces to attach to the rear of the DC motors to assist in keeping the DC motors stationary- Two ¼”-1/8” spider couplers- Two ¼” stainless steel shafts- Two ¼” inner diameter shaft collars with set screw attachments- Two ½”-thick laser-cut acrylic wheels (2.3” diameter)- Two rubber tires from an off-the-shelf Vex Robotics KitCaster WheelsTo provide our robot excellent stability while driving, we placed two spherical caster wheels at the back side of our robot. We placed these two casters 4.67” apart center-to-center, which was long enough for stability, yet not significantly long to prevent our robot from moving too slowly at a given duty cycle. These caster wheels can be seen nicely in Figures 3 and 4.
- Proximity SensorsTo provide our robot greater robustness in dealing with the possibility of encountering the playing fields’ walls, we implemented four QRB1134 reflective object sensors, one at each corner of our robot (can be best seen in Figure 12). To allow for tweaking the direction and location of these proximity sensors, we designed our masonite chassis to have L-shaped holes at each of the four corners, with the width and/or diameter of these holes slightly larger than the width/diameter of the tape sensor slots (about 0.15”).
As each ball dropped from the ball dispenser onto our robot, it fell onto a funnel made from foam-core as shown below in Figure 8. The funnel was sloped in two different directions to prevent balls from getting stuck en route to our PVC pipe and ball release mechanism. We cut a hole at the nadir of our funnel with a diameter slightly larger than the ball’s diameter of 1.75”. To attach the funnel to our robot, we used some electrical tape instead of hot glue to allow us to tweak the location of various components inside our robot.
- To track the various pieces of tape on the playing fields, we implemented a set of three QRB1134 reflective object sensors, as seen in Figures 3-7. Each adjacent pair of tape sensors was placed 0.56” apart, center-to-center based on this measurement of the tape’s width. We desired to have only the middle tape sensor activated while traveling in a perfectly-straight line. To provide our robot a precisely-manufactured part on which to mount our tape sensors, we used a 1/8”-thick laser-cut piece of masonite.The line sensing circuit is shown in Figure 9 below. A 200-Ohm 5% resistor was used to provide a possible current range of 15.7-17.4 mA. Since this circuit was used for tape sensing, the distance from the sensor to the ground was fixed. An appropriate resistor value (1K Ohms) was selected empirically, and the distance was then optimized to allow for the greatest change in voltage between the white playing surface and the red tape.The analog output from both circuits provided a 0V-5V signal; this signal was fed into the analog pins of the E128. In software, the line sensing signals were input into a proportional-derivative controller. The feedback signal was the difference between the two outer line sensors, as seen in Figure 10 below; the command signal was set to zero.
- PVC Pipe and Door Motor Release Mechanism
We collected five balls at each trip to the ball dispenser because our PVC pipe could hold five to six balls without the possibility of balls getting stuck in the hole of our funnel. To provide an electro-mechanical ball release mechanism, we drilled a hole on the top surface of the PVC pipe near the end of the pipe. A door motor was placed directly above this hole, which opened for releasing balls and closed for preventing balls from leaving our robot at inappropriate times. To elevate the door motor above the PVC pipe, we designed two identical 1/8”-thick pieces of masonite with slots for the door motor’s mounting holes and placed this on both sides of the PVC pipe. The mechanism is shown below in Figure 11.
- Electrical Circuit Incorporation
To adequately incorporate our electrical circuits and E128 microcontroller, we laser-cut several sets of four holes through which we mounted various circuits. In addition, all of the circuits except for the battery lead board (to prevent accidental contact of this board with the environment) were visible to us as we tested our robot, which aided our diagnosis of various problems.
All software was written entirely in C for the E128 microcontroller.
We completed all intermediate deadlines and the project on time. In addition, our team was the first team to meet all project requirements. We spent close to $130, and were thus roughly 13% under budget.
During the public demonstration, our robot won the first round of the competition. However, our robot did not move during the second round and lost. We believed there was a lighting bias on the playing field between the two sides A and B that caused our robot to win the first round and lose the second round.
Figure 12 below is a final photo of our robot.