Make throttle stick scaling more predictable in mc-stabilized mode (#24710)

* Rescale throttle curve to HTE as option

* Add slew rate to hover thrust estimate

* Update docs to reflect changes

Fix formating

* mc_att_control: suggestions for hover thrust slewing

- Slower slew rate
- Move update of hover thrust estimate into main loop
- Make sure dt for slew rate is correct
- Apply parameter updates if hover thrust estimate not used
- Parameter description in metadata files

* fix: Rescaling cases order

* Rescale to HTE estimate by default

* Update src/modules/mc_pos_control/multicopter_position_control_params.c

Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com>

* Fix hte sub name

* Update MPC_THR_CURVE description

* Swap thr curve values to make hte rescaling default for value 0

---------

Co-authored-by: Matthias Grob <maetugr@gmail.com>
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com>
This commit is contained in:
dawr68
2025-04-22 16:36:33 +02:00
committed by GitHub
co-authored by Mathieu Bresciani Matthias Grob
parent 9404783c99
commit f08d01b4d5
5 changed files with 55 additions and 31 deletions
@@ -49,10 +49,10 @@
PARAM_DEFINE_FLOAT(MPC_THR_HOVER, 0.5f);
/**
* Hover thrust estimator
* Use hover thrust estimate for altitude control
*
* Disable to use the fixed parameter MPC_THR_HOVER
* Enable to use the hover thrust estimator
* Disable to use the fixed parameter MPC_THR_HOVER instead of the hover thrust estimate in the position controller.
* This parameter does not influence Stabilized mode throttle curve (see MPC_THR_CURVE).
*
* @boolean
* @group Multicopter Position Control
@@ -77,17 +77,20 @@ PARAM_DEFINE_FLOAT(MPC_MANTHR_MIN, 0.08f);
*
* Defines how the throttle stick is mapped to collective thrust in Stabilized mode.
*
* Rescale to hover thrust:
* Stick input is linearly rescaled, such that a centered stick corresponds to the hover throttle (see MPC_THR_HOVER).
* Rescale to hover thrust estimate:
* Stick input is linearly rescaled, such that a centered throttle stick corresponds to the hover thrust estimator's output.
*
* No Rescale:
* No rescale:
* Directly map the stick 1:1 to the output.
* Can be useful with very low hover thrust which leads to much distortion and the upper half getting sensitive.
*
* With MPC_THR_HOVER 0.5 both modes are the same.
* Rescale to hover thrust parameter:
* Similar to rescaling to the hover thrust estimate, but it uses the hover thrust parameter value (see MPC_THR_HOVER) instead of estimated value.
* With MPC_THR_HOVER 0.5 it's equivalent to No rescale.
*
* @value 0 Rescale to hover thrust
* @value 1 No Rescale
* @value 0 Rescale to estimate
* @value 1 No rescale
* @value 2 Rescale to parameter
* @group Multicopter Position Control
*/
PARAM_DEFINE_INT32(MPC_THR_CURVE, 0);