Skip to content

Commit 9ceded3

Browse files
committed
added ekf to pre-compilation
1 parent ebfaf96 commit 9ceded3

File tree

4 files changed

+48
-21
lines changed

4 files changed

+48
-21
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ModelPredictiveControl"
22
uuid = "61f9bdb8-6ae4-484a-811f-bbf86720c31c"
33
authors = ["Francis Gagnon"]
4-
version = "0.5.10"
4+
version = "0.6.0"
55

66
[deps]
77
ControlSystemsBase = "aaaaaaaa-a6ca-5380-bf3e-84a91bcd477e"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ for more detailed examples.
111111
- [x] Kalman filter
112112
- [x] Luenberger observer
113113
- [x] internal model structure
114-
- [ ] extended Kalman filter
114+
- [x] extended Kalman filter
115115
- [x] unscented Kalman filter
116116
- [ ] moving horizon estimator
117117
- [x] observers in predictor form to ease control applications

example/juMPC.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ setconstraint!(mpc, ŷmin=[-Inf,-Inf], ŷmax=[55, 35])
109109
setconstraint!(mpc, Δumin=[-Inf,-Inf],Δumax=[+Inf,+Inf])
110110

111111
moveinput!(mpc, mpc.estim.model.yop + [0, 2], mpc.estim.model.dop)
112-
display(getinfo(mpc)[1])
112+
display(getinfo(mpc)[2])
113113

114114
nmpc = NonLinMPC(kf, Hp=15, Hc=1, Mwt=[1, 1] , Nwt=[0.1, 0.1], Cwt=1e5, Ewt=0.0)
115115

@@ -120,7 +120,7 @@ setconstraint!(nmpc, ŷmin=[-Inf,-Inf], ŷmax=[55, 35])
120120
setconstraint!(nmpc, Δumin=[-Inf,-Inf],Δumax=[+Inf,+Inf])
121121

122122
moveinput!(nmpc, nmpc.estim.model.yop + [0, 2], nmpc.estim.model.dop)
123-
display(getinfo(nmpc)[1])
123+
display(getinfo(nmpc)[2])
124124

125125
function test_mpc(model, mpc)
126126
N = 200

src/precompile_calls.jl

Lines changed: 44 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,64 @@ y = model()
66

77
mpc_im = setconstraint!(LinMPC(InternalModel(model)), ŷmin=[45, -Inf])
88
initstate!(mpc_im, model.uop, y)
9-
u = mpc_im([50, 30], ym=y)
9+
mpc_im.estim([50, 30])
10+
u = mpc_im([55, 30], ym=y)
11+
sim!(mpc_im, 3)
1012

1113
mpc_kf = setconstraint!(LinMPC(KalmanFilter(model)), ŷmin=[45, -Inf])
1214
initstate!(mpc_kf, model.uop, model())
13-
u = mpc_kf([50, 30])
14-
sim!(mpc_kf, 15)
15+
mpc_kf.estim()
16+
u = mpc_kf([55, 30])
17+
sim!(mpc_kf, 3, [55, 30])
18+
1519
mpc_lo = setconstraint!(LinMPC(Luenberger(model)), ŷmin=[45, -Inf])
1620
initstate!(mpc_lo, model.uop, model())
17-
u = mpc_lo([50, 30])
18-
sim!(mpc_lo, 15)
21+
mpc_lo.estim()
22+
u = mpc_lo([55, 30])
23+
sim!(mpc_lo, 3, [55, 30])
24+
1925
mpc_ukf = setconstraint!(LinMPC(UnscentedKalmanFilter(model)), ŷmin=[45, -Inf])
2026
initstate!(mpc_ukf, model.uop, model())
21-
u = mpc_ukf([50, 30])
22-
sim!(mpc_ukf, 15)
27+
mpc_ukf.estim()
28+
u = mpc_ukf([55, 3])
29+
sim!(mpc_ukf, 3, [55, 30])
30+
31+
mpc_ekf = setconstraint!(LinMPC(ExtendedKalmanFilter(model)), ŷmin=[45, -Inf])
32+
initstate!(mpc_ekf, model.uop, model())
33+
mpc_ekf.estim()
34+
u = mpc_ekf([55, 30])
35+
sim!(mpc_ekf, 3, [55, 30])
36+
2337
mpc_skf = setconstraint!(LinMPC(SteadyKalmanFilter(model)), ŷmin=[45, -Inf])
2438
initstate!(mpc_skf, model.uop, model())
25-
u = mpc_skf([50, 30])
26-
sim!(mpc_skf, 15)
39+
mpc_skf.estim()
40+
u = mpc_skf([55, 30])
41+
sim!(mpc_skf, 3, [55, 30])
2742

28-
sim!(model, 15)
43+
nmpc_skf = setconstraint!(NonLinMPC(SteadyKalmanFilter(model), Cwt=Inf), ŷmin=[45, -Inf])
44+
initstate!(nmpc_skf, model.uop, model())
45+
nmpc_skf.estim()
46+
u = nmpc_skf([55, 30])
47+
sim!(nmpc_skf, 3, [55, 30])
48+
49+
sim!(model, 3)
2950

3051
f(x,u,_) = model.A*x + model.Bu*u
3152
h(x,_) = model.C*x
3253

33-
nlmodel = setop!(NonLinModel(f, h, Ts, 2, 2, 2))
54+
nlmodel = setop!(NonLinModel(f, h, Ts, 2, 2, 2), uop=[10, 10], yop=[50, 30])
3455
y = nlmodel()
35-
nmpc_im = setconstraint!(NonLinMPC(InternalModel(nlmodel)), ŷmin=[45, -Inf])
56+
nmpc_im = setconstraint!(NonLinMPC(InternalModel(nlmodel), Cwt=Inf), ŷmin=[45, -Inf])
3657
initstate!(nmpc_im, nlmodel.uop, y)
37-
u = nmpc_im([50, 30], ym=y)
38-
sim!(nmpc_im, 15)
39-
nmpc_ukf = setconstraint!(NonLinMPC(UnscentedKalmanFilter(nlmodel)), ŷmin=[45, -Inf])
58+
u = nmpc_im([55, 30], ym=y)
59+
sim!(nmpc_im, 3, [55, 30])
60+
61+
nmpc_ukf = setconstraint!(NonLinMPC(UnscentedKalmanFilter(nlmodel), Cwt=Inf), ŷmin=[45, -Inf])
4062
initstate!(nmpc_ukf, nlmodel.uop, y)
41-
u = nmpc_ukf([50, 30])
42-
sim!(nmpc_ukf, 15)
63+
u = nmpc_ukf([55, 30])
64+
sim!(nmpc_ukf, 3, [55, 30])
65+
66+
nmpc_ekf = setconstraint!(NonLinMPC(ExtendedKalmanFilter(model), Cwt=Inf), ŷmin=[45, -Inf])
67+
initstate!(nmpc_ekf, model.uop, model())
68+
u = nmpc_ekf([55, 30])
69+
sim!(nmpc_ekf, 3, [55, 30])

0 commit comments

Comments
 (0)