diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ecb964e..18571189 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,10 @@ will consitute of a breaking change warranting a new major release: - PUS timeservice relative timeshift. +## Fixed + +- Fixed wrong order in quaternion multiplication for computation of the error quaternion. + # [v7.7.4] 2024-03-21 ## Changed diff --git a/mission/controller/acs/Guidance.cpp b/mission/controller/acs/Guidance.cpp index 2c1b3c63..07730e09 100644 --- a/mission/controller/acs/Guidance.cpp +++ b/mission/controller/acs/Guidance.cpp @@ -303,9 +303,9 @@ void Guidance::comparePtg(double currentQuat[4], double currentSatRotRate[3], do // First calculate error quaternion between current and target orientation without reference // quaternion double errorQuatWoRef[4] = {0, 0, 0, 0}; - QuaternionOperations::multiply(currentQuat, targetQuat, errorQuatWoRef); + QuaternionOperations::multiply(targetQuat, currentQuat, errorQuatWoRef); // Then add rotation from reference quaternion - QuaternionOperations::multiply(refQuat, errorQuatWoRef, errorQuat); + QuaternionOperations::multiply(errorQuatWoRef, refQuat, errorQuat); // Keep scalar part of quaternion positive if (errorQuat[3] < 0) { VectorOperations::mulScalar(errorQuat, -1, errorQuat, 4);