-
Notifications
You must be signed in to change notification settings - Fork 285
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
Servo joint doesn't respect position limits #1583
Comments
Thank you for the detailed report! This should be fixed by #1587 |
Thanks! |
EnvironmentDART version: 6.13 - main branch built from source on commit 189e24d Description@peci1 @jslee02 I still experience similar problem when the axis of rotation is z (e.g. Related issues and PRs:
I changed the sdf a bit (
Testing example:
If I change the axis of the revolute joint to
When I use
I also played with changing the gravity direction, and as I move gravity from z to y axis, both of them stop working. If I move gravity to x axis, then the example can't recover from the joint limits on any axis. |
Bug Report
Environment
Expected Behavior
Servo motors respect position limits.
Current Behavior
Position limits can be overcome when controlling a revolute joint in SERVO mode. It is apparent that the physics engine slows down the motion behind the position limit, but it does not stop it at the limit.
Steps to Reproduce
Code to Reproduce
I generate the skeleton from SDF (using ign-physics). I haven't worked with SKEL files, so I can't create one, but I assume this scenario would be pretty easy to convert:
This test fails:
The joint starts at position 0 with a limit -0.1...0.1 . Then I apply velocity 1 m/s for one second. I'd assume the joint would stop at 0.1 with zero velocity. But this is the actual result:
I think this bug is even described in this test:
dart/tests/comprehensive/test_Joints.cpp
Lines 1022 to 1025 in 5e128ee
The text was updated successfully, but these errors were encountered: