KICKin' & Rollin' Challenge¶
The KICKin' & Rollin Challenge (see here, section 2) was a challenge at the RoboCup 2025. The goal was to kick a rolling ball, which started rolling from a ramp from an unknown distance, but from either the right or the left in a 90 degree angle to the robot.
Concept Idea¶
Our approach makes use of our motion capabilities. Our robots are able to kick a ball during walking and to adjust a kick based on the ball position. Furthermore, our walk is stable enough to prevent most falls even for extreme kicks. Additionally, we already have a concept of delaying walking steps, our WalkDelayPhase.
Therefore, for this challenge our approach is as follows:
- The robot starts close to the defined ball roll path as described in the rules.
- By touching the head sensors, we tell the robot whether the ramp is on the left or right.
- The ramp distance can be told too, but is only used for the head to make sure the robot can see the ball.
- Once in playing, the robot will rotate itself slightly towards the ramp.
- The rules state the robot must do such adjustment by itself.
- The rotation prevents the ball from being concealed by the shoulders.
- It allows for a simple straight forward kick. The combination of the forward kick with the ball momentum will kick the ball towards the goal and not out to the sides.
- Once the ball rolls, we start a
WalkDelayPhase
.- In every motion cycle, we check for when the ball will intersect the x-axis of our kicking sole.
- Based on the expected x-axis distance of the ball when intersecting, a delay time to start the kick is determined.
- The ensure that our WalkKickEngine executes a correct kick, it gets the information when the ball will reach the interception axis. This ensures that the kick is constructed with an expected ball position directly in front of the kicking sole.
Additional Features¶
Originally, we developed our approach with the idea in mind that the ball could deviate a lot from its intended rolling path. The main concern was that the ball would roll too far away or directly into the robot, in both cases making a successful kick impossible from a standing position. Correspondingly, we added additional planning to allow the robot to walk around while the ball is rolling. Side movement is limited and mostly only small forward and backward movements is allowed. Based on the last swing foot, it is also allowed to use both legs to kick the ball, as it is better to kick the ball badly than not kicking at all in this challenge.
This planning was deactivated for the actual challenge, as testing at the competition showed that the ball did not deviate much in its rolling direction.
Code¶
The challenge uses the scenario RollingBallChallenge
. The behavior uses the option HandleRollingBallChallenge
to handle the state during playing, e.g. standing and looking at the ramp or telling motion to intercept and kick the ball.
The motion part is done in the module InterceptBallProvider
. This module normally handles the interception of the ball by walking into its rolling path. For this challenge, we added the option to also kick the ball.
Originally, we planned to use both features in competition games, but due to inaccuracies in real games, we decided against it.
Additionally, we adjusted our kick walkForwardsLeftLong
and walkForwardsRightLong
to be as strong as possible in the challenge. Otherwise, the kicked ball would not reach the goal.
SimRobot Scene¶
We provide two scenes, which can be found under Config/Scenes/OtherScenes
: RollingBallChallenge.ros2
and RollingBallChallengeFast.ros2
.