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.
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.
The following types are used:
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>
<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>
<row1 c1="1" c2="0" c3="0"/>
<row2 c1="0" c2="0" c3="1"/>
<row3 c1="0" c2="-1" c3="0"/>
</matrix3x3>
<rollpitchyaw roll="90" pitch="0" yaw="45" unitsAngle="degree"/>
<quaternion x="1.0" y="0" z="0" w="0.2"/>
<Translation x="100" y="200" z="300" unitsLength="mm"/>
A RobotNode can specify
<Transform>
tag). <Joint>
tag). <Visualization>
tag). <CollisionModel>
tag).
For each Joint tag the type has to be specified: Currently the following Joint-types are implemented:
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.
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.
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.
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.