v7.5.0 #828
@ -1115,8 +1115,9 @@ void MultiplicativeKalmanFilter::updateDataSetWithoutData(acsctrl::AttitudeEstim
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MultiplicativeKalmanFilter::updateDataSet(acsctrl::AttitudeEstimationData *mekfData, MekfStatus mekfStatus,
|
void MultiplicativeKalmanFilter::updateDataSet(acsctrl::AttitudeEstimationData *mekfData,
|
||||||
double quat[4], double satRotRate[3]) {
|
MekfStatus mekfStatus, double quat[4],
|
||||||
|
double satRotRate[3]) {
|
||||||
{
|
{
|
||||||
PoolReadGuard pg(mekfData);
|
PoolReadGuard pg(mekfData);
|
||||||
if (pg.getReadResult() == returnvalue::OK) {
|
if (pg.getReadResult() == returnvalue::OK) {
|
||||||
|
@ -32,8 +32,8 @@ class MultiplicativeKalmanFilter {
|
|||||||
*/
|
*/
|
||||||
ReturnValue_t init(const double *magneticField_, const bool validMagField_, const double *sunDir_,
|
ReturnValue_t init(const double *magneticField_, const bool validMagField_, const double *sunDir_,
|
||||||
const bool validSS, const double *sunDirJ, const bool validSSModel,
|
const bool validSS, const double *sunDirJ, const bool validSSModel,
|
||||||
const double *magFieldJ, const bool validMagModel, acsctrl::AttitudeEstimationData *mekfData,
|
const double *magFieldJ, const bool validMagModel,
|
||||||
AcsParameters *acsParameters);
|
acsctrl::AttitudeEstimationData *mekfData, AcsParameters *acsParameters);
|
||||||
|
|
||||||
/* @brief: mekfEst() - This function calculates the quaternion and gyro bias of the Kalman Filter
|
/* @brief: mekfEst() - This function calculates the quaternion and gyro bias of the Kalman Filter
|
||||||
* for the current step after the initalization
|
* for the current step after the initalization
|
||||||
@ -100,8 +100,8 @@ class MultiplicativeKalmanFilter {
|
|||||||
/*Parameter INIT*/
|
/*Parameter INIT*/
|
||||||
/*Functions*/
|
/*Functions*/
|
||||||
void updateDataSetWithoutData(acsctrl::AttitudeEstimationData *mekfData, MekfStatus mekfStatus);
|
void updateDataSetWithoutData(acsctrl::AttitudeEstimationData *mekfData, MekfStatus mekfStatus);
|
||||||
void updateDataSet(acsctrl::AttitudeEstimationData *mekfData, MekfStatus mekfStatus, double quat[4],
|
void updateDataSet(acsctrl::AttitudeEstimationData *mekfData, MekfStatus mekfStatus,
|
||||||
double satRotRate[3]);
|
double quat[4], double satRotRate[3]);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* ACS_MULTIPLICATIVEKALMANFILTER_H_ */
|
#endif /* ACS_MULTIPLICATIVEKALMANFILTER_H_ */
|
||||||
|
@ -17,8 +17,8 @@ class Navigation {
|
|||||||
ReturnValue_t useMekf(ACS::SensorValues *sensorValues,
|
ReturnValue_t useMekf(ACS::SensorValues *sensorValues,
|
||||||
acsctrl::GyrDataProcessed *gyrDataProcessed,
|
acsctrl::GyrDataProcessed *gyrDataProcessed,
|
||||||
acsctrl::MgmDataProcessed *mgmDataProcessed,
|
acsctrl::MgmDataProcessed *mgmDataProcessed,
|
||||||
acsctrl::SusDataProcessed *susDataProcessed, acsctrl::AttitudeEstimationData *mekfData,
|
acsctrl::SusDataProcessed *susDataProcessed,
|
||||||
AcsParameters *acsParameters);
|
acsctrl::AttitudeEstimationData *mekfData, AcsParameters *acsParameters);
|
||||||
void resetMekf(acsctrl::AttitudeEstimationData *mekfData);
|
void resetMekf(acsctrl::AttitudeEstimationData *mekfData);
|
||||||
|
|
||||||
ReturnValue_t useSpg4(timeval now, acsctrl::GpsDataProcessed *gpsDataProcessed);
|
ReturnValue_t useSpg4(timeval now, acsctrl::GpsDataProcessed *gpsDataProcessed);
|
||||||
|
@ -9,12 +9,10 @@ SafeCtrl::SafeCtrl(AcsParameters *acsParameters_) { acsParameters = acsParameter
|
|||||||
|
|
||||||
SafeCtrl::~SafeCtrl() {}
|
SafeCtrl::~SafeCtrl() {}
|
||||||
|
|
||||||
acs::ControlModeStrategy SafeCtrl::safeCtrlStrategy(const bool magFieldValid, const bool mekfValid,
|
acs::ControlModeStrategy SafeCtrl::safeCtrlStrategy(
|
||||||
const bool satRotRateValid, const bool sunDirValid,
|
const bool magFieldValid, const bool mekfValid, const bool satRotRateValid,
|
||||||
const bool fusedRateTotalValid,
|
const bool sunDirValid, const bool fusedRateTotalValid, const uint8_t mekfEnabled,
|
||||||
const uint8_t mekfEnabled,
|
const uint8_t gyrEnabled, const uint8_t dampingEnabled) {
|
||||||
const uint8_t gyrEnabled,
|
|
||||||
const uint8_t dampingEnabled) {
|
|
||||||
if (not magFieldValid) {
|
if (not magFieldValid) {
|
||||||
return acs::ControlModeStrategy::CTRL_NO_MAG_FIELD_FOR_CONTROL;
|
return acs::ControlModeStrategy::CTRL_NO_MAG_FIELD_FOR_CONTROL;
|
||||||
} else if (mekfEnabled and mekfValid) {
|
} else if (mekfEnabled and mekfValid) {
|
||||||
|
@ -14,8 +14,9 @@ class SafeCtrl {
|
|||||||
|
|
||||||
acs::ControlModeStrategy safeCtrlStrategy(const bool magFieldValid, const bool mekfValid,
|
acs::ControlModeStrategy safeCtrlStrategy(const bool magFieldValid, const bool mekfValid,
|
||||||
const bool satRotRateValid, const bool sunDirValid,
|
const bool satRotRateValid, const bool sunDirValid,
|
||||||
const bool fusedRateTotalValid, const uint8_t mekfEnabled,
|
const bool fusedRateTotalValid,
|
||||||
const uint8_t gyrEnabled, const uint8_t dampingEnabled);
|
const uint8_t mekfEnabled, const uint8_t gyrEnabled,
|
||||||
|
const uint8_t dampingEnabled);
|
||||||
|
|
||||||
void safeMekf(const double *magFieldB, const double *satRotRateB, const double *sunDirModelI,
|
void safeMekf(const double *magFieldB, const double *satRotRateB, const double *sunDirModelI,
|
||||||
const double *quatBI, const double *sunDirRefB, double *magMomB,
|
const double *quatBI, const double *sunDirRefB, double *magMomB,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user