From 367e879d91a60d12d1f5ae7a61f1cee1e1ead8e7 Mon Sep 17 00:00:00 2001 From: meggert Date: Fri, 19 Jan 2024 16:15:22 +0100 Subject: [PATCH 1/3] this should be it --- mission/controller/acs/Guidance.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/mission/controller/acs/Guidance.cpp b/mission/controller/acs/Guidance.cpp index 0be636ad..6d2d3e98 100644 --- a/mission/controller/acs/Guidance.cpp +++ b/mission/controller/acs/Guidance.cpp @@ -418,6 +418,7 @@ void Guidance::comparePtg(double currentQuat[4], double currentSatRotRate[3], do double targetSatRotRate[3], double refQuat[4], double refSatRotRate[3], double errorQuat[4], double errorSatRotRate[3], double &errorAngle) { // First calculate error quaternion between current and target orientation + QuaternionOperations::inverse(targetQuat, targetQuat); QuaternionOperations::multiply(currentQuat, targetQuat, errorQuat); // Last calculate add rotation from reference quaternion QuaternionOperations::multiply(refQuat, errorQuat, errorQuat); From 392a97bb651a0dbc93dc30b0e3d16458613367ca Mon Sep 17 00:00:00 2001 From: meggert Date: Fri, 19 Jan 2024 16:17:37 +0100 Subject: [PATCH 2/3] better safe than sorry --- mission/controller/acs/Guidance.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mission/controller/acs/Guidance.cpp b/mission/controller/acs/Guidance.cpp index 6d2d3e98..10d1393c 100644 --- a/mission/controller/acs/Guidance.cpp +++ b/mission/controller/acs/Guidance.cpp @@ -418,8 +418,9 @@ void Guidance::comparePtg(double currentQuat[4], double currentSatRotRate[3], do double targetSatRotRate[3], double refQuat[4], double refSatRotRate[3], double errorQuat[4], double errorSatRotRate[3], double &errorAngle) { // First calculate error quaternion between current and target orientation - QuaternionOperations::inverse(targetQuat, targetQuat); - QuaternionOperations::multiply(currentQuat, targetQuat, errorQuat); + double invTargetQuat[4] = {0, 0, 0, 0}; + QuaternionOperations::inverse(targetQuat, invTargetQuat); + QuaternionOperations::multiply(currentQuat, invTargetQuat, errorQuat); // Last calculate add rotation from reference quaternion QuaternionOperations::multiply(refQuat, errorQuat, errorQuat); // Keep scalar part of quaternion positive From 65502c0107e3a856404b8641a7854b85d37ac1f4 Mon Sep 17 00:00:00 2001 From: meggert Date: Mon, 22 Jan 2024 10:05:05 +0100 Subject: [PATCH 3/3] changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85d63062..8202cea7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,12 @@ will consitute of a breaking change warranting a new major release: # [unreleased] +# [v7.5.5] 2024-01-22 + +## Fixed + +- Calculation of error quaternion was done with inverse of the required target quaternion. + # [v7.5.4] 2024-01-16 ## Fixed