@@ -127,20 +127,20 @@ void PidGizmoMF0::control_Angle(bool zero_integrators) {
127127 integral_roll += error_roll * imu.dt ;
128128 integral_roll = constrain (integral_roll, -i_limit, i_limit); // Saturate integrator to prevent unsafe buildup
129129 float derivative_roll = ahr.gx ;
130- pid.roll_p = Kp_ro_pi_angle * error_roll;
131- pid.roll_i = Ki_ro_pi_angle * integral_roll;
132- pid.roll_d = -Kd_ro_pi_angle * derivative_roll;
133- pid.roll = pid.roll_p + pid.roll_i + pid.roll_d ;
130+ pid.roll . p = Kp_ro_pi_angle * error_roll;
131+ pid.roll . i = Ki_ro_pi_angle * integral_roll;
132+ pid.roll . d = -Kd_ro_pi_angle * derivative_roll;
133+ pid.roll . sum = pid.roll . p + pid.roll . i + pid.roll . d ;
134134
135135 // Pitch PID
136136 float error_pitch = pitch_des - ahr.pitch ;
137137 integral_pitch += error_pitch * imu.dt ;
138138 integral_pitch = constrain (integral_pitch, -i_limit, i_limit); // Saturate integrator to prevent unsafe buildup
139139 float derivative_pitch = ahr.gy ;
140- pid.pitch_p = Kp_ro_pi_angle * error_pitch;
141- pid.pitch_i = Ki_ro_pi_angle * integral_pitch;
142- pid.pitch_d = -Kd_ro_pi_angle * derivative_pitch;
143- pid.pitch = pid.pitch_p + pid.pitch_i + pid.pitch_d ;
140+ pid.pitch . p = Kp_ro_pi_angle * error_pitch;
141+ pid.pitch . i = Ki_ro_pi_angle * integral_pitch;
142+ pid.pitch . d = -Kd_ro_pi_angle * derivative_pitch;
143+ pid.pitch . sum = pid.pitch . p + pid.pitch . i + pid.pitch . d ;
144144
145145 // Yaw PID
146146 if (-0.02 < rcl.yaw && rcl.yaw < 0.02 ) {
@@ -151,10 +151,10 @@ void PidGizmoMF0::control_Angle(bool zero_integrators) {
151151 float error_yaw = degreeModulus (yaw_desired - ahr.yaw );
152152 float desired_yawRate = error_yaw / 0.5 ; // set desired yawRate such that it gets us to desired yaw in 0.5 second
153153 float derivative_yaw = desired_yawRate - ahr.gz ;
154- pid.yaw_p = Kp_yaw_angle * error_yaw;
155- pid.yaw_i = Kd_yaw_angle * derivative_yaw;
156- pid.yaw_d = 0 ;
157- pid.yaw = pid.yaw_p + pid.yaw_i + pid.yaw_d ;
154+ pid.yaw . p = Kp_yaw_angle * error_yaw;
155+ pid.yaw . i = Kd_yaw_angle * derivative_yaw;
156+ pid.yaw . d = 0 ;
157+ pid.yaw . sum = pid.yaw . p + pid.yaw . i + pid.yaw . d ;
158158
159159 // update yaw rate controller
160160 error_yawRate_prev = 0 ;
@@ -164,10 +164,10 @@ void PidGizmoMF0::control_Angle(bool zero_integrators) {
164164 integral_yawRate += error_yawRate * imu.dt ;
165165 integral_yawRate = constrain (integral_yawRate, -i_limit, i_limit); // Saturate integrator to prevent unsafe buildup
166166 float derivative_yawRate = (error_yawRate - error_yawRate_prev) / imu.dt ;
167- pid.yaw_p = Kp_yaw_rate * error_yawRate;
168- pid.yaw_i = Ki_yaw_rate * integral_yawRate;
169- pid.yaw_d = Kd_yaw_rate * derivative_yawRate;
170- pid.yaw = pid.yaw_p + pid.yaw_i + pid.yaw_d ;
167+ pid.yaw . p = Kp_yaw_rate * error_yawRate;
168+ pid.yaw . i = Ki_yaw_rate * integral_yawRate;
169+ pid.yaw . d = Kd_yaw_rate * derivative_yawRate;
170+ pid.yaw . sum = pid.yaw . p + pid.yaw . i + pid.yaw . d ;
171171
172172 // Update derivative variables
173173 error_yawRate_prev = error_yawRate;
@@ -206,30 +206,30 @@ void PidGizmoMF0::control_Rate(bool zero_integrators) {
206206 integral_roll += error_roll * imu.dt ;
207207 integral_roll = constrain (integral_roll, -i_limit, i_limit); // Saturate integrator to prevent unsafe buildup
208208 float derivative_roll = (error_roll - error_roll_prev) / imu.dt ;
209- pid.roll_p = Kp_ro_pi_rate * error_roll;
210- pid.roll_i = Ki_ro_pi_rate * integral_roll;
211- pid.roll_d = Kd_ro_pi_rate * derivative_roll;
212- pid.roll = pid.roll_p + pid.roll_i + pid.roll_d ;
209+ pid.roll . p = Kp_ro_pi_rate * error_roll;
210+ pid.roll . i = Ki_ro_pi_rate * integral_roll;
211+ pid.roll . d = Kd_ro_pi_rate * derivative_roll;
212+ pid.roll . sum = pid.roll . p + pid.roll . i + pid.roll . d ;
213213
214214 // Pitch
215215 float error_pitch = pitchRate_des - ahr.gy ;
216216 integral_pitch += error_pitch * imu.dt ;
217217 integral_pitch = constrain (integral_pitch, -i_limit, i_limit); // Saturate integrator to prevent unsafe buildup
218218 float derivative_pitch = (error_pitch - error_pitch_prev) / imu.dt ;
219- pid.pitch_p = Kp_ro_pi_rate * error_pitch;
220- pid.pitch_i = Ki_ro_pi_rate * integral_pitch;
221- pid.pitch_d = Kd_ro_pi_rate * derivative_pitch;
222- pid.pitch = pid.pitch_p + pid.pitch_i + pid.pitch_d ;
219+ pid.pitch . p = Kp_ro_pi_rate * error_pitch;
220+ pid.pitch . i = Ki_ro_pi_rate * integral_pitch;
221+ pid.pitch . d = Kd_ro_pi_rate * derivative_pitch;
222+ pid.pitch . sum = pid.pitch . p + pid.pitch . i + pid.pitch . d ;
223223
224224 // Yaw, stablize on rate from GyroZ
225225 float error_yaw = yawRate_des - ahr.gz ;
226226 integral_yaw += error_yaw * imu.dt ;
227227 integral_yaw = constrain (integral_yaw, -i_limit, i_limit); // Saturate integrator to prevent unsafe buildup
228228 float derivative_yaw = (error_yaw - error_yaw_prev) / imu.dt ;
229- pid.yaw_p = Kp_yaw_rate * error_yaw;
230- pid.yaw_i = Ki_yaw_rate * integral_yaw;
231- pid.yaw_d = Kd_yaw_rate * derivative_yaw;
232- pid.yaw = pid.yaw_p + pid.yaw_i + pid.yaw_d ;
229+ pid.yaw . p = Kp_yaw_rate * error_yaw;
230+ pid.yaw . i = Ki_yaw_rate * integral_yaw;
231+ pid.yaw . d = Kd_yaw_rate * derivative_yaw;
232+ pid.yaw . sum = pid.yaw . p + pid.yaw . i + pid.yaw . d ;
233233
234234 // Update derivative variables
235235 error_roll_prev = error_roll;
0 commit comments