forked from Archive/PX4-Autopilot
AutoSmoothVel: adjust controller constraints in emergency braking
When engaging auto mode at high vertical speed, we don't want to cut the velocity trajectory setpoint in order to create a smooth deceleration.
This commit is contained in:
parent
316e0dfeb5
commit
e53d2907d7
|
@ -435,6 +435,11 @@ void FlightTaskAutoLineSmoothVel::_updateTrajConstraints()
|
||||||
_trajectory[2].setMaxAccel(9.81f);
|
_trajectory[2].setMaxAccel(9.81f);
|
||||||
_trajectory[2].setMaxJerk(9.81f);
|
_trajectory[2].setMaxJerk(9.81f);
|
||||||
|
|
||||||
|
// If the current velocity is beyond the usual constraints, tell
|
||||||
|
// the controller to exceptionally increase its saturations to avoid
|
||||||
|
// cutting out the feedforward
|
||||||
|
_constraints.speed_down = math::max(fabsf(_trajectory[2].getCurrentVelocity()), _param_mpc_z_vel_max_dn.get());
|
||||||
|
|
||||||
} else if (_velocity_setpoint(2) < 0.f) { // up
|
} else if (_velocity_setpoint(2) < 0.f) { // up
|
||||||
float z_accel_constraint = _param_mpc_acc_up_max.get();
|
float z_accel_constraint = _param_mpc_acc_up_max.get();
|
||||||
float z_vel_constraint = _param_mpc_z_vel_max_up.get();
|
float z_vel_constraint = _param_mpc_z_vel_max_up.get();
|
||||||
|
|
|
@ -429,7 +429,7 @@ void MulticopterPositionControl::Run()
|
||||||
_control.setVelocityLimits(
|
_control.setVelocityLimits(
|
||||||
math::constrain(speed_horizontal, 0.f, _param_mpc_xy_vel_max.get()),
|
math::constrain(speed_horizontal, 0.f, _param_mpc_xy_vel_max.get()),
|
||||||
math::min(speed_up, _param_mpc_z_vel_max_up.get()), // takeoff ramp starts with negative velocity limit
|
math::min(speed_up, _param_mpc_z_vel_max_up.get()), // takeoff ramp starts with negative velocity limit
|
||||||
math::constrain(speed_down, 0.f, _param_mpc_z_vel_max_dn.get()));
|
math::max(speed_down, 0.f));
|
||||||
|
|
||||||
_control.setInputSetpoint(_setpoint);
|
_control.setInputSetpoint(_setpoint);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue