-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Support missing joint types in MultibodyPlant #12404
Comments
I've spoken with @scpeters and @azeey about allowing SDFormat to pass through custom joint types. At present, I believe |
What about |
That'd work! (and be simpler for adding the specific attributes) |
I'd like to hear what @azeey thinks as well, but I think should we add a I think we're too late into the release process to add this to our initial release of libsdformat9, but we could consider it along with the nesting / composition proposal |
I think |
That seems unfortunate. It would be nice if sdf could understand that this was a joint, but of an unfamiliar type. There are many useful joint types that sdf does not currently support. |
@sherm1 Why do you say it is unfortunate? We don't care if Sure, ideally the sdf xml specification should grow to denote additional joint types in a first-party way, so that ecosystem tools can inter-operate. But for our needs in Drake, we just need the element tree. We don't need anything else. |
@jwnimmer-tri Why would it be reasonable for sdf's JointCount not to return the number of joints? I understand that we can hack around it but if there is a more reasonable solution it would be preferable. |
We don't need It would only really matter if we cared about traversing all defined joints in the order in which they were defined, which hopefully is never the case? |
I don't think it is reasonable to expect libsdformat to do anything special to support sdf dialects other than its own first-party, canonical definition -- other than provide a window into the raw XML, which it already does. If the file uses a first-party element name, the semantics had better be first-party semantics. If we want different semantics, we should use a different tag. Down any other path lies madness. |
.sdf is a format for physical description of robots. It understands links and joints. It is not a stretch for it to understand that there are other kinds of joints besides the small set it currently supports. I don't think that would be madness. |
I am all for widening the spec to encompass additional, enumerated joint types. However, I don't want |
Agreed. But something like |
I would support some extensions to how we define joints like |
@scpeters no worries -- would be nice to consider a more disciplined way to deal with non-sdf-standard joints in a future version. If we have to add more joints in the meanwhile we can get by with a |
A minor bit: With the pose frame semantics, we may get some more coupling to things like |
Thanks, yes -- done. |
For the record, as of today the parsers don't support screw joint yet (even though MbP does). I added a TODO for that in #17054 on the SDFormat side. For the URDF side, it seems like we'll need to |
FYI -- I found my first application need for the ball joint using quaternions instead of RPY. My rubik's cube example can sometimes run into singularities. For example, if you rotate the 2x2 cube about 'y', you'll hit it: |
We currently don't have parsing support for all of the joint types. In addition to the screw joint mentioned above, the sdf ball joint could be parsed into BallRpyJoint today, even if we want the quaternion version in the future? This came up in answering a stackoverflow question @sherm1_ -- it seems reasonable to have that list coincide with this issue, and say that a joint isn't really supported if sdf defines it but our parsers don't support it. Or do you want a separate issue to track the parsing? |
I think it's sufficient to include parsing needs under "support missing joint types" as covered by this issue. |
FYI I just updated the checkboxes at the top to add |
Missing joint types:
(Probably space-fixed since that's what's common in robotics and matches sdf and our bushing. That's non-physical for a gimbal joint unless interpreted as a ypr body-fixed sequence.)
//joint[@type="floating"]
- confusing? #13691These should be added as joints and mapped to corresponding mobilizers internally. We should be able to parse them in from sdf input, possibly with a Drake extension or two.
Here is the list of joint types officially supported by .sdf 1.6. Here is the list for URDF.
Sdf also has revolute2 which I think is like a U-joint but with non-perpendicular axes. Not clear if anyone needs that.
The text was updated successfully, but these errors were encountered: