Skip to content

Commit a46f40e

Browse files
committed
fixed control.forced_response error
1 parent 4293f14 commit a46f40e

File tree

5 files changed

+10
-10
lines changed

5 files changed

+10
-10
lines changed

.idea/efficient-calibration-embedded-MPC.iml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

kalman.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,17 @@ def kalman_design_simple(A, B, C, D, Qn, Rn, type='predictor'):
7474
\hat y_{k} = Cx_k + Du_k
7575
"""
7676

77-
P,W,K, = control.dare(np.transpose(A), np.transpose(C), Qn, Rn)
77+
P, W, K, = control.dare(np.transpose(A), np.transpose(C), Qn, Rn)
7878
# L = np.transpose(K) # Kalman gain
7979

8080
if type == 'filter':
81-
L = P@np.transpose(C) @ sp.linalg.basic.inv(C@P@np.transpose(C)+Rn)
81+
L = P @ np.transpose(C) @ sp.linalg.basic.inv(C @ P @ np.transpose(C) + Rn)
8282
elif type == 'predictor':
83-
L = A@P@np.transpose(C) @ sp.linalg.basic.inv(C@P@np.transpose(C)+Rn)
83+
L = A @ P @ np.transpose(C) @ sp.linalg.basic.inv(C @ P @np.transpose(C) + Rn)
8484
else:
8585
raise ValueError("Unknown Kalman design type. Specify either filter or predictor!")
8686

87-
return L,P,W
87+
return L, P, W
8888

8989

9090
class LinearStateEstimator:
@@ -102,7 +102,7 @@ def __init__(self, x0, A, B, C, D, L=None):
102102
self.nu = __second_dim__(B) # number of controlled inputs
103103
self.ny = __first_dim__(C)
104104

105-
def out_y(self,u):
105+
def out_y(self, u):
106106
return self.y
107107

108108
def predict(self, u):
@@ -131,7 +131,7 @@ def sim(self, u_seq, x=None):
131131
for i in range(Np):
132132
u_tmp = u_seq[i]
133133
y[i,:] = self.C @ x_tmp + self.D @ u_tmp
134-
x_tmp = self.A @x_tmp + self.B @ u_tmp
134+
x_tmp = self.A @ x_tmp + self.B @ u_tmp
135135

136136
#y[Np] = self.C @ x_tmp + self.D @ u_tmp # not really true for D. Here it is 0 anyways
137137
return y

paper/ms.pdf

-110 Bytes
Binary file not shown.

pendulum_MPC_sim.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def simulate_pendulum_MPC(sim_options):
142142
N_sim_d = N_sim_d + N_skip
143143
e = np.random.randn(N_sim_d)
144144
te = np.arange(N_sim_d) * Ts_fast
145-
_, d, _ = control.forced_response(Hu, te, e)
145+
_, d = control.forced_response(Hu, te, e, return_x=False)
146146
d_fast = d[N_skip:]
147147
#td = np.arange(len(d)) * Ts_fast
148148

@@ -214,7 +214,7 @@ def simulate_pendulum_MPC(sim_options):
214214
EMERGENCY_STOP = True
215215

216216
x0_est = x0
217-
KF = LinearStateEstimator(x0_est, Ad, Bd, Cd, Dd,L)
217+
KF = LinearStateEstimator(x0_est, Ad, Bd, Cd, Dd, L)
218218

219219
# Simulate in closed loop
220220
len_sim = get_parameter(sim_options, 'len_sim') # simulation length (s)

0 commit comments

Comments
 (0)