Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Coupler constraints should be parsed from official SDFormat 1.11 mimic tags #20704

Open
scpeters opened this issue Dec 21, 2023 · 5 comments
Open
Assignees
Labels

Comments

@scpeters
Copy link
Contributor

Is your feature request related to a problem? Please describe.

Since #20503 was merged, coupler constraints are now created when parsing an SDFormat file containing custom drake:mimic tags, which are treated in a similar manner to the //joint/mimic tags supported in the drake URDF parser (see #18728, #17663) and in the official URDF documentation. Recently, mimic tags have been added to SDFormat 1.11 under the //joint/axis and //joint/axis2 elements, so I think it would be nice if drake could parse these elements instead of / in addition to the custom drake:mimic tags.
The SDFormat syntax for mimic differs slightly from URDF in the following ways:

  1. The SDFormat mimic elements are specified in a //joint/axis or //joint/axis2 element instead of within //joint. This allows support for mimicking individual axes of multi-axis joints.
  2. The multiplier and offset parameters are specified as child elements of an SDFormat mimic element instead of XML attributes.
  3. The SDFormat mimic element defines an additional reference parameter that applies to the constraint equation as shown below. When reference == 0, the specification is identical to the URDF definition.
follower_position = multiplier * (leader_position - reference) + offset

Describe the solution you'd like

Drake should create coupler constraints based on //joint/axis/mimic, //joint/axis2/mimic, and //joint/drake:mimic tags.

Describe alternatives you've considered

The //joint/drake:mimic tag could be considered for deprecation if the syntax for the official tags is satisfactory.

Additional context

@sherm1
Copy link
Member

sherm1 commented Dec 21, 2023

Assigning to Rico for disposition

@jwnimmer-tri jwnimmer-tri added the component: multibody parsing Loading models into MultibodyPlant label Dec 30, 2023
@jwnimmer-tri
Copy link
Collaborator

Thanks @scpeters, that's good info and I suspect we'll add the parsing.

Big picture, do you have suggestions for how Drake can keep tabs on additions/changes to the SDFormat specification? Maybe release notes or a news file for libsdformat releases? Or any blog page that announces new SDFormat specification versions? I didn't find anything after some quick searching.

@scpeters
Copy link
Contributor Author

scpeters commented Jan 2, 2024

Big picture, do you have suggestions for how Drake can keep tabs on additions/changes to the SDFormat specification? Maybe release notes or a news file for libsdformat releases? Or any blog page that announces new SDFormat specification versions? I didn't find anything after some quick searching.

@jwnimmer-tri thanks for the feedback. We included info about the mimic and auto-inertial calculation features in the Gazebo Harmonic release announcement, but I can see how it would be easy to miss the libsdformat / SDFormat parts of that since that was focused more on Gazebo. I'm discussing with the other libsdformat / SDFormat maintainers about how to better communicate new features and will get back to you.

In addition to more clearly communicating our released features, are you also interested in staying updated on features under development? I believe we pinged some Drake folks for feedback on the SDFormat feature design documents (at github.com/gazebosim/sdf_tutorials) while they were under development, but that was a bit ad hoc. Perhaps a tracking issue for major new features in each planned version would be helpful?

@scpeters
Copy link
Contributor Author

scpeters commented Jan 2, 2024

I've opened gazebosim/sdformat#1353 to track improving communication of new SDFormat features.

@jwnimmer-tri
Copy link
Collaborator

In addition to more clearly communicating our released features, are you also interested in staying updated on features under development?

It's a good question. If you like, you could drop a note in our slack drakedevelopers.slack.com, perhaps in the #ros channel(?), when anything substantial is happening. That might be onerous for you, though.

Possibly a better answer is if a few Drake people subscribe to pull request notifications on https://github.com/gazebosim/sdf_tutorials. That way, we'll get an auto-ping when a new one is opened. I'll do that myself now, and see how it works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants