ABU Robocon 2020
Reflections on participating in my first Robocon competition and the team gestalt.
ABU Robocon 2020 was originally scheduled to host in Suva, Fiji and the game will be based on Fiji's national sport rugby. The theme is "ROBO RUGBY 7s". In this game, each team designs two robots, one as pass robot (PR), and another as try robot (TR). Each can either be manual or automated. The PR will pass rugby balls and the TR will catch and place them on distinct try spots. For each successful try (ball placed in a try spot), the team is allowed to kick one ball through the conversion post. Teams score points depending on the zone location, but points can be awarded to the opponent's team if the kicking ball lands on the opponent's zone. The game ends when three minutes have passed, or when all seven kicking balls (shared by both teams) have been kicked.
The above image shows the Robocon 2020 game field. Each team takes half a field. The PRSZ and TRSZ denote the start zones of the PR and TR. KZ1 to KZ3 denote different levels of kick zones. Kicking from KZ3 will score higher points than kicking from KZ1.
Under normal circumstances, teams would play against each other in a single game. But due to the Covid-19 pandemic, the Hong Kong regional competition changed format. Instead of playing against each other, teams would play solo and aim to get the highest score within the shortest time.
Breaking the Ice
This was my first time joining a robotics competition. The previous competition I joined was a scholars' competition five years before—which I was terrible at—so competition experiences and atmospheres were still very new to me.
The Robocon international contest is usually held in the summer (July-August?) and the regional HK contest is usually held in June, after the participating universities have finished their exam periods. This year, due to Covid-19, the international contest was postponed to December, and the regional contest was postponed to August.
HKUST has two Robocon teams, traditionally named "Fiery Dragon" and "War Dragon". Both teams use the same lab and tools, but with different team leaders and composition of members. This year's "Fiery Dragon" had more international students than ever before. We were a diverse bunch with people hailing from Hong Kong, Indonesia, India, Malaysia, and South Korea.
As it turns out, the HKUST Robocon team has a solid history with a preset team hierarchy and generational development cycle. The mechanical and hardware divisions have preset tools and technology which allowed newcomers to quickly design robots. The software libraries were also somewhat mature, modularised to scale nicely with the number of components. Our seniors were also solid in both technical and soft skills, which was really nice.
Most of the game strategising and planning was left to the seniors. They would still take suggestions from juniors, but as they are more experienced, the planning was mostly left to them.
Due to Covid-19, the game format in the regional HK competition kept changing, so our strategy also kept evolving.
There was quite a lot to learn in the team.
On the interpersonal side, I'm rather soft-spoken, but it was encouraging to speak with other team members, most of whom were nice and friendly. Lunches together were a good environment to practice my next-to-non-existent communication skills. Throughout the months, tension and miscommunication occurred from time to time–this is inevitable; but I find that keeping calm and talking helps douse the flames of anger.
In Robocon, the robots can be designed by an unlimited number of people, but the actual game is played by only three gamefield members. Two members would each control the two robots, while a third member would act as a commander and shout directives. As a software member working on the PR, I would collaborate closely with the gamefield member controlling the PR: adjusting the control layout, providing convenience features for tuning and debugging, and taking suggestions on improvements or features.
On the technical side, I'm rather forgetful when it comes to technical pieces of knowledge; but over time I learned to take notes on a text file and prepare questions to ask seniors. Google and StackOverflow are, as usual, a valuable resource. Perhaps less so for the embedded world, but there are some helpful articles and forum threads.
The robotics world of software development offers an interesting blend of low-level tech—such as playing with PWM, working with threads and real-time operating systems—with a mixture of high-level concepts—such as state machines, getting from point A to point B. The low-level stuff was harder to grasp (no surprise), but the high-level stuff was more enjoyable.
As a software junior, most of my tasks involved reading sensor input and using the collected data to (1) determine what parts of the robot should move and (2) how fast to move them. I think it was fun being able to work with lasers—not the pew pew! kind of lasers, but the ziiing kind, except they don't shred things apart. Besides this, we need to adjust (tune) paths and values to find an optimal velocity (because speed matters!).
I primarily worked on the PR. This robot is equipped with a grabbing and shooting mechanism and is also responsible for firing the kicking balls. Here's a little photo I took from before:
Is it a good robot? Well... it certainly does the job of passing balls quickly and accurately. But when it comes to kicking, the design isn't too effective. During the kicking procedure, the robot will carry the tees and kick balls from the PRSZ to KZ3. The sad point is, the tees are barely lifted off the ground. And due to the uneven surface of the floor, the tees would likely shift position, moving the balls nested above, and thus potentially messing up the angle of the ball.
In the welcome presentation, the professor supervising the Robotics Team mentioned three important things: safety, safety, and safety.
The lab can be quite a dangerous environment at times. On numerous occasions I've scratched my hands, arms, or legs on the robot. The cuts weren't too deep, but the edges and corners of aluminium are rather sharp, so care needs to be taken.
One time, a team member got headshot by a rugby ball; the game requires robots to "kick" a football, so the resulting velocity was quite high... and quite dangerous. Another team member took a misconfigured SWD USB port—which are used to upload programs from our computer to the microcontroller—and connected it, leading to the unfortunate consequence of shorting his laptop.
There were also times when the robot would randomly and rapidly spin like the spinner on a cotton candy machine. This was due to a bug in code which we eventually fixed.
Not only do we need to look out for ourselves, but we also need to look out for other teammates and be ready to help when needed.
Eventually we ended up with 4th place in the regional competition. Our team could've reached 1st place had we kicked a rugby ball more accurately. It was pretty close. 😔 Regardless of what place we achieved, the process was enjoyable.
The term "gestalt" refers to the idea that the whole is greater than the sum of its parts. Put in this context, the team as a whole has greater potential when it is functional, compared to a team which is divided and dysfunctional where its members are doing their own thing. Participating in Robocon with HKUST's robotics team helped me experience this in a tangible environment.
Overall, it was quite an enriching experience as a fresh undergrad. It was nice to meet new people and work together towards a common goal.