We are using ROS as the middleware framework in out robots. Thereby, our software parts are separated in nodes that communicate via asynchronous messages. Our code is written in Python and C++. You can find our codebase at GitHub.
In the last years, we used Fully Convolutional Neural Networks for out ball detection. This year, we switched to YOLO and the Darknet framework for our ball and goalpost detection, which provided much better results. Other features on the field, especially line points and other robots, are detected using conventional methods. The field boundary is determined using a green color space. White points below the field boundary are published as line points, objects crossing the field boundary are other robots.
To process natural light condition, the color space is dynamically adapted by adding missing colors below the field boundary on the fly.
After the vision pipeline, the extracted features of the image are transformed to the relative space based on forward kinematics and the camera projection matrix.
For navigation, we use the ROS move_base package with a Dynamic Window Approach for local path planning.
For localization, we experimented with AMCL (Advanced Monte Carlo Localization) which is based on particle filters. Since it is normally used with input from laser scanners, it did not work well with our line point detection. Therefore, we are currently working on a particle filter based approach using line points and goal posts as filter input.
Our behavior is based on the Dynamic Stack Decider (DSD), a more stateful alternative to behavior trees, and uses data from the game controller, the localization and the vision to determine the actions of the robot. It is separated in body and head behavior.
Hardware Control Manager
The HCM (Hardware Control Manager) provides an abstraction of the bipedal robot by interrupting the joint commands of the walking or the kick when the robot falls down or is picked up and plays the respective keyframe animations instead.
Our walking is the Quintic Walk which is an open loop walking based on quintic splines.