Browse Source

mc_pos_control: only update constraints if topic updated

- update failsafe constraints
release/1.12
Daniel Agar 4 years ago committed by Matthias Grob
parent
commit
ac8f4e3c48
  1. 16
      src/modules/mc_pos_control/MulticopterPositionControl.cpp

16
src/modules/mc_pos_control/MulticopterPositionControl.cpp

@ -249,12 +249,14 @@ void MulticopterPositionControl::Run() @@ -249,12 +249,14 @@ void MulticopterPositionControl::Run()
_control.setState(_states);
vehicle_constraints_s constraints;
_vehicle_constraints_sub.update(&constraints);
_control.setConstraints(constraints);
_control.setThrustLimits(constraints.minimum_thrust, _param_mpc_thr_max.get());
if (constraints.reset_integral) {
_control.resetIntegral();
if (_vehicle_constraints_sub.update(&constraints)) {
_control.setConstraints(constraints);
_control.setThrustLimits(constraints.minimum_thrust, _param_mpc_thr_max.get());
if (constraints.reset_integral) {
_control.resetIntegral();
}
}
// Run position control
@ -269,8 +271,12 @@ void MulticopterPositionControl::Run() @@ -269,8 +271,12 @@ void MulticopterPositionControl::Run()
}
failsafe(time_stamp_now, setpoint, _states, !was_in_failsafe);
_control.setInputSetpoint(setpoint);
constraints = {0, NAN, NAN, NAN, NAN, NAN, NAN, NAN, false, {}};
_control.setConstraints(constraints);
_control.update(dt);
}

Loading…
Cancel
Save