-
-
Notifications
You must be signed in to change notification settings - Fork 31
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
Use quaternion to represent error when a joint has 3 degrees of freedom and a target is set #22
Comments
Another option is exponential maps (#30). See appendix B here: |
Places that need to change if the joint is 3 rotational DoF: Joint Target Error Target error is just used for determining how far a joint is away from it's current angle target so we may want to calculate error in some way that doesn't use euler because of the redundant representations:
Computing Closure Error Adjustment
EDIT: It may be best to book keep the rotations as exponential maps but then provide an API for manipulating it via euler. Or just providing a function for reading and setting rotations as exponential maps? |
In Appendix B of this paper the rotations are described as an "orientation vector" with rotation axis defined by the vector direction and rotation amount defined by vector length. The paper defines equations for converting these to and from quaternions but intuitively the axis angle functions should be able to be used for this. Other Notes
|
With the number of places that need to be carefully adjusted and rotation count checked it might be best to just bookkeep all rotation as orientation vectors internally and provide an API for getting and setting rotations via euler. OR a read function can be used in the solver that reads and sets joint values in an orientation vector format (would joint limits be harder to impose?) |
It may just be easiest to handle a full quaternion here always. This is an issue with ball joints (3dof) that are not goals / closures because the solver will try to move all the individual joint degrees of freedom. Closures are comparing error using quaternion differences.
The complexity of using quaternions only when a joint is 3dof is complicated -- it would be best to pick one and stick with it.
The text was updated successfully, but these errors were encountered: