19 #ifndef SENSORS_ISA_MODEL_HPP 20 #define SENSORS_ISA_MODEL_HPP 22 #include <Eigen/Geometry> 28 float& temperatureKelvin,
float& absPressureHpa,
float& diffPressureHpa){
29 const float PRESSURE_MSL_HPA = 1013.250f;
30 const float TEMPERATURE_MSL_KELVIN = 288.0f;
31 const float RHO_MSL = 1.225f;
32 const float LAPSE_TEMPERATURE_RATE = 1.0f / 152.4f;
34 auto alt_msl =
static_cast<float>(gpsPosition.z());
36 temperatureKelvin = TEMPERATURE_MSL_KELVIN - LAPSE_TEMPERATURE_RATE * alt_msl;
37 float pressureRatio = powf((TEMPERATURE_MSL_KELVIN/temperatureKelvin), 5.256
f);
38 const float densityRatio = powf((TEMPERATURE_MSL_KELVIN/temperatureKelvin), 4.256
f);
39 float rho = RHO_MSL / densityRatio;
40 absPressureHpa = PRESSURE_MSL_HPA / pressureRatio;
41 diffPressureHpa = 0.005f * rho * (float)(linVelNed.norm() * linVelNed.norm());
46 #endif // SENSORS_ISA_MODEL_HPP
void EstimateAtmosphere(const Eigen::Vector3d &gpsPosition, const Eigen::Vector3d &linVelNed, float &temperatureKelvin, float &absPressureHpa, float &diffPressureHpa)