Skip to content
Snippets Groups Projects
Commit 6317d36e authored by Matthias Grob's avatar Matthias Grob
Browse files

mc_att_control: remove time constant parameter

Because the parameter does not make sense from a control theory
perspective. Either you have a gain with the unit 1/s or an inverse
gain or time constant with the unit s. But the time constant parameter
was neither bound to any exact unit nor did it apply instead of a gain.
Rather it adjusted multiple gains from rate and attitude control
according to an arbitrary scale. This can only by accident lead to
good tuning.
parent ba5f2254
No related branches found
No related tags found
No related merge requests found
......@@ -17,17 +17,15 @@ set PWM_OUT 1234
if [ $AUTOCNF == yes ]
then
param set MC_ROLL_P 2.0
param set MC_ROLLRATE_P 0.05
param set MC_ROLL_P 2.2
param set MC_ROLLRATE_P 0.06
param set MC_ROLLRATE_I 0.2
param set MC_ROLLRATE_D 0.0015
param set MC_ROLL_TC 0.18
param set MC_ROLLRATE_D 0.0017
param set MC_PITCH_P 2.0
param set MC_PITCHRATE_P 0.05
param set MC_PITCH_P 2.2
param set MC_PITCHRATE_P 0.06
param set MC_PITCHRATE_I 0.2
param set MC_PITCHRATE_D 0.0015
param set MC_PITCH_TC 0.18
param set MC_PITCHRATE_D 0.0017
param set MC_YAW_P 1.0
param set MC_YAWRATE_P 0.15
......
......@@ -93,7 +93,6 @@ extern "C" __EXPORT int mc_att_control_main(int argc, char *argv[]);
#define MIN_TAKEOFF_THRUST 0.2f
#define TPA_RATE_LOWER_LIMIT 0.05f
#define ATTITUDE_TC_DEFAULT 0.2f
#define AXIS_INDEX_ROLL 0
#define AXIS_INDEX_PITCH 1
......@@ -223,9 +222,6 @@ private:
param_t acro_superexpo;
param_t rattitude_thres;
param_t roll_tc;
param_t pitch_tc;
param_t vtol_type;
param_t vtol_opt_recovery_enabled;
param_t vtol_wv_yaw_rate_scale;
......@@ -469,9 +465,6 @@ _loop_update_rate_hz(initial_update_rate_hz)
_params_handles.rattitude_thres = param_find("MC_RATT_TH");
_params_handles.roll_tc = param_find("MC_ROLL_TC");
_params_handles.pitch_tc = param_find("MC_PITCH_TC");
_params_handles.bat_scale_en = param_find("MC_BAT_SCALE_EN");
/* rotations */
......@@ -525,36 +518,31 @@ MulticopterAttitudeControl::parameters_update()
{
float v;
float roll_tc, pitch_tc;
param_get(_params_handles.roll_tc, &roll_tc);
param_get(_params_handles.pitch_tc, &pitch_tc);
/* roll gains */
param_get(_params_handles.roll_p, &v);
_params.att_p(0) = v * (ATTITUDE_TC_DEFAULT / roll_tc);
_params.att_p(0) = v;
param_get(_params_handles.roll_rate_p, &v);
_params.rate_p(0) = v * (ATTITUDE_TC_DEFAULT / roll_tc);
_params.rate_p(0) = v;
param_get(_params_handles.roll_rate_i, &v);
_params.rate_i(0) = v;
param_get(_params_handles.roll_rate_integ_lim, &v);
_params.rate_int_lim(0) = v;
param_get(_params_handles.roll_rate_d, &v);
_params.rate_d(0) = v * (ATTITUDE_TC_DEFAULT / roll_tc);
_params.rate_d(0) = v;
param_get(_params_handles.roll_rate_ff, &v);
_params.rate_ff(0) = v;
/* pitch gains */
param_get(_params_handles.pitch_p, &v);
_params.att_p(1) = v * (ATTITUDE_TC_DEFAULT / pitch_tc);
_params.att_p(1) = v;
param_get(_params_handles.pitch_rate_p, &v);
_params.rate_p(1) = v * (ATTITUDE_TC_DEFAULT / pitch_tc);
_params.rate_p(1) = v;
param_get(_params_handles.pitch_rate_i, &v);
_params.rate_i(1) = v;
param_get(_params_handles.pitch_rate_integ_lim, &v);
_params.rate_int_lim(1) = v;
param_get(_params_handles.pitch_rate_d, &v);
_params.rate_d(1) = v * (ATTITUDE_TC_DEFAULT / pitch_tc);
_params.rate_d(1) = v;
param_get(_params_handles.pitch_rate_ff, &v);
_params.rate_ff(1) = v;
......
......@@ -39,34 +39,6 @@
* @author Anton Babushkin <anton@px4.io>
*/
/**
* Roll time constant
*
* Reduce if the system is too twitchy, increase if the response is too slow and sluggish.
*
* @unit s
* @min 0.15
* @max 0.25
* @decimal 2
* @increment 0.01
* @group Multicopter Attitude Control
*/
PARAM_DEFINE_FLOAT(MC_ROLL_TC, 0.2f);
/**
* Pitch time constant
*
* Reduce if the system is too twitchy, increase if the response is too slow and sluggish.
*
* @unit s
* @min 0.15
* @max 0.25
* @decimal 2
* @increment 0.01
* @group Multicopter Attitude Control
*/
PARAM_DEFINE_FLOAT(MC_PITCH_TC, 0.2f);
/**
* Roll P gain
*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment