diff --git a/CHANGELOG.md b/CHANGELOG.md index 213699b3..74a634e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,11 @@ will consitute of a breaking change warranting a new major release: # [unreleased] +## Fixed + +- As the `STR Handler` does not set an untrustworthy quaternion to invalid, the `ACS Controller` + needs to do this on its own. + # [v7.5.2] 2023-12-14 ## Fixed diff --git a/mission/controller/AcsController.cpp b/mission/controller/AcsController.cpp index 6adb4a0b..54d96699 100644 --- a/mission/controller/AcsController.cpp +++ b/mission/controller/AcsController.cpp @@ -380,8 +380,10 @@ void AcsController::performDetumble() { } void AcsController::performPointingCtrl() { - bool strValid = (sensorValues.strSet.caliQw.isValid() and sensorValues.strSet.caliQx.isValid() and - sensorValues.strSet.caliQy.isValid() and sensorValues.strSet.caliQz.isValid()); + bool strValid = + ((sensorValues.strSet.caliQw.isValid() and sensorValues.strSet.caliQx.isValid() and + sensorValues.strSet.caliQy.isValid() and sensorValues.strSet.caliQz.isValid()) and + (sensorValues.strSet.isTrustWorthy.isValid() and sensorValues.strSet.isTrustWorthy.value)); uint8_t useMekf = false; switch (mode) { case acs::PTG_IDLE: diff --git a/mission/controller/acs/FusedRotationEstimation.cpp b/mission/controller/acs/FusedRotationEstimation.cpp index b4d0f0c4..758004d2 100644 --- a/mission/controller/acs/FusedRotationEstimation.cpp +++ b/mission/controller/acs/FusedRotationEstimation.cpp @@ -73,8 +73,10 @@ void FusedRotationEstimation::estimateFusedRotationRate( void FusedRotationEstimation::estimateFusedRotationRateStr( ACS::SensorValues *sensorValues, const double timeDelta, acsctrl::FusedRotRateSourcesData *fusedRotRateSourcesData) { - if (not(sensorValues->strSet.caliQw.isValid() and sensorValues->strSet.caliQx.isValid() and - sensorValues->strSet.caliQy.isValid() and sensorValues->strSet.caliQz.isValid())) { + if (not((sensorValues->strSet.caliQw.isValid() and sensorValues->strSet.caliQx.isValid() and + sensorValues->strSet.caliQy.isValid() and sensorValues->strSet.caliQz.isValid()) and + (sensorValues->strSet.isTrustWorthy.isValid() and + sensorValues->strSet.isTrustWorthy.value))) { { PoolReadGuard pg(fusedRotRateSourcesData); if (pg.getReadResult() == returnvalue::OK) {