Team Description Paper Team HULKs

Ole Felber, Pascal Gleske, Jonathan Hellwig, Jonas Holz, Konrad Valentin Nölle, Anna Relógio Stauber, Maximilian Schmidt, Julian Schuler, Vivienne Schwabe, Hendrik Sieck, Patrick Göttsch

Hamburg University of Technology, Hamburg, Germany

http://www.hulks.de · https://www.hulks.de · https://github.com/hulks/ · https://github.com/HULKs/ditef · https://github.com/HULKs/meta-nao · https://github.com/HULKs/meta-hulks · https://github.com/bhuman/CompiledNN


Abstract This paper describes the HULKs team's contributions to the RoboCup Standard Platform League, including the development of a distributed task execution framework for neural network architecture search, a Rust-based robotics framework, advanced ball detection networks, a custom Linux distribution for NAO robots, and various other technical innovations in robot perception, localization, and motion control.

1 Team Information

Team Name HULKs
Team Leader Patrick Göttsch
Team Contact Email [email protected]
Team Website https://www.hulks.de and https://github.com/hulks/
Country of Origin Germany
University Affiliation Hamburg University of Technology

2 Code Usage

No code of other teams is used in the HULKs codebase. For inference of our neural networks, we depend on the CompiledNN library of B-Human. Our walking engine is inspired by rUNSWift concepts. Some of our standup motions are based on files from the NAO Devils.

3 Own Contributions

The increasing application of artificial neural networks (ANN) in various domains of robotics with limited processing capabilities demands highly optimized ANN architectures. Efficient architecture search requires horizontal and vertical scaling of ANN evaluation. The HULKs present their approach and application of a scalable genetic algorithm based on distributed task execution which can be found at https://github.com/HULKs/ditef. The framework is able to scale dynamically and operate on heterogeneous hardware. Usage of the distributed genetic algorithm to evolve ANNs for the context of RoboCup soccer competitions is shown as a case study.

3.2 Rust framework

We develop a general purpose robotics framework based on the Rust programming language. A modularized approach enables a parallelized execution in multiple threads. By utilizing code generation, we achieve a highly non-redundant and maintainable code base. An encapsulated framework makes it easy to focus on robotics code. Robotics domain and framework code are strictly separated. Rust's safety guarantees enable blazingly fast development. Runtime introspection of the type hierarchy is possible via a custom communication protocol. A hardware abstraction layer enables easy adaptation to the NAO and Webots simulator.

3.3 Ball Detection Network

We develop a multi-stage ball detection pipeline. It consists of a pre-classifier, classifier and positioner neural networks. The pre-classifier is a network prioritizing recall and execution speed to quickly eliminate unsuitable candidates. The classifier is optimized for precision to avoid false positives. The positioner accurately determines the position and radius of the ball in the sampled candidate image. All networks are optimized using DiTEF and are executed at runtime using CompiledNN.

3.4 Yocto Based Operating System for NAO

We provide a fully functional Yocto package targeting the NAO V6 platform. Yocto provides the necessary tools to build a highly customizable Linux distribution for embedded devices. All required recipes are open source and published at https://github.com/HULKs/meta-nao and https://github.com/HULKs/meta-hulks. We use Yocto to build a ready-to-flash OPN image and a toolchain for crosscompilation.

3.5 OpenAI Gym Environment

We investigate the use of a custom OpenAI gym environment for exploring the use of reinforcement learning in motion. The environment interacts with our framework making it possible to target the NAO robot or the Webots simulator.

3.6 Improved Walking Engine

Based on the ideas of the rUNSWift walking paper we implement a walking engine in Rust. We extend our control implementations for more stabilized step planning.

3.7 In-walk Kicks

Our walking engine supports the execution of dynamically planned in-walk kicks. It provides a forward-kick, turn-kick, and side-kick. During the execution of kicks, our walking engine ensures the stability of the robot.

3.8 Debug and Robot Management Tooling

We develop a new debug tool to dynamically inspect the runtime state of our control software. It also supports live camera feeds as well as plotting capabilities and changing parameters at runtime.

3.9 Behavior Simulator

To test and develop our robot behavior we provide a simulator to rapidly execute the behavior part of our robotics software.

3.10 Localization using UKF with line optimization

Our localization uses a multi hypothesis unscented Kalman filter which fuses odometry and line percept data. The line percepts are fitted to the field lines using an iterative closest line algorithm.

3.11 Automatic Calibration

The cameras are calibrated in an autonomous procedure. The extrinsic camera parameters are determined via a Levenberg-Marquardt optimization. To accurately find lines in the camera images the calibration procedure makes use of a sophisticated detection algorithm.

3.12 CompiledNN Bindings

To integrate the JIT-compiler for neural network inference CompiledNN https://github.com/bhuman/CompiledNN into our framework and tooling we developed open source bindings in both Rust and Python.

3.13 Webots Integration

Our open source release includes the models of the NAO V6 robot for use in the Webots simulator. To integrate the simulator with our framework we develop a Rust library containing bindings to the simulator.

4 Past History

4.1 Past Data

Competition Tournament State Opponent Score
RoboCup 2022 Quarter Final Nao Devils 2:3
RoboCup 2022 Round 5 Nao Devils 2:1
RoboCup 2022 Round 4 B-Human 0:6
RoboCup 2022 Round 2 NomadZ 9:0
RoboCup 2022 Round 1 SABANA Herons 4:0
GORE 2022 Quarter Final B-Human 0:10
GORE 2022 Round 6 Bembelbots 0:6
GORE 2022 Round 5 RoboEireann 1:9
GORE 2022 Round 4 SPQR 0:3
GORE 2022 Round 3 R-ZWEI KICKERS 0:4
GORE 2022 Round 2 Nao Devils 0:10
GORE 2022 Round 1 rUNSWift 0:6
GORE 2021 Round 3 Bembelbots 1:0
GORE 2021 Round 2 B-Human 0:10
GORE 2021 Round 1 Berlin United 4:1
RoboCup 2019 Quarter Final Nao Devils 1:2
RoboCup 2019 CC Play In NomadZ 9:0
RoboCup 2019 Second Round Robin Bembelbots 3:1
RoboCup 2019 Second Round Robin rUNSWift 0:5
RoboCup 2019 First Round Robin B-Human 0:5
RoboCup 2019 First Round Robin UPennalizers 10:0
GermanOpen 2019 3rd Place rUNSWift 2:1
GermanOpen 2019 Semi Final Nao-Team HTWK 1:3
GermanOpen 2019 Play-In Round Nao Devils 5:1
GermanOpen 2019 Round Robin B Nao-Team HTWK 0:4
GermanOpen 2019 Round Robin B rUNSWift 1:2
GermanOpen 2019 Round Robin B NomadZ 8:0

We also participate in RoboCup 2021 in two out of four challenges. In the Obstacle Avoidance challenge the HULKs became second and on the 1vs1 challenge the HULKs finished on 9th to 12th place. Overall we reached rank nine out of fourteen.

4.2 Future participations

We are going to participate in GORE2023, April 2023, and RoboCup 2023, July 2023.

5 Impact

The HULKs have always been active in organizing events for our league as well as the humanoid league. These include seven RoHOW events as well as two German-Open-Replacement events (GORE). We are looking forward to our next GORE in April 2023 to which you are cordially invited.

As the first team developing our software fully open source we pioneer the free sharing of code and data to promote collaborative research in the SPL.

In participating in organizational and technical committees we shape the future of the SPL and research in humanoid robotics.

Our tooling to create self-packaged OPN files enabled teams to remotely deploy their robots and overcome the restrictions caused by the corona virus outbreak.