-
Notifications
You must be signed in to change notification settings - Fork 52
Document edge case for orientation vector representation #4803
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
Conversation
✅ Deploy Preview for viam-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
oops CI is failing due to some pages being out of date @shannonbradshaw. How should I proceed? edit: red herring, I had a lint issue. Fixed |
| {{< /alert >}} | ||
|
|
||
| This edge case occurs because when an object is oriented nearly parallel to the Z-axis (pointing straight up or down), the axis of rotation (OX, OY, OZ) becomes aligned with the Z-axis. | ||
| In this configuration, there are infinite valid combinations of the orientation axis and Theta that represent the same physical orientation, similar to the gimbal lock problem in Euler angles. |
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.
In this configuration, there are infinite valid combinations of the orientation axis and Theta that represent the same physical orientation, similar to the gimbal lock problem in Euler angles.
It's not quite the same; there aren't infinite configurations, it's still just one OV to one orientation. There's a discontinuity, where there are two well-defined regions and no way to smoothly transition between them. You just might see huge jumps in theta values and eyeballing values to estimate distance between orientations becomes impossible.
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.
got it. Corrected to 1:1 and emphasized the discontinuity
|
|
||
| If your application requires orientations near these poles, be aware that: | ||
|
|
||
| - Small changes in OZ near the threshold may cause discontinuous changes in how the orientation is represented |
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.
This one seems to imply the OX/OY/OZ might jump too, which it won't. I think the next bullet down covers this better.
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.
got it. Consolidated.
| - For the north pole (OZ approaching +1): `Theta = -atan2(Y', -X')` | ||
| - For the south pole (OZ approaching -1): `Theta = -atan2(Y', X')` | ||
|
|
||
| Where X' and Y' are components of the transformed X-axis basis vector. |
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.
I am not sure anyone will understand what this means.
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.
removed
biotinker
left a comment
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.
Consider adding a reference to axis angles for their utility in measuring distance between orientations.
Otherwise LGTM.
|
🔎💬 Inkeep AI search and chat service is syncing content for source 'Viam Docs' |

As described in the new section, there is a piece of the OV representation that is discontinuous and conditional on OZ pointing directly up, and was very confusing to me. After talking to Peter L about it, I now understand it better and want to provide this context to all Viam developers and/or docs readers.