ROS and OpenSource

Since the beginning of 2017 we are heavily working on our new software architecture. We decided to move away from our old self-written system. Starting with the competitions this year, the RoboCup GermanOpen and IranOpen, our robots are using ROS (see This gives us lots of benefits but also there is still a lot of work to do.

Most of our code is rewritten or integrated into ROS by now. Since we can use the same programming languages as before (Python and C++), we were able to keep parts of our old codebase. We are going this step together with other teams from the humanoid kid-size league who also are using ROS and the proposed architecture. This enables exchangeability of the ROS nodes. On this way, we were already capable of testing the other team’s vision code with minimal effort on our system.

Other benefits are the debugging tools and other libraries provided by ROS.

Our software is open source, you can find it on

We are heavily encouraging other teams also to use our proposed architecture or getting in touch with us to discuss further improvements.
Overview of the proposed architecture

The new architecture was developed as a master’s thesis (see Publications) and will be presented at the RoboCup Symposium 2017 in Nagoya, Japan. We hope that an open architecture can help other teams to focus on improving their codebase and ease the access to the league for new teams.


Day 4 and 5

Today is already the last day of the German Open. Here a short overview of what we did the last days.


We made sure the software was running correctly on all robots so that they are able to play. We worked on Minibot’s walking, and transferred existing motion sequences of Minibot standing up to the new system. Also we put plates under Minibot’s feet, to expand the foot area.


The vision continued working (here a small correction: our vision was not made faster by simply removing features that we don’t need but through algorithm optimisation). We can now change or adapt parameters over wlan while the robot is running


(Black circles are balls that are disregarded, since they are over the horizon, the red line.)


Parts of our working group were busy debugging and revising the GameController. We also worked on a tool to visualise what the robot thinks or knows about the field, like its localisation and where it assumes the ball to be.



Having just one Minibot-robot posed a significant problem in the last days . Since software engineering is focused on the future and thus on software for the Minibot-platform, we need Minibot for lots of testing. Since we worked on vision, behavior, walking and standing-up, several people needed to wait for their turn.

We had planned to already have a second Minibot by now, but due to delays in production sequence we don’t have it yet. In the future it will be essential to have a second (better even a third) Minibot to not delay working on code or testing.

The article about the games from yesterday will hopefully follow shortly after this one.


Day 3 and 4: Drop-In Games

Yesterday the first two games took place: Drop-In Games. Two teams play together against the other two teams on the German Open, and each team supplies two robots.

Around 4 pm the first game started, in which the Rhoban Football Club play together with the WF Wolves against the 1. RFC Berlin (formerly FUmanoids) and the Hamburg Bit-Bots.



The game at 7 pm took place with the same combination of teams. In neither game a goal was scored, but robots from both team Rhoban and RFC Berlin saw the ball and had contact with the ball several times.



This morning the third game took place, in which the RFC Berlin played with the WF Wolves against Rhoban Football Club and Hamburg Bit-Bots.

One of our robots, Wilma, managed to see the ball at Kickoff and walked toward it,  but fell. Before she managed to fully get up, two other robots, one from Rhoban and one from Berlin reached the ball, but stood too close to each other so that neither could properly kick the ball.

The robot from Rhoban moved the ball a bit but then fell on it. A second robot from team Rhoban reached the ball and began to manoeuvre the ball into a corner next to their own goal, and to repeatedly move the ball out of the playing field.



Wilma tried to join the game after a while, and managed to slowly but surely get up, but she fell when she tried to start walking. One robot of the Wolves ran into a goalpost and one robot of team Rhoban strayed into the opponent’s goal.

The ball got moved to the middle line, and the robot from team Rhoban walked straight towards it, and past it, just to manoeuvre the ball into the same corner again where it went out of the playing field again.

With that, the game also ended in a tie.



Day 2 German Open

Time really flies during competitions. Here is just a short recap of what we all did yesterday.

Since the vision of our robots was rather slow (it worked, but it was too slow to be useful in a game), we used the vision of the WF Wolves, and adapted it to our robots and our needs (for example they also factor in how the head of the robot is inclined; we don’t have this data). In general we threw out a few features to make the vision faster.

The colour config got adapted to this surrounding and artificial turf. We are still working on computing the horizon, currently it starts from below which results in a wrong horizon so that balls get left out. We will try to compute it from above.

Furthermore we are working on a ‘top-down’ object detection, this means we know what we are looking for in a picture (the ball). This method is based on human perception.



For some time we have been using ROS, Robot Operating System, which provides a consistent standard (and made it possible to just use the vision of the WF Wolves). ROS has many advantages, but our RecordUI, with which we recorded movement sequences, does not work anymore. That’s why a few people sat together and wrote a plugin for ROS so that we can record sequences again.



Also we wrote a boot-script, so that software that is already on the robot will be executed when started, even without connection to a computer. The walking-configuration was adjusted to the really short artificial turf here. Motors in Minibot which were older and used were changed. Several things, especially the flight to Nagoya, were organised for the World Championship. Older and out-of-date Plugins for this website were updated or changed so that this article hopefully will be linked on Facebook and Twitter again.

Two team members were occupied with organisational stuff like game plans for the German Open; for example we will have several Drop-In Games next to the normal games. Here this will mean that two teams play together, and each has to provide two robots and play against the other two teams with two robots each. The GameController got fixed and the teams were inscribed.

After this exhausting but productive day we had roasted potatoes with red cabbage, as well as spaghetti with tomato sauce for dinner, so that hopefully we could continue to concentrate on working today.



Arrival in the fair hall

Today is the first day in the hall. After breakfast at around 7:30 the first group departed, since the hall opened at 8 am. Half an hour later the rest followed.

The shelf we brought along was assembled quickly and the most important things, our food supplies, were put away.



After setting up the network, connecting monitors to laptops and plugging in the laptops, a period of quiet working began – although it is rather loud in the hall itself, many teams are still arriving and unpacking, and there are a number of things that have to be set up for the competition.

We started adapting the ball detection for the field and getting minibot to walk on the relatively short artificial turf. Probably we will also put the old Darwins to use.


Day 1 German Open

Today we met at 9 o’ clock to pack for our trip to the German Open in Magdeburg. This time we had vans with nine seats and lots of storage room, so taking everything with us was no problem.

At 11:30 we were finished loading everything in and after lunch we headed to Magdeburg.

We have three smaller vacation apartments and are located directly next to a supermarket where we bought groceries for this week.

Peeling potatoes, cutting carrots, cucumbers and bell peppers, putting potatoe wedges, spring rolls and chicken nuggets in the oven, some salat, and dinner with something for everyone was ready.



Afterwards we had a team meeting where we talked about our plans and assignments on this competition.

Tomorrow morning we will look for a good spot in the fair hall and will update you then.


End of the IranOpen2017

Unfortunately, as we had not managed to score a goal in the second group stage, this was the end of this year’s Iran Open for us.

We were able to trace the problem of falling over while running to the fact that the gearboxes of some leg motors were worn out and that the parameters of the walking algorithm were not well adapted to the new robot. Despite the relatively difficult conditions due to the conversion of the software to ROS, the competition still was a successful start in the season and we are looking forward to the German Open at the beginning of May in Magdeburg.

The FUmanoids won the game for the third place against Robit. The final was played between MRL and the ZJU Dancers and was an exciting match. The spectators supported strongly the local team from Iran. Unfortunately there were problems with the the game controller, the software which tells the robots the current status of the game. After the half-time pause, the status was not set to “play” again, so some robots did not move. This error was not noticed for several minutes, so it was added a big overtime. As a result, MRL was able to shorten the 4-1 lead to a 4-2 lead. But against the runner-up world champion, this is probably not a shame, although the spectators were very disappointed.

Between the games, we used the time to do some networking with other teams,  helped quickly repair other teams’ robots and visited the exhibits of the aligning university. In the middle-size league, a robot team played a test game against a few volunteering boys from the audience.

At the closing event in the evening at 6 p.m. unfortunately we arrived 10 minutes late and were a bit surprised that it had already begun. Nevertheless, we took our honorary seats in the first rows. Unfortunately, none of us got a translation device, so that the speeches were somewhat monotonous. This year, there were separate ceremonies for the junior and major leagues, so the event lasted only an hour. Afterwards the banquet took place in the competition hall. We met different teams, took some selfies with them and exchanged email addresses.

In the evening we decided to visit the nearby Tajrish Square. At the front desk of the hotel we ordered two taxis. The about 20-minute trip costs about 3€ per taxi. There we strolled over the closing bazaar, which some of us already knew from the previous years and the adjoining mosque. The trip back to the hotel turned out to be more exciting: we negotiated with a taxi driver a plausible price and showed him a letter of our hotel, which explained the way there. The car did not seem to pass through the German TÜV test, but since the top speed due to the traffic situation in Tehran seems to be about 20 km/ h, we were not worried. One of the two taxi drivers seemed to know the way and the other wanted to follow him. Unfortunately they lost themselves in the traffic. After the taxi driver, of whom we had thought he knew the way, had asked other people at the roadside  several times, we actually reached the destination. And our friends in the other taxi arrived a few minutes later. We spent a nice remaining evening at the hotel with our interpreter Mahdi.

The next day was completely reserved for sightseeing. Since we should be in a larger group, we had to pick another team at the exhibition hall. Since we were no longer with buses of the university, we could not simply go over the exhibition grounds to the meeting place. The route outside was about 20km long and the journey lasted half an hour. Walking we would have been there in 15 minutes. We started our tour at the Golestan Palace complex, which is really very worth seeing. It is located close to the large bazaar of Tehran. There we split up into smaller groups, lunched a delicious Iranian burger and covered with spices, cloths and other souvenirs.

Afterwards we went on to the Nature Bridge, which connects two parks across a large road and houses even cafes and viewing platforms. The actually relatively short way to get there was extended by a traffic jam for a considerable time. Many of us used the opportunity to make a little sleep in the more or less comfortable bus to catch up. Arrived at one of the connected parks we made a pleasant walk and enjoyed the view from the bridge.

After dark we drove to the Milad Tower, the television tower, and enjoyed the spectacular view. A in theory successful finish of the tour, only the trip back to the hotel was problemfull. The bus driver unfortunately drove 20 minutes into the opposite direction of our hotel. He had to go back, of course. With some help from other car drivers we arrived finally.

The team ER-Force from Erlangen was already waiting for us, because we wanted to go to the airport together with another, bigger bus and their flight was a bit earlier than ours and were promised a bus even earlier. We had not eaten since noon and so we had to take the food from the hotel restaurant into the bus.

Arriving at the airport we had to wait some time until we could check in. Also when the information displays would let us believe we could get rid of our suitcases, the check-in desk was still unoccupied for a felt eternity. We also had to wait a long time for the departure check-out and the security check-up was still closed until shortly before boarding. Arriving three hours before departure, the Tehran Imam Khomeini Airport is not really too early.

Despite some delay of our first flight from Tehran to Vienna we got our connection flight to Hamburg. Also our luggage we received without problems in Hamburg. Tired but satisfied with the work done at the competition, we went to the Hamburg sun on a cold Sunday morning. Most of us needed a bit of sleep.


Second Group Stage

Today was another exciting day at the venue. At 2pm we had our first match of the day against Robit from South Korea. We put further effort in the ball detection to resolve the last problems with the porting of vision.
Right at the beginning of the match Minibot got a engine damage. The gear in the shoulder was broken and the patient had to be treated. But luckily we are always well equipped at the competitions. So we had spare motors to change the broken parts. Before the end of the match Minibot was ready again to at least defend the goal. In the mean time Hans, the WF Wolves’ robot, was defending the goal and was able to kick the ball into the right direction. But Hans fared no better. After falling down he broke his neck which had to be fixed with hot glue several times in this match. Robit had a big chance to score a goal, but they shot the ball that far, 10 cm in front of our goal to be precise, that they weren’t able to see the ball anymore. Due to the hardly fixed head hans wasn’t able anymore to locate the ball correctly. So he kicked into the air several times and did not hit the ball anymore.  But unfortunately it was not enough to score a goal so the match ended without goals.
In the second and last game for the day at 6 pm we played against the Fumanoids. In the afternoon we could make some little improvements so that we were able to walk a little into the direction of the ball, that we actually recognised. But after some steps Minibot fell over and due to a fault (probably in the accelerometer) he turned over and over on the field. He acted like a real soccer player! As a lesson from last game we had already prepared the hot glue for the game. But it got worse: Right before the start of the game Nils had noticed sparks flying out of the Wolves’ robot. A cable had become loose and caused a short circuit. A soldering iron was needed and after a short surgery Hans was able to play again. Only his head kept falling off when he fell down.
Towards the of the competition we wanted to take a team picture. We quickly found someone to take the photo of us. While we were still standing there, some participants and visitors of the IranOpen joined us to see our robot. Of course, we took also photos with them and soon we were surrounded by a group of people with Hans, Minibot and us in the middle.

Group Stage

Today was the start of the tournament. The Bold Hearts played the opening match against the ZJU Dancers at 9 am. Afterwards we competed against the FUmanoids in a match that ended in a 0:0 tie. Unfortunately Minibot experienced some issues with the ball detection algorithm. Later on we were able to resolve the problem, but as usual other issues emerged afterwards. Although the Wolves have quite a good ball detection our team was not able to score a goal. 

Until 12 pm we had time to fix minor issues and continued on adapting the Wolves’ ball detection for our robot. 

In our second match the ZJU Dancers beat us with a score of 0:1. We believe  their success to be mostly attributed to their localisation software.

After a pleasant lunch break we were able to get the Wolves’ vision software running on Minibot. Since we use a different camera we had to adjust some parameters, so we could finally detect the ball. Still Minibot did not move much during the match since there seems to be a problem with the command to start the walking towards the ball when one is detected. We will approach that issue tomorrow.

In the penalty shoot-out against the Bold Hearts in our last match, which started at 6 pm, Hans, the Wolves’ robot, managed to score a goal and Minibot did a good job as goalie.

We also visited the other three exhibition halls in which the junior league is located. One of them accommodates student projects from various schools. We were quite impressed by the complexity of these projects. The subject of most projects was related to electronics, programming and environmental concerns. 



Set-Up Days

Yesterday evening we finally managed to run our software on the robot. So today we could start testing. The bus shuttle to the hall was in time, because we had to attend the opening ceremony at 9:00. Speakers at the ceremony were the president of the Qazvin University, important professors and the deputy mayor of Tehran. They underlined the importance of the RoboCup competitions and the research in Iran. 

Today we recorded test data for Fabians master thesis on pressure sensors .  The artificial turf on the playing field is not very high, but it is made of different kinds of artificial turf which makes the robots stumble at the borders between two parts.

The field markings correspond to the rules of 2015 and the games will be played under the rules of 2016.  At this competition there was no referee meeting, because the technical committee will be refereeing most games . Also there was no robot inspection to officially measure and weight the robots. Instead each team simply had to measure their robots themselves and fill out a form.

Tomorrow at 7:30 German time we will play our first game against the FUmanoids from Berlin. Unfortunately we could not do a test game today so we are very excited on how we will present ourselves on the playing field. At the moment we are working on including the Wolves image processing into our software, as our own image processing code is too slow to be used in the game. This was enabled by Marcs master thesis, to move our software to the ROS framework in cooperation with other teams. Thus, standards were defined  that make code sharing very easy. We are looking forward to the debut tomorrow. 

At 9:30 German time we will compete in our second group match against the ZJU Dancers. Our third one will be at 15:30 against the Bold Hearts.