Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
Firmware
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Alberto Ruiz Garcia
Firmware
Commits
e575f032
Commit
e575f032
authored
6 years ago
by
bresch
Committed by
Matthias Grob
6 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Parameter update - Rename variables in modules/mc_att_control
using parameter_update.py script
parent
2197ac88
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/modules/mc_att_control/mc_att_control.hpp
+61
-60
61 additions, 60 deletions
src/modules/mc_att_control/mc_att_control.hpp
src/modules/mc_att_control/mc_att_control_main.cpp
+34
-34
34 additions, 34 deletions
src/modules/mc_att_control/mc_att_control_main.cpp
with
95 additions
and
94 deletions
src/modules/mc_att_control/mc_att_control.hpp
+
61
−
60
View file @
e575f032
...
...
@@ -216,68 +216,69 @@ private:
bool
_gear_state_initialized
{
false
};
/**< true if the gear state has been initialized */
DEFINE_PARAMETERS
(
(
ParamFloat
<
px4
::
params
::
MC_ROLL_P
>
)
_roll_p
,
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_P
>
)
_roll
_
rate_p
,
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_I
>
)
_roll
_
rate_i
,
(
ParamFloat
<
px4
::
params
::
MC_RR_INT_LIM
>
)
_
roll_rate
_int
eg
_lim
,
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_D
>
)
_roll
_
rate_d
,
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_FF
>
)
_roll
_
rate_ff
,
(
ParamFloat
<
px4
::
params
::
MC_PITCH_P
>
)
_pitch_p
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_P
>
)
_pitch
_
rate_p
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_I
>
)
_pitch
_
rate_i
,
(
ParamFloat
<
px4
::
params
::
MC_PR_INT_LIM
>
)
_p
itch_rate
_int
eg
_lim
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_D
>
)
_pitch
_
rate_d
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_FF
>
)
_pitch
_
rate_ff
,
(
ParamFloat
<
px4
::
params
::
MC_YAW_P
>
)
_yaw_p
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_P
>
)
_yaw
_
rate_p
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_I
>
)
_yaw
_
rate_i
,
(
ParamFloat
<
px4
::
params
::
MC_YR_INT_LIM
>
)
_
yaw_rate
_int
eg
_lim
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_D
>
)
_yaw
_
rate_d
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_FF
>
)
_yaw
_
rate_ff
,
(
ParamFloat
<
px4
::
params
::
MC_DTERM_CUTOFF
>
)
_d
_
term_cutoff
_freq
,
/**< Cutoff frequency for the D-term filter */
(
ParamFloat
<
px4
::
params
::
MC_TPA_BREAK_P
>
)
_tpa_break
point
_p
,
/**< Throttle PID Attenuation breakpoint */
(
ParamFloat
<
px4
::
params
::
MC_TPA_BREAK_I
>
)
_tpa_break
point
_i
,
/**< Throttle PID Attenuation breakpoint */
(
ParamFloat
<
px4
::
params
::
MC_TPA_BREAK_D
>
)
_tpa_break
point
_d
,
/**< Throttle PID Attenuation breakpoint */
(
ParamFloat
<
px4
::
params
::
MC_TPA_RATE_P
>
)
_tpa_rate_p
,
/**< Throttle PID Attenuation slope */
(
ParamFloat
<
px4
::
params
::
MC_TPA_RATE_I
>
)
_tpa_rate_i
,
/**< Throttle PID Attenuation slope */
(
ParamFloat
<
px4
::
params
::
MC_TPA_RATE_D
>
)
_tpa_rate_d
,
/**< Throttle PID Attenuation slope */
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_MAX
>
)
_roll
_
rate_max
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_MAX
>
)
_pitch
_
rate_max
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_MAX
>
)
_yaw
_
rate_max
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRAUTO_MAX
>
)
_yaw
_
auto_max
,
(
ParamFloat
<
px4
::
params
::
MPC_MAN_Y_MAX
>
)
_
yaw_rate_scaling
,
/**< scaling factor from stick to yaw rate */
(
ParamFloat
<
px4
::
params
::
MC_ACRO_R_MAX
>
)
_acro_r
oll
_max
,
(
ParamFloat
<
px4
::
params
::
MC_ACRO_P_MAX
>
)
_acro_p
itch
_max
,
(
ParamFloat
<
px4
::
params
::
MC_ACRO_Y_MAX
>
)
_acro_y
aw
_max
,
(
ParamFloat
<
px4
::
params
::
MC_ACRO_EXPO
>
)
_acro_expo
_rp
,
/**< expo stick curve shape (roll & pitch) */
(
ParamFloat
<
px4
::
params
::
MC_ACRO_EXPO_Y
>
)
_acro_expo_y
,
/**< expo stick curve shape (yaw) */
(
ParamFloat
<
px4
::
params
::
MC_ACRO_SUPEXPO
>
)
_acro_supe
re
xpo
_rp
,
/**< superexpo stick curve shape (roll & pitch) */
(
ParamFloat
<
px4
::
params
::
MC_ACRO_SUPEXPOY
>
)
_acro_supe
re
xpo
_
y
,
/**< superexpo stick curve shape (yaw) */
(
ParamFloat
<
px4
::
params
::
MC_RATT_TH
>
)
_
rattitude_thres
,
(
ParamBool
<
px4
::
params
::
MC_BAT_SCALE_EN
>
)
_bat_scale_en
,
(
ParamInt
<
px4
::
params
::
SENS_BOARD_ROT
>
)
_
board_rotation_param
,
(
ParamFloat
<
px4
::
params
::
SENS_BOARD_X_OFF
>
)
_board_off
set_x
,
(
ParamFloat
<
px4
::
params
::
SENS_BOARD_Y_OFF
>
)
_board_off
set_y
,
(
ParamFloat
<
px4
::
params
::
SENS_BOARD_Z_OFF
>
)
_board_off
set_z
,
(
ParamFloat
<
px4
::
params
::
MC_ROLL_P
>
)
_param_mc
_roll_p
,
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_P
>
)
_param_mc
_rollrate_p
,
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_I
>
)
_param_mc
_rollrate_i
,
(
ParamFloat
<
px4
::
params
::
MC_RR_INT_LIM
>
)
_
param_mc_rr
_int_lim
,
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_D
>
)
_param_mc
_rollrate_d
,
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_FF
>
)
_param_mc
_rollrate_ff
,
(
ParamFloat
<
px4
::
params
::
MC_PITCH_P
>
)
_param_mc
_pitch_p
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_P
>
)
_param_mc
_pitchrate_p
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_I
>
)
_param_mc
_pitchrate_i
,
(
ParamFloat
<
px4
::
params
::
MC_PR_INT_LIM
>
)
_p
aram_mc_pr
_int_lim
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_D
>
)
_param_mc
_pitchrate_d
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_FF
>
)
_param_mc
_pitchrate_ff
,
(
ParamFloat
<
px4
::
params
::
MC_YAW_P
>
)
_param_mc
_yaw_p
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_P
>
)
_param_mc
_yawrate_p
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_I
>
)
_param_mc
_yawrate_i
,
(
ParamFloat
<
px4
::
params
::
MC_YR_INT_LIM
>
)
_
param_mc_yr
_int_lim
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_D
>
)
_param_mc
_yawrate_d
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_FF
>
)
_param_mc
_yawrate_ff
,
(
ParamFloat
<
px4
::
params
::
MC_DTERM_CUTOFF
>
)
_
param_mc_
dterm_cutoff
,
/**< Cutoff frequency for the D-term filter */
(
ParamFloat
<
px4
::
params
::
MC_TPA_BREAK_P
>
)
_param_mc
_tpa_break_p
,
/**< Throttle PID Attenuation breakpoint */
(
ParamFloat
<
px4
::
params
::
MC_TPA_BREAK_I
>
)
_param_mc
_tpa_break_i
,
/**< Throttle PID Attenuation breakpoint */
(
ParamFloat
<
px4
::
params
::
MC_TPA_BREAK_D
>
)
_param_mc
_tpa_break_d
,
/**< Throttle PID Attenuation breakpoint */
(
ParamFloat
<
px4
::
params
::
MC_TPA_RATE_P
>
)
_param_mc
_tpa_rate_p
,
/**< Throttle PID Attenuation slope */
(
ParamFloat
<
px4
::
params
::
MC_TPA_RATE_I
>
)
_param_mc
_tpa_rate_i
,
/**< Throttle PID Attenuation slope */
(
ParamFloat
<
px4
::
params
::
MC_TPA_RATE_D
>
)
_param_mc
_tpa_rate_d
,
/**< Throttle PID Attenuation slope */
(
ParamFloat
<
px4
::
params
::
MC_ROLLRATE_MAX
>
)
_param_mc
_rollrate_max
,
(
ParamFloat
<
px4
::
params
::
MC_PITCHRATE_MAX
>
)
_param_mc
_pitchrate_max
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRATE_MAX
>
)
_param_mc
_yawrate_max
,
(
ParamFloat
<
px4
::
params
::
MC_YAWRAUTO_MAX
>
)
_param_mc
_yaw
r
auto_max
,
(
ParamFloat
<
px4
::
params
::
MPC_MAN_Y_MAX
>
)
_
param_mpc_man_y_max
,
/**< scaling factor from stick to yaw rate */
(
ParamFloat
<
px4
::
params
::
MC_ACRO_R_MAX
>
)
_param_mc
_acro_r_max
,
(
ParamFloat
<
px4
::
params
::
MC_ACRO_P_MAX
>
)
_param_mc
_acro_p_max
,
(
ParamFloat
<
px4
::
params
::
MC_ACRO_Y_MAX
>
)
_param_mc
_acro_y_max
,
(
ParamFloat
<
px4
::
params
::
MC_ACRO_EXPO
>
)
_param_mc
_acro_expo
,
/**< expo stick curve shape (roll & pitch) */
(
ParamFloat
<
px4
::
params
::
MC_ACRO_EXPO_Y
>
)
_param_mc
_acro_expo_y
,
/**< expo stick curve shape (yaw) */
(
ParamFloat
<
px4
::
params
::
MC_ACRO_SUPEXPO
>
)
_param_mc
_acro_supexpo
,
/**< superexpo stick curve shape (roll & pitch) */
(
ParamFloat
<
px4
::
params
::
MC_ACRO_SUPEXPOY
>
)
_param_mc
_acro_supexpoy
,
/**< superexpo stick curve shape (yaw) */
(
ParamFloat
<
px4
::
params
::
MC_RATT_TH
>
)
_
param_mc_ratt_th
,
(
ParamBool
<
px4
::
params
::
MC_BAT_SCALE_EN
>
)
_param_mc
_bat_scale_en
,
(
ParamInt
<
px4
::
params
::
SENS_BOARD_ROT
>
)
_
param_sens_board_rot
,
(
ParamFloat
<
px4
::
params
::
SENS_BOARD_X_OFF
>
)
_param_sens
_board_
x_
off
,
(
ParamFloat
<
px4
::
params
::
SENS_BOARD_Y_OFF
>
)
_param_sens
_board_
y_
off
,
(
ParamFloat
<
px4
::
params
::
SENS_BOARD_Z_OFF
>
)
_param_sens
_board_
z_
off
,
/* Stabilized mode params */
(
ParamFloat
<
px4
::
params
::
MPC_MAN_TILT_MAX
>
)
_man_tilt_max_deg
,
/**< maximum tilt allowed for manual flight */
(
ParamFloat
<
px4
::
params
::
MPC_MANTHR_MIN
>
)
_man_throttle_min
,
/**< minimum throttle for stabilized */
(
ParamFloat
<
px4
::
params
::
MPC_THR_MAX
>
)
_throttle_max
,
/**< maximum throttle for stabilized */
(
ParamFloat
<
px4
::
params
::
MPC_THR_HOVER
>
)
_throttle_hover
,
/**< throttle at which vehicle is at hover equilibrium */
(
ParamInt
<
px4
::
params
::
MPC_THR_CURVE
>
)
_throttle_curve
,
/**< throttle curve behavior */
(
ParamInt
<
px4
::
params
::
MC_AIRMODE
>
)
_airmode
(
ParamFloat
<
px4
::
params
::
MPC_MAN_TILT_MAX
>
)
_param_mpc_man_tilt_max
,
/**< maximum tilt allowed for manual flight */
(
ParamFloat
<
px4
::
params
::
MPC_MANTHR_MIN
>
)
_param_mpc_manthr_min
,
/**< minimum throttle for stabilized */
(
ParamFloat
<
px4
::
params
::
MPC_THR_MAX
>
)
_param_mpc_thr_max
,
/**< maximum throttle for stabilized */
(
ParamFloat
<
px4
::
params
::
MPC_THR_HOVER
>
)
_param_mpc_thr_hover
,
/**< throttle at which vehicle is at hover equilibrium */
(
ParamInt
<
px4
::
params
::
MPC_THR_CURVE
>
)
_param_mpc_thr_curve
,
/**< throttle curve behavior */
(
ParamInt
<
px4
::
params
::
MC_AIRMODE
>
)
_param_mc_airmode
)
matrix
::
Vector3f
_rate_p
;
/**< P gain for angular rate error */
...
...
This diff is collapsed.
Click to expand it.
src/modules/mc_att_control/mc_att_control_main.cpp
+
34
−
34
View file @
e575f032
...
...
@@ -132,40 +132,40 @@ void
MulticopterAttitudeControl
::
parameters_updated
()
{
// Store some of the parameters in a more convenient way & precompute often-used values
_attitude_control
.
setProportionalGain
(
Vector3f
(
_roll_p
.
get
(),
_pitch_p
.
get
(),
_yaw_p
.
get
()));
_attitude_control
.
setProportionalGain
(
Vector3f
(
_
param_mc_
roll_p
.
get
(),
_param_mc
_pitch_p
.
get
(),
_param_mc
_yaw_p
.
get
()));
// rate gains
_rate_p
=
Vector3f
(
_roll
_
rate_p
.
get
(),
_pitch
_
rate_p
.
get
(),
_yaw
_
rate_p
.
get
());
_rate_i
=
Vector3f
(
_roll
_
rate_i
.
get
(),
_pitch
_
rate_i
.
get
(),
_yaw
_
rate_i
.
get
());
_rate_int_lim
=
Vector3f
(
_
roll_rate
_int
eg
_lim
.
get
(),
_p
itch_rate
_int
eg
_lim
.
get
(),
_
yaw_rate
_int
eg
_lim
.
get
());
_rate_d
=
Vector3f
(
_roll
_
rate_d
.
get
(),
_pitch
_
rate_d
.
get
(),
_yaw
_
rate_d
.
get
());
_rate_ff
=
Vector3f
(
_roll
_
rate_ff
.
get
(),
_pitch
_
rate_ff
.
get
(),
_yaw
_
rate_ff
.
get
());
if
(
fabsf
(
_lp_filters_d
.
get_cutoff_freq
()
-
_d
_
term_cutoff
_freq
.
get
())
>
0.01
f
)
{
_lp_filters_d
.
set_cutoff_frequency
(
_loop_update_rate_hz
,
_d
_
term_cutoff
_freq
.
get
());
_rate_p
=
Vector3f
(
_
param_mc_
rollrate_p
.
get
(),
_param_mc
_pitchrate_p
.
get
(),
_param_mc
_yawrate_p
.
get
());
_rate_i
=
Vector3f
(
_
param_mc_
rollrate_i
.
get
(),
_param_mc
_pitchrate_i
.
get
(),
_param_mc
_yawrate_i
.
get
());
_rate_int_lim
=
Vector3f
(
_
param_mc_rr
_int_lim
.
get
(),
_p
aram_mc_pr
_int_lim
.
get
(),
_
param_mc_yr
_int_lim
.
get
());
_rate_d
=
Vector3f
(
_
param_mc_
rollrate_d
.
get
(),
_param_mc
_pitchrate_d
.
get
(),
_param_mc
_yawrate_d
.
get
());
_rate_ff
=
Vector3f
(
_
param_mc_
rollrate_ff
.
get
(),
_param_mc
_pitchrate_ff
.
get
(),
_param_mc
_yawrate_ff
.
get
());
if
(
fabsf
(
_lp_filters_d
.
get_cutoff_freq
()
-
_
param_mc_
dterm_cutoff
.
get
())
>
0.01
f
)
{
_lp_filters_d
.
set_cutoff_frequency
(
_loop_update_rate_hz
,
_
param_mc_
dterm_cutoff
.
get
());
_lp_filters_d
.
reset
(
_rates_prev
);
}
// angular rate limits
using
math
::
radians
;
_attitude_control
.
setRateLimit
(
Vector3f
(
radians
(
_roll
_
rate_max
.
get
()),
radians
(
_pitch
_
rate_max
.
get
()),
radians
(
_yaw
_
rate_max
.
get
())));
_attitude_control
.
setRateLimit
(
Vector3f
(
radians
(
_
param_mc_
rollrate_max
.
get
()),
radians
(
_
param_mc_
pitchrate_max
.
get
()),
radians
(
_
param_mc_
yawrate_max
.
get
())));
adapt_auto_yaw_rate_limit
();
// manual rate control acro mode rate limits
_acro_rate_max
=
Vector3f
(
radians
(
_acro_r
oll
_max
.
get
()),
radians
(
_acro_p
itch
_max
.
get
()),
radians
(
_acro_y
aw
_max
.
get
()));
_acro_rate_max
=
Vector3f
(
radians
(
_
param_mc_
acro_r_max
.
get
()),
radians
(
_
param_mc_
acro_p_max
.
get
()),
radians
(
_
param_mc_
acro_y_max
.
get
()));
_man_tilt_max
=
math
::
radians
(
_man_tilt_max
_deg
.
get
());
_man_tilt_max
=
math
::
radians
(
_
param_mpc_
man_tilt_max
.
get
());
_actuators_0_circuit_breaker_enabled
=
circuit_breaker_enabled
(
"CBRK_RATE_CTRL"
,
CBRK_RATE_CTRL_KEY
);
/* get transformation matrix from sensor/board to body frame */
_board_rotation
=
get_rot_matrix
((
enum
Rotation
)
_
board_rotation_param
.
get
());
_board_rotation
=
get_rot_matrix
((
enum
Rotation
)
_
param_sens_board_rot
.
get
());
/* fine tune the rotation */
Dcmf
board_rotation_offset
(
Eulerf
(
M_DEG_TO_RAD_F
*
_board_off
set_x
.
get
(),
M_DEG_TO_RAD_F
*
_board_off
set_y
.
get
(),
M_DEG_TO_RAD_F
*
_board_off
set_z
.
get
()));
M_DEG_TO_RAD_F
*
_param_sens
_board_
x_
off
.
get
(),
M_DEG_TO_RAD_F
*
_param_sens
_board_
y_
off
.
get
(),
M_DEG_TO_RAD_F
*
_param_sens
_board_
z_
off
.
get
()));
_board_rotation
=
board_rotation_offset
*
_board_rotation
;
}
...
...
@@ -202,9 +202,9 @@ MulticopterAttitudeControl::vehicle_control_mode_poll()
void
MulticopterAttitudeControl
::
adapt_auto_yaw_rate_limit
()
{
if
((
_v_control_mode
.
flag_control_velocity_enabled
||
_v_control_mode
.
flag_control_auto_enabled
)
&&
!
_v_control_mode
.
flag_control_manual_enabled
)
{
_attitude_control
.
setRateLimitYaw
(
math
::
radians
(
_yaw
_
auto_max
.
get
()));
_attitude_control
.
setRateLimitYaw
(
math
::
radians
(
_
param_mc_
yaw
r
auto_max
.
get
()));
}
else
{
_attitude_control
.
setRateLimitYaw
(
math
::
radians
(
_yaw
_
rate_max
.
get
()));
_attitude_control
.
setRateLimitYaw
(
math
::
radians
(
_
param_mc_
yawrate_max
.
get
()));
}
}
...
...
@@ -378,16 +378,16 @@ float
MulticopterAttitudeControl
::
throttle_curve
(
float
throttle_stick_input
)
{
// throttle_stick_input is in range [0, 1]
switch
(
_
throttle
_curve
.
get
())
{
switch
(
_
param_mpc_thr
_curve
.
get
())
{
case
1
:
// no rescaling to hover throttle
return
_man
_
thr
ottle
_min
.
get
()
+
throttle_stick_input
*
(
_
throttle
_max
.
get
()
-
_man
_
thr
ottle
_min
.
get
());
return
_param_mpc
_manthr_min
.
get
()
+
throttle_stick_input
*
(
_
param_mpc_thr
_max
.
get
()
-
_param_mpc
_manthr_min
.
get
());
default:
// 0 or other: rescale to hover throttle at 0.5 stick
if
(
throttle_stick_input
<
0.5
f
)
{
return
(
_
throttle
_hover
.
get
()
-
_man
_
thr
ottle
_min
.
get
())
/
0.5
f
*
throttle_stick_input
+
_man
_
thr
ottle
_min
.
get
();
return
(
_
param_mpc_thr
_hover
.
get
()
-
_param_mpc
_manthr_min
.
get
())
/
0.5
f
*
throttle_stick_input
+
_param_mpc
_manthr_min
.
get
();
}
else
{
return
(
_
throttle
_max
.
get
()
-
_
throttle
_hover
.
get
())
/
0.5
f
*
(
throttle_stick_input
-
1.0
f
)
+
_
throttle
_max
.
get
();
return
(
_
param_mpc_thr
_max
.
get
()
-
_
param_mpc_thr
_hover
.
get
())
/
0.5
f
*
(
throttle_stick_input
-
1.0
f
)
+
_
param_mpc_thr
_max
.
get
();
}
}
}
...
...
@@ -425,9 +425,9 @@ MulticopterAttitudeControl::generate_attitude_setpoint(float dt, bool reset_yaw_
if
(
reset_yaw_sp
)
{
_man_yaw_sp
=
yaw
;
}
else
if
(
_manual_control_sp
.
z
>
0.05
f
||
_airmode
.
get
()
==
(
int32_t
)
Mixer
::
Airmode
::
roll_pitch_yaw
)
{
}
else
if
(
_manual_control_sp
.
z
>
0.05
f
||
_param_mc
_airmode
.
get
()
==
(
int32_t
)
Mixer
::
Airmode
::
roll_pitch_yaw
)
{
const
float
yaw_rate
=
math
::
radians
(
_
yaw_rate_scaling
.
get
());
const
float
yaw_rate
=
math
::
radians
(
_
param_mpc_man_y_max
.
get
());
attitude_setpoint
.
yaw_sp_move_rate
=
_manual_control_sp
.
r
*
yaw_rate
;
_man_yaw_sp
=
wrap_pi
(
_man_yaw_sp
+
attitude_setpoint
.
yaw_sp_move_rate
*
dt
);
}
...
...
@@ -598,9 +598,9 @@ MulticopterAttitudeControl::control_attitude_rates(float dt)
rates
(
1
)
-=
_sensor_bias
.
gyro_y_bias
;
rates
(
2
)
-=
_sensor_bias
.
gyro_z_bias
;
Vector3f
rates_p_scaled
=
_rate_p
.
emult
(
pid_attenuations
(
_tpa_break
point
_p
.
get
(),
_tpa_rate_p
.
get
()));
Vector3f
rates_i_scaled
=
_rate_i
.
emult
(
pid_attenuations
(
_tpa_break
point
_i
.
get
(),
_tpa_rate_i
.
get
()));
Vector3f
rates_d_scaled
=
_rate_d
.
emult
(
pid_attenuations
(
_tpa_break
point
_d
.
get
(),
_tpa_rate_d
.
get
()));
Vector3f
rates_p_scaled
=
_rate_p
.
emult
(
pid_attenuations
(
_
param_mc_
tpa_break_p
.
get
(),
_param_mc
_tpa_rate_p
.
get
()));
Vector3f
rates_i_scaled
=
_rate_i
.
emult
(
pid_attenuations
(
_
param_mc_
tpa_break_i
.
get
(),
_param_mc
_tpa_rate_i
.
get
()));
Vector3f
rates_d_scaled
=
_rate_d
.
emult
(
pid_attenuations
(
_
param_mc_
tpa_break_d
.
get
(),
_param_mc
_tpa_rate_d
.
get
()));
/* angular rates error */
Vector3f
rates_err
=
_rates_sp
-
rates
;
...
...
@@ -699,7 +699,7 @@ MulticopterAttitudeControl::publish_actuator_controls()
_actuators
.
timestamp_sample
=
_sensor_gyro
.
timestamp
;
/* scale effort by battery status */
if
(
_bat_scale_en
.
get
()
&&
_battery_status
.
scale
>
0.0
f
)
{
if
(
_
param_mc_
bat_scale_en
.
get
()
&&
_battery_status
.
scale
>
0.0
f
)
{
for
(
int
i
=
0
;
i
<
4
;
i
++
)
{
_actuators
.
control
[
i
]
*=
_battery_status
.
scale
;
}
...
...
@@ -810,8 +810,8 @@ MulticopterAttitudeControl::run()
* even bother running the attitude controllers */
if
(
_v_control_mode
.
flag_control_rattitude_enabled
)
{
_v_control_mode
.
flag_control_attitude_enabled
=
fabsf
(
_manual_control_sp
.
y
)
<=
_
rattitude_thres
.
get
()
&&
fabsf
(
_manual_control_sp
.
x
)
<=
_
rattitude_thres
.
get
();
fabsf
(
_manual_control_sp
.
y
)
<=
_
param_mc_ratt_th
.
get
()
&&
fabsf
(
_manual_control_sp
.
x
)
<=
_
param_mc_ratt_th
.
get
();
}
bool
attitude_setpoint_generated
=
false
;
...
...
@@ -837,9 +837,9 @@ MulticopterAttitudeControl::run()
if
(
manual_control_updated
)
{
/* manual rates control - ACRO mode */
Vector3f
man_rate_sp
(
math
::
superexpo
(
_manual_control_sp
.
y
,
_acro_expo
_rp
.
get
(),
_acro_supe
re
xpo
_rp
.
get
()),
math
::
superexpo
(
-
_manual_control_sp
.
x
,
_acro_expo
_rp
.
get
(),
_acro_supe
re
xpo
_rp
.
get
()),
math
::
superexpo
(
_manual_control_sp
.
r
,
_acro_expo_y
.
get
(),
_acro_supe
re
xpo
_
y
.
get
()));
math
::
superexpo
(
_manual_control_sp
.
y
,
_param_mc
_acro_expo
.
get
(),
_param_mc
_acro_supexpo
.
get
()),
math
::
superexpo
(
-
_manual_control_sp
.
x
,
_param_mc
_acro_expo
.
get
(),
_param_mc
_acro_supexpo
.
get
()),
math
::
superexpo
(
_manual_control_sp
.
r
,
_param_mc
_acro_expo_y
.
get
(),
_param_mc
_acro_supexpoy
.
get
()));
_rates_sp
=
man_rate_sp
.
emult
(
_acro_rate_max
);
_thrust_sp
=
_manual_control_sp
.
z
;
publish_rates_setpoint
();
...
...
@@ -883,7 +883,7 @@ MulticopterAttitudeControl::run()
_loop_update_rate_hz
=
_loop_update_rate_hz
*
0.5
f
+
loop_update_rate
*
0.5
f
;
dt_accumulator
=
0
;
loop_counter
=
0
;
_lp_filters_d
.
set_cutoff_frequency
(
_loop_update_rate_hz
,
_d
_
term_cutoff
_freq
.
get
());
_lp_filters_d
.
set_cutoff_frequency
(
_loop_update_rate_hz
,
_
param_mc_
dterm_cutoff
.
get
());
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment