The Brazil Open is a RoboCup tournament that was hosted online and in simulation. The games were played with almost the same simulation setup that was used in the world cup, where we had successfully reached the third place. To make computation easier, it was decided that the games will only be done with one robot against one robot.
The tournament was setup in a league format where every team played against every other team. We had successfully beaten all but one team, where we were only able to draw the game. The final game for us was going to be against the world champion Starkit, who had won every game in the competition so far. Thus we went into the last game, hoping for a win, but expecting to lose it.
If you want to see the final game for yourself, you can watch it including commentary from us and from Starkit here:
We have officially won our third place match against the CIT Brain team. It was an incredibly close game. It even caused multiple issues with the simulation, forcing restarts of the simulation. Due to this the game had to be delayed by 5 hours. We had to wait even longer and we struggled with containing our excitement and anxiousness about the game.
When the game started it was explained that there were a few technical issues that would be explained throughout the stream and we still had no idea what had happened.
In the first half we played a bit too aggressively according to the referee and one of our robots got a yellow card, another one got a warning. We got scared of losing one of our strikers… Our aggressive play did help us to score a first goal though. The simulator crashing after the first half saved us though. For the second half all cards were reset, but to make up for it, the CIT Brains got the kick off again.
We hoped that one of the major advantages of the simulation would be, that we would not have to struggle with hardware issues. However, we managed to actually do have hardware issues… and of course they were in this important game! Our feet got stuck in each other and we didn’t manage to get them apart again. Luckily our robot was reset to outside of the field soon after and our hardware issues were solved again.
Watching the game, it felt like a real soccer game considering how much we screamed at the referee. Throughout a few questionable decisions happened, including putting the ball only centimeters in front of our goal. Our goalie positioned on its goal line, but was removed, because the goalie was now considered too close to the goal. Since our goal was without a goalie now, it was easy for CIT Brains to score.
They scored again later with another questionable referee decision.
Their luck did not hold though, because very close before the end of the match, the referee awarded a penalty kick to us and removed the goalie in a similar fashion to our earlier issues. We finally managed to equalize to a score of 2-2.
As there was no time left for the organizers to simulate and show a game including overtime, they decided to skip overtime. We instead immediately went to the penalty shoot out.
We got scared there, because from our tests we knew our penalty kicks can sometimes go inside the goal, but most of the time we would not hit the goal. However, the CIT Brains commentator told the viewers they had not tested their penalty behavior. So we got our hopes up again. During the first penalty kick, their robot took the ball and tried to dribble it into our goal. They were then removed from the playing area.
We managed to kick the ball after the referee allowed us to kick it, but the ball stopped moving right in front of the goal line.
For the following kicks the CIT Brain robot just stopped moving and we only got the ball very close to the goal line multiple times.
Our saving grace was our fourth shot.We finally managed to get past the goal line with the ball and scored a goal.
As the CIT Brains did not shoot in their fifth shoot, we managed to win the game with a final score of 3-2.
Today we had the opportunity to play against the adult size team Sweaty. They are currently the favorite to win the world championship of their league. As it was easy for us to change our software to play on the bigger field with a larger ball, we offered to play on the regular field of the adult size. We only used two robots, instead of our usual three or four, as that was necessary to play on the large field.
We were scared when we saw the size comparison between the robots, but early on already we seemed like the favorite to win the match, when we moved into the field and positioned correctly. Sadly, the Sweaty team did not move from the sidelines. They explained that there was probably a connection issue with the referee and the robots didn’t know they were allowed to start playing.
In the end we were able to score six goals on the large field.
We played against Starkit in the semi final. They had shown an amazing performance in the previous games of the RoboCup and we were very excited to get to play against them. We fixed a few of our bugs last night, but did not make any major changes anymore. As we can not change our strategy in the middle of the game, it had to be rock solid.
We had to have our code uploaded at 12:30 and our game started at 20:30. This gave us a lot of time to just sit there anxiously and wait for the game.
In our earlier game today, we had issues, because it ran longer than we expected and our saved files went over the allowed size, which meant we lost them all. To ensure this could not happen again, we halved the amount of images we record. This could not break anything… right? RIGHT? Well… it did. Luckily we ran a test game and noticed it. This could have prevented our robots from moving at all and given a free win to Starkit.
This made us even more anxious about everything and if you were close to us, you probably heard us cheering, when we started moving at the very beginning.
In the beginning of the game Starkit robots immediately passed the ball between each other and managed to outplay us. Initially we managed to defend well against their amazing offense plays, but they were unstoppable.
Our goalie especially decided to do a few questionable moves. They were close to the ball, but decided to not kick the ball away from our goal, but rather run to the goal and try to ensure our safety from there. The Starkit robots didn’t give us enough time and managed to score again.
In another situation our goalie even ran to the enemy half one time to keep the ball further away from our goal. They managed to get past all of the opponents robots, but then decided the ball is safe enough now. They ran back to our goal and gave the Starkit robots the opportunity to score again.
The Starkit robots in the end managed to score seven goals against us. However, our robots didn’t lose their spirits. They did their best to keep up and did manage to get two goals for us.
We are really proud of what our robots managed to achieve. We are also excited to get to play in the third place match tomorrow against the CIT-Brains. If you want to watch it, it will be streamed at 10 here: https://www.twitch.tv/robocuphumanoidfielda
After the exciting game yesterday against the 01. RFC Berlin, we got to play in the quarter final. The drawing for us was to play against the Nubots. They had managed to score another goal in one of their group games, but we were reasonably confident that we could win the game. However, we were still anxious about having a breaking bug in our software that would prevent us from playing and winning against the Nubots.
When the game started, we were very happy, when our robots started walking, as this assured us that we should be able to play normally. The Nubots put up a fight in the beginning, but we managed to score a goal regardless.
Unfortunately, the referee didn’t count the goal for us, but instead gave a goalkick to the Nubots. We started to get anxious again, because the referee obviously had a bug there.
However, our robots were less phased than us and just waited their time until they were allowed to touch the ball again and confidently ran to the opposite goal and scored again. This time the referee did score the goal for us and we were up 1-0.
The Nubots didn’t put up any defense after this and we managed to score goal after goal. After the first half we were already up 7-0. As the time went on, we got excited about potentially beating the impressive 15-0 score that MRL had scored in a previous group match.
The second half progressed and we managed to beat their result with a single extra goal and finished the game 16-0 according to the official result. If the first goal had been counted for us, we would have maybe managed to win 17-0.
After the game we were told we had more time available than usual, because time is added after a goal in the knock out games, to account for some of the time the robots are not allowed to kick the ball after scoring a goal.
We are now looking forward to playing against Starkit in the semi final tonight at 20:30 (Berlin time).
We just won our final group game and are still short of breath, because our hearts have been racing the whole time. We already knew this would be an exciting game, because the 01. RFC Berlin defeated the IT Androids with the same score as us: 9-0. However the IT Androids did not put up as much as a fight, as Berlin did.
Our excitement increased even more, when we found out, that our game was postponed, because the simulation had not finished yet. This was the first game of the competition where this was necessary. We speculated it was because the simulation was more complex with our robots colliding more than the other robots have so far. So we knew we were in for an exciting game.
Already at the start of the game, the Berlin robots pushed us deep into our side of the field by playing the ball into our penalty area. However our robots managed to win the ensuing tackle against the other robots and their robot got penalized. We used the time we won and got the ball back to the middle of the field. However, this did not save us yet and their robots managed to push back again. They even attempted a shot on the goal, but our heroic goalie managed to save the day and kept the ball out of the net. This was not the end of their attack. They even managed to convince the referee to give them a penalty kick.
They kicked the ball and it would have gone in, but the referee blew their (imaginary) whistle, because they had kicked the ball, while the referee had not allowed it yet. That was our saving grace in this case. The attacker had to leave the field for 30 seconds and our robots got the opportunity to attack. Just like the Berlin robots didn’t have much luck, we were also stopped by their good defense and couldn’t get the ball to pass the goal line.
After an exciting time of the ball being played by both teams in the middle of the field, we got our lucky break. Two of the Berlin robots got sent to the side of the field and our attacker managed to get past the only defender that was left. We used that opportunity and finally managed to rush to the goal and score.
Our robot in the middle of the field used the opportunity and cheered for their teammate who managed to get us the lead for the game.
However, the Berlin robots didn’t give up, they still managed to get close to scoring again. The referee saved us again, when they penalized their robots, because they again acted too early or tried to push us close to our goal.
We managed to carry our 1-0 lead into the second half and after a while it seemed like we had broken the spirit of one of the Berlin robots. After getting a penalty it just stopped moving in the middle of a step. The members of the 01. RFC Berlin told us this was due to a bug and the robot just crashed. Our robots used this opportunity and managed to win the tackles in the opponents penalty area to score our second goal of the match.
With a 2:0 lead, our heart rates went slightly down again and we were happy about our lead. However, the robot that had stopped moving, started to move again and the blue robots of the 01. RFC Berlin managed to get very close to scoring a goal and only centimeters saved us.
We managed to still play forward and save a few more close calls and achieved a final score of 4-0.
In the end, both our robotic and also our human members were exhausted, but also celebrated our great game. We thank 01. RFC Berlin for the great game and we hope to meet you in the final again. (With the same result hopefully ;))
We just had our first official game which we played against THMOS. We went in confident, but there are always surprises that can stop us. For example in the last few days we had an issue where we had a single “,” too much, which crashed our entire robot. As there is no way to fix any problems once the simulation has started, surprises can always happen.
However we got lucky and our software worked really well. Our opponents did not get as lucky. They had an issue where their robot just fell over at the start and slid off the map.
We managed to score a convincing 12:0 victory and are excited for our next games.
We are very excited that the RoboCup 2021 will have the first official games in our league tommorow. We will already be able to cheer our and the other robots in test games today. These games will be the end of the two setup days we had in which we got to test our software in depth again and and fix most of the bugs that we noticed.
Last weekend, the mock competition, a first trial for the real world cup, took place. Unlike the usual competitions, this year the games will be simulated. We all were very excited to finally try out our software stack against real opponents and get used to the unfamiliar processes that come with this new type of competition. We all met up on Friday afternoon to prepare for the first practice penalty shootouts. After uploading our software and starting the calculating process, we eagerly waited for the footage of the game to be streamed. The calculating process is necessary, because the simulation happens very slowly and would not be fun to watch. And so we waited…
Nothing happened for quite a while. The reason? A bug in the automated referee caused all robots to be incapable of moving. After watching two very boring games, all remaining were postponed indefinitely until the issue was resolved. We used the free time to fix some issues in our own code, and in the process discovered some additional problems in the automated referee.
On Saturday the intended schedule had to be changed entirely: Instead of the intended full games, a series of challenges were put in place to guide all teams to a point where they are able to compete. After getting the robot model inspected and successfully connecting to the game server, the first challenge was simply to walk. This should ensure that the robots were actually capable of moving and a problem like Friday evening would not occur again. After that, the next challenges were playing a penalty shootout, playing a short game and finally playing a full game. Our software stack worked very reliably and thus we quickly progressed through the challenges. On Saturday, we also managed to shoot the first goal of the mock competition. Admittedly, we did so by first falling onto the ball and thus moving it closer to the goal line. But after that a dynamic kick managed to dodge the goalkeeper and score the first point.
On Sunday we moved on to play the first short game versus the 01. RFC Berlin. The first half was looking very good for our team. We managed to score another goal and almost scored a second time, when the half time ran out and we couldn’t quite pass the goal line.
Then the second half started and hell broke loose. The game controller spawned the robots in the wrong configuration, which caused all eight robots to fall over and get penalized. Nonetheless we managed to recover and untangle from the ball of robots that was caused by spawning all penalized robots in the same position. After localizing themselves for a few seconds, our robots promptly ran off to defend the ball that was still lying in our goal area from our last attempt at scoring a goal, as it was not reset properly. We were able to defend our goal until the ball was reset. Shortly after, however, the automated referee got stuck in an impossible state, which caused the game to be aborted.
Despite all the chaos and issues that we found, we are confident, that most of the problems that could occur have been discovered by now and that the competition can run undisturbed thanks to this early test. We have seen that our software stack runs as expected and are excited to see interesting games at the real competition starting on June 24th.
This Saturday was a really exciting day for us. It was the day the Brazil Open ended and all the results were officially announced. We met up online to experience the award ceremony together and slowly the results table got filled in. Since the table filled in from the last place to the first, we got more excited with every slot that got filled that did not include our name.
Before we talk in more detail about the results though, let me recap what the Brazil Open was about. Due to COVID-19 we could not participate in the regular kind of tournament where our robots get to play soccer with each other. Thus the organizers of the Brazil Open had to be creative and to figure out a way how the teams could still compete.
Thus the competition they created consisted of two parts. One task was to create a 10 minute video where we present ourselves, our robots and our research. You can watch this video here:
The other part of the competition was to detect robots in images. Points were provided in this task for accuracy in detections as well as for the speed of how many images per second we were able to process. We were given a list of images by the organizers, that we could use to train our system. These images were hosted on the ImageTagger that we have developed.
Now that you know a bit more about the competition, we can now take a look at the results.
The first column are the team names, followed by the robot detection points and the video points.
As you can see, we achieved the shared second place for the robot detection challenge. We used a neural network architecture called YOLOv4-tiny and were able to detect 94% of the robots correctly. We also managed to process 35 images per second. Team RoboFEI was less precise, but managed to beat us in processing speed.
Our video achieved the highest score in the RoboCup Brazil Open for humanoid robots. This brought our total points to 80,875 points.
We are really happy with our results and had a lot of fun in this competition. We want to thank the organizers for hosting this competition and we want to congratulate the ITAndroids on winning it!