⚽ Robo-Messi: When Silicon Met Soccer
Executive Summary
- Led group of 4 to design and build a football-playing robot, winning 2nd place in annual competition.
- Earned annual prize for best presentation; judges highlighted my "excellent" technical presentation.
- Achieved grade of 88% weighted based on my significant contributions, project management, and leadership.
SDP: The Third-Year Frontier
Welcome to the mayhem and madness of the System Design Project (SDP), the educational equivalent of doing a handstand on a tightrope whilst juggling chainsaws. This rite of passage for third-year Informatics students at the University of Edinburgh was a four-month roller coaster ride of pain and perspiration, confusion and chaos, ultimately (for us) resulting in a triumphant team of two football-playing LEGO robots that competed together to win second place in the annual competition-to-end-all-competitions.
Each group of six students was responsible for constructing a separate robot, but in our case, due to unforeseen circumstances (shit happens), our group comprised just four committed individuals. But we soldiered on, banding together to beat the odds and build what would become known in hushed and awed voices as Robo-Messi: the robot that single-handedly scored the most goals in the competition.
In the warzone that was our robo-football endeavor, each LEGO soldier was connected by an unseen thread of radio waves to a commander-in-chief computer. To crank up the drama, there was even an eye in the sky -- an all-seeing camera, bestowing our earthbound warriors with an eagle's perspective of the battlefield.
Overall, the SDP wasn't just a challenge; it was our personal Mount Everest, complete with not just learning curves but sheer learning cliff faces. It was our initiation rite into the world of software engineering, where we learned to juggle error messages with existential crises and malfunctioning motors with tireless teamwork. There's no going back now!
The Building Blocks of Victory
Imagine if you will, a group of Informatics students huddled over an assortment of LEGO pieces, brows furrowed in concentration, hands moving with frenzied precision. Their mission: to construct a mechanical wonder that could glide across the field, swoop onto the ball, and fire off goal-bound missiles with sniper-like accuracy.
Our grand vision for this robotic superstar emerged in a whirlwind of creativity during an intense initial brainstorming session. We envisaged a swift two-wheeled sprinter with two ball bearings for stability, front-mounted grabbers for possessing the ball, and a unique spinning kicker that rotates through the center of the robot. However, like a toddler learning to walk, our early prototypes had a knack for taking a tumble. We'd watch in despair as our creation, eager to perform a graceful turn, would instead end up impersonating a beached whale. After several facepalm-worthy moments and robot casualties, I had an "aha!" moment -- a wider base and a lower centre of gravity. It was a game-changer, dramatically enhancing our bot's balance and poise.
My contributions: leading the research and brainstorming session; constructing several experimental kicker and movement prototypes; collaborating with another student, H, to build the final robot from scratch.
A Robo-mantic Comedy: The LEGO That Wouldn't Listen
Our LEGO champion was going to need more than just the ability to stand upright. It also needed to be a good little Robo-Messi and do what Daddy Computer told it to do. This required a two-way walkie-talkie-esque communication system, commands going one way, sensor gossip from the bot's live field-excursion going the other way.
But my first attempt at this was like an intense game of charades with a deafblind teammate. Like an awkward first date, my initial system would often misinterpret and flat-out ignore cruical signals, resulting in the robot doing, well nothing.
This required a Doctor Phil-style intervention, and after several counselling sessions, I decided to spice up the relationship with 'stop-and-wait' -- a fancy way of making sure both parties are on the same page. With zero room for miscommunication, this protocol ensures every packet of data is received, understood, and acknowledged before moving on to the next one. No more dropped calls or misunderstood texts. No more stoic silence when the command was to charge forward.
My contributions: this part was all me, and I implemented the communication protocol myself from scratch on both the computer in Python and the Arduino in C. In the spirit of collaboration, I also wrote and shared a guide that was eventually used by everyone in the year to configure their radio hardware (previously a source of widespread confusion).
Sense and Sensibility
Stay strong gentle reader, for our early forays into sensor-ville were frequented by hopeful looks followed quickly by sighs of despair. The sensors were like the emotions of teenagers: oscillating wildly between apathy and high drama. But we went full Sherlock Holmes on their asses, ultimately taming the twin-headed beasts of noise and interference with a thorough calibration process. The final design included the following sensors, from least to most important:
- Yellow
- Touch sensors for 'ungrabbing' smoothly, ensuring Robo-Messi can release the ball as fast as possible for the perfect kick.
- Blue and green
- Collision sensors, in charge of making sure our Robo-Messi doesn't turn into a robo-bulldozer, breaking through the walls, or repeatedly smashing into an opponent. It was an accident ref!
- Red
- Infra-red sensor perfectly callibrated to detect the presence of the ball, or lack-thereof. This impeccable invisible eye was tuned so finely that it would make Mozart's famous grand piano green with jealousy.
As for the touch sensors that look like long eyelashes, we can't deny Robo-Messi's flair for fashion. Who said you can't have functional and fabulous in the same package? Remember, even the fastests robots need a dash of glamour in the competitive world of robo-football!
My contributions: programming all sensing logic and integrating sensor data into the communications protocol; collaborating with H to build the sensors into the final robot and tune the infrared sensor. I wasn't involved at all with implementing the vision system, this was done by another student, A, in collaboration with our teammate group.
Strategising with Silicon: Robo-Messi's Robo-Brain
In the silicon-soaked synapses of our robot's electronic brain lay the strategy subsystem. Continually plunged into a robotic soliloquy, its perpetual query was "To go for the ball or not to go for the ball?" This was the question that kept our robot up at night, and during play you could almost hear the whirr of its circuits wrestling with the age-old question of goal pursuit versus defensive play.
Meanwhile, the planning subsystem, the sergeant-major of the operation, was left with the task of converting these Shakespearean dramas into a series of robot-friendly commands. My first attempt at this, the hare-like open-loop control mechanism, was like trying to get a drunk robot to walk in a straight line. Eventually, I switched to the tortoise-like visual servoing mechnasim. Slow, steady, and winning the race, with this technique the robot methodically shuffles towards its target, pausing after every step to make sure the vision system is keeping up with the race.
With all the systems in place, the true Robo-Messi was finally born from the fires of an impending deadline and the ashes of previous failures. It was, as usual, the night before the competition when everything finally came together. I still remember when Robo-Messi scored its first goal, to the surprise of everyone in the room. The crowd went wild, but it didn't stop there! Scoring goal after goal, Robo-Messi was on fire and by the end scored the most goals of any single robot in the competition. De la mano de Robo-Messi.
My contributions: The football-playing strategy was thoroughly researched and implemented by another student, J, while I implemented the planning subsystem. I also masterminded the architecture of the whole thing, interfacing between all the subsystems, and engineering through every efficiency bottleneck to save those precious milliseconds when it mattered the most.
How I Learned to Love the Chaos
As I stood amongst a sea of cogs and code, sleep-deprived and buried under a mountain of software bugs, I found myself surprisingly infatuated with the chaos that was the System Design Project. Here's the lowdown on what I gleaned from this tango with technology.
- Teamwork makes the dream work... but only if you communicate!
- Collaborating within our small group was just like a real football team -- everyone with a distinct role and responsibility, yet all working harmoniously towards the same winning vision. I learned that patience and trust in others is required to avoid micromanaging, and communicating clearly is cruical so that everyone is on the same page. I also learned that the reality of working in a group is that even with the most talented and hardworking group members, busy people with 100 other deadlines that week don't always have the time to go the extra mile. Nevertheless, to borrow a phrase from Jocko Willink, leadership is taking extreme ownership, and in the end I happily took on additional responsibilities to ensure the success of the entire team.
- In the real world, no one tells you how to win.
- Academia is well-structured and predictable -- your task is clear, and the path to solution is illuminated by textbooks and expert advice. However, real-world problems are less like a structured piano concierto and more like a jazz improvisation session. Throughout the project, we were tossed into the ocean of uncertainty, without an instruction manual or a step-by-step guide. Whether it was rebuilding the robot for the fourth time, decoding a nonsensical sensor reading, or crafting a winning strategy, real-world solutions aren't found, they're invented.