File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -56,13 +56,17 @@ void pid_update(
5656 const RefloatConfig * config ,
5757 float dt
5858) {
59- pid -> p = setpoint - imu -> balance_pitch ;
60- pid -> i = pid -> i + pid -> p * config -> ki * LOOP_HERTZ_COMPAT * dt ;
59+ float error = setpoint - imu -> balance_pitch ;
6160
61+ pid -> p = error * config -> kp ;
62+
63+ pid -> i = pid -> i + error * config -> ki * LOOP_HERTZ_COMPAT * dt ;
6264 if (config -> ki_limit > 0 && fabsf (pid -> i ) > config -> ki_limit ) {
6365 pid -> i = config -> ki_limit * sign (pid -> i );
6466 }
6567
68+ pid -> rate_p = - imu -> pitch_rate * config -> kp2 ;
69+
6670 // brake scale coefficient smoothing
6771 if (md -> erpm < -500 ) {
6872 ema_update (& pid -> p_fwd_scale , config -> kp_brake );
@@ -80,8 +84,6 @@ void pid_update(
8084 ema_update (& pid -> rate_p_bwd_scale , 1.0f );
8185 }
8286
83- pid -> p *= config -> kp * (pid -> p > 0 ? pid -> p_fwd_scale .value : pid -> p_bwd_scale .value );
84-
85- pid -> rate_p = - imu -> pitch_rate * config -> kp2 ;
87+ pid -> p *= pid -> p > 0 ? pid -> p_fwd_scale .value : pid -> p_bwd_scale .value ;
8688 pid -> rate_p *= pid -> rate_p > 0 ? pid -> rate_p_fwd_scale .value : pid -> rate_p_bwd_scale .value ;
8789}
You can’t perform that action at this time.
0 commit comments