Marius Eggert
5f17f365e3
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
51 lines
1.7 KiB
C++
51 lines
1.7 KiB
C++
/*
|
|
* Navigation.cpp
|
|
*
|
|
* Created on: 23 May 2022
|
|
* Author: Robin Marquardt
|
|
*/
|
|
|
|
#include "Navigation.h"
|
|
#include "util/MathOperations.h"
|
|
#include "util/CholeskyDecomposition.h"
|
|
#include <math.h>
|
|
#include <fsfw/globalfunctions/math/VectorOperations.h>
|
|
#include <fsfw/globalfunctions/math/MatrixOperations.h>
|
|
#include <fsfw/globalfunctions/math/QuaternionOperations.h>
|
|
|
|
|
|
Navigation::Navigation(AcsParameters *acsParameters_): multiplicativeKalmanFilter(acsParameters_){
|
|
acsParameters = *acsParameters_;
|
|
}
|
|
|
|
Navigation::~Navigation(){
|
|
|
|
}
|
|
|
|
void Navigation::useMekf(ACS::SensorValues* sensorValues, ACS::OutputValues *outputValues, ReturnValue_t *mekfValid){
|
|
|
|
if (kalmanInit) {
|
|
*mekfValid = multiplicativeKalmanFilter.mekfEst(sensorValues->quatJB, &sensorValues->quatJBValid,
|
|
outputValues->satRateEst, &outputValues->satRateEstValid,
|
|
outputValues->magFieldEst, &outputValues->magFieldEstValid,
|
|
outputValues->sunDirEst, &outputValues->sunDirEstValid,
|
|
outputValues->sunDirModel, &outputValues->sunDirModelValid,
|
|
outputValues->magFieldModel, &outputValues->magFieldModelValid,
|
|
outputValues->quatMekfBJ, outputValues->satRateMekf); // VALIDS FOR QUAT AND RATE ??
|
|
|
|
}
|
|
else {
|
|
multiplicativeKalmanFilter.init(outputValues->magFieldEst, &outputValues->magFieldEstValid,
|
|
outputValues->sunDirEst, &outputValues->sunDirEstValid,
|
|
outputValues->sunDirModel, &outputValues->sunDirModelValid,
|
|
outputValues->magFieldModel, &outputValues->magFieldModelValid);
|
|
kalmanInit = true;
|
|
*mekfValid = 0;
|
|
|
|
// Maybe we need feedback from kalmanfilter to identify if there was a problem with the init of kalman filter
|
|
// where does this class know from that kalman filter was not initialized ?
|
|
}
|
|
}
|
|
|
|
|