-
Notifications
You must be signed in to change notification settings - Fork 287
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
ikFast class checks joint limits incorrectly #1449
Comments
Thank you for the report. The workaround makes sense to me. I wonder why IKFast wraps the solution in the first place though. 🤔 Maybe we can wrap the joint values only for SO(2) joint. I'm not sure what the representation is used for SO(3) joint in IKFast.
Could you share the binary and the URDF as well? It would be very helpful to ensure if the issue is solved by having it as a regression test with the models. |
A possible solution for this issue: #1452 |
Thank you @jslee02! I won't have access to my lab machine for a bit, but I'll let you know ASAP whether this resolves things. Would you still like the URDF and the binary? |
Thanks!
Optional, but it'd be great if you can share! |
Closing this issue as the fix was verified by the unit test. @sniyaz Please let me know if the issue is persistent even with the fix. :) |
Environment
Irrelevant, but on Dart 6.9 with GCC 7.5 on Bionic.
Expected Behavior
All valid solutions being returned through ikFast.
Current Behavior
dart/dart/dynamics/IkFast.cpp
Line 139 in 660b0f4
It doesn't look like ikFast gives any promises for the range of returned ik solutions. For example, with a joint with limits at [pi/8, 2pi], the ikFast binary may return a solution at -pi.
Checking this raw value against the skeleton limits (as is done now) appears to lead to valid solutions being thrown away (in the example above, we can just wrap the joint value to pi, which is actually in-limits).
It looks like some wrapping is needed in the joint limit checking here, since ikFast doesn't provide a guarantee on the range as mentioned earlier.
Steps to Reproduce
I have a Jaco ikFast binary I'd be happy to share where this happens.
Code to Reproduce
Simply run the provided binary: almost all solutions are thrown away.
The text was updated successfully, but these errors were encountered: