Behavior-related Modules in B-Human¶
Ball Search¶
The current behavioral system at B-Human already implements a recognition that specifies when the ball position is assumed to be unknown. If this is the case, it automatically switches to the behavioral part described in this report, which implements the finding of an unknown ball. Particles representing possible ball locations get randomly spread across the field. A particle gets placed elsewhere if the robot looks at it. The robot calculates the area with the highest density of particles by putting a grid on top of the field and counting the particles inside each cell of the grid. The cell with the highest number of particles is the most likely one to contain the ball and therefore gets looked at first. To ensure that the whole field is covered without communicating, the Voronoi regions are used. Each robot only searches inside the part of the field that lies within its own Voronoi region. This ensures that the entire field is covered to find the ball efficiently.
During the RoboCup 2025 in Salvador and the RoboCup German Open 2025 in Nuremberg, B-Human used this module to find the ball in case of an unknown ball position.
Standard Situations¶
During most standard situations an educated guess about the ball's position can be made so the particles get placed accordingly. An example of this is a corner kick, where all particles can be placed in the corners of the field. During a kickin the particles get placed along the touchlines of the field.
Current Problems¶
The ball search works quite well, but some aspects still need to be adjusted:
- The runtime of the module can still be minimized.
- The ball search currently ignores the last known position the ball, even though this could be valuable Information to find the ball quicker.
Field Rating¶
The module FieldRatingProvider
provides functions to calculate a potential field for the Zweikampf
and DribbleToGoal
skill. Different potential fields are supported, which all use a base computation of linear scaling from a repelling or to an attracting point on the field. Weighted based on their ratings they are summed up to give a value for each point on the field for the Zweikampf
skill or just the directional value for the DribbleToGoal
skill.
The following potential fields are provided (see Potential Fields):
- Field Border: the field border is a repelling field.
- Goal: the opponent goal is an attracting field.
- Opponent corners: the opponent corners are repelling fields, to help dribbling in an arc towards the goal from the corner instead of a direct line.
- Obstacles: obstacles are repelling fields, no matter if it is a robot from our or the opponent team. But based on the communication the communicated teammate positions are used to reduce those repelling fields.
- Teammates: based on the communicated positions an attracting field in front of the teammate is created.
- Ball: an attracting field a fixed distance in the direction of the goal. Small dribble kicks are therefore always good, really short or far ones are bad.
- Facing direction: an attracting field based on the current direction the robot is facing.
You can use the following command, to see the drawings for each potential field in the world state:
call Drawings/FieldRating
Potential Fields¶
FieldBorder |
Goal |
Opponent Corner |
---|---|---|
Obstacles Base | Two Obstacles | Obstacles with Teammate |
Teammate | Ball | Facing |
Sum Example 1 | Sum Example 2 | Sum Example 3 |
Indirect Kick Rule¶
In case the robot is not allowed to kick at the goal yet, the goal rating is replaced by a potential field, which has the point of attraction at about the penalty mark.
Current Problems¶
Here we list current problems with the used FieldRating
:
- Some potentials have edges and not smooth interpolations.
- The pass field could be larger.
- Our jersey detection is not good enough, to distinguish between opponent and teammate.
- Facing potential could probably be deleted.