-
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
multibody sdf: Allow specifying purely kinematic frames #9350
Comments
FYI (not advocating this): it is actually OK to weld a massless body to a massful one -- that does not create a singular mass matrix in an internal-coordinate representation like MultibodyPlant's. For non-welds, a massless/inertialess body can cause singularities if it is the last body along a branch of a the multibody tree; I suspect our bugcatcher doesn't discriminate by joint type. |
Submitted a potential solution for the first one: |
Filed: https://bitbucket.org/osrf/sdformat/issues/200 |
Relates #9222
At present, there is no absolutely clear way to add purely kinematic frames. Options and caveats:
Use SDFs specification for
<frame/>
While very ambiguous, the number of required
<frame/>
tags is*
per the spec:http://sdformat.org/spec?ver=1.6&elem=model#model_frame (also defined in
<link>
and<joint>
).@amcastro-tri's interpretation / understanding is that this is for specifying a single frame for the object; however, after re-inspecting this, I would assume it's for adding an arbitrary number of frames.
The containers in
sdformat
do not currently handle<frame/>
tags, e.g.Model.hh
;however, they are semi-tested in
test/integration/frame.cc
(only the singular case, not the plural case).The frame would look something like:
While this does use
<pose frame="...">
but does not enable it elsewhere --- which @hidmic's code did achieve via #6496 --- I'd personally be fine with temporary asymmetry until we can parse the frames in all SDF code.Potential PR: #9352
Add zero-mass body.
This does not appear to be possible without hacks.
A zero-inertial body fails a positive definite matrix test, and throws about an invalid inertia (I had tried with a fixed joint welding a zero-inertial body);
I'd prefer to keep this as-is, as it keeps things physically realistic?
NOTE: I would like to strictly reject adding epsilon-mass bodies. This problem really shouldn't be that hard, and would be nice to solve correctly the first time?
Keep Drake's current abuse of
<frame>
tag for RBT SDF parsing:With the following code:
drake/multibody/parsers/sdf_parser.cc
Lines 375 to 423 in 1eb21b2
RBT can parse a
<frame/>
from SDF as:We could either continue this abuse, or use XML namespaces to make something like
<drake:frame/>
per @jwnimmer-tri's suggestion.Overall, I like the first option, assuming that the SDF specification of
Required: *
implies that we can have 0+ frames (not just 0 or 1).@hidmic @nkoenig @scpeters If you have time, may I ask if there is an authoritative and unambiguous interpretation of
<frame/>
that I am missing, or if there is one that we can add?This issue doesn't seem to pin down the definition of the
<frame/>
tag.The text was updated successfully, but these errors were encountered: