-
Notifications
You must be signed in to change notification settings - Fork 49
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
Topic/integration #66
Conversation
@gergondet : there does not seems to be a mechanism for deprecation in RBDyn yet. Do you have any guidelines on how to proceed?
|
Baring feedbacks, I'm done with the code so far. |
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.
The code seems to be clean. There is just some few changes.
Although, you might need to transform your if (...) ...;
in
if (...)
{
...
}
e17181b
to
cb6da09
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.
Sorry for the long time it took me to get to it. I don't have much issues with the PR, just small readability/efficiency concerns. I've rebased on the current master so you should make sure that you nuke your local branch before pushing back to it
I might be possible to integrate your latex note in the doxygen. I'll look into it
… in SO3Integration
…t.cpp to be independent of the magnitude of the values tested
000c9d7
to
7a24d5a
Compare
This PR reworks the numerical integration for the non-trivial joints (planar, spherical and free):
eulerIntegration
tointegration
ornumericalIntegration
to better reflect what's happening in the functions. Keep old names around but marked as deprecated.This PR is not polished yet, but I'd like to have some general feedback first/while polishing.
First of all the tests. I'm currently performing 4 types:
(i) integrating the joint position and computing the new position of P
(ii) integrating Jv, where J is the Jacobian matrix of the point.
The last test is an attempt to ensure that the integration is coherent with the library as a whole, because it could be possible to misunderstand the conventions adopted in RBDyn and write a wrong integration that could however pass the 3 first tests. The idea of using the Jacobian matrix is to get quantities in the world frame, where there is no specific convention, from whatever the original spaces are for the joint variables and velocities/accelerations. If anyone has a better idea, I'd be happy to hear it.
Something related is done in
EulerTestV2
inAlgoTest
, but quantites are brought back in some variable space, which makes the test dependent on conventions, and makes it actually wrong for planar and free joints (although because of the very low accuracy required, the planar test is still passing - but I had to disable the one for free joint). I believe this test should be removed completely.Another point is that the estimation of the error is adding some overhead. I didn't measure it for now, as it is up to a few dozens of scalar additions/multiplications, but it could be equivalent to the integration computation in itself. Does it seems ok? Or do I add a flag/versions without any precision check?
The PR solves #35, without addressing #65 (I could not get an integration coherent with the Jacobian matrix when changing the convention for the planar joint, and I don't get where I'm making a mistake).