mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-14 15:00:36 +08:00
Auto mode traj - limit yaw setpoint rate of change when generated in the flight task instead of clamping the yaw rate in the controller
Move yaw setpoint slew rate from AutoLineSmoothVel to Auto. The slew rate is now applied consistently to all the auto FlightTasks
This commit is contained in:
@@ -147,9 +147,6 @@ private:
|
||||
*/
|
||||
matrix::Vector3f pid_attenuations(float tpa_breakpoint, float tpa_rate);
|
||||
|
||||
/** lower yawspeed limit in auto modes because we expect yaw steps */
|
||||
void adapt_auto_yaw_rate_limit();
|
||||
|
||||
AttitudeControl _attitude_control; /**< class for attitude control calculations */
|
||||
|
||||
int _v_att_sub{-1}; /**< vehicle attitude subscription */
|
||||
@@ -249,7 +246,6 @@ private:
|
||||
(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_yawrauto_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,
|
||||
|
||||
@@ -149,7 +149,6 @@ MulticopterAttitudeControl::parameters_updated()
|
||||
// angular rate limits
|
||||
using math::radians;
|
||||
_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(_param_mc_acro_r_max.get()), radians(_param_mc_acro_p_max.get()), radians(_param_mc_acro_y_max.get()));
|
||||
@@ -195,16 +194,6 @@ MulticopterAttitudeControl::vehicle_control_mode_poll()
|
||||
|
||||
if (updated) {
|
||||
orb_copy(ORB_ID(vehicle_control_mode), _v_control_mode_sub, &_v_control_mode);
|
||||
adapt_auto_yaw_rate_limit();
|
||||
}
|
||||
}
|
||||
|
||||
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(_param_mc_yawrauto_max.get()));
|
||||
} else {
|
||||
_attitude_control.setRateLimitYaw(math::radians(_param_mc_yawrate_max.get()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user