|
|
|
@ -557,9 +557,12 @@ void AcsController::performPointingCtrl() {
|
|
|
|
|
void AcsController::handleDetumbling() {
|
|
|
|
|
switch (detumbleState) {
|
|
|
|
|
case DetumbleState::NO_DETUMBLE:
|
|
|
|
|
if (fusedRotRateData.rotRateTotalSusMgm.isValid() and
|
|
|
|
|
VectorOperations<double>::norm(fusedRotRateData.rotRateTotalSusMgm.value, 3) >
|
|
|
|
|
acsParameters.detumbleParameter.omegaDetumbleStart) {
|
|
|
|
|
if ((fusedRotRateData.rotRateTotalSusMgm.isValid() and
|
|
|
|
|
VectorOperations<double>::norm(fusedRotRateData.rotRateTotalSusMgm.value, 3) >
|
|
|
|
|
acsParameters.detumbleParameter.omegaDetumbleStart) and
|
|
|
|
|
(attitudeEstimationData.satRotRateMekf.isValid() and
|
|
|
|
|
VectorOperations<double>::norm(attitudeEstimationData.satRotRateMekf.value, 3) >
|
|
|
|
|
acsParameters.detumbleParameter.omegaDetumbleStart)) {
|
|
|
|
|
detumbleCounter++;
|
|
|
|
|
} else if (detumbleCounter > 0) {
|
|
|
|
|
detumbleCounter -= 1;
|
|
|
|
@ -601,9 +604,12 @@ void AcsController::handleDetumbling() {
|
|
|
|
|
detumbleState = DetumbleState::NO_DETUMBLE;
|
|
|
|
|
break;
|
|
|
|
|
case DetumbleState::IN_DETUMBLE:
|
|
|
|
|
if (fusedRotRateData.rotRateTotalSusMgm.isValid() and
|
|
|
|
|
VectorOperations<double>::norm(fusedRotRateData.rotRateTotalSusMgm.value, 3) <
|
|
|
|
|
acsParameters.detumbleParameter.omegaDetumbleEnd) {
|
|
|
|
|
if ((fusedRotRateData.rotRateTotalSusMgm.isValid() and
|
|
|
|
|
VectorOperations<double>::norm(fusedRotRateData.rotRateTotalSusMgm.value, 3) <
|
|
|
|
|
acsParameters.detumbleParameter.omegaDetumbleEnd) and
|
|
|
|
|
(attitudeEstimationData.satRotRateMekf.isValid() and
|
|
|
|
|
VectorOperations<double>::norm(attitudeEstimationData.satRotRateMekf.value, 3) <
|
|
|
|
|
acsParameters.detumbleParameter.omegaDetumbleEnd)) {
|
|
|
|
|
detumbleCounter++;
|
|
|
|
|
} else if (detumbleCounter > 0) {
|
|
|
|
|
detumbleCounter -= 1;
|
|
|
|
|