CLang: The RoboCup Coach Language

The RoboCup Coach Language (CLang) was developed to enable online coaches to change the behavior of simulated soccer players during games in the Simulated League. Since a coach may work together with teams from different research groups, it is important for the coach language to have clear semantics that prevent misinterpretation from both the players and the coach.

The CLang grammar that is used in our corpus is based on the one given in the following document (Section 7.7):

Mao Chen, Klaus Dorer, Ehsan Foroughi, Fredrik Heintz, ZhanXiang Huang, Spiros Kapetanakis, Kostas Kostiadis, Johan Kummeneje, Jan Murray, Itsuki Noda, Oliver Obst, Pat Riley, Timo Steffens, Yi Wang and Xiang Yin. RoboCup Soccer Server Users Manual, for Soccer Server Version 7.07 and later. February 11, 2003.

CLang was not designed for use with an NL interface. To make it easier to use, we have modified CLang, guided by the following principles:

  1. If a construct is too clumsy to describe using natural languages, then a more common specialization of the construct is introduced. For example, (arc POINT 0 RADIUS 0 360) becomes (circle POINT RADIUS).
  2. If there are simple concepts that can be easily described in natural languages, but are impossible to express in CLang, then new constructs that correspond to these concepts are introduced. For example, (left REGION) is a new construct that refers to the left half of REGION from our team's perspective.
  3. New constructs may be introduced by symmetry. For example, the player predicate is introduced alongside player-except and player-range, so that players can be referenced in a unified manner.
  4. It must be easy to convert the new constructs back into CLang for use in the RoboCup Soccer Server.

Here are the modifications that have been made:

  1. All references to players are made using the following constructs: All constructs that contain references to individual players are made to accept player, player-except and player-range as arguments. For example, (bowner our {6}) becomes (bowner (player our {6})). (pass {2}) becomes (pass (player our {2})).
  2. (ppos TEAM UNUM_SET INT1 INT2 REGION) becomes:
  3. (POINT1 + ((pt ball) * POINT2)) becomes (pt-with-ball-attraction POINT1 POINT2).
  4. (arc POINT 0 RADIUS ANGLE_BEGIN 360) becomes (circle POINT RADIUS), regardless of the value of ANGLE_BEGIN.
  5. New constructs are introduced for the following pre-defined regions:

Code that translates the new CLang constructs into the original CLang (and the pre-defined regions into exact xy-coordinates) is available upon request.

Yuk Wah Wong (