Semi Final

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:


New Record in the Quarter Final – Bit-Bots reach the Semi Final

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).


The objectively most exciting game so far

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 ;))

If you want to watch the game in realtime, a video of it is available here:


Our first group game

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.


RoboCup 2021 Starts

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.

All the games will be livestreamed on Twitch:

Our first test game will be today at 17:40 (Berlin timezone) versus MRL-HSL. It will be livestreamed on the first of the two links above and we would be happy to watch it with you.


Mock Competition

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.


Second place in the Brazil Open

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!


Brazil Open

We currently can not participate with our robots in person due to COVID-19. Of course this does not stop us from continuing to work on our robots. When we found out about the Brazil Open we immediately applied.

To hold the competition even without our robots directly competing the organizers have decided that each team has to present a video where the team presents it self. The video is up to 10 minutes long and presents the team itself as well as their research.
Additionally the teams get to compete with their vision systems. The organizers selected tens of thousands of images of robots to train our systems to detect robots in images. The images were selected from the ImageTagger we have developed.

We already had a lot of fun and are even more excited to compare our results to the results of the other teams. The videos of the teams will be presented on the YouTube channel of the competition tomorrow (Thursday) 13:15 (CEST) and on Friday 14:00 (CEST).
The results from the vision competition will be published when all teams have competed, which at the latest should be on Saturday.


Third place in the Running Robot Competition 2020

Last year we got the opportunity to participate in the Running Robot Competition in China. Since we enjoyed getting to participate in it last year, we wanted to attend again this year.

The Running Robot Competition is not a part of the RoboCup tournaments we usually participate in. It is a tournament where Robots have to go through a course, overcoming multiple obstacles to reach their goal. These obstacles are for example having to wait until a barrier has moved out of the way and only then walk past it, or having to climb a few stairs.

Due to Covid-19 we did not get the opportunity to participate in person, but we were glad to participate over the internet. For this purpose, the organizers prepared a simulation environment.

We discussed a few options on how to solve this.
Starting from a more conventional approach to solve the challenges. In this approach, we would start with developing a vision that can e.g. see the yellow and black from the barrier and as soon as it reaches a certain angle, we would program the robot to start walking.

However we wanted to use this opportunity to learn about something that most of our team had less experience with. This is why we decided to use reinforcement learning for our approach.

Reinforcement learning is an approach where we use neural networks so the robot can learn how to overcome the obstacles without us telling it how to solve them. This can lead to more efficient ways of solving the problem than we would have thought of. This could include finding a bug in the physics of the simulator to achieve normally impossible things or something as simple as walking another way that we did not think of.

We used only the robot’s camera image as an input to the reinforcement learning algorithm. Based on this information the robot had to figure out what it had to do now. Does it have to wait for the barrier to rise or is it already up and it can start walking?
This sounds trivial for us as a human, but the robot starts out with no concept of a barrier being an obstacle. In the beginning, it does not know the difference between the ground which it can step on and an obstacle that it should avoid.

To ease the robot to learn these things, we provided points as a reward to the robot if it came closer to the goal and deducted points if it walked into an obstacle like the barrier.

The robot could control the direction in which it walked. We used the same program to let the robot walk as we use on our soccer-playing robots. However since a different robot was used in this competition, we had to change a few parameters. However, we were able to use a script from our existing walking to let the robot learn the best way to walk in this new simulation.

With this approach, we were able to solve the first obstacles. Due to a misunderstanding, we had less time and were not able to solve the full course.

However we still had a lot of fun in developing our approach to solve the problems the Running Robot Competition presented. We also had the opportunity to learn a lot about reinforcement learning.

As you probably have figured out from reading the headline already, we did not only have a lot of fun during the competition, we even managed to finish in third place in the competition!



Don’t worry, we haven’t suddenly decided to compete in a different league. But since out team was also affected by the ongoing pandemic, we had to make due with the new regulations. Here is a short update on what we’ve been doing for the past couple weeks:

Today, three weeks ago, we should have been in the middle of our preparation camp for the world cup. When we got the message, that that is cancelled, that all non-necessary activities are postponed until further notice and that we’re not allowed to enter our lab for at least the next few weeks, we were unsure how our team would go on. Nevertheless we quickly recovered from the initial shock, built an digital infrastructure, re-prioritized our goals and moved all essential tools and components to our apartments. Despite these challenges, we managed to use the Hamburg Closed effectively and solve a lot of problems.

Since we cannot use our real world robots at the moment, these changes were also a motivation to improve our simulation technologies. By using a more precise robot model and swapping to PyBullet as our simulation framework, we will be able to solve many problems completely without a robot in the future. Additionally, we have decided to release our current software stack as software version 2.0. Even though some of the features we initially planned couldn’t be completed in time, we are very happy with the results. Version 2.0 includes a lot of new features, such as a heavily improved walking algorithm, as well as the second version of our localization.

By now we’ve pretty much gotten used to the new circumstances. The initial chaos slowly changes back to normal day to day life, we’re having regular meetings (online, of course), and are eagerly working on the code that will win us the next world cup.