# RoboCup Simulation Tag Proposal

These tags have been carefully chosen to reflect the object-oriented architecture of the simulation. The tags revolve completely around the objects which are being simulated, rather than focusing on GUI and such non-simulation related appurtenances. This allows humans to easily read, understand, and modify the XML files without constantly referencing the documentation. Great care has been taken to choose logical tag names, and to utilize the conventions that you presented in the earlier draft.

Design Paradigms of the Tag System:

- Tags must be logical.
- Tags must be consistent.
- Tags must be an English word or English words connected by underscores.
- Tags must be closely tied to the underlying objected model of the system.
- This tag system is designed as purely data format. No directives to the program exist within. (i.e. it is not scripting)
- Inheritance and templates can be used to promote brevity.

## Main Tags

### <parameter_file>

This is the root tag. It contains simulation worlds.

Contains:

- sim_world
- COMMENT

### <sim_world>

This tag represents a self-contained simulated environment, and contains all tags of its constituents.

Attributes:

- name - the name of the simulation world (for GUI)
- x_size - length in meters of the simulation world.
- y_size - width in meters of the simulation world.
- z_size - height in meters of the simulation world.
- in_latency - latency in number of frames for AI-sim communication.
- out_latency - latency in number of frames for sim-AI communication.
- frame_rate - Frame rate at which the simulator runs.
- noise_radius - A parameter for simulating noise in the simulator

Contains:

- field,decoration,wall,robot,ball,goal,geometry,COMMENT

## Object Attribute Tags

### <geometry>

Every physical object contains a geometry tag. This describes the geometry of the object.

Attributes:

- start_position - initial position in meters of the object. [x,y,z]
- start_velocity - initial velocity in meters/sec of the object. [x,y,z]

Contains:

- shape, COMMENT

### <shape>

This describes the shape of the object.

Contains:

- line, circle, rectangle, Plane, arc

### <appearance>

Any object in the program that can be viewed by the GUI has an appearance tag. This tag contains attributes and other tags which provide information to the GUI about what the object should look like. This is currently not implemented. It can be used in future if we plan to integrate a GUI with the simulator.

Attributes:

- fill_color - color to fill in inside of object with.
- edge_color - color to draw around edges with.
- edge_thickness - thickness of edges in pixels.

Contains:

- COMMENT

## Object Tags

### <robot>

This defines a robot and all of its characteristics.

Attributes:

- name - the name of the robot. (for debugging/logging purposes)
- id - unique identification number used in communication with the AI. Negative means it doesn't exist in the simulation, is only a template.
- team - the team of the robot. (for better description)
- mass - the mass of the robot
- elasticity - the elasticity of the robot.
- inherits - the name of the robot from which properties are inherited.

Contains:

- appearance
- geometry
- dribbler
- kicker
- COMMENT

### <wall>

This defines a wall and all of its characteristics.

Attributes:

- name - unique identifying name. If it ends with "_TEMPLATE" it is only a template, and is not instantiated.
- elasticity - The elasticity of the wall
- inherits - the name of the wall from which properties are inherited.

Contains:

- appearance
- geometry
- COMMENT

### <goal>

This defines a goal and all of its characteristics.

Attributes:

- team - this is 0 or 1, depending on what team owns the goal.
- inherits - the name of the wall from which properties are inherited.

Contains:

- appearance
- geometry
- COMMENT

### <field>

This defines the playing field and all of its characteristics.

Attributes:

- static_friction - the coefficient of static friction of the surface.
- kinetic_friction - the coefficient of kinetic friction of the surface.
- elasticity - the fraction of energy conserved in collisions.
- inherits - the name of the wall from which properties are inherited.

Contains:

- appearance
- geometry
- COMMENT

### <ball>

This defines a ball and all of its characteristics.

Attributes:

- mass - the mass of the ball.
- name - the name of the ball (RoboFlag)
- id - the id of ball (RoboFlag)
- team - the team of the ball (RoboFlag)
- static_friction - the coefficient of static friction.
- kinetic_friction - the coefficient of kinetic friction.
- elasticity - the fraction of energy conserved in collisions.
- inherits - the name of the wall from which properties are inherited.

Contains:

- appearance
- geometry
- COMMENT

### <decoration>

This is used to define decorations that are visible in the GUI but do not have any effect on the physical system. This is not implemented yet.

Attributes:

- none

Contains:

- appearance
- geometry

## Shape Tags

### <line>

This gives a linear geometry to an object.

Attributes:

- length - the length of the line.
- angle - the orientation of the line counterclockwise from î.

Contains:

- COMMENT

### <plane>

This gives a planar geometry to an object.

Attributes:

- length - the length of the plane.
- width - the width of the plane.
- normalangle - the angle between the X-Y plane and the normal of the plane.

Contains:

- COMMENT

### <circle>

This gives a circular geometry to an object.

Attributes:

- radius - the radius of the circle.
- orientation - to indicate the mouth of the circle.

Contains:

- COMMENT

### <arc>

This gives is a semicircular geometry. It is used for decorations only.

Attributes:

- radius - the radius of the semi circle.
- begin_angle - the starting angle of the semi circle counterclockwise from î.
- end_angle - the ending angle of the semi circle counterclockwise from î.

Contains:

- COMMENT

### <rectangle>

This represents a rectangular prism.

Attributes:

- length - the length of the rectangular prism.
- width - the width of the rectangular prism.
- height - the height of the rectangular prism.
- orientation - the orientation of the rectangular prism

Contains:

- COMMENT

## Robot Devices Tags

### <kicker>

This is the kicking mechanism mounted on the robots.

Attributes:

- kick_impulse - impulse imparted on the ball, in newton-seconds
- reset_time - time taken to reset the mechanism, in seconds

Contains:

- shape

### <dribbler>

This is the dribbling mechanism mounted on the robots.

Attributes:

- stickiness - The stickiness of the dribbler

Contains:

- shape

###### ©February 4'th, 2002.