fixed minor bugs
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good

This commit is contained in:
Marius Eggert 2022-09-27 11:57:15 +02:00
parent 5f17f365e3
commit 4a1cce19c4
8 changed files with 48 additions and 43 deletions

View File

@ -845,13 +845,13 @@ public:
bool avoidBlindStr = true; bool avoidBlindStr = true;
double blindAvoidStart = 1.5; double blindAvoidStart = 1.5;
double blindAvoidStop = 2.5; double blindAvoidStop = 2.5;
double blindRotRate = 1 * Math::PI /180; double blindRotRate = 1 * M_PI /180;
double zeta = 0.3; double zeta = 0.3;
double zetaLow; double zetaLow;
double om = 0.3; double om = 0.3;
double omLow; double omLow;
double omMax = 1 * Math::PI / 180; double omMax = 1 * M_PI / 180;
double qiMin = 0.1; double qiMin = 0.1;
double gainNullspace = 0.01; double gainNullspace = 0.01;
@ -867,7 +867,7 @@ public:
struct StrParameters { struct StrParameters {
double exclusionAngle = 20 * Math::PI /180; double exclusionAngle = 20 * M_PI /180;
// double strOrientationMatrix[3][3]; // double strOrientationMatrix[3][3];
double boresightAxis[3] = { 0.7593, 0.0000,-0.6508}; //in body/geometry frame double boresightAxis[3] = { 0.7593, 0.0000,-0.6508}; //in body/geometry frame
} strParameters; } strParameters;
@ -876,8 +876,8 @@ public:
} gpsParameters; } gpsParameters;
struct GroundStationParameters { struct GroundStationParameters {
double latitudeGs = 48.7495 * Math::PI / 180.; // [rad] Latitude double latitudeGs = 48.7495 * M_PI / 180.; // [rad] Latitude
double longitudeGs = 9.10384 * Math::PI / 180.; // [rad] Longitude double longitudeGs = 9.10384 * M_PI / 180.; // [rad] Longitude
double altitudeGs = 500; // [m] Altitude double altitudeGs = 500; // [m] Altitude
double earthRadiusEquat = 6378137; // [m] double earthRadiusEquat = 6378137; // [m]
double earthRadiusPolar = 6356752.314; // [m] double earthRadiusPolar = 6356752.314; // [m]
@ -889,15 +889,15 @@ public:
}; };
uint8_t useSunModel; uint8_t useSunModel;
float domega = 36000.771; float domega = 36000.771;
float omega_0 = 282.94 * Math::PI / 180.; //RAAN plus argument of perigee float omega_0 = 282.94 * M_PI / 180.; //RAAN plus argument of perigee
float m_0 = 357.5256; //coefficients for mean anomaly float m_0 = 357.5256; //coefficients for mean anomaly
float dm = 35999.049; //coefficients for mean anomaly float dm = 35999.049; //coefficients for mean anomaly
// ToDo: check correct assignment of e and e1. Both were assigned to e before // ToDo: check correct assignment of e and e1. Both were assigned to e before
float e = 23.4392911 * Math::PI / 180.; //angle of earth's rotation axis float e = 23.4392911 * M_PI / 180.; //angle of earth's rotation axis
float e1 = 0.74508 * Math::PI / 180.; float e1 = 0.74508 * M_PI / 180.;
// //
float p1 = 6892. / 3600. * Math::PI / 180.; //some parameter float p1 = 6892. / 3600. * M_PI / 180.; //some parameter
float p2 = 72. / 3600. * Math::PI / 180.; //some parameter float p2 = 72. / 3600. * M_PI / 180.; //some parameter
} sunModelParameters; } sunModelParameters;
struct KalmanFilterParameters { struct KalmanFilterParameters {
@ -907,9 +907,9 @@ public:
double processNoiseOmega[3]; double processNoiseOmega[3];
double processNoiseQuaternion[4]; double processNoiseQuaternion[4];
double sensorNoiseSTR = 0.1 * Math::PI / 180; double sensorNoiseSTR = 0.1 * M_PI / 180;
double sensorNoiseSS = 8 * Math::PI / 180; double sensorNoiseSS = 8 * M_PI / 180;
double sensorNoiseMAG = 4 * Math::PI / 180; double sensorNoiseMAG = 4 * M_PI / 180;
double sensorNoiseRMU[3]; double sensorNoiseRMU[3];
double sensorNoiseArwRmu; //Angular Random Walk double sensorNoiseArwRmu; //Angular Random Walk

View File

@ -48,4 +48,4 @@ public:
} }
#endif OUTPUTVALUES_H_ #endif /*OUTPUTVALUES_H_*/

View File

@ -86,5 +86,5 @@ protected:
}; };
#endif SENSORPROCESSING_H_ #endif /*SENSORPROCESSING_H_*/

View File

@ -12,21 +12,6 @@
#include <fsfw/datapoollocal/LocalPoolVariable.h> #include <fsfw/datapoollocal/LocalPoolVariable.h>
#include <fsfw/datapoollocal/LocalPoolVector.h> #include <fsfw/datapoollocal/LocalPoolVector.h>
void SunSensor::setSunSensorData() {
// ToDo: exchange dummy values with DataPool
susChannelValues[0] = {3913, 3912, 3799, 4056};
susChannelValues[1] = {3913, 3912, 3799, 4056};
susChannelValues[2] = {3913, 3912, 3799, 4056};
susChannelValues[3] = {3913, 3912, 3799, 4056};
susChannelValues[4] = {3913, 3912, 3799, 4056};
susChannelValues[5] = {3913, 3912, 3799, 4056};
susChannelValues[6] = {3913, 3912, 3799, 4056};
susChannelValues[7] = {3913, 3912, 3799, 4056};
susChannelValues[8] = {3913, 3912, 3799, 4056};
susChannelValues[9] = {3913, 3912, 3799, 4056};
susChannelValues[10] = {3913, 3912, 3799, 4056};
susChannelValues[11] = {3913, 3912, 3799, 4056};
}
void SunSensor::checkSunSensorData(uint8_t susNumber) { void SunSensor::checkSunSensorData(uint8_t susNumber) {
uint16_t channelValueSum; uint16_t channelValueSum;
@ -261,14 +246,14 @@ void SunSensor::CalculateSunVector(uint8_t susNumber) {
(sqrt(powf((tan(alpha * (M_PI / 180))), 2) + powf((tan(beta * (M_PI / 180))), 2) + (1)))); (sqrt(powf((tan(alpha * (M_PI / 180))), 2) + powf((tan(beta * (M_PI / 180))), 2) + (1))));
} }
float* SunSensor::getSunVectorBodyFrame() { float* SunSensor::getSunVectorBodyFrame(uint8_t susNumber) {
// return function for the sun vector in the body frame // return function for the sun vector in the body frame
float* SunVectorBodyFrameReturn = 0; float* SunVectorBodyFrameReturn = 0;
SunVectorBodyFrameReturn = new float[3]; SunVectorBodyFrameReturn = new float[3];
SunVectorBodyFrameReturn[0] = sunVectorBodyFrame[0]; SunVectorBodyFrameReturn[0] = sunVectorBodyFrame[susNumber][0];
SunVectorBodyFrameReturn[1] = sunVectorBodyFrame[1]; SunVectorBodyFrameReturn[1] = sunVectorBodyFrame[susNumber][1];
SunVectorBodyFrameReturn[2] = sunVectorBodyFrame[2]; SunVectorBodyFrameReturn[2] = sunVectorBodyFrame[susNumber][2];
return SunVectorBodyFrameReturn; return SunVectorBodyFrameReturn;
} }
@ -289,7 +274,7 @@ float* SunSensor::TransferSunVector() {
for (uint8_t susNumber = 0; susNumber < 12; for (uint8_t susNumber = 0; susNumber < 12;
susNumber++) { // save the sun vector of each SUS in their body frame into an array for susNumber++) { // save the sun vector of each SUS in their body frame into an array for
// further processing // further processing
float* SunVectorBodyFrame = SunVectorBodyFrame[susNumber]; float* SunVectorBodyFrame = &SunVectorBodyFrame[susNumber];
sunVectorMatrixBodyFrame[0][susNumber] = SunVectorBodyFrame[0]; sunVectorMatrixBodyFrame[0][susNumber] = SunVectorBodyFrame[0];
sunVectorMatrixBodyFrame[1][susNumber] = SunVectorBodyFrame[1]; sunVectorMatrixBodyFrame[1][susNumber] = SunVectorBodyFrame[1];
sunVectorMatrixBodyFrame[2][susNumber] = SunVectorBodyFrame[2]; sunVectorMatrixBodyFrame[2][susNumber] = SunVectorBodyFrame[2];

View File

@ -15,7 +15,6 @@ class SunSensor {
public: public:
SunSensor() {} SunSensor() {}
void setSunSensorData();
void checkSunSensorData(uint8_t susNumber); void checkSunSensorData(uint8_t susNumber);
void calcAngle(uint8_t susNumber); void calcAngle(uint8_t susNumber);
void setCalibrationCoefficients(uint8_t susNumber); void setCalibrationCoefficients(uint8_t susNumber);
@ -23,16 +22,35 @@ class SunSensor {
void CalculateSunVector(uint8_t susNumber); void CalculateSunVector(uint8_t susNumber);
bool getValidFlag(uint8_t susNumber); bool getValidFlag(uint8_t susNumber);
float* getSunVectorBodyFrame(); float* getSunVectorBodyFrame(uint8_t susNumber);
float* TransferSunVector(); float* TransferSunVector();
private: private:
uint16_t susChannelValues[12][4]; //[Bit] // ToDo: remove statics and replace with actual data
uint16_t susChannelValues[12][4] = {
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056},
{3913, 3912, 3799, 4056}}; //[Bit]
float alphaBetaRaw[12][2]; //[°] float alphaBetaRaw[12][2]; //[°]
float alphaBetaCalibrated[12][2]; //[°] float alphaBetaCalibrated[12][2]; //[°]
float sunVectorBodyFrame[12][3]; //[-] float sunVectorBodyFrame[12][3]; //[-]
bool validFlag[12] = returnvalue::OK; bool validFlag[12] = {returnvalue::OK,
returnvalue::OK,returnvalue::OK,
returnvalue::OK,returnvalue::OK,
returnvalue::OK,returnvalue::OK,
returnvalue::OK,returnvalue::OK,
returnvalue::OK,returnvalue::OK,
returnvalue::OK};
uint16_t channelValueCheckHigh = uint16_t channelValueCheckHigh =
4096; //=2^12[Bit]high borderline for the channel values of one sun sensor for validity Check 4096; //=2^12[Bit]high borderline for the channel values of one sun sensor for validity Check

View File

@ -7,11 +7,13 @@
#ifndef ACS_CONFIG_CLASSIDS_H_ #ifndef ACS_CONFIG_CLASSIDS_H_
#define ACS_CONFIG_CLASSIDS_H_ #define ACS_CONFIG_CLASSIDS_H_
#include "bsp_hosted/fsfwconfig/returnvalues/classIds.h"
#include <common/config/commonClassIds.h>
#include <fsfw/returnvalues/FwClassIds.h>
namespace CLASS_ID { namespace CLASS_ID {
enum eiveclassIds: uint8_t { enum eiveclassIds: uint8_t {
EIVE_CLASS_ID_START = CLASS_ID_END, EIVE_CLASS_ID_START = COMMON_CLASS_ID_END,
KALMAN, KALMAN,
SAFE, SAFE,
PTG, PTG,

View File

@ -43,5 +43,5 @@ private:
AcsParameters::MagnetorquesParameter* magnetorquesParameter; AcsParameters::MagnetorquesParameter* magnetorquesParameter;
}; };
#endif ACS_CONTROL_DETUMBLE_H_ #endif /*ACS_CONTROL_DETUMBLE_H_*/

View File

@ -85,7 +85,7 @@ ReturnValue_t SafeCtrl::safeMekf(timeval now, double *quatBJ, bool *quatBJValid,
VectorOperations<double>::mulScalar(torqueMgt, 1/pow(normMag,2), outputMagMomB, 3); VectorOperations<double>::mulScalar(torqueMgt, 1/pow(normMag,2), outputMagMomB, 3);
*outputValid = true; *outputValid = true;
return RETURN_OK; return returnvalue::OK;
} }