ME 210 Curl'y Fries

On competition day, we arrived about two hours early, and at that point the robot had previously been performing reliably. After check-off, we made a small improvement to the control logic by adding an extra state to ensure the servo consistently released the gate, and we expected the robot to perform well. However, once we began final preparation, several issues appeared in quick succession.

The first thing we did was improve wire management by zip-tying loose wires. Because we already had significant experience debugging the robot, we were initially not too worried when the robot stopped responding reliably, even under the basic orientation code for forward, backward, left, and right motion. We checked the usual electrical failure points by pressing on pins and reseating connections, but the problem persisted. We then attempted to replace the batteries, but during this process one of the crimped connections near the fuse came loose. Re-crimping it took much longer than expected because we were rushed and nervous, and we initially used the wrong crimp type and cap orientation. By the time this was fixed, we had only about half an hour left before the competition.

After restoring power, the robot behaved more reliably in simple motion tests, but a new issue appeared: it could move forward and backward, but lateral motion was poor. We investigated several possible mechanical causes, including loose wheels, shaft fit, and incorrect screws, and we tightened or replaced multiple parts. This improved performance slightly, but the left-right movement was still weak. In hindsight, one likely explanation was weight distribution. The batteries were mounted on the left and right sides of the robot, directly above those wheels, while the pucks were placed at the center of the chassis slightly closer to the back. We suspect that this caused the front wheel to not have enough normal force and hence lose traction which explains why lateral motion was compromised.

A second major issue was power management, which we now believe was the root cause of much of the robot's unreliability. During debugging, we noticed that the motor driver would sometimes fail to light up when power was turned on. In a last-minute attempt to isolate the issue, we unplugged and replugged the 5V wire from the Arduino, and sometimes the system would suddenly work again. At the time, we assumed this was simply a bad connection. Only later did we realize that this 5V line was powering the servo, and that the servo could draw close to 1A of current.

Our power architecture had not been fully budgeted: the battery supplied 14V and buck converter stepped down to 8V to the main rail, the Arduino and motors drew from that rail and stepped down to 5V, and the 5V line powered 6 sensors as well as the servo. As a result, when the servo was connected, it likely overloaded the Arduino's 5V supply and destabilized the rest of the system. This explains why the robot would sometimes move only when the servo's 5V connection was effectively disconnected, and why in one round the robot drove correctly but failed to release the puck at the hog line.

Despite all of these issues, the robot still managed to perform well enough to help us win the first round, which was both surprising and rewarding. We also encountered a final mechanical failure when the gate fell off due to wear from repeated testing, but fortunately we had brought a spare part and were able to replace it quickly. Overall, competition day taught us that last-minute debugging is often dominated by system-level issues rather than isolated bugs.

Gallery

Competition Pictures