Team Description Paper Dutch Nao Team
Jakob Kaiser, Ross Geurts, Harold Ruiter, Gijs de Jong, Marina Orozco González
University of Amsterdam, Amsterdam Science Park 904, 1098 XH Amsterdam, Netherlands
https://www.uva.nl/ · https://www.dutchnaoteam.nl/
Abstract The Dutch Nao Team from the Netherlands comprises 31 active members and a staff member from the University of Amsterdam. The team consists of students pursuing degrees in both Bachelor's and Master's programs in Artificial Intelligence and Computer Science. Over the past twelve years, the team has acquired a total of 25 NAO robots, although not all of them are currently operational. Presently, the team possesses seven NAO V6 robots and intends to purchase two new NAOs. This means that we will bring either seven or nine robots in preparation for the upcoming RoboCup event.
Team Information
Team Name Dutch Nao Team
Team Leaders Jakob Kaiser and Ross Geurts
Team contact email address [email protected]
Team website URL https://www.dutchnaoteam.nl/
Country of origin Netherlands
University/company affiliation(s) University of Amsterdam Intelligent Robotics Lab
1 Code Usage
From April 2017 onward, the team has been using a framework written in C++. Last year we participated with an adapted version of the 2021 HULKs code release 3 while we were transitioning to our new framework Yggdrasil. This year we want to play on the RoboCup using this new framework. Built from the ground up with a focus on continuity, extensibility and developer experience, the goal is to develop a modern framework that has a lower barrier to entry than the existing frameworks. Yggdrasil is fully written in the Rust programming language which offers several advantages compared to C++. It provides more type safety, has more user-friendly compiler messages, reduces the risk of pitfalls and improves dependency management with its package manager cargo. The new framework does not use any other team's code and all functionality has been developed from scratch.
2 Own Contribution
Since the new framework Yggdrasil has been developed from scratch a lot of new functionality has been developed. The following sections will shortly outline the most significant aspects of this new framework.
2.1 Framework and scheduling
To keep our codebase manageable as the amount of features grows, it is important that we can write new features incrementally and in a modular fashion. At the same time, many features are dependent on one another and there are a lot of states that need to be accessed by different features. To solve this problem, we developed Tyr, a dependency injection library which manages the execution of robot subsystems and the state between them.
In Tyr, everything is managed within the context of an app. The app allows you to define the state through resources and the way it is used through systems. Resources allow you to store a single global instance of some data type, which can be used within an app. Finally, systems are simply functions which take some number of resources by (mutable) reference as arguments and once every LoLA cycle.
One extension we have also built using these primitives is the task module. Tasks allow us to run certain functions over multiple cycles by offloading them to a background thread. This is useful for applications such as compute-heavy ML, large IO operations, or networking, as we don't want these to block our LoLA communication.
2.2 Walking engine
For Yggdrasil, a new walking engine has also been developed, based on the 2014 rUNSWift gait generator [1], with several tweaks and improvements. One key update is the gait generator now uses a Finite State Machine (FSM) to smoothly switch between different stages of the walking cycle. This modification makes it easier to modify the walking engine's behaviour, as the code is now more structured. Additionally, the inverse kinematic implementation does not make use of the Jacobian method for estimating transformations as in the original paper. Instead, a closed-form implementation is adopted, which results in exact joint angles based on an implementation by the HULKs [2].
Our initial walking engine is operational, demonstrating the ability to move in various directions. The ongoing development is directed towards improving the stability and speed of the walking mechanism. Simultaneously, efforts are underway to explore gait modulation based on [3] within the gait generator, aiming to achieve a more stable and dependable walk.
2.3 Behavior architecture
The behaviour engine for Yggdrasil is designed as a state machine and separates the logic for transitioning between behaviours from their execution. When executing a behaviour, a corresponding execution function is called which is provided a context, containing all the necessary information for executing that behaviour. Each execution function then mutates an output state detailing joint angles and extra information like LED colours on the robot. Each behaviour can keep track of a state that can be used to store any information needed for that specific behaviour. The transitions between different behaviours are defined according to roles, offering a clear overview of the transitions specific to each role.
2.4 Ball detection
Ball detection has encountered difficulties in achieving adequate speed in NAO robots without compromising accuracy. Our approach consists of two steps: In the first step, colour and geometric relationship filters identify potential ball proposals within the image. These proposals are generated by applying a mask over pixels dark enough in the image, then taking the minimal enclosing circle around nearby dark spots, and finally selecting those circles that contain enough ratio of white pixels within them. The second step involves feeding a convolutional neural network classifier with these proposals to determine if there is a ball present within each proposal.
2.5 Localisation
Localisation is needed so that robots know where they are. Currently, a simple odometry-based mechanism has been implemented to estimate the robot's position based on the walking engine. However, this approach is inaccurate and fails if the robot falls over. Therefore it is important to include visual information like field lines, middle circles, corners, etc. in the estimation of the robot's position. Currently, work is being done to implement a self-localisation approach based on B-Human, making use of complex field features in combination with an Unscented Kalman Filter and Particle Filter for hypothesis modelling [4].
3 Past History
The predecessor of the Dutch Nao Team was the Dutch Aibo Team [5]. The Dutch Nao Team debuted in the Standard Platform League (SPL) competition at the German Open 2010 [6]. Since their founding, the Dutch Nao Team has been qualified for the World Cup competitions in Istanbul [7], Mexico City [8], Eindhoven [9], João Pessoa [10], Leipzig [11], Nagoya [12], Montreal [13], Sydney [14], Worldwide [15], Bangkok [16] and Bordeaux [17].
Besides the major RoboCup events, we have attended multiple GermanOpens, IranOpens, the Humanoid Soccer School 2013, the Mediterranean Open 2011, the Colombia Robotics week, Tech-Fest 2015¹, the European Open 2016, Rodeo 2019 and every Robotic Hamburg Open Workshop between 2016 and 2023. At the Benelux Conference on Artificial Intelligence 2016 the team received the award for best demonstration [18], at the Iran Open 2017 the team received the Award in the Open Challenge with a presentation on our behaviour engine.
The results from 2020 onward in major RoboCup competitions are presented in Table 1. At the RoboCup 2023 in Bordeaux, the Dutch Nao Team secured a spot in the semifinals based on their performance in the seeding rounds. Unfortunately, after losing both the semifinal match and the subsequent match against BadgerBots, the team concluded the competition in fourth place. In December 2023 the Dutch Nao Team attended the RoHOW and we plan to participate in the GermanOpen 2024 in April.
Dutch Nao Team results from the RoboCup in 2021, 2022 and 2023
| Year | Round | Opponent | Score |
|---|---|---|---|
| 2021 | 1 vs 1 | B-Human | 0:16,5 |
| 2021 | 1 vs 1 | SPQR | 1:0 |
| 2021 | 1 vs 1 play-in's | UT-Austin Villa | 0:2 |
| 2022 | First round | Naova | 1:0 |
| 2022 | Second round | B-Human | 0:10 |
| 2022 | Third round | SPQR Team | 0:3 |
| 2022 | Fourth round | NomadZ | 0:0 |
| 2022 | Fifth round | UPennalizers | 0:0 |
| 2023 | Seeding Round | UT Austin Villa | 7:0 |
| 2023 | Seeding Round | R-ZWEI KICKERS | 2:3 |
| 2023 | Seeding Round | BadgerBots | 1:2 |
| 2023 | Seeding Round | RoboEireann | 1:6 |
| 2023 | Seeding Round | Naova | 6:0 |
| 2023 | Seeding Round | Rinobot-Jaguar | 8:0 |
| 2023 | Seeding Round | RedBackBots | 2:1 |
| 2023 | Semi-Final | RoboEireann | 0:10 |
| 2023 | Third Place | BadgerBots | 0:4 |
4 Impact
The Dutch Nao Team has seen significant growth during the past few years, now having 31 active members from different bachelor and master studies. During its participation in the RoboCup, the Dutch Nao Team has provided its support or resources in several bachelor & master theses [19]–[24] and projects that led to publications on a large variety of topics [3], [25], [26]. At Maastricht University, a PhD thesis was done [27] based on a paper on learning a more stable gait [28], compared to the energy-efficient gait from earlier work [29]. Additionally, side projects were done regarding ball-detection [30], [31]. The Dutch Nao Team extended the application of the Nao robot to the @Home league of the RoboCup: the Nao robot was used to help in a kitchen environment by finding a tomato and grabbing it from a table [25], [32]. Finally, the Dutch Nao Team has made the penalty shootout situation into a standalone demonstration [18] which premiered at the Benelux Conference on Artificial Intelligence 2016 and won the first prize for best demonstration.
Earlier the Dutch Nao Team has published papers in the International Conference on Advanced Robotics [33], the Performance Metrics for Intelligent Systems Workshop [34], the RoboCup IranOpen Symposium [35], the RoboCup Symposium [36] and the International Conference on Autonomous Robot Systems and Competitions [32]. The Dutch Nao Team also proposed and supervised RoboCup-related projects as part of compulsory courses in the Artificial Intelligence bachelor at the University of Amsterdam.
5 Other
For the broader community, the Dutch Nao Team continues to provide many lectures about robotics and AI, and demonstrations of autonomous football at companies and schools throughout the year. This spreads knowledge about robotics and AI and is a way for the Dutch Nao Team to fund the trip to the RoboCup. After RoboCup 2016 a foundation was started to allow for transparent financial communication, solely for the benefit of AI and robotics research.
Since growing as a team, costs have increased significantly. As a result, the Dutch Nao Team has started to develop a more professional brand to partner with various companies. To attain this, several committees of dedicated students have been formed that work on attaining sponsors/partnerships, updating the team's social media and organizing events and travel.
5.1 Events
The Dutch Nao team is dedicated to organizing programming workshops in ranging difficulty for children and teens. The team does this mostly in collaboration with the University of Amsterdam, where they also participate in the open days for aspiring bachelor's students by hosting demo soccer games in their lab. Furthermore, the team attends and participates in events that highlight scientific advancements in various communities, like the Careerday geared towards high school students or the Weekend of Science. As a part of the team's collaboration with the Startup Village Amsterdam, they also host small tours of their lab for various visiting companies.
References
[1] B. Hengst, "Runswift walk2014 report robocup standard platform league," School of Computer Science and Eng., Univ. of New South Wales, 2014. [2] A. Essig, P. Gleske, K. Nölle, M. Schmidt, H. Sieck, and B. Wetters, "Team research report - 2021," Tech. Rep., 2021. [3] G. de Jong, L. Eshuijs, and A. Visser, "Learning to walk with a soft actor-critic approach," Nov. 2023. [4] T. Röfer, T. Laue, A. Baude, et al., B-Human team report and code release 2019, Only available online: http://www.b-human.de/downloads/publications/2019/CodeRelease2019.pdf, 2019. [5] S. Oomes, P. Jonker, M. Poel, A. Visser, and M. Wiering, "Dutch aibo team at robocup 2004," in Proceedings CD of the 8th RoboCup International Symposiums, Lisbon, Jul. 2004. [6] A. Visser, R. Iepsma, M. van Bellen, R. K. Gupta, and B. Khalesi, Dutch Nao Team - Team Description Paper - Standard Platform League - German Open 2010, Jan. 2010. [7] C. Verschoor, D. ten Velthuis, A. Wiggers, et al., "Dutch Nao Team – Team Description for RoboCup 2011 - Istanbul," in Proceedings CD of the 15th RoboCup Symposium, Jan. 2011. [8] C. Verschoor, D. ten Velthuis, A. Wiggers, et al., "Dutch Nao Team – Team Description for RoboCup 2012 - Mexico City," in Proceedings CD of the 16th RoboCup Symposium, Jun. 2012. [9] P. de Kok, N. Girardi, A. Gudi, et al., Team Description for RoboCup 2013 in Eindhoven, the Netherlands, Proceedings of the 17th RoboCup International Symposium, May 2013. [Online]. Available: https://www.dutchnaoteam.nl/publications/2013/dnt2013tdp.pdf. [10] P. de Kok, D. ten Velthuis, N. Backer, et al., Dutch Nao Team team description for RoboCup 2014 - João Pessoa, Brasil, Jun. 2014. [Online]. Available: https://www.dutchnaoteam.nl/publications/2014/dnt2014tdp.pdf. [11] P. de Kok, S. Negrijn, M. Karaalioğlu, et al., Dutch Nao Team Team Qualification Document for RoboCup 2016 - Leipzig, Germany, Nov. 2014. [Online]. Available: https://www.dutchnaoteam.nl/publications/2015/dnt2016tqd.pdf. [12] C. Lagrand, S. Negrijn, P. de Kok, et al., "Team Qualification Document for RoboCup 2017, Nagoya, Japan," University of Amsterdam, Science Park 904, Amsterdam, The Netherlands, Tech. Rep., Nov. 30, 2016. [Online]. Available: https://www.dutchnaoteam.nl/publications/2017/LagrandDescription2017.pdf. [13] C. Lagrand, S. Negrijn, M. van der Meer, et al., "Team Qualification Document for RoboCup 2018, Montreal, Canada," University of Amsterdam, Science Park 904, Amsterdam, The Netherlands, Tech. Rep., Jan. 31, 2018. [Online]. Available: https://www.dutchnaoteam.nl/publications/2018/Lagrand2018.pdf. [14] P. Kronemeijer, C. Lagrand, S. Negrijn, et al., "Team qualification document for robocup 2019, sydney, australia," University of Amsterdam, Science Park 904, Amsterdam, The Netherlands, Tech. Rep., Jan. 15, 2019. [Online]. Available: https://www.dutchnaoteam.nl/publications/2019/kronemeijerqualification2019.pdf. [15] H. L. gezegd Deprez, P. Kronemeijer, T. W. Caitlin Lagrand, et al., "Team qualification document for robocup 2020 bordeaux, france," University of Amsterdam, Science Park 904, Amsterdam, The Netherlands, Tech. Rep., Jan. 22, 2020. [Online]. Available: https://www.dutchnaoteam.nl/publications/2020/gezegdDeprez2020.pdf. [16] W. Duivenvoorden, H. L. gezegd Deprez, T. Wiggers, et al., "Team qualification document for robocup 2022 bangkok, thailand," Tech. Rep., Feb. 14, 2022. [Online]. Available: https://www.dutchnaoteam.nl/publications/2022/Duivenvoorden2022.pdf. [17] W. Duivenvoorden, L. Bolt, D. Prinzhorn, et al., "Team qualification document for robocup 2023 bordeaux, france," Tech. Rep., 2023. [Online]. Available: https://www.dutchnaoteam.nl/publications/2023/TeamQualificationDocument2023.pdf. [18] C. Lagrand, P. de Kok, S. Negrijn, M. van der Meer, and A. Visser, "Autonomous robot soccer matches," in BNAIC2016 Proceedings, Nov. 11, 2016, pp. 237–238. [Online]. Available: http://bnaic2016.cs.vu.nl/images/bnaic/documents/BNAIC_2016_Proceedings.pdf. [19] C. G. Lagrand, Learning a robot to score a penalty – minimal reward reinforcement learning, Bachelor's thesis, Universiteit van Amsterdam, Jun. 2017. [20] S. Negrijn, "Exploiting symmetries to relocalise in robocup soccer," M.S. thesis, Universiteit van Amsterdam, Dec. 2017. [21] R. van Heusden, Making a robot stop a penalty using q learning and transfer learning, Bachelor's thesis, Universiteit van Amsterdam, Jun. 2018. [22] T. Garritsen, Using the extended information filter for localization of humanoid robots on a soccer field, Bachelor's thesis, Universiteit van Amsterdam, Jun. 2018. [23] H. L. gezegd Deprez, Enhancing simulation images with gans, Bachelor thesis, Universiteit van Amsterdam, Jul. 3, 2020. [Online]. Available: https://staff.fnwi.uva.nl/a.visser/education/bachelorAI/thesis_hidde_lekanne_deprez.pdf. [24] X. Monté, Neural factorization of shape and reflectance of a football under an unknown illumination, Bachelor thesis, Universiteit van Amsterdam, Feb. 1, 2023. [Online]. Available: https://staff.fnwi.uva.nl/a.visser/education/bachelorAI/Monte_NERF_of_a_football_under_unknown_illumination.pdf. [25] C. Lagrand and M. van der Meer, "The roasted tomato challenge," Amsterdam Science, vol. 05, p. 4, Apr. 2017. [26] R. van Heusden, "Making a robot stop a penalty," in Proceedings of the 30th Belgian-Netherlands Conference on Artificial Intelligence (BNAIC), 's Hertogenbosch, The Netherlands, Nov. 2018, pp. 89–90. [27] Z. Sun, "An energy efficient gait for humanoid robots walking on even and uneven terrains," Ph.D. dissertation, Universiteit Maastricht, Mar. 2019. [28] Z. Sun and N. Roos, "A controller for improving lateral stability in a dynamically stable gait," in Artificial Intelligence Applications and Innovations, L. Iliadis and I. Maglogiannis, Eds., Cham: Springer International Publishing, 2016, pp. 371–383. [29] Z. Sun and N. Roos, "An energy efficient dynamic gait for a nao robot," in 2014 IEEE International Conference on Autonomous Robot Systems and Competitions (ICARSC), May 2014, pp. 267–272. [30] C. Lagrand, D. van der Wal, and P. Kronemeijer, Detecting a checkered black and white football, honour's project report, Universiteit van Amsterdam, Feb. 2017. [31] R. van der Weerd, "Project ai: Real-time object detection and avoidance for autonomous nao robots performing in the standard platform league," University of Amsterdam, Tech. Rep., Jul. 13, 2021. [Online]. Available: https://www.dutchnaoteam.nl/wp-content/uploads/2021/10/ProjectAI-report.pdf. [32] C. Lagrand, M. van der Meer, and A. Visser, "The roasted tomato challenge for a humanoid robot," in Proceedings of the IEEE International Conference on Autonomous Robot Systems and Competitions (ICARSC), Bragança, Portugal, Jan. 1, 2016. [Online]. Available: https://staff.fnwi.uva.nl/a.visser/publications/roasted-tomato-challenge.pdf. [33] A. Wiggers and A. Visser, "Discovering reoccurring motifs to predict opponent behavior," in Proceedings of the 16th International Conference on Advanced Robotics, Montevideo, Uruguay, Nov. 27, 2013. [Online]. Available: http://staff.fnwi.uva.nl/a.visser/publications/TemporalMotifs.pdf. [34] S. van Noort and A. Visser, "Validation of the dynamics of an humanoid robot in usarsim," in Proceedings of the Performance Metrics for Intelligent Systems Workshop (PerMIS'12), Jan. 1, 2012. [Online]. Available: http://staff.fnwi.uva.nl/a.visser/publications/NaoValidation.pdf. [35] A. Visser, D. de Bos, and H. van der Molen, "An experimental comparison of mapping methods, the gutmann dataset," in Proceedings of the RoboCup IranOpen 2011 Symposium (RIOS11), Jan. 1, 2011. [Online]. Available: http://staff.fnwi.uva.nl/a.visser/publications/ComparisonMappingMethods.pdf. [36] S. van Noort and A. Visser, "Extending virtual robots towards robocup soccer simulation and @home," in RoboCup 2012: Robot Soccer World Cup XVI, Springer, 2013, pp. 332–343.