Menu

FileFormat

Nikolaus Vahrenkamp Valerij Wittenbeck
Attachments
Visualization.png (217854 bytes)
Xsd_CollisionModel.png (109142 bytes)
Xsd_EEF_open.png (228278 bytes)
Xsd_Joint2.png (317184 bytes)
Xsd_Physics.png (154559 bytes)
Xsd_Robot.png (66925 bytes)
Xsd_RobotNode2.png (411280 bytes)
Xsd_RobotNodeSet.png (56542 bytes)
Xsd_Sensor.png (19209 bytes)

On this page you will find a detailed description of the XML data structure that is used to setup robots and environments in Simox. Please have a look at Build a robot model, to see how a robot can be defined.

XSD Schema defintion

Simox provides an XSD Schema defintion file that can be used to validate XML defintions and/or for documentation purposes. The file can be found in <Your_Simox_Dir>/doc/file_formats.

Note, that XSD definitions are case sensitive, while Simox does not consider the case while parsing XML tags. So the tags <RobotNode>, <robotnode> and <ROBOTNODE> are all starting a valid RobotNode definition.

Types

The following types are used:

  • xs:string
  • xs:decimal
  • xs:boolean
  • Unit-Length-Type: A string that could be "m", "meter", "mm" or "millimeter"
  • Unit-Angle-Type: A string that could be "rad", "radian", "deg" or "degree"
  • Unit-Weight-Type: A string that could be "g", "gram", "kg", "kilogram", "t" or "ton"
  • Unit-Time-Type: A string that could be "sec", "second", "min", "minute", "h" or "hour"
  • FileLocation-Type: A string that is either "absolute" or "relative", specifying whether a filename is given absolutely or relatively to the current XML file.

Transformations

Geometric transformations can be specified in several ways, which are encapsulated by a <Transform-Type>. Note, that either a Matrix4x4 or a rotation (Quaternion, Matrix3x3 or RollPitchYaw) together with a Translation can be used.

  • Matrix4x4-Type. A homogeneous transformation given as a 4x4 matrix. Here is an example:
    <matrix4x4>
      <row1 c1="1" c2="0"  c3="0" c4="100"/>
      <row2 c1="0" c2="0"  c3="1" c4="200"/>
      <row3 c1="0" c2="-1" c3="0" c4="300"/>
      <row4 c1="0" c2="0"  c3="0" c4="1"/>
    </matrix4x4>
  • Matrix3x3-Type. A rotation given as a 3x3 matrix. Here is an example:
    <matrix3x3>
      <row1 c1="1" c2="0"  c3="0"/>
      <row2 c1="0" c2="0"  c3="1"/>
      <row3 c1="0" c2="-1" c3="0"/>
    </matrix3x3>
  • RollPitchYaw-Type. A rotation given as roll, pitch and yaw angles. Here is an example:
    <rollpitchyaw roll="90" pitch="0" yaw="45" unitsAngle="degree"/>
  • Quaternion-Type. A rotation given as quaternions. Here is an example:
    <quaternion x="1.0" y="0" z="0" w="0.2"/>
  • Translation-Type. A translation. Here is an example:
    <Translation x="100" y="200" z="300" unitsLength="mm"/>

Robot Definitions

RobotNode

A RobotNode can specify

  • A fixed Transformation (optional <Transform> tag).
  • A joint that applies a second transformation according to the joint value (optional <Joint> tag).
  • A visualization that is linked at the resulting pose (optional <Visualization> tag).
  • A collision model which is used for collision detection (optional <CollisionModel> tag).

Joint

For each Joint tag the type has to be specified: Currently the following Joint-types are implemented:

  • fixed (standard): A fixed joint that cannot be moved. This joint type is implicitly chosen when no joint is specified within a RobotNode.
  • revolute: A revolute joint that can be rotated around an axis.
  • prismatic: A prismatic joint that realizes a translational movement.

As shown below, Joints can be defined either with Denavit-Hartenberg conventions (<DH>), or by defining transformations (<Axis> or <TranslationDirection>). A valid Joint definition must either be defined the first or the second way; mixing is not allowed and will result in an exception during parsing.

Physics

The Coord-Location-type is a string that specifies where the CoM is located. When it's set to "VisualizationBBoxCenter" the CoM location is automatically set to the center of the bounding box of the RobotNode's visualization and the other attributes are ignored. If set to "joint", the CoM location is defined by the x,y,z attributes in the joint's coordinate system.

Visualization

CollisionModel

Sensor

Sensors are located w.r.t. the coordinate system of the RobotNode and can additionally define a local transformation. Currently two types of sensors are implemented: Position and Camera.

RobotNodeSet

EndEffector

The EEFActorCollision-Type specifies if and how the element of an finger/actor should be considered for collision detection. The string attribute can be

  • None: No collision detection should be performed with this segment.
  • Actors: Collision detection is performed with all other actors.
  • Static: Collision detection is performed with the static part of the EEF.
  • All: Collision detection is performed with all other actors and the static part.


Related

Wiki: RobotModels