Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

compute mean of a set of rotations #160

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

Merged
myeatman-bdai merged 16 commits into bdaiinstitute:master from petercorke:new-rotation-mean
Jan 26, 2025

Conversation

@petercorke
Copy link
Collaborator

@petercorke petercorke commented Jan 21, 2025
edited
Loading

New method mean() for each of SO3 and UnitQuaternion, computes the Karcher (rotational) mean.

Relatively straightforward for SO3 but UnitQuaternion required a bunch of changes to allow more methods to handle multi-valued UnitQuaternion objects. Fixed for RPY(), Eul(), UnitQuaternion() constructor, log() and exp(). Also had to fix edge case for log() and exp() for the unit quaternions case.

Tests and doco updated.

The result is a lot of changes, but generally improved functionality for the UnitQuaternion class.

Need to make log() method handle a multi-value quaternion.
Copy link
Collaborator

@myeatman-bdai myeatman-bdai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See inline comments.

eta = tol * np.finfo(float).eps
R_mean = self[0] # initial guess
while True:
r = np.dstack((self.inv() * self).log()).mean(axis=2)
Copy link
Collaborator

@myeatman-bdai myeatman-bdai Jan 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's unclear to me what section of the reference paper outlines this algorithm (admittedly, I did not thoroughly read it) . Would you mind pointing it out to me?

Copy link
Collaborator Author

@petercorke petercorke Jan 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've clarified that.

Copy link
Collaborator Author

Ok, fixed some bugs, tests pass. There is a randomised test but it is reproducible, using a seeded random number generator.

I've commented out, for now, the quaternion mean. Naively applying the SO(3) algorithms for quaternions didn't work, and I need to do more reading.

Copy link
Collaborator

@myeatman-bdai myeatman-bdai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@myeatman-bdai myeatman-bdai merged commit 59873f1 into bdaiinstitute:master Jan 26, 2025
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@myeatman-bdai myeatman-bdai myeatman-bdai approved these changes

@jhavl jhavl Awaiting requested review from jhavl jhavl is a code owner

@bokorn-bdaii bokorn-bdaii Awaiting requested review from bokorn-bdaii

@mpickett-bdai mpickett-bdai Awaiting requested review from mpickett-bdai

Assignees

No one assigned

Labels

enhancement New feature or request

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /