-
Notifications
You must be signed in to change notification settings - Fork 0
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
feat(robot-model): improve inverse kinematics #208
base: main
Are you sure you want to change the base?
Conversation
Just an initial point on my end (before I test/review) Is the Then in principle the average times of |
CL 3 tries is 96 |
Sorry, I meant 0.87ms in terms of time. That's what I mean that they are almost the same in terms of average time |
Yes that's correct, I think that comes from the fact that we increase the success rate by trying several times, which in turn increases the computation time |
So that would be an average solution time of 0.39ms for Thanks for the measurements! |
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.
good for me, 10k test iterations are already enough supporting material.
Description
Where do I start. This PR improves the IK of the robot model by mixing the existing CWLN method with the CLIK example from pinocchio. Additionally, it allows the function to try to find a solution 3 times, starting at different random configurations. I believe that two of the main problems that the previous implementation had was that
JointJacobian
. This seems to work better.Important: For me, this PR does not really solve the problem of having a general, robust, fast IK algorithm available. What it does is it improves the existing one by so much and in a non-breaking way that I want to get it in until we find the time to really ask ourselves what changes we want to make in the robot library. In particular, regarding this IK algorithm:
Supporting information
Benchmark results
For benchmarking, I compared the control libraries IK (CL) with either 1 or 3 retries against KDL and TRAC IK which uses a nonlinear optimization to solve the IK. We can see that TRAC outperforms CL by a slight margin, but is also slightly slower. This is a fair tradeoff. Since TRAC depends on KDL, we can't easily integrate it but we could potentially reimplement it with pinocchio in the future.
% success, 10000 samples
time per sample in milliseconds, 10000 samples
Review guidelines
Estimated Time of Review: 15 minutes
Checklist before merging: