void Plane::update_alt() { barometer.update(); if (should_log(MASK_LOG_IMU)) { Log_Write_Baro(); } // calculate the sink rate. float sink_rate; Vector3f vel; if (ahrs.get_velocity_NED(vel)) { sink_rate = vel.z; } else if (gps.status() >= AP_GPS::GPS_OK_FIX_3D && gps.have_vertical_velocity()) { sink_rate = gps.velocity().z; } else { sink_rate = -barometer.get_climb_rate(); } // low pass the sink rate to take some of the noise out auto_state.sink_rate = 0.8f * auto_state.sink_rate + 0.2f*sink_rate; geofence_check(true); update_flight_stage(); }
void Rover::update_alt() { barometer.update(); if (should_log(MASK_LOG_IMU)) { Log_Write_Baro(); } }
// read the barometer and return the updated altitude in meters void Tracker::update_barometer(void) { barometer.update(); if (should_log(MASK_LOG_IMU)) { Log_Write_Baro(); } }
void Plane::update_alt() { barometer.update(); if (should_log(MASK_LOG_IMU)) { Log_Write_Baro(); } // calculate the sink rate. float sink_rate; Vector3f vel; if (ahrs.get_velocity_NED(vel)) { sink_rate = vel.z; } else if (gps.status() >= AP_GPS::GPS_OK_FIX_3D && gps.have_vertical_velocity()) { sink_rate = gps.velocity().z; } else { sink_rate = -barometer.get_climb_rate(); } // low pass the sink rate to take some of the noise out auto_state.sink_rate = 0.8f * auto_state.sink_rate + 0.2f*sink_rate; geofence_check(true); update_flight_stage(); if (auto_throttle_mode && !throttle_suppressed) { bool is_doing_auto_land = false; float distance_beyond_land_wp = 0; switch (flight_stage) { case AP_SpdHgtControl::FLIGHT_LAND_APPROACH: case AP_SpdHgtControl::FLIGHT_LAND_PREFLARE: case AP_SpdHgtControl::FLIGHT_LAND_FINAL: is_doing_auto_land = true; if (location_passed_point(current_loc, prev_WP_loc, next_WP_loc)) { distance_beyond_land_wp = get_distance(current_loc, next_WP_loc); } break; default: break; } SpdHgt_Controller->update_pitch_throttle(relative_target_altitude_cm(), target_airspeed_cm, flight_stage, is_doing_auto_land, distance_beyond_land_wp, get_takeoff_pitch_min_cd(), throttle_nudge, tecs_hgt_afe(), aerodynamic_load_factor); if (should_log(MASK_LOG_TECS)) { Log_Write_TECS_Tuning(); } } }
// return barometric altitude in centimeters void Sub::read_barometer(void) { barometer.update(); if (should_log(MASK_LOG_IMU)) { Log_Write_Baro(); } if (ap.depth_sensor_present) { sensor_health.depth = barometer.healthy(depth_sensor_idx); } }
// return barometric altitude in centimeters void Copter::read_barometer(void) { barometer.update(); if (should_log(MASK_LOG_IMU)) { Log_Write_Baro(); } baro_alt = barometer.get_altitude() * 100.0f; baro_climbrate = barometer.get_climb_rate() * 100.0f; motors.set_air_density_ratio(barometer.get_air_density_ratio()); }
void Plane::update_alt() { barometer.update(); if (should_log(MASK_LOG_IMU)) { Log_Write_Baro(); } // calculate the sink rate. float sink_rate; Vector3f vel; if (ahrs.get_velocity_NED(vel)) { sink_rate = vel.z; } else if (gps.status() >= AP_GPS::GPS_OK_FIX_3D && gps.have_vertical_velocity()) { sink_rate = gps.velocity().z; } else { sink_rate = -barometer.get_climb_rate(); } // low pass the sink rate to take some of the noise out auto_state.sink_rate = 0.8f * auto_state.sink_rate + 0.2f*sink_rate; geofence_check(true); update_flight_stage(); if (auto_throttle_mode && !throttle_suppressed) { float distance_beyond_land_wp = 0; if (auto_state.land_in_progress && location_passed_point(current_loc, prev_WP_loc, next_WP_loc)) { distance_beyond_land_wp = get_distance(current_loc, next_WP_loc); } SpdHgt_Controller->update_pitch_throttle(relative_target_altitude_cm(), target_airspeed_cm, flight_stage, auto_state.land_in_progress, distance_beyond_land_wp, get_takeoff_pitch_min_cd(), throttle_nudge, tecs_hgt_afe(), aerodynamic_load_factor); } }