Nao Devils Team Description Paper for RoboCup 2024 – Standard Platform League –
Arne Moos, Aaron Larisch
Robotics Research Institute, TU Dortmund University
https://naodevils.de/ · https://github.com/NaoDevils/CodeRelease · https://github.com/bhuman/BHumanCodeRelease/releases/tag/coderelease2015 · https://arxiv.org/abs/2309.03530 · https://link.springer.com/book/9783031550140 · https://robocup.de/german-open/
Abstract This paper describes the Nao Devils team from TU Dortmund University participating in the RoboCup 2024 Standard Platform League. The team presents their robotic framework based on B-Human's code release and their own developed modules, along with recent contributions in motion, perception, behavior, and infrastructure. Their work is highlighted by improvements in ball detection, robot perception, whistle detection, and behavior decision-making through score-based evaluation.
1 Team Information
Team name: Nao Devils
Team leader(s): Arne Moos and Aaron Larisch Team contact email address: [email protected]
Team website URL: https://naodevils.de/
Country of origin: Germany
University/company affiliation(s): TU Dortmund University
2 Code Usage
The robotic framework used by the team Nao Devils[1] is based on the code release 2015 of team B-Human[2] . We want to thank the team B-Human for their great work developing their framework, which provides the base for our own developed modules. Compared to the 2015 code release of team B-Human we changed or adapted nearly all main and many minor modules with own contributions and further developed the whole infrastructure significantly. In addition, we have been using the UKF developed by Team Berlin United for IMU filtering since 2018.
3 Own Contribution
The contributions mentioned in this section are mainly based on developments in the last year, and furthermore only outline our current plans for RoboCup 2024.
3.1 Motion
Fall Down Protection & Stand-up We further optimized the fall-down protection described in the previous year. In addition, the keyframe engine was redesigned to be more modular so that the next keyframe can be given and similar movements are no longer duplicated. A statistic now picks the stand-up motions and prevents the robot from trying if no version works.
Safe Dive Motions We reduced the goalie's center of mass by keeping it in a sitting position during inactive phases, which allows even faster and smoother dive motions, increasing the chance to catch the ball and reducing damage to the robot.
Joint Synchronization Currently, we focus on joint synchronization to align the maximum joint speeds. This ensures both static and dynamic responsiveness, which addresses situations where a joint lags behind or gets stuck by compensating with another joint in the same axis. This is particularly crucial for stand-up and kick motions, where joints may reach their limits.
Kicking To enable the precise kicking, which is being used more and more throughout the games, we are working on the development of an adjustable kick with adjustable kick strength.
Unified Sensor Controls We unified our sensor controls, which centralizes all sensor controls in one place to facilitate monitoring and discovery of hidden effects and interactions.
3.2 Perception
Ball Detector We redesigned our ball perception pipeline with better parallelization in mind, which reduced the average execution time from around 12 ms to 2.5 ms. To minimize the worst execution time, we introduced an Early Exit into the neural network[3] , which quickly rejects hypotheses that are definitely not a ball. In particular, this is helpful when there is no ball present in the image and many hypotheses are being tested.
Robot Classifier and Jersey Color Detection We use a YOLO-type neural network to generate robot hypotheses in the upper and lower image. These hypotheses are filtered by a classifier and then refined by a bounding box regressor. The predicted bounding boxes tend to be very unstable, i.e. their positioning relative to the robot can vary a lot between successive frames. We smooth the results by performing multiple successive predictions and interpolating the results with the bounding box from the previous frame.
We use classical pixel-counting to determine a robots team based on the color of the jersey. Additionally, we utilize precomputed color tables specific to each team which are dynamically corrected, especially if it is likely that the color is seen in the background.
There is ongoing work on a segmentation model in the lower camera that mainly segments robot parts and balls to improve perception in duels.
Whistle Detection The whistle detection now relies on both previous strategies, slightly modified, which are combined for more robustness. The ambient noise level is also measured to update the threshold for detecting a whistle according to it. A more detailed description can be found in the paper "Neural Network and Prior Knowledge Ensemble for Whistle Recognition"[4] .
During RoboCup 2023, even whistles further than 30m were detected. To determine the correct one, estimating the direction and distance of the sound source is the next step.
Visual Referee Gesture Detection We want to improve the real-time gesture recognition from last year's visual referee challenge, which should detect the referee's ready gesture during initial even in situations with difficult lighting or people in the background.
3.3 Behavior
Team communication In order to comply with the reduced message size for team communication, we redesigned our binary message format to be more efficient and adjusted the behavior role decisions to rely on the robot's local world model.
Score-based Behavior Decisions We are now using a score based behavior that evaluates as many combinations of kicks and targets as possible and picks the one with the highest score. The only difference between targets close to teammates, outside the field, or inside a goal is their score. Additionally, it is no longer assumed that a kick will be executed perfectly. Instead, probabilities for different outcomes are taken into account when calculating the scores. This concept reduces the dependency on hysteresis while creating a behavior that is prepared for every situation.
Head control We are developing a new head control that is based on a list of interesting field positions, which is processed in order of importance and allows a more reactive and situative perception of the environment.
3.4 Infrastructure
Automated Software Testing in Simulation We incorporated a scripting language into the simulator, enabling the creation of customized scenes for testing robot skills and behaviors. Additionally, we refactored sections of the simulator to support matchups between different software versions, allowing for more diverse and comprehensive testing scenarios.
4 Past History
The results in the main competition (5vs5 or 7vs7) of the last years can be seen in table 1.
In general, the Nao Devils also participated in most of the Technical Challenges in recent years. For RoboCup 2022 we ranked 2nd in the overall ranking of the Technical Challenges with being 2nd in the 7vs7 Challenge, 3rd in the Dynamic Ball Handling Challenge and 3rd in the Open Research Challenge. In the recent RoboCup 2023, we also ranked 2nd in the overall ranking of the Technical Challenges with being 2nd in the Dynamic Ball Handling Challenge, 3rd in the Data Minimalization Challenge and 3rd in the Visual Referee Challenge.
Throughout the year, we take part in several local workshops and events such as our own workshop RoDeo in Dortmund, Germany or the RoHOW workshop in Hamburg, Germany.
In addition to RoboCup 2024, we plan to participate in the German Open 2024[5] end of April in Kassel, Germany.
Table 1. Results in the main competition (5vs5 or 7vs7) of the Nao Devils from 2019 onwards.
| Competition | State | Ourselves | Opponent | Score |
|---|---|---|---|---|
| German Open 2019 | Round Robin | Nao Devils | B-Human | 0:5 |
| German Open 2019 | Round Robin | Nao Devils | Berlin United | 2:1 |
| German Open 2019 | Round Robin | Nao Devils | Bembelbots | 4:0 |
| German Open 2019 | Play-in | Nao Devils | HULKs | 1:5 |
| RoboCup 2019 | First Round Robin | Nao Devils | NTU RoboPAL | 7:0 |
| RoboCup 2019 | First Round Robin | Nao Devils | Berlin United | 1:0 |
| RoboCup 2019 | Second Round Robin Nao Devils | TJArk | 6:0 | |
| RoboCup 2019 | Second Round Robin Nao Devils | Dutch Nao Team | 9:0 | |
| RoboCup 2019 | CC Quarterfinals | Nao Devils | HULKs | 2:1 |
| RoboCup 2019 | CC Semifinals | Nao Devils | Nao-Team HTWK | 0:8 |
| RoboCup 2019 | CC Third Place | Nao Devils | rUNSWift | 2:11 |
| GORE 2021 | Round 1 | Nao Devils | HTWK Robots | 2:4 |
| GORE 2021 | Round 2 | Nao Devils | B-Human | 0:10 |
| GORE 2021 | Round 3 | Nao Devils R-ZWEI-KICKERS | 10:0 | |
| GORE 2021 | Round 4 | Nao Devils | Berlin United | 8:0 |
| GORE 2022 | Round 1 | Nao Devils | HTWK Robots | 0:4 |
| GORE 2022 | Round 2 | Nao Devils | HULKs | 10:0 |
| GORE 2022 | Round 3 | Nao Devils | SPQR Team | 2:1 |
| GORE 2022 | Round 4 | Nao Devils | RoboEireann | 2:2 |
| GORE 2022 | Round 6 | Nao Devils | B-Human | 0:7 |
| GORE 2022 | Quarterfinals | Nao Devils | Bembelbots | 1:2 |
| RoboCup 2022 | Round 1 | Nao Devils | UT Austin Villa | 8:0 |
| RoboCup 2022 | Round 2 | Nao Devils | Bembelbots | 4:0 |
| RoboCup 2022 | Round 3 | Nao Devils | B-Human | 0:4 |
| RoboCup 2022 | Round 5 | Nao Devils | HULKs | 1:2 |
| RoboCup 2022 | Quarterfinals | Nao Devils | HULKs | 3:2 |
| RoboCup 2022 | Semifinals | Nao Devils | HTWK Robots | 0:4 |
| RoboCup 2022 | Third Place | Nao Devils | rUNSWift | 0:1 |
| GORE 2023 | Round 1 | Nao Devils | HTWK Robots | 1:5 |
| GORE 2023 | Round 2 | Nao Devils | Bembelbots | 4:0 |
| GORE 2023 | Round 3 | Nao Devils | NomadZ | 8:0 |
| GORE 2023 | Round 4 | Nao Devils R-ZWEI KICKERS | 3:1 | |
| GORE 2023 | Round 6 | Nao Devils | Naova | 6:0 |
| GORE 2023 | Quarterfinals | Nao Devils | Dutch Nao Team | 3:0 |
| GORE 2023 | Semifinals | Nao Devils | B-Human | 0:10 |
| GORE 2023 | Third Place | Nao Devils R-ZWEI KICKERS | 4:3 | |
| RoboCup 2023 | CC Round 1 | Nao Devils | HULKs | 1:1 |
| RoboCup 2023 | CC Round 2 | Nao Devils | B-Human | 0:10 |
| RoboCup 2023 | CC Round 3 | Nao Devils | SPQR Team | 1:1 |
| RoboCup 2023 | CC Round 4 | Nao Devils | Berlin United | 2:0 |
| RoboCup 2023 | CC Round 6 | Nao Devils | Bembelbots | 2:0 |
| RoboCup 2023 | CC Quarterfinals | Nao Devils | rUNSWift | 0:3 |
5 Impact
The Nao Devils are actively organizing events/workshops for the SPL. With the (irregular) organization of the RoDeo as a workshop in Dortmund, Germany and as co-organizer of the German Open Replacement Event series, we have a great influence in preparing the teams for the annual RoboCup.
In addition, we have advanced the live-streaming of SPL games and together with Berlin United, the games can be viewed live with game overlays for the spectators and saved in high quality for the teams. A unified system is expected to yield live statistics for the games probably coming this year, together with the B-Human team.
Also, in the area of custom firmware images for the Nao, our work led to teams being able to easily create binary images during the corona pandemic to quickly install their code on unknown robots, which could then be used without the team being on site and has led to several further developments and a high level of popularity.
With a perennial member in the Technical Committee, the team helps keeping the league moving forward.
In the field of education, we offer each year a one-year lasting project group in the master of computer science (25 credit points), in which the students are introduced to the Nao and have to master a RoboCup-related project with it. Afterwards, the students usually remain part of the team until they graduate and some of them also write their master's theses with us.
References
[1] https://github.com/NaoDevils/CodeRelease [2] https://github.com/bhuman/BHumanCodeRelease/releases/tag/coderelease2015 [3] https://arxiv.org/abs/2309.03530 [4] https://link.springer.com/book/9783031550140 [5] https://robocup.de/german-open/