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.


RoboCup 2020 Application

We want to participate in the world championship of 2020 again. For this application the conditions were a bit different compared to last year.

Instead of writing a Team Description Paper, this year we were required to write an Extended Abstract. In it we described what we learned in the world championship in Sydney, the most important problems we have to address for the next championship and what we want to develop in time for the world championship in Bordeaux. Our Extended Abstract can be found in our publications and here.

We have also created a video which shows the abilities of our robots:


Running Robot Beijing

Sometimes something unexpected happens and suddenly one finds himself on the other side of the world. Something like that just happened to four brave Bit-Bots: Last Week Jasper and Sebastian (human), as well as Rory and Jack (humanoid) were informed that they were supposed to fly to Beijing a few days later to give a presentation at the first Running Robot Competition…

This message left us with a lot of excitement, but also a lot of stress: There was so much to do in such little time; and so all gears were set in motion to ensure that we got our visa by wednesday evening, so we could board our flight on thursday morning. The flight went pretty uneventful, and just 19 hours later we found ourselves at the convention centre, ready to set up. Our presentation was supposed to be on Saturday, so there was more than enough time to prepare everything and everything should be smooth sailing, right? Wrong! Turns out, packing in a hurry leads to chaos and so we stood in Beijing with two charged and two empty batteries and without a charging cable, and with a very short LAN cable. But we arranged and everyone seemed to have liked our presentation. In fact, it went so well, that chinese television decided to have an interview with us (link).

But we hadn’t just taken this journey to give a short talk. We also wanted to see the other presentations and, of course, the competition. While, sadly, most of the other demonstrations turned out to be dancing robots that play keyframe animations, which is not really interesting for our research, we still met many new, and surprisingly a few known faces. The competition consisted of several parcour elements the robot had to cross. They had eight minutes to solve eight different tasks. Most of these tasks could be solved rather easily with a decent colour recognition, but for a first year it still was a challenge and we hope the difficulty will improve in the next years and drive the competition towards new smart solutions. Maybe reducing the colours of the parcour elements would be a good start to force the participants to use artificial intelligence.

Lastly we also found some time to look around in Beijing. Thanks to our amazing guides we got to see the Forbidden City, the Olympic Park and Tian’anmen Square. We also went to visit the campus of the Tsinghua University and get to see our guides’ lab.

And suddenly, just three days after our arrival it was already time to leave. It were stressful, yet very interesting days. And maybe we will come back one day.


RoboCup 2019 in Sydney – Group Phase, First Day.

After our arrival, the setup days were very busy while we prepared our hard- and software, which is why we didn’t have the time to publish another article yet. Today we put our hard work of the last days to the test in the first games of this years world championship.

During the preparation days we spontaneously decided to switch out parts of our modular vision pipeline with a neural network based on the YOLO architecture – with surprising results: We were able to detect balls across the whole field. The goalpost detection was also greatly improved by these changes. We were expecting some improvements by exchanging the module, but still everyone was very surprised by just how good it actually worked.

Another thing we changed: We’re dynamic. We introduced DynUp™ and a reworked version of the dynamic kick that was initially developed by a group of students in one of our bachelor courses. These modules allow our robots to stand up even faster while being more stable and to kick the ball in different directions without falling over.

Finally, we also made some changes to our tactics, and improved some visualization tools to help us keep an overview of what the robot is doing during the games.

Today, we had a lot of chances to test out, whether our changes actually work out: With 6 Drop-in, and 4 regular games we were busy all day. Luckily, thanks to our cooperation with the WF Wolves, together we were able to have our robots play in all games, while also covering several referee duties.

However, not everything went perfect today and at one point it looked really dark for us: When we replaced our cameras earlier this year, we did not keep in mind the additional weight. While our modified head stayed intact, the part connecting the head to the body wasn’t made for the additional forces and broke. After our game against ZJLabers, the heads of three of our four robots were detatched from their bodies. Things looked dire, until a smart idea saved the day. We repurposed one of our metal parts, which were less likely to break, and attached the head to it. This way we were able to keep on playing with the new camera and perform many great moves in the remaining games. Unfortunately we haven’t been rewarded with any wins yet, but we keep on trying our best and are excited for the coming days.


RoboCup 2019 in Syndey – The Arrival

It’s still a quiet autumn in Sydney, but this will soon come to an end: It is RoboCup again and for the second time in the history of RoboCup it will take place in Australia. This time in the Sydney Convention and Exhibition Centre to be precise. Just about 10 minutes walking distance away we set up our base camp. But back to the beginning and the 34 respectively 40 hours of journey that stood between the departure in Hamburg and our arrival in Sydney. Due to organizational issues two team members, Jan and Finn, already left at 10 am on June 28th. The others’ (Florian, Jonas, Niklas, Timon, Jasper, Judith, Marc, Tanja and Sebastian) journey towards London began only at 16:45. After being reunited in Hong Kong the arrival in Sydney was scheduled for 06:45 AEST (Australian Eastern Standard Time). However, dense fog forced the plane to make a refueling stop in Brisbane before everyone could enter Australian ground at 11:05 AEST.

At least we had time to watch the beautiful sunrise from the airplane.

Maike met the team after a slightly shorter trip, which took only 15 hours from Los Angeles.

Thanks to the delay we could check in to our first apartment right away. Since we are 11 team members plus Maike as a member of the Executive Committee and Jessica as a member of the Organization Committee, one apartment is not enough anymore. Thus, we rented an additional small house that now serves as our base camp. Before we could move into the base camp, we first went to lunch together.

Of course we are not in Australia every day, so while most of the team had a quiet evening and went to bed early, Jan, Jonas and Sebastian went on a small hike to the Sydney opera. They even got to see fireworks!

After a joint breakfast in our base camp this morning, we are now assembling our robots and are getting the software ready for the competition. The day after tomorrow we will then be able to set up in the competition hall for the first time.


Bit-Bots at German Open

In the first week of May we once again went to the German Open, the german championship of RoboCup. After giving our laboratory a good cleaning on Monday we made sure not to forget anything. Then on Tuesday it was time to journey towards Magdeburg where we bought some important groceries for the next few days. Afterwards we spent the rest of the day (and night) preparing for the competition by programming…

On Wednesday after a good breakfast together we were finally allowed to enter the exhibition halls. Fortunately everything was ready for us to directly start capturing data from the court with the help of our vision robot Davros.

The captured footage will soon be used to evaluate different approaches of implementing a visual compass. A visual compass is supposed to recognize prominent background landmarks and then determining its own orientation. This is quite important to, for example, classify which goal is ours or the other teams.

Afterwards it was time to teach our humanoid robots how to stand up on the new surface.

At the same time our software development team was busy as well. The robots tactics weren’t nearly tested well enough to work reliably and there were also communication problems between different parts of our software. Unfortunately we weren’t able to completely eliminate all problems before our first game against WF Wolves. But because they were in a similar position we were able to end this game with a score of 0:0. Although we constantly improved most other teams with more stable code were able to beat us in the next few games.

In the last game of the group stage it was a close call. WF Wolves just lost their last game and we were up against Rhoban FC, the current world champion from France. Our hopes were low (rightly so) and the only possibility for us to progress into the semi-final was to achieve a lower goal difference than WF Wolves had. Only because Rhoban FC had networking problems in the second halftime we were able to achieve exactly that. They didn’t score enough goals and therefore enabled us to ‘beat’ WF Wolves.

The semi-final was against the Chinese Team ZJUDancer and their robots nimbly played around our larger ones. They scored multiple goals and we lost that round.

The last game for third place was against Starkit, a Russian team. Since their software and robots was largely bought from Rhoban FC we lost this game as well
But during this game we had the opportunity to reflect how far we have come. From the first game where our robots were barely able to stand to a closely integrated software and hardware system that was able to defend its own goal from an incoming attack and also chose to dribble towards the enemies goal. Although all this is not fully stable and reliable, that’s exactly what we’re working on right now in preparation of Australia’s RoboCup world championship this summer.

We prepared a small summary on Youtube as well.