From a6b43ecef086aaacd0e830ab283311b499530612 Mon Sep 17 00:00:00 2001 From: Alessio Morale <alessiomorale@gmail.com> Date: Wed, 18 Mar 2015 04:43:30 +0100 Subject: [PATCH] OP-1793 - Apply accel bias before scaling --- flight/modules/Sensors/sensors.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/flight/modules/Sensors/sensors.c b/flight/modules/Sensors/sensors.c index b1d8288d6..c45024d59 100644 --- a/flight/modules/Sensors/sensors.c +++ b/flight/modules/Sensors/sensors.c @@ -411,9 +411,9 @@ static void handleAccel(float *samples, float temperature) AccelSensorData accelSensorData; updateAccelTempBias(temperature); - float accels_out[3] = { samples[0] * agcal.accel_scale.X - agcal.accel_bias.X - accel_temp_bias[0], - samples[1] * agcal.accel_scale.Y - agcal.accel_bias.Y - accel_temp_bias[1], - samples[2] * agcal.accel_scale.Z - agcal.accel_bias.Z - accel_temp_bias[2] }; + float accels_out[3] = { (samples[0] - agcal.accel_bias.X) * agcal.accel_scale.X - accel_temp_bias[0], + (samples[1] - agcal.accel_bias.Y) * agcal.accel_scale.Y - accel_temp_bias[1], + (samples[2] - agcal.accel_bias.Z) * agcal.accel_scale.Z - accel_temp_bias[2] }; rot_mult(R, accels_out, samples); accelSensorData.x = samples[0]; @@ -485,7 +485,10 @@ static void updateAccelTempBias(float temperature) if ((accel_temp_calibrated) && !accel_temp_calibration_count) { accel_temp_calibration_count = TEMP_CALIB_INTERVAL; if (accel_temp_calibrated) { - float ctemp = boundf(accel_temperature, agcal.temp_calibrated_extent.max, agcal.temp_calibrated_extent.min); + float ctemp = boundf(accel_temperature, + agcal.temp_calibrated_extent.max, + agcal.temp_calibrated_extent.min); + accel_temp_bias[0] = agcal.accel_temp_coeff.X * ctemp; accel_temp_bias[1] = agcal.accel_temp_coeff.Y * ctemp; accel_temp_bias[2] = agcal.accel_temp_coeff.Z * ctemp;