|
|
|
@ -235,7 +235,8 @@ void AP_Baro::update_calibration()
@@ -235,7 +235,8 @@ void AP_Baro::update_calibration()
|
|
|
|
|
{ |
|
|
|
|
for (uint8_t i=0; i<_num_sensors; i++) { |
|
|
|
|
if (healthy(i)) { |
|
|
|
|
sensors[i].ground_pressure.set(get_pressure(i)); |
|
|
|
|
float corrected_pressure = get_pressure(i) + sensors[i].p_correction; |
|
|
|
|
sensors[i].ground_pressure.set(corrected_pressure); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// don't notify the GCS too rapidly or we flood the link
|
|
|
|
@ -568,13 +569,13 @@ void AP_Baro::update(void)
@@ -568,13 +569,13 @@ void AP_Baro::update(void)
|
|
|
|
|
sensors[i].ground_pressure = sensors[i].pressure; |
|
|
|
|
} |
|
|
|
|
float altitude = sensors[i].altitude; |
|
|
|
|
float corrected_pressure = sensors[i].pressure + sensors[i].p_correction; |
|
|
|
|
if (sensors[i].type == BARO_TYPE_AIR) { |
|
|
|
|
float pressure = sensors[i].pressure + sensors[i].p_correction; |
|
|
|
|
altitude = get_altitude_difference(sensors[i].ground_pressure, pressure); |
|
|
|
|
altitude = get_altitude_difference(sensors[i].ground_pressure, corrected_pressure); |
|
|
|
|
} else if (sensors[i].type == BARO_TYPE_WATER) { |
|
|
|
|
//101325Pa is sea level air pressure, 9800 Pascal/ m depth in water.
|
|
|
|
|
//No temperature or depth compensation for density of water.
|
|
|
|
|
altitude = (sensors[i].ground_pressure - sensors[i].pressure) / 9800.0f / _specific_gravity; |
|
|
|
|
altitude = (sensors[i].ground_pressure - corrected_pressure) / 9800.0f / _specific_gravity; |
|
|
|
|
} |
|
|
|
|
// sanity check altitude
|
|
|
|
|
sensors[i].alt_ok = !(isnan(altitude) || isinf(altitude)); |
|
|
|
|