From 72a3e2efb691a3de6be9d629c89c0e6cbc54cf65 Mon Sep 17 00:00:00 2001 From: George Zogopoulos Date: Thu, 2 Jan 2025 11:44:19 +0100 Subject: [PATCH] Plane: ATT.DesPitch now reports actual target, not nav output --- ArduPlane/Attitude.cpp | 6 +++--- ArduPlane/Log.cpp | 2 +- ArduPlane/Plane.h | 5 ++++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ArduPlane/Attitude.cpp b/ArduPlane/Attitude.cpp index 17cc78bc17397..d46fa9edd5638 100644 --- a/ArduPlane/Attitude.cpp +++ b/ArduPlane/Attitude.cpp @@ -209,7 +209,7 @@ float Plane::stabilize_pitch_get_pitch_out() const bool quadplane_in_frwd_transition = false; #endif - int32_t demanded_pitch = nav_pitch_cd + int32_t(g.pitch_trim * 100.0) + SRV_Channels::get_output_scaled(SRV_Channel::k_throttle) * g.kff_throttle_to_pitch; + demanded_pitch_cd = nav_pitch_cd + int32_t(g.pitch_trim * 100.0) + SRV_Channels::get_output_scaled(SRV_Channel::k_throttle) * g.kff_throttle_to_pitch; bool disable_integrator = false; if (control_mode == &mode_stabilize && channel_pitch->get_control_in() != 0) { disable_integrator = true; @@ -224,10 +224,10 @@ float Plane::stabilize_pitch_get_pitch_out() !control_mode->does_auto_throttle() && flare_mode == FlareMode::ENABLED_PITCH_TARGET && throttle_at_zero()) { - demanded_pitch = landing.get_pitch_cd(); + demanded_pitch_cd = landing.get_pitch_cd(); } - return pitchController.get_servo_out(demanded_pitch - ahrs.pitch_sensor, speed_scaler, disable_integrator, + return pitchController.get_servo_out(demanded_pitch_cd - ahrs.pitch_sensor, speed_scaler, disable_integrator, ground_mode && !(plane.flight_option_enabled(FlightOptions::DISABLE_GROUND_PID_SUPPRESSION))); } diff --git a/ArduPlane/Log.cpp b/ArduPlane/Log.cpp index a258269779a39..a72be66592f71 100644 --- a/ArduPlane/Log.cpp +++ b/ArduPlane/Log.cpp @@ -7,7 +7,7 @@ void Plane::Log_Write_Attitude(void) { Vector3f targets { // Package up the targets into a vector for commonality with Copter usage of Log_Wrote_Attitude nav_roll_cd * 0.01f, - nav_pitch_cd * 0.01f, + demanded_pitch_cd * 0.01f, 0 //Plane does not have the concept of navyaw. This is a placeholder. }; diff --git a/ArduPlane/Plane.h b/ArduPlane/Plane.h index b272a13b11ff1..094223c11eee2 100644 --- a/ArduPlane/Plane.h +++ b/ArduPlane/Plane.h @@ -668,9 +668,12 @@ class Plane : public AP_Vehicle { // The instantaneous desired bank angle. Hundredths of a degree int32_t nav_roll_cd; - // The instantaneous desired pitch angle. Hundredths of a degree + // The instantaneous navigator-commanded pitch angle. Hundredths of a degree int32_t nav_pitch_cd; + // The instantaneous desired pitch angle. Hundredths of a degree. + int32_t demanded_pitch_cd; + // the aerodynamic load factor. This is calculated from the demanded // roll before the roll is clipped, using 1/sqrt(cos(nav_roll)) float aerodynamic_load_factor = 1.0f;