[Discussion] Forceful contact and direct free kicks for virtual competition


One of the rule elements which is tricky to implement is the detection of
“forceful contact” leading to a direct free kick.
What can be easily interpreted by a human referee is much more difficult to
describe formally in order to implement it for an automatic referee.

The current status of the rules is indicated in Law 12, it contains the following
fouls for a robot:

touches another player with a body part which is moving faster than the part of
the opposing robot that is touched, if the robot of the opposing team falls to
the ground within 5 seconds after the touch occurred.


touches another player with a body part which is moving faster than the part
of the opposing robot that is touched for at least 80% of the time during a
time interval of 5 seconds.

Two exceptions are planned for the goal keeper inside it’s penalty area or for
a robot which had an offence committed against him.

The TC did not find a phrasing for this rule which suited everybody, especially
because there is a high potential of false positives and false negatives for
every proposal that was brought so far.

Especially, it is difficult to establish which player committed the foul without
taking into account both, the properties of the contact (e.g. speed of the
center of mass, duration of contact etc…)
and information about the game which are difficult to retrieve
(e.g. are both robots playing the ball?).

Therefore I present here the different proposals that were discussed in order to
open the discussions and try to improve them and agree on a clear proposal that
we can include in the rulebook.


There are currently 4 different approaches to handle this rule (details below):

  1. No foul on collisions
  2. Fouls on specific scenarios
  3. Cylinder based collision detection
  4. Use the collision rules from Simulation 3D

No foul on collisions

This simple solution ensures that there is no false positive and that the games
will not be stopped frequently due to collisions.
The main drawbacks is that teams who try to avoid collisions will be strongly
penalized with respect to teams that do not try to prevent them.
The only mechanism to prevent teams from playing in an aggressive way would be
cancellation of the games by the TC because of a lack of fair-play which would
be reserved to extreme cases.

Fouls on specific scenarios

The main idea of this approach is to use the contact properties to determine if
a suspicious contact happened.
Those contacts are considered as foul only if the game situation is clear enough
to know which robot committed the foul.

A suspicious contact between two robots (A and B) from different teams occurs in
one of the following cases:

  • Collision: a part of A collides with a part of B and the difference between
    the velocity vector of the CoM of A and B is greater than 0.1 m/s
  • Pushing: Over the last 2 seconds, robot A and B have been colliding for a
    cumulated duration of 1 second.

A susipicious contact is converted into a foul of player A if:

  1. Attacking goalkeeper: B is goal keeper and its CoM is inside its own goal
  2. Charge from behind: The following conditions are all met:
    • B is closer than 1m from the ball
    • CoM of B is significantly closer to the ball than CoM of A (> 5 cm)
    • B is not moving significantly away from the ball: distance between the ball and
      B two seconds ago was at most 5 cm more than current distance between the ball and B
  3. Attacking static player: In this case, A is penalized, but free-kick is not
    given to team of robot B. This case is triggered if all the following
    conditions are met:
    • Distance from B to the ball is larger than 1m
    • In the last two seconds, CoM speed of B was always below 0.05m/s
    • CoM speed of A is above 0.1 m/s

Conditions are checked in ascending order which means that if A performs a
charge from behind on B, but A is goalkeeper inside its own area, then the
foul is committed by player B.

Cylinder-based collision detection

A cylinder of radius 1.2*H_width is applied around each robot.
A collision occurs between A and B if the two following conditions are met:

  • The cylinder of A collides with the cylinder of B
  • The difference between CoM velocity of A and B is greater than 0.25 m/s

In this case, the robot with the highest CoM velocity is the one who committed a

Use the collision rules from Simulation 3D

The current rules in simulation 3D are available
To the best of my understanding, they are not considering aspects such as
goal keeper and it would probably need some adaptation to reflect the fact that
we have heterogeneous robots.

My personal opinion on this topic would be to work with a rule based on the
second proposal with the option of adding a very limited number of additional
reasons to convert a suspicious contact into a foul.

Not penalizing fouls would benefit too much to teams who are not trying to avoid
contact and I think that the virtual competition is a major occasion for
encouraging robots avoidance since rules would be applied systematically and it
is possible to focus more on software.

The cylinder-based proposal would result in triggering free-kicks even when
robots are not touching, it also means that robot moving slower than 25 cm/s
will never commit a foul and makes static robot near the ball way too strong
from my perspective.

While the foul model from simulation 3D might be satisfying on the long-term,
it is quite complex and some of its complexity might be unsuited for our league
since the dynamic and the size of the field are pretty different.
I think it would request more effort currently to adapt it than to make our own

We, that is the Hamburg Bit-Bots would like to give our feedback on the proposed solutions.

Allowing robots to do whatever they want is not beneficial for the future since it encourages ruthless behavior and collision which we generally want to avoid (especially if we ever play against human opponents).

We generally think that there are many good ideas in this proposal.
The main issue we see is that it is not tested in a simulation environment and there may be many problems which will come up during testing or, worse, games. While the implementation of the points presented is relatively simple, we think that a lot of time has to be spent on debugging and finding errors, not in the implementation, but in the rules themselves.

Another issue we find is that the goalkeeper can do anything they want in their goal area which might not be intended.

We believe that this very basic model of forceful contact could tag many scenarios as fouls for the wrong player.
Example: If a robot moves quickly to the ball and an opponent robot comes from the side with a lower velocity and tackles the first robot, the first robot would be tagged as doing a foul which is clearly not intended.

We believe that this is the most promising proposal. While it is not perfect and some rules have to be added (such as goalkeeper protection), it is based on the long history of the RoboCup 3D simulation league. They have basically done all the testing for us :smiley:
We believe it would be a good idea to communicate with the 3D simulation league to find out how they like their forceful contact model and the issues they see with it.
We think that we need to have some more information on this model to decide but in any case would greatly profit from utilizing the experience of the 3D simulation league.

Sorry for the delay in answering, I have been busy on updating the other documents for the last few days.

For proposition 2, the fact that the goalkeeper cannot commit forceful contact in its own goal area is intended. The area is pretty small (13 Kid or 14 Adult), but as long as we cannot determine if contact is deliberate I think that the closest we can have to real soccer is to provide a very strong protection of goalkeepers in this very restricted area. Moreover, I think that now most of the teams can kick more than 1m long, often more than 2 or 3. Therefore it should not make it 'too difficult to score goals.

While I agree that this proposal lead to several false negative. At least it should very rarely tag a robot as guilty when it’s not.

As mentioned previously I’m far less enthusiastic about importing rules Simulation 3D. I think that the fact that they only tested rules with identical robots makes their testing way less appropriate for us. Density of robots on the field, speed of motion and other elements are also crucial aspect. On the other hand, I think it would be really great to have their feedback on what were the problem they met, what was really not working, etc…

Since I do not really have the time to contact them and start discussing with them. I would happily accept if you can arrange a meeting with them or take their proposal in detail and try to seek what could be the problems when trying to implement their rules for our league.

The major concern here is that we are on a tight schedule, we are hoping to include this rule to the rulebook for March 22nd in order to allow teams to comment on it before the ‘final Rulebook’ on April 2nd, less than 3 months before the competition.