diff --git a/src/modules/mc_att_control/mc_att_control.hpp b/src/modules/mc_att_control/mc_att_control.hpp index 5a9f8029cf..25f1c3297d 100644 --- a/src/modules/mc_att_control/mc_att_control.hpp +++ b/src/modules/mc_att_control/mc_att_control.hpp @@ -220,8 +220,10 @@ private: (ParamFloat) _acro_roll_max, (ParamFloat) _acro_pitch_max, (ParamFloat) _acro_yaw_max, - (ParamFloat) _acro_expo, /**< function parameter for expo stick curve shape */ - (ParamFloat) _acro_superexpo, /**< function parameter for superexpo stick curve shape */ + (ParamFloat) _acro_expo_rp, /**< expo stick curve shape (roll & pitch) */ + (ParamFloat) _acro_expo_y, /**< expo stick curve shape (yaw) */ + (ParamFloat) _acro_superexpo_rp, /**< superexpo stick curve shape (roll & pitch) */ + (ParamFloat) _acro_superexpo_y, /**< superexpo stick curve shape (yaw) */ (ParamFloat) _rattitude_thres, diff --git a/src/modules/mc_att_control/mc_att_control_main.cpp b/src/modules/mc_att_control/mc_att_control_main.cpp index 7dc71e0d5b..304a963a4d 100644 --- a/src/modules/mc_att_control/mc_att_control_main.cpp +++ b/src/modules/mc_att_control/mc_att_control_main.cpp @@ -704,9 +704,9 @@ MulticopterAttitudeControl::run() if (_v_control_mode.flag_control_manual_enabled) { /* manual rates control - ACRO mode */ Vector3f man_rate_sp( - math::superexpo(_manual_control_sp.y, _acro_expo.get(), _acro_superexpo.get()), - math::superexpo(-_manual_control_sp.x, _acro_expo.get(), _acro_superexpo.get()), - math::superexpo(_manual_control_sp.r, _acro_expo.get(), _acro_superexpo.get())); + math::superexpo(_manual_control_sp.y, _acro_expo_rp.get(), _acro_superexpo_rp.get()), + math::superexpo(-_manual_control_sp.x, _acro_expo_rp.get(), _acro_superexpo_rp.get()), + math::superexpo(_manual_control_sp.r, _acro_expo_y.get(), _acro_superexpo_y.get())); _rates_sp = man_rate_sp.emult(_acro_rate_max); _thrust_sp = _manual_control_sp.z; diff --git a/src/modules/mc_att_control/mc_att_control_params.c b/src/modules/mc_att_control/mc_att_control_params.c index 8abbeebfab..8c5ac5e994 100644 --- a/src/modules/mc_att_control/mc_att_control_params.c +++ b/src/modules/mc_att_control/mc_att_control_params.c @@ -381,8 +381,7 @@ PARAM_DEFINE_FLOAT(MC_ACRO_P_MAX, 720.0f); PARAM_DEFINE_FLOAT(MC_ACRO_Y_MAX, 540.0f); /** - * Acro Expo factor - * applied to input of all axis: roll, pitch, yaw + * Acro Expo factor for Roll and Pitch. * * 0 Purely linear input curve * 1 Purely cubic input curve @@ -395,8 +394,20 @@ PARAM_DEFINE_FLOAT(MC_ACRO_Y_MAX, 540.0f); PARAM_DEFINE_FLOAT(MC_ACRO_EXPO, 0.69f); /** - * Acro SuperExpo factor - * applied to input of all axis: roll, pitch, yaw + * Acro Expo factor for Yaw. + * + * 0 Purely linear input curve + * 1 Purely cubic input curve + * + * @min 0 + * @max 1 + * @decimal 2 + * @group Multicopter Attitude Control + */ +PARAM_DEFINE_FLOAT(MC_ACRO_EXPO_Y, 0.69f); + +/** + * Acro SuperExpo factor for Roll and Pitch. * * 0 Pure Expo function * 0.7 resonable shape enhancement for intuitive stick feel @@ -409,6 +420,20 @@ PARAM_DEFINE_FLOAT(MC_ACRO_EXPO, 0.69f); */ PARAM_DEFINE_FLOAT(MC_ACRO_SUPEXPO, 0.7f); +/** + * Acro SuperExpo factor for Yaw. + * + * 0 Pure Expo function + * 0.7 resonable shape enhancement for intuitive stick feel + * 0.95 very strong bent input curve only near maxima have effect + * + * @min 0 + * @max 0.95 + * @decimal 2 + * @group Multicopter Attitude Control + */ +PARAM_DEFINE_FLOAT(MC_ACRO_SUPEXPOY, 0.7f); + /** * Threshold for Rattitude mode *