# Legacy SKEL File Format SKEL is DART's legacy XML format for describing worlds, skeletons, robots, and environments. Its structure is based on [SDFormat](http://sdformat.org/) with a few DART-specific extensions. DART 7 is removing SKEL support instead of redesigning SKEL as YAML. Use URDF, SDFormat, or MJCF for new models, and migrate existing SKEL assets before depending on DART 7. Use a `release-6.*` branch when you need compatibility with old SKEL assets. ## Legacy loading (DART 6 / migration only) On DART 6, `dart::io::readSkeleton` could load a SKEL file from a file path. Whole-world SKEL loading through the old public DART 6 API remains available on `release-6.*` branches for parity work. ```cpp #include auto skeleton = dart::io::readSkeleton("path/to/legacy.skel"); ``` ## Document structure A SKEL document has a `` root containing one ``. A world holds `` settings and one or more `` elements; each skeleton is a tree of `` elements connected by `` elements. ```text ... ... ... ``` ## Physics `` configures the world: - `` — integration step in seconds (e.g. `0.001`). - `` — gravity vector as `x y z` (e.g. `0 -9.81 0`). - `` — collision backend, e.g. `dart` or `fcl`. ## Skeletons, bodies, and shapes Each `` contains bodies and joints. A `` may specify: - `` — pose as three translation values followed by XYZ Euler angles (six numbers); defaults to the identity. - `` — ``, an inertial ``, and an optional ``. - `` and `` — each wraps a `` (plus an optional `` and, for visuals, ``). `` supports `box`, `sphere`, `ellipsoid`, `cylinder`, `capsule`, `cone`, `pyramid`, `plane`, `multi_sphere`, and `mesh`. Meshes are imported with [Assimp](https://www.assimp.org/), so any Assimp-supported mesh format can be referenced. ## Joints A `` connects a `` and a `` body. Use `world` as the parent name to attach a body to the world frame. Supported `type` values are `weld`, `revolute`, `prismatic`, `screw`, `universal`, `ball`, `euler`, `translational`, `planar`, and `free`. For joints with movable axes, `` (and ``, `` for multi-DOF joints) carry: - `` — the axis direction. - `` — ``, ``, ``, and ``. - `` — `` and `` bounds. The joint's `actuator` attribute may be `force` (the default), `passive`, `servo`, `acceleration`, `velocity`, or `locked`. Initial state can be set with `` and ``. ## A minimal example A single free-floating box falling under gravity: ```xml 0.001 0 -9.81 0 dart 1 0.1 0.05 0.1 0.8 0.3 0.3 0.1 0.05 0.1 world box ``` ## More examples and the authoritative schema Historical DART revisions and `release-6.*` branches include sample `.skel` files under `data/skel/`; treat them as migration references rather than templates for new models. For the exact set of recognized elements and attributes, the legacy parser source is authoritative: `dart/utils/skel_parser.cpp`.