in the summer of 2024 i was lucky enough to be able to participate in the RoboCup competition in Eindhoven, The Netherlands. RoboCup has always been rather special to me, it was the competition that got me interested in robotics in the first place. i previously participated in the 'RoboCup Junior' competition in Hefei, China back in 2015, so returning after all of these years was very satisfying, and felt like i'd completed a circle in my life.
the team i was on is called LCASTOR, standing for 'Lincoln Center for Autonomous Systems Team of RoboCup' and as the name suggests is associated with the University of Lincoln in which I did a master's degree. while RoboCup's most famous division is the Soccer division, the division in which we were participating is called @Home and involves making domestic assistance robots. this little blog post talks about how the competition went.
setup days [#]
the actual competition started on the 18th of July, but as with all teams, we arrived a few days earlier to set up everything. me and my teammate Omar had already been in the Netherlands for the preceeding week and a half for our PhD scheme's summer school, but the rest of our team Hari, Francesco, Riccardo, Niko and Sarah travelled in by plane or by ferry.
the competition area was arranged with a seated area for spectators at the front, three arenas simulating a house environment in the middle, and desks for participants at the back.
this video shows a panoramic view of the working area with me working on our desk
the setup days involved making a map of the arenas, and making a note of the coordinates of the important places, as well as making final touches to the programming.
competition day 1 [#]
the first task was the 'carry my luggage' task, which is basically a human following and navigation task. unlike other teams, we used a 3D LIDAR to track people. however, all of the processing for our bayesian people tracker ran on the robot itself, not on the laptop on top of it, and there were so many people it caused the robot to overheat and we failed out first attempt. our quick and dirty solution to this was to put my hoodie over the LIDAR to stop it from detecting anything until it was ready. you can actually see this in the background of an official PAL Robotics twitter post (PAL Robotics is the producer of most of the robots teams are using, the Tiago). Thankfully, as for all RoboCup tasks you get two attempts, and our second attempt succeeded, gaining us 450 points.
the second task was the 'Receptionist' task, which is a HRI (human robot interaction) task. this was the task that i personally spent the most preparation on, utilizing local LLMs (Large Language Models), specifically a function calling LLM, in order to do natural language understanding. unfortunately while we were in the queue to do this task, our main laptop died at the worst possible time, and we had to use a different laptop that didn't have the docker images prepared. therefore we were not able to gain any points in this task, which is very disapointing.
the third task of the day was the 'storing groceries' which is a grasping and manipulation task. i didn't work much on this task, it was more down to my teammates Sarah and Niko, but we achieved a score of 30 in this task.
competition day 2 [#]
the second competition day started with the 'serving breakfast' task, which is another manipulation task, which I personally didn't work on, but we scored 15 points. instead, i was working on the next task, the 'general purpose service robot' (GPSR) task, which is another natural language understanding task, in which the robot must decompose and perform an abstract task given by a human. minimal perparation of this task had been done before the event, it had all been worked on while we were at the actual event. but as we now had no other tasks to prepare for in stage one, my teammates were avaliable to help me implement this task. it was a little bizzare telling my collegues how they could help me, when last semester they were my lecturers and were marking my coursework!
our implementation worked by using an LLM for task decomposition with a set of skill functions. in our first attempt, the first task provided worked perfectly, but we misunderstood the rules that the robot should be paused while the arena is prepared to do the next task, so all of the following given tasks failed. thankfully, my teammate Omar managed to quickly make a hotfix for this while we were standing in the queue to do our second attempt! in which, it worked better, but not completely, so we managed to get 450 points.
at this point we were in the top 9 teams, which means we had qualified for the second phase of the competition. this was very nice, but we hadn't really expected to make it this far, so we were very unprepared for the next set of tasks.
competition day 3 [#]
the first task of the second phase is the 'restaurant' task, which is a human perception and natural language understanding task. i only had to make some minor changes to my natural language understanding system to make it work in this task. however, we intented to use out 3D lidar for navigation, but we couldn't get this to work. the human perception part worked nicely. unfortunately, in our run, the referree was scared that our robot was going to crash into a table so he pressed the emergency stop button. so we were only able to get 200 points for identifying humans. this was a little dissapointing.
the second task was the EGPSR task, which is similar to the GPSR task, but you have to do some object identification also. we had so little prepared for this task that we couldn't test it even once. sadly, in our run of the task there was a simple bug that meant we got zero points. perhaps doing zero testing before the actual run isn't such a good idea!
there was also the 'clear the table' task, which is a manipulation task, in which we were not able to get any points.
if you've noticed a pattern, we didn't do so well in this phase as we never expected to get this far! but nonetheless i'm very proud of our achievements.
finals day [#]
on the finals day, we relaxed and went to an Eindhoven museum about the Phillips company that was founded there. congratulations to the German 'NimbRo' team who won. they brought two Tiagos with them!
the final scores can be found on the RoboCup@Home Github