Skip to content

Schema versioning strategy #230

@scpeters

Description

@scpeters

Context

I had a discussion with @clalancette and @sloretz about this and am sharing some of the contents here:

  1. The URDF specification has become broadly used beyond even the ROS community. There are many URDFs in circulation, and we should preserve backwards compatibility such that any URDFs that work today will always continue to work.

  2. As new features are added to the URDF specification, we suggest incrementing the existing version tag documenting feature support within versions to avoid confusion about which URDF files can be used with which version of ROS. The default value of this version tag is currently 1.0, and the parser throws a runtime_error exception if any other version is parsed.

Recent issue with Quaternion support

The schema version should be incremented when adding new features. I noticed a bit late that support for quaternions was merged in #194 and tagged in 5.0.3. I think before the version goes into widespread use that we should increment the schema version (perhaps to 1.1), so that URDFs must declare version 1.1 in order to use the new quat_xyzw attribute. Likewise, we would also need to update the version check logic in model.cpp's parseURDF function. Perhaps add a maximum supported URDF spec version and throw the exception if the version to be parsed exceeds that.

cc @ahcorde

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions