@@ -104,7 +104,7 @@ class MulticopterPositionControl : public ModuleBase<MulticopterPositionControl>
104
104
private:
105
105
// smooth takeoff vertical velocity ramp state
106
106
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 */
108
108
float _takeoff_ramp_velocity = -1 .f; /* *< current value of the smooth takeoff ramp */
109
109
float _takeoff_reference_z; /* *< z-position when takeoff ramp was initiated */
110
110
@@ -992,14 +992,13 @@ MulticopterPositionControl::update_takeoff_ramp(const float z_sp, const float vz
992
992
}
993
993
994
994
// 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 ;
996
996
// upwards jerk setpoint
997
997
const bool jerk_triggered_takeoff = PX4_ISFINITE (jz_sp) && jz_sp < -FLT_EPSILON;
998
998
// 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));
1000
1000
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) {
1003
1002
// takeoff was triggered, start velocity ramp
1004
1003
_takeoff_ramp_velocity = takeoff_ramp_initialization;
1005
1004
_in_takeoff_ramp = true ;
@@ -1012,7 +1011,7 @@ MulticopterPositionControl::update_takeoff_ramp(const float z_sp, const float vz
1012
1011
float takeoff_desired_velocity = -vz_sp;
1013
1012
1014
1013
// if takeoff was triggered by a position setpoint, ramp to the takeoff speed parameter
1015
- if (!_velocity_triggered_takeoff ) {
1014
+ if (_position_triggered_takeoff ) {
1016
1015
takeoff_desired_velocity = _param_mpc_tko_speed.get ();
1017
1016
}
1018
1017
@@ -1029,7 +1028,7 @@ MulticopterPositionControl::update_takeoff_ramp(const float z_sp, const float vz
1029
1028
_takeoff_ramp_velocity = math::min (_takeoff_ramp_velocity, takeoff_desired_velocity);
1030
1029
1031
1030
// smooth takeoff is achieved once desired altitude/velocity setpoint is reached
1032
- if (!_velocity_triggered_takeoff ) {
1031
+ if (_position_triggered_takeoff ) {
1033
1032
_in_takeoff_ramp = _states.position (2 ) - 0 .2f > math::max (z_sp, _takeoff_reference_z - _param_mpc_land_alt2.get ());
1034
1033
1035
1034
} else {
0 commit comments