SKEL file format

SKEL file format is an XML format that describes characters, robots, and environments for DART. The basic structure is based on SDF, and it also provides additional properties specialized to DART.

Caution: this document is under development and buggy.

Hierarchy

<skel>
 +- <world>
 |   +- <physics>
 |       +- <time_step>
 |       +- <gravity>
 +- <skeleton>
     +- <transformation>
     +- <immobile>
     +- <body>
     |   +- <gravity>
     |   +- <self_collide>
     |   +- <transformation>
     |   +- <inertia>
     |   |   +- <mass>
     |   |   +- <transformation>
     |   |   +- <moment_of_inertia>
     |   |       +- <ixx>
     |   |       +- <iyy>
     |   |       +- <izz>
     |   |       +- <ixy>
     |   |       +- <ixz>
     |   |       +- <iyz>
     |   +- <visualization_shape>
     |   |   +- <transformation>
     |   |   +- <geometry>
     |   |       +- <box>
     |   |       |   +- <size>
     |   |       +- <ellipsoid>
     |   |       |   +- <size>
     |   |       +- <cylinder>
     |   |           +- <radius>
     |   |           +- <height>
     |   +- <collision_shape>
     |       +- <transformation>
     |       +- <geometry>
     |       |   +- <box>
     |       |   |   +- <size>
     |       |   +- <ellipsoid>
     |       |   |   +- <size>
     |       |   +- <cylinder>
     |       |       +- <radius>
     |       |       +- <length>
     |       +- <collidable>
     +- <joint>
         +- <parent>
         +- <child>
         +- <axis>
         |   +- <xyz>
         |   +- <dynamics>
         |       +- <damping>
         |       +- <friction>
         |       +- <spring_rest_position>
         |       +- <spring_stiffness>
         |   +- <limit>
         |       +- <lower>
         |       +- <upper>
         +- <axis2>
         |   +- <xyz>
         |   +- <dynamics>
         |       +- <damping>
         |       +- <friction>
         |       +- <spring_rest_position>
         |       +- <spring_stiffness>
         |   +- <limit>
         |       +- <lower>
         |       +- <upper>
         +- <axis3>
         |   +- <xyz>
         |   +- <dynamics>
         |       +- <damping>
         |       +- <friction>
         |       +- <spring_rest_position>
         |       +- <spring_stiffness>
         |   +- <limit>
         |       +- <lower>
         |       +- <upper>
         +- <init_pos>
         +- <init_vel>
         +- <axis_order>
         +- <plane>
             +- <translation_axis1>
                 +- <xyz>
             +- <translation_axis2>
                 +- <xyz>

Details

<skel>
    Description:
    Required: 1
    Type: n/a
    Attributes:
        version: Version number of the skel format
            Type: string
            Default: 1.0
    <world>
        Description:
        Required: 1
        Type: n/a
        Attributes:
            name: Unique name of the world.
                Type: string
                Default: "Unknown world"
        <physics>
            Description: Thy physics properties.
            Requried: 0
            Type: n/a
            <time_step>
                Description:
                Required: 0
                Type: double
                Default: 0.001
            <gravity>
                Description: The gravity vector.
                Required: 1
                Type: vector3
                Default: 0 0 -9.8
        <skeleton>
            Description:
            Required: +0
            Type: n/a
            Attributes:
                name: A unique name for the skeleton.
                    Type: string
                    Default: "Unknown skeleton"
            <immobile>
                Description:
                Required: 0
                Type: bool
                Default: 0
            <transformation>
                Description:
                Required: 0
                Type: First three elements are translation and last three elements are XYZ-Euler angles.
                Default: 0 0 0 0 0 0
            <body>
                Description: We assume that the first body is the root body
                Required: +1
                Type: n/a
                    Attributes:
                        name: A unique name for the body within the scope of the skeleton
                            Type: string
                            Default: "Unknown body"
                <gravity>
                    Description: If true, the body is affected by gravity.
                    Requried: 0
                    Type: bool
                    Default: 1
#                <self_collide>
#                    Description: If true, the body can collide with other bodies in the skeleton.
#                    Required: 0
#                    Type: bool
#                    Default: 1
                <transformation>
                    Description: This is the transformation of the body reference frame, relative to the skeleton reference frame.
                    Required: 0
                    Type: First three elements are translation and last three elements are XYZ-Euler angles.
                    Default: 0 0 0 0 0 0
                <inertia>
                    Description: The inertia of the body.
                    Required: 0
                    Type: n/a
                    <mass>
                        Description: The mass of the body.
                        Required: 0
                        Type: double
                        Default: 1
                    <offset>
                        Description: This is the offset of the inertia reference frame, relative to the body reference frame.
                        Required: 0
                        Type: Vector3d
                        Default: 0 0 0
                    <moment_of_inertia>
                        Description: The moment of inertia.
                        Required: 0
                        Type: n/a
                        <ixx>
                            Description: none
                            Required: 1
                            Type: double
                            Default: 1
                        <iyy>
                            Description: none
                            Required: 1
                            Type: double
                            Default: 1
                        <izz>
                            Description: none
                            Required: 1
                            Type: double
                            Default: 1
                        <ixy>
                            Description: none
                            Required: 1
                            Type: double
                            Default: 0
                        <ixz>
                            Description: none
                            Required: 1
                            Type: double
                            Default: 0
                        <iyz>
                            Description: none
                            Required: 1
                            Type: double
                            Default: 0
                <visualization_shape>
                    Description: none
                    Required: +1
                    Type: n/a
                    <transformation>
                        Description:
                        Required: 0
                        Type: Type: First three elements are translation and last three elements are XYZ-Euler angles.
                        Default: 0 0 0 0 0 0
                    <geometry>
                        Description: The shape of the visual.
                        Required: 1
                        Type: n/a
                        <box>
                            Description: Box shape
                            Required: 0
                            Type: n/a
                            <size>
                                Description:
                                Required: 0
                                Type: Vector3d
                                Default: 1 1 1
                        <ellipsoid>
                            Description:
                            Required: 0
                            Type: n/a
                            <size>
                                Description:
                                Required: 0
                                Type: Vector3d
                                Default: 1 1 1
                        <cylinder>
                            Description:
                            Required: 0
                            Type: n/a
                            <radius>
                                Description:
                                Required: 0
                                Type: double
                                Default: 0.5
                            <height>
                                Description:
                                Required: 0
                                Type: double
                                Default: 1
                    <collidable>
                        Description: This shape will collide with other collision shape nodes if true. This value can be on/off anytime.
                        Required: 0
                        Type: bool
                        Default: 1 (true)
                <collision_shape>
                    Description: none
                    Required: +1
                    Type: n/a
                    <transformation>
                        Description:
                        Required: 0
                        Type: Type: First three elements are translation and last three elements are XYZ-Euler angles.
                        Default: 0 0 0 0 0 0
                    <geometry>
                        Description: The shape of the visual.
                        Required: 1
                        Type: n/a
                        <box>
                            Description: Box shape
                            Required: 0
                            Type: n/a
                            <size>
                                Description:
                                Required: 0
                                Type: Vector3d
                                Default: 1 1 1
                        <ellipsoid>
                            Description:
                            Required: 0
                            Type: n/a
                            <size>
                                Description:
                                Required: 0
                                Type: Vector3d
                                Default: 1 1 1
                        <cylinder>
                            Description:
                            Required: 0
                            Type: n/a
                            <radius>
                                Description:
                                Required: 0
                                Type: double
                                Default: 0.5
                            <height>
                                Description:
                                Required: 0
                                Type: double
                                Default: 1
            <joint>
                Description: A joint connections two bodies with kinematic and dynamic properties.
                Requried: +0
                Type: n/a
                Attributes:
                    name: A unique name ofr the joint within the scope of the skeleton.
                        Type: string
                        Default:
                    type: The type of joint, which must be one of the following: (revolute) a hinge joint that rotates on a single axis
                        Type: string
                        Default:
                    actuator: The actuator type of joint, which must be one of the following: "torque"/"passive"/"acceleration"/"velocity"/"locked"
                        Type: string
                        Default: "torque"
                <parent>
                    Description: Name of the parent body
                    Required: 1
                    Type: string
                    Default:
                <child>
                    Description: Name of the child body
                    Required: 1
                    Type: string
                    Default:
                <transformation>
                    Description: Transformation from child link frame to joint frame.
                    Required: 0
                    Type: Type: First three elements are translation and last three elements are XYZ-Euler angles.
                    Default: 0 0 0 0 0 0
                <axis>
                    Description: The joint axis specified in the joint frame.
                    Required: 1
                    Type: n/a
                    <xyz>
                        Description: Represents the xyz components of a vector. The vector should be normalized.
                        Required: 1
                        Type: Vector3d
                        Default: 1 0 0
                    <dynamics>
                        Description: An element specifying physical properties of the joint. These values are used to specify modeling properties of the joint, particularly useful for simulation.
                        Required: 0
                        Type: n/a
                        Default: n/a
                        <damping>
                            Description: The physical velocity dependent viscous damping coefficient of the joint.
                            Required: 0
                            Type: double
                            Default: 0
                        <friction>
                            Description: The physical Coulomb friction force (not impulse) of the joint.
                            Required: 0
                            Type: double
                            Default: 0
                        <sprint_rest_position>
                            Description: The spring rest position for this joint axis.
                            Required: 0
                            Type: double
                            Default: 0
                        <sprint_stiffness>
                            Description: The spring stiffness for this joint axis.
                            Required: 0
                            Type: double
                            Default: 0
                    <limit>
                        Description: specifies the limits of this joint
                        Required: 1
                        Type: n/a
                        <lower>
                            Description: An attribute specifying the lower joint limit (radians for revolute joints, meters for prismatic joints).
                            Required: 1
                            Type: double
                            Default: -inf
                        <upper>
                            Description: An attribute specifying the upper joint limit (radians for revolute joints, meters for prismatic joints).
                            Required: 1
                            Type: double
                            Default: inf
                        <effort>
                            ...
                        <velocity>
                            ...
                <axis2>
                    Description: The joint axis specified in the joint frame.
                    Required: 0
                    Type: n/a
                    <xyz>
                        Description: Represents the xyz components of a vector. The vector should be normalized.
                        Required: 1
                        Type: Vector3d
                        Default: 1 0 0
                    <dynamics>
                        Description: An element specifying physical properties of the joint. These values are used to specify modeling properties of the joint, particularly useful for simulation.
                        Required: 0
                        Type: n/a
                        Default: n/a
                        <damping>
                            Description: The physical velocity dependent viscous damping coefficient of the joint.
                            Required: 0
                            Type: double
                            Default: 0
                        <friction>
                            Description: The physical Coulomb friction force (not impulse) of the joint.
                            Required: 0
                            Type: double
                            Default: 0
                        <sprint_rest_position>
                            Description: The spring rest position for this joint axis.
                            Required: 0
                            Type: double
                            Default: 0
                        <sprint_stiffness>
                            Description: The spring stiffness for this joint axis.
                            Required: 0
                            Type: double
                            Default: 0
                    <limit>
                        Description: specifies the limits of this joint
                        Required: 1
                        Type: n/a
                        <lower>
                            Description: An attribute specifying the lower joint limit (radians for revolute joints, meters for prismatic joints).
                            Required: 1
                            Type: double
                            Default: -inf
                        <upper>
                            Description: An attribute specifying the upper joint limit (radians for revolute joints, meters for prismatic joints).
                            Required: 1
                            Type: double
                            Default: inf
                        <effort>
                            ...
                        <velocity>
                            ...
                <axis3>
                    Description: The joint axis specified in the joint frame.
                    Required: 0
                    Type: n/a
                    <xyz>
                        Description: Represents the xyz components of a vector. The vector should be normalized.
                        Required: 1
                        Type: Vector3d
                        Default: 1 0 0
                    <dynamics>
                        Description: An element specifying physical properties of the joint. These values are used to specify modeling properties of the joint, particularly useful for simulation.
                        Required: 0
                        Type: n/a
                        Default: n/a
                        <damping>
                            Description: The physical velocity dependent viscous damping coefficient of the joint.
                            Required: 0
                            Type: double
                            Default: 0
                        <friction>
                            Description: The physical Coulomb friction force (not impulse) of the joint.
                            Required: 0
                            Type: double
                            Default: 0
                        <sprint_rest_position>
                            Description: The spring rest position for this joint axis.
                            Required: 0
                            Type: double
                            Default: 0
                        <sprint_stiffness>
                            Description: The spring stiffness for this joint axis.
                            Required: 0
                            Type: double
                            Default: 0
                    <limit>
                        Description: specifies the limits of this joint
                        Required: 1
                        Type: n/a
                        <lower>
                            Description: An attribute specifying the lower joint limit (radians for revolute joints, meters for prismatic joints).
                            Required: 1
                            Type: double
                            Default: -inf
                        <upper>
                            Description: An attribute specifying the upper joint limit (radians for revolute joints, meters for prismatic joints).
                            Required: 1
                            Type: double
                            Default: inf
                        <effort>
                            ...
                        <velocity>
                            ...
                <init_pos>
                    Description: Initial joint position
                    Required: 0
                    Type: VectorXd. The X depends on the degrees of freedom of the joint.
                <init_vel>
                    Description: Initial joint velocity
                    Required: 0
                    Type: VectorXd. The X depends on the degrees of freedom of the joint.
                <axis_order>
                    Description: Axis order for euler joint
                    Required: 0
                    Type: string
                    Default: xyz
                <plane>
                    Description: Plane information for planar joint
                    Required: 0
                    Type: string
                    Default: xyz
                    Attributes:
                        type: The type of plane, which must be one of the following: xy, yz, zx, arbitrary. If the type if arbitrary, <translation_axis1> and <translation_axis2> should must be specified.
                            Type: string
                            Default: xy
                    <translation_axis1>
                        Description: First translational axis of planar joint
                        Required: 1
                        Type: n/a
                        <xyz>
                            Description: Represents the xyz components of a vector. The vector should be normalized.
                            Required: 1
                            Type: Vector3d
                            Default: 1 0 0
                    <translation_axis2>
                        Description: Second translational axis of planar joint
                        Required: 1
                        Type: n/a
                        <xyz>
                            Description: Represents the xyz components of a vector. The vector should be normalized.
                            Required: 1
                            Type: Vector3d
                            Default: 0 1 0