Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8036efd

Browse files
MaEtUgRLorenzMeier
authored andcommitted
mc_pos_control: refactor takeoff trigger conditions to be positive
1 parent 5e23883 commit 8036efd

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

src/modules/mc_pos_control/mc_pos_control_main.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ class MulticopterPositionControl : public ModuleBase<MulticopterPositionControl>
104104
private:
105105
// smooth takeoff vertical velocity ramp state
106106
bool _in_takeoff_ramp = false; /**< true while takeoff ramp is applied */
107-
bool _velocity_triggered_takeoff = false; /**< true if takeoff was triggered by a velocity setpoint */
107+
bool _position_triggered_takeoff = false; /**< true if takeoff was triggered by a position setpoint */
108108
float _takeoff_ramp_velocity = -1.f; /**< current value of the smooth takeoff ramp */
109109
float _takeoff_reference_z; /**< z-position when takeoff ramp was initiated */
110110

@@ -992,14 +992,13 @@ MulticopterPositionControl::update_takeoff_ramp(const float z_sp, const float vz
992992
}
993993

994994
// upwards velocity setpoint larger than a minimal speed
995-
_velocity_triggered_takeoff = PX4_ISFINITE(vz_sp) && vz_sp < -0.3f;
995+
const bool velocity_triggered_takeoff = PX4_ISFINITE(vz_sp) && vz_sp < -0.3f;
996996
// upwards jerk setpoint
997997
const bool jerk_triggered_takeoff = PX4_ISFINITE(jz_sp) && jz_sp < -FLT_EPSILON;
998998
// position setpoint above the minimum altitude
999-
const bool position_triggered_takeoff = PX4_ISFINITE(z_sp) && (z_sp < (_states.position(2) - min_altitude));
999+
_position_triggered_takeoff = PX4_ISFINITE(z_sp) && (z_sp < (_states.position(2) - min_altitude));
10001000

1001-
_velocity_triggered_takeoff |= jerk_triggered_takeoff;
1002-
if (_velocity_triggered_takeoff || position_triggered_takeoff) {
1001+
if (velocity_triggered_takeoff || jerk_triggered_takeoff || _position_triggered_takeoff) {
10031002
// takeoff was triggered, start velocity ramp
10041003
_takeoff_ramp_velocity = takeoff_ramp_initialization;
10051004
_in_takeoff_ramp = true;
@@ -1012,7 +1011,7 @@ MulticopterPositionControl::update_takeoff_ramp(const float z_sp, const float vz
10121011
float takeoff_desired_velocity = -vz_sp;
10131012

10141013
// if takeoff was triggered by a position setpoint, ramp to the takeoff speed parameter
1015-
if (!_velocity_triggered_takeoff) {
1014+
if (_position_triggered_takeoff) {
10161015
takeoff_desired_velocity = _param_mpc_tko_speed.get();
10171016
}
10181017

@@ -1029,7 +1028,7 @@ MulticopterPositionControl::update_takeoff_ramp(const float z_sp, const float vz
10291028
_takeoff_ramp_velocity = math::min(_takeoff_ramp_velocity, takeoff_desired_velocity);
10301029

10311030
// smooth takeoff is achieved once desired altitude/velocity setpoint is reached
1032-
if (!_velocity_triggered_takeoff) {
1031+
if (_position_triggered_takeoff) {
10331032
_in_takeoff_ramp = _states.position(2) - 0.2f > math::max(z_sp, _takeoff_reference_z - _param_mpc_land_alt2.get());
10341033

10351034
} else {

0 commit comments

Comments
 (0)