From 885eca58996fd51681897887e3a127bc52052169 Mon Sep 17 00:00:00 2001 From: Dinesh Atchuthan <datchuth@laas.fr> Date: Mon, 18 Dec 2017 14:21:01 +0100 Subject: [PATCH] fix for absolute quaternion constraint --- src/constraint_quaternion_absolute.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/constraint_quaternion_absolute.h b/src/constraint_quaternion_absolute.h index 6984d904f..d1e24db8e 100644 --- a/src/constraint_quaternion_absolute.h +++ b/src/constraint_quaternion_absolute.h @@ -52,8 +52,12 @@ inline bool ConstraintQuaternionAbsolute::operator ()(const T* const _o, T* _res Eigen::Quaternions q_measured(getMeasurement().data() + 0); // error + // to compute the difference between both quaternions, we do + // diff = log(q2 * q1.conj) + // isolating q2 we get + // q2 = exp(diff) * q1 ==> exp on the left means global. Eigen::Matrix<T, 3, 1> er; - er = q2v(q.conjugate() * q_measured.cast<T>()); + er = q2v(q_measured.cast<T>() * q.conjugate()); // residual Eigen::Map<Eigen::Matrix<T, 3, 1>> res(_residuals); -- GitLab