How to update PID after system identification with closed loop PID Autotuner?
In the literature, system identification can be performed using various techniques like RLS, ARX, ARMAX, Kalman Filter, or frequency domain methods. In quadcopter systems, PX4 uses an autotune mode with the RLS method, and after that, GMVC law is applied to find optimal PID parameters. Similarly, Simulink has a ‘Closed-loop PID autotuner’ block.
What I’m confused about is the process of updating the PID parameters after system identification, which is typically done in a closed-loop setup. For example, let’s say I have an active PID with P: 3, I: 4, D: 2.8. If we use GMVC or another method to identify new PID parameters based on the closed-loop system response, how do we update these PID values?
Directly replacing the old parameters with the new ones seems problematic because the system identification itself was based on the current closed-loop response. I’m considering that we might need to combine the old and new PID parameters into a series configuration, which implies having two different PIDs in sequence. However, this doesn’t seem ideal.
Would it make more sense to extract the transfer function of the closed-loop system, remove the contribution of the current PID, and then apply the new PID parameters based on the open-loop transfer function by adding the old ones and test?In the literature, system identification can be performed using various techniques like RLS, ARX, ARMAX, Kalman Filter, or frequency domain methods. In quadcopter systems, PX4 uses an autotune mode with the RLS method, and after that, GMVC law is applied to find optimal PID parameters. Similarly, Simulink has a ‘Closed-loop PID autotuner’ block.
What I’m confused about is the process of updating the PID parameters after system identification, which is typically done in a closed-loop setup. For example, let’s say I have an active PID with P: 3, I: 4, D: 2.8. If we use GMVC or another method to identify new PID parameters based on the closed-loop system response, how do we update these PID values?
Directly replacing the old parameters with the new ones seems problematic because the system identification itself was based on the current closed-loop response. I’m considering that we might need to combine the old and new PID parameters into a series configuration, which implies having two different PIDs in sequence. However, this doesn’t seem ideal.
Would it make more sense to extract the transfer function of the closed-loop system, remove the contribution of the current PID, and then apply the new PID parameters based on the open-loop transfer function by adding the old ones and test? In the literature, system identification can be performed using various techniques like RLS, ARX, ARMAX, Kalman Filter, or frequency domain methods. In quadcopter systems, PX4 uses an autotune mode with the RLS method, and after that, GMVC law is applied to find optimal PID parameters. Similarly, Simulink has a ‘Closed-loop PID autotuner’ block.
What I’m confused about is the process of updating the PID parameters after system identification, which is typically done in a closed-loop setup. For example, let’s say I have an active PID with P: 3, I: 4, D: 2.8. If we use GMVC or another method to identify new PID parameters based on the closed-loop system response, how do we update these PID values?
Directly replacing the old parameters with the new ones seems problematic because the system identification itself was based on the current closed-loop response. I’m considering that we might need to combine the old and new PID parameters into a series configuration, which implies having two different PIDs in sequence. However, this doesn’t seem ideal.
Would it make more sense to extract the transfer function of the closed-loop system, remove the contribution of the current PID, and then apply the new PID parameters based on the open-loop transfer function by adding the old ones and test? systemidentification, pid, transfer function MATLAB Answers — New Questions