Browse Source

AC_PosControl: run velocity controller z-axis at 400hz

mission-4.1.18
Randy Mackay 9 years ago
parent
commit
c9340dbeb6
  1. 17
      libraries/AC_AttitudeControl/AC_PosControl.cpp

17
libraries/AC_AttitudeControl/AC_PosControl.cpp

@ -707,10 +707,12 @@ void AC_PosControl::update_vel_controller_xyz(float ekfNavVelGainScaler) @@ -707,10 +707,12 @@ void AC_PosControl::update_vel_controller_xyz(float ekfNavVelGainScaler)
{
// capture time since last iteration
uint32_t now = hal.scheduler->millis();
float dt = (now - _last_update_xy_ms) / 1000.0f;
float dt = (now - _last_update_xy_ms)*0.001f;
// sanity check dt - expect to be called faster than ~5hz
if (dt >= POSCONTROL_ACTIVE_TIMEOUT_MS*1.0e-3f) {
// call xy controller
if (dt >= get_dt_xy()) {
// sanity check dt
if (dt >= 0.2f) {
dt = 0.0f;
}
@ -729,14 +731,15 @@ void AC_PosControl::update_vel_controller_xyz(float ekfNavVelGainScaler) @@ -729,14 +731,15 @@ void AC_PosControl::update_vel_controller_xyz(float ekfNavVelGainScaler)
// run acceleration to lean angle step
accel_to_lean_angles(dt, ekfNavVelGainScaler, false);
// update xy update time
_last_update_xy_ms = now;
}
// update altitude target
set_alt_target_from_climb_rate_ff(_vel_desired.z, dt, false);
set_alt_target_from_climb_rate_ff(_vel_desired.z, _dt, false);
// run z-axis position controller
update_z_controller();
// record update time
_last_update_xy_ms = now;
}
///

Loading…
Cancel
Save