-
Notifications
You must be signed in to change notification settings - Fork 97
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
URDF->SDF handle links with no inertia or small mass (backport) #1258
Conversation
Codecov Report
@@ Coverage Diff @@
## sdf9 #1258 +/- ##
==========================================
+ Coverage 88.35% 88.51% +0.15%
==========================================
Files 63 63
Lines 10092 10123 +31
==========================================
+ Hits 8917 8960 +43
+ Misses 1175 1163 -12
|
* Adding tests that catch warnings when urdf have no inertia element, or if mass is too small Signed-off-by: Aaron Chong <[email protected]> * Promote link inertia and mass related urdf2sdf sdfdbg to sdfwarn with more verbose messages Signed-off-by: Aaron Chong <[email protected]> * Added flag for converting urdf links with small or no mass to frames Signed-off-by: Aaron Chong <[email protected]> * Converts urdf links with small or no mass to frames, added tests Signed-off-by: Aaron Chong <[email protected]> * Adding warning when conversion happens, added tests for small masses, being explicit about epsilon in equal Signed-off-by: Aaron Chong <[email protected]> * Fix cpplint errors Signed-off-by: Aaron Chong <[email protected]> * Adding integration test Signed-off-by: Aaron Chong <[email protected]> * Fix lint Signed-off-by: Aaron Chong <[email protected]> * Use camelCase Signed-off-by: Aaron Chong <[email protected]> * Added URDFMinimumAllowedLinkMass Signed-off-by: Aaron Chong <[email protected]> * Fix tests expecting warnings when converting to frames Signed-off-by: Aaron Chong <[email protected]> * Adding inline contains and notContains to test_utils Signed-off-by: Aaron Chong <[email protected]> * Using RedirectConsoleStream and ScopeExit Signed-off-by: Aaron Chong <[email protected]> * Refactor to use Root::LoadSdfString Signed-off-by: Aaron Chong <[email protected]> * Removing debug message when converted frame is from a root link Signed-off-by: Aaron Chong <[email protected]> * Added attached_to for frames during conversion, using < instead of math::equals Signed-off-by: Aaron Chong <[email protected]> * Update brief of URDFSetConvertLinkWithNoMassToFrame to mention case of no inertial frame Signed-off-by: Aaron Chong <[email protected]> * Remove stale commentted code Signed-off-by: Aaron Chong <[email protected]> * Update comment about the errors we are expecting Signed-off-by: Aaron Chong <[email protected]> * Convert to frame by default, remove minimal mass option, refactor implementation to handle lumping, modified unit tests Signed-off-by: Aaron Chong <[email protected]> * Only convert to frame when parent joint is fixed, attaches and transforms pose to parent link, leaves out the fixed joint Signed-off-by: Aaron Chong <[email protected]> * Rephrased conversion error, modified unit tests Signed-off-by: Aaron Chong <[email protected]> * prints zero mass errors as well when conversion to frame fails Signed-off-by: Aaron Chong <[email protected]> * integration tests that mimic the unit tests Signed-off-by: Aaron Chong <[email protected]> * Added integration test with valid and invalid use of force torque sensor where massless child links occur Signed-off-by: Aaron Chong <[email protected]> * Fix lint Signed-off-by: Aaron Chong <[email protected]> * Fix joint reduction logic, more specific error messages, more targeted unit tests for each case Signed-off-by: Aaron Chong <[email protected]> * Convert joints to frames when converting links, attach them to converted links Signed-off-by: Aaron Chong <[email protected]> * Integration tests with child fixed links as well Signed-off-by: Aaron Chong <[email protected]> * Change sdferr to sdfwarn, no way to use ParserConfig::WarningsPolicy for now Signed-off-by: Aaron Chong <[email protected]> * sdferr to sdfwarn for the case where conversion to frame is attempted Signed-off-by: Aaron Chong <[email protected]> * Removing case within converting to frame, where parent joint turns into revolute joint, that is not covered Signed-off-by: Aaron Chong <[email protected]> * Reduced scope of implementation, more specific warning messages Signed-off-by: Aaron Chong <[email protected]> * Remove mention of parser config in warning, since that is not typically used by workflows Signed-off-by: Aaron Chong <[email protected]> * Integration tests revisited and modified, removed printouts Signed-off-by: Aaron Chong <[email protected]> * Test case showing ParserConfig::URDFSetPreserveFixedJoint(true) overrides gazebo tags for joint lumping, warnings with more information and placeholder url Signed-off-by: Aaron Chong <[email protected]> * Use sdf::testing::contains instead of local contains functions in testing (#1251) Signed-off-by: Aaron Chong <[email protected]> * Remove unused InitSDF, added TODO for warning when joints are converted/dropped Signed-off-by: Aaron Chong <[email protected]> * Cleaned up if else cases Signed-off-by: Aaron Chong <[email protected]> * Using << operator of Errors Signed-off-by: Aaron Chong <[email protected]> * Replacing placeholder url with expected URL for the documentation from sdf_tutorials#88 Signed-off-by: Aaron Chong <[email protected]> * URL to tutorial as a constant, removing checking URL from test, just in case links change, we are not testing for that anyway Signed-off-by: Aaron Chong <[email protected]> * Refactored fixed child joint logic as it is never reached Signed-off-by: Aaron Chong <[email protected]> * Reduce number of if statements, renaming to only check if parent joint is reduced Signed-off-by: Aaron Chong <[email protected]> --------- Signed-off-by: Aaron Chong <[email protected]> (cherry picked from commit 6ffe669) Signed-off-by: Aaron Chong <[email protected]>
b5fcc36
to
ea9b542
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this looks good to me; I've tested it with a big URDF that has massless links, and this cleans up the warnings
I see one small behavior change for small masses (less than 1e-6), but I think that's fine
// must have an <inertial> block and cannot have zero mass. | ||
// allow det(I) == zero, in the case of point mass geoms. | ||
// Links without an <inertial> block will be considered to have zero mass. | ||
const bool linkHasZeroMass = !_link->inertial || _link->inertial->mass <= 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
noting a slight behavior change for 0 < mass <= 1e-6
:
- before:
sdfdbg
message ifgz::math::equal(mass, 0)
, which is true for-1e-6 <= mass <= 1e-6
- after: errorStream if
mass <= 0
(no error for0 < mass <= 1e-6
)
I recommend rebase-and-merge |
do we want a review from @j-rivero or should I go ahead and merge? |
Sorry, I have not been following the issues since I created the original PRs. I'm good if you are good ;) |
ok thanks, I'll go ahead and merge. I will actually squash and merge and edit the commit message since it wasn't edited when #1238 was merged |
see the edited commit message in 9d9693b; I think it's nice to do this, especially on pull requests with lots of commits |
got it, thanks! I will keep that in mind next time |
🦟 Bug fix
Related to #199 and #1007
Summary
Checklist
codecheck
passed (See contributing)Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining
Signed-off-by
messages.