Skip to content

Conversation

@Marco-Herrmann
Copy link
Contributor

consistent assumption of unit quaternion for normalize=False
consistency with naming: capitalized "_P" in Exp_SO3_quat_P

@@ -565,9 +568,9 @@ def Exp_SO3_quat(P, normalize=True):
return (p0**2 - p @ p) * eye3 + np.outer(p, 2 * p) + 2 * p0 * ax2skew(p)
Copy link
Contributor

Choose a reason for hiding this comment

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

I would suggest to return return eye3 + 2 * (p0 * ax2skew(p) + ax2skew_squared(p)) in the else case. Hence, only the factor 1 / P2 changes.

matrix = 2 * np.hstack((-p[:, None], p0 * eye3 - ax2skew(p)))
if normalize:
return (2 / (P @ P)) * np.hstack((-p[:, None], p0 * eye3 - ax2skew(p)))
return matrix / (P @ P)
Copy link
Contributor

Choose a reason for hiding this comment

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

Similar for Exp_SO3_quat.

complete exclusion of the combination "non-unit quaternion" + normalize=False
@JonasBreuling JonasBreuling merged commit ebe08f2 into cardilloproject:main Dec 15, 2025
2 checks passed
@Marco-Herrmann Marco-Herrmann deleted the quaternion_update branch December 17, 2025 17:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

T_SO3_quat and T_SO3_inv_quat are wrong

2 participants