Skip to content

Commit f81b86e

Browse files
committed
autotune: simulate step and disturbance response
1 parent f09e06f commit f81b86e

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

autotune/autotune.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,17 @@ def updateClosedLoop(self):
605605

606606
closed_loop = ctrl.interconnect([delays, sampler, sum_feedback, feedforward, sum_control, p_control, i_control, d_control, id_control, plant], inputs='r', outputs='y')
607607

608-
t_out,y_out = ctrl.step_response(closed_loop, T=np.arange(0,1,dt))
608+
t_out,y_out = ctrl.step_response(closed_loop, T=np.arange(0,2,dt))
609+
610+
# Add disturbance
611+
sum_feedback_no_ref = ctrl.summing_junction(inputs=['-y'], output='e')
612+
sum_control_with_disturbance = ctrl.summing_junction(inputs=['pid_out', 'disturbance'], output='u')
613+
disturbance_loop = ctrl.interconnect([sampler, sum_feedback_no_ref, sum_control_with_disturbance, p_control, i_control, d_control, id_control, plant], inputs='disturbance', outputs='y')
614+
d = np.zeros_like(t_out)
615+
d[t_out >= 1.0] = -0.05 #TODO: parameterize
616+
_, y_d = ctrl.forced_response(disturbance_loop, t_out, d)
617+
y_out += y_d
618+
609619
self.plotClosedLoop(t_out, y_out)
610620
w = np.logspace(-1, 3, 40).tolist()
611621
mag, phase, omega = ctrl.bode(plant, omega=np.asarray(w), plot=False)

0 commit comments

Comments
 (0)