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

Gazebo crashes when universal joints reach limits since 6.11.0 #1596

Closed
2 tasks done
scpeters opened this issue Aug 22, 2021 · 3 comments
Closed
2 tasks done

Gazebo crashes when universal joints reach limits since 6.11.0 #1596

scpeters opened this issue Aug 22, 2021 · 3 comments
Assignees
Labels
priority: high should be resolved right now status: in-progress type: bug Indicates an unexpected problem or unintended behavior

Comments

@scpeters
Copy link
Collaborator

Bug Report

  • I checked the documentation and the forum but found no answer.
  • I checked to make sure that this issue has not already been filed.

Environment

  • DART version: 6.11.0
  • OS name and version name(or number): macOS Catalina
  • Compiler name and version number: Apple clang version 12.0.0 (clang-1200.0.32.29)

Expected Behavior

There are tests in gazebo that push the Universal joints to to their position limits in gazebo, both INTEGRATION_joint_universal and some sub-tests of INTEGRATION_joint_spawn. These tests were passing as recently as July 22nd:

Current Behavior

The mentioned CI job is not run daily. The next time it was run on July 30th, the universal joint tests involving limits began crashing with an ODE INTERNAL ERROR:

ODE INTERNAL ERROR 1: assertion "lo[k] <= 0 && hi[k] >= 0" failed in dSolveLCP() [/tmp/dartsim-20210728-75371-6nj383/dart-6.11.0/dart/external/odelcpsolver/lcp.cpp:791]

Console output from failure in INTEGRATION_joint_universal:

233: [ RUN      ] PhysicsEngines/JointTestUniversal.Limits/3
233: [Msg] Waiting for master.
233: [Msg] Connected to gazebo master @ http://127.0.0.1:11345
233: [Msg] Publicized address: 172.23.1.206
233: [Msg] Loading world file [/Users/jenkins/workspace/gazebo-ci-gazebo11-homebrew-amd64/gazebo/test/worlds/universal_joint_test.world]
233: [Wrn] [DARTPhysics.cc:98] Gravity vector is (0, 0, 0). Objects will float.
233: [Dbg] [DARTModel.cc:72] Initializing DART model model_1
233: [Dbg] [DARTModel.cc:166] Building DART BodyNode for link 'link_00' and joint 'joint_00'.
233: [Dbg] [DARTModel.cc:166] Building DART BodyNode for link 'link_01' and joint 'joint_01'.
233: [Err] [DARTJoint.cc:195] DARTJoint: SetAnchor is not implemented.
233: [Dbg] [ServerFixture.cc:211] ServerFixture load in 0.6 seconds, timeout after 600 seconds
233: [Dbg] [joint_universal.cc:133] Setting gravity gx 5 gy 5 pose 1e-06 1e-06 1 0.452501 -0.471958 -0.217518
233: /Users/jenkins/workspace/gazebo-ci-gazebo11-homebrew-amd64/gazebo/test/integration/joint_universal.cc:141: Failure
233: The difference between des1 and jointLower->Position(1) is 0.21621770000094703, which exceeds 1e-2, where
233: des1 evaluates to -0.29999999999999999,
233: jointLower->Position(1) evaluates to -0.51621770000094702, and
233: 1e-2 evaluates to 0.01.
233: /Users/jenkins/workspace/gazebo-ci-gazebo11-homebrew-amd64/gazebo/test/integration/joint_universal.cc:145: Failure
233: The difference between des0 and eulerAngles.X() is 0.052500520896339997, which exceeds 0.05, where
233: des0 evaluates to 0.40000000000000002,
233: eulerAngles.X() evaluates to 0.45250052089634002, and
233: 0.05 evaluates to 0.050000000000000003.
233: /Users/jenkins/workspace/gazebo-ci-gazebo11-homebrew-amd64/gazebo/test/integration/joint_universal.cc:146: Failure
233: The difference between des1 and eulerAngles.Y() is 0.17195796755424692, which exceeds 0.05, where
233: des1 evaluates to -0.29999999999999999,
233: eulerAngles.Y() evaluates to -0.4719579675542469, and
233: 0.05 evaluates to 0.050000000000000003.
233: 
233: ODE INTERNAL ERROR 1: assertion "lo[k] <= 0 && hi[k] >= 0" failed in dSolveLCP() [/tmp/dartsim-20210728-82012-bfecll/dart-6.11.0/dart/external/odelcpsolver/lcp.cpp:791]
233/416 Test #233: INTEGRATION_joint_universal ...........................Subprocess aborted***Exception:  12.17 sec

Console output from failure in INTEGRATION_joint_spawn:

229: [ RUN      ] TestRuns/JointSpawningTest_All.SpawnJointTypes/27
229: [Dbg] [joint_test.hh:69] Params: (0x10b44fe98 pointing to "dart", 0x10b44fa21 pointing to "universal")
229: [Msg] Waiting for master.
229: [Msg] Connected to gazebo master @ http://127.0.0.1:11345
229: [Msg] Publicized address: 172.23.1.206
229: [Msg] Loading world file [/Users/jenkins/workspace/gazebo-ci-gazebo11-homebrew-amd64/gazebo/worlds/empty.world]
229: [Dbg] [DARTModel.cc:72] Initializing DART model ground_plane
229: [Dbg] [DARTModel.cc:128] Building DART BodyNode for link 'link' with a free joint.
229: Warning [BodyNode.cpp:498] [BodyNode] A negative or zero mass [0] is set to BodyNode [link], which can cause invalid physical behavior or segfault. Consider setting positive value instead.
229: [Dbg] [ServerFixture.cc:211] ServerFixture load in 0.5 seconds, timeout after 600 seconds
229: [Dbg] [joint_spawn.cc:88] SpawnJoint universal child parent
229: [Dbg] [DARTModel.cc:72] Initializing DART model joint_model0
229: [Dbg] [DARTModel.cc:128] Building DART BodyNode for link 'parent' with a free joint.
229: [Dbg] [DARTModel.cc:166] Building DART BodyNode for link 'child' and joint 'joint'.
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Wrn] [DARTPhysics.cc:491] Not implemented yet in DART.
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:485] DARTLink::SetAngularVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: [Dbg] [DARTLink.cc:414] DARTLink::SetLinearVel() doesn't make sense if the parent joint is not free joint (6-dof).
229: 
229: ODE INTERNAL ERROR 1: assertion "lo[k] <= 0 && hi[k] >= 0" failed in dSolveLCP() [/tmp/dartsim-20210728-82012-bfecll/dart-6.11.0/dart/external/odelcpsolver/lcp.cpp:791]
229/416 Test #229: INTEGRATION_joint_spawn ...............................Subprocess aborted***Exception:  92.28 sec

I believe this was triggered by the merge of dartsim 6.11.0 into homebrew-core in Homebrew/homebrew-core#82071 on July 28th. Having looked at the changelog, I believe it is related to #1587.

Steps to Reproduce

  1. brew install gazebo11 on macOS
  2. Download gazebo's test/worlds/universal_joint_test.world to a local folder. This would contains a two-link system with two universal joints, one of which is connected to the world.
  3. Open the test world with dart: gazebo --verbose -e dart path/to/test/worlds/universal_joint_test.world
  4. Set the x or y component of gravity to a non-zero value, such as 1. This causes the pendulum to swing towards its joint limits and then crash.

Code to Reproduce

See the Limits test in joint_universal.cc.

@scpeters scpeters added the type: bug Indicates an unexpected problem or unintended behavior label Aug 22, 2021
@jslee02 jslee02 self-assigned this Aug 22, 2021
@jslee02 jslee02 added priority: high should be resolved right now status: in-progress labels Aug 22, 2021
jslee02 added a commit that referenced this issue Aug 22, 2021
jslee02 added a commit that referenced this issue Aug 22, 2021
jslee02 added a commit that referenced this issue Aug 22, 2021
@jslee02
Copy link
Member

jslee02 commented Aug 22, 2021

This should be fixed by #1597

@scpeters
Copy link
Collaborator Author

thanks for fixing this so quickly! I see that you've tagged 6.11.1 but haven't marked it as a release. Are you planning any further changes?

@jslee02
Copy link
Member

jslee02 commented Aug 25, 2021

No further changes. Just mark is as a release: https://github.com/dartsim/dart/releases/tag/v6.11.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority: high should be resolved right now status: in-progress type: bug Indicates an unexpected problem or unintended behavior
Projects
None yet
Development

No branches or pull requests

2 participants