From eb25908bce076d0589c670b325da40c2ed118935 Mon Sep 17 00:00:00 2001 From: Per Skarin <per.skarin@control.lth.se> Date: Tue, 8 Sep 2020 14:27:59 +0000 Subject: [PATCH] Import rate-switching MPC evaluation --- README.md | 12 ++- execinfo.slx | Bin 0 -> 24831 bytes freqinfo.m | 15 ++++ getdlq.m | 9 ++ init.m | 28 ++++++ init_mpc.m | 22 +++++ lqgsamp.m | 57 +++++++++++++ metrics.slx | Bin 0 -> 25406 bytes rsmpc.slx | Bin 0 -> 38976 bytes runquadprog.m | 53 ++++++++++++ simrsmpc.m | 124 +++++++++++++++++++++++++++ sysmodel.m | 16 ++++ tt_rsmpc_init.m | 55 ++++++++++++ tt_rsmpc_main.m | 223 ++++++++++++++++++++++++++++++++++++++++++++++++ 14 files changed, 612 insertions(+), 2 deletions(-) create mode 100644 execinfo.slx create mode 100644 freqinfo.m create mode 100644 getdlq.m create mode 100644 init.m create mode 100644 init_mpc.m create mode 100644 lqgsamp.m create mode 100644 metrics.slx create mode 100644 rsmpc.slx create mode 100644 runquadprog.m create mode 100644 simrsmpc.m create mode 100644 sysmodel.m create mode 100644 tt_rsmpc_init.m create mode 100644 tt_rsmpc_main.m diff --git a/README.md b/README.md index dd93048..b14e865 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,10 @@ -# cotc-rsmpc -Examples of rate switcing MPC +# Control-over-the-Cloud - Rate-Switching MPC +Evaluation of a rate switching, state and input constrained, MPC, derived from a continuous time optimal design. This code has been tested with [Matlab Simulink v 9.2 (R2018b)](https://www.mathworks.com/products/matlab.html) and [TrueTime 2.0](http://www.control.lth.se/research/tools-and-software/truetime). + +### Primary files +- init.m Configures the example. +- rsmpc.slx Simulink model. +- tt\_rsmpc\_init.m RS-MPC init file, TrueTime. +- tt\_rsmpc\_main.m RS-MPC implementation, TrueTime. +- simrsmpc.m Runs simulation. See file header for options. +- freqinfo.m Finds freq. range from singular values. diff --git a/execinfo.slx b/execinfo.slx new file mode 100644 index 0000000000000000000000000000000000000000..c2f35bb6b78ecdeb9f0955f1661a662480588159 GIT binary patch literal 24831 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 literal 0 HcmV?d00001 diff --git a/freqinfo.m b/freqinfo.m new file mode 100644 index 0000000..a4af5da --- /dev/null +++ b/freqinfo.m @@ -0,0 +1,15 @@ +figure; +w = linspace(0.1, 1000, 10000); +[sv,w] = sigma(LQc,w); +svn = sv/max(sv); +larger = find(svn>0.71); % -3dB +smaller = find(svn<=0.71); +bf = [w(larger(end)) w(smaller(1))]; +bsv = [svn(larger(end)) svn(smaller(1))]; +step=(bsv(1)-0.71)/(bsv(1)-bsv(2)); +bw = bf(1)+(bf(2)-bf(1))*step +sample_h=[0.15 0.6]/bw +sample_f=1./sample_h +%csvwrite('sigma.csv', [w svn']); +loglog(w, svn); +grid() diff --git a/getdlq.m b/getdlq.m new file mode 100644 index 0000000..7899153 --- /dev/null +++ b/getdlq.m @@ -0,0 +1,9 @@ +function [SysD,Q,R,N,K,S] = getdlq(SysC, Qc, Rc, h) +% Get a discrete time LQ, sampled system and cost matrices, from a continous definition + [SysD,Q,R,N,R1,Qconst] = lqgsamp(SysC,h,Qc,Rc,zeros(size(SysC.B)),zeros(size(SysC.A))); + SysD = modred(SysD, 4); + Q = Q(1:size(SysD.A,1),1:size(SysD.A,1)); + N = N(1:size(SysD.A,1), 1:size(SysD.B,2)); + [K,S] = dlqr(SysD.A, SysD.B, Q, R, N); +end + diff --git a/init.m b/init.m new file mode 100644 index 0000000..349ec5b --- /dev/null +++ b/init.m @@ -0,0 +1,28 @@ +zetaVariant = 0; + +f_hf = 30; +f_lf = f_hf/2; +h_hf = 1/f_hf; +h_lf = 1/f_lf; +N_lf = 10; +N_hf = 2*N_lf; +mpc_mode = 1; % 1 = A, 2 = B, 3 = C + +rng(1); + +SysC = sysmodel(); +Qc = diag([1500 20 0]); +Rc = 1; + +[Kc, Sc, Ec] = lqr(SysC, Qc, Rc); +LQc = ss(SysC.A-SysC.B*Kc, SysC.B, SysC.C, 0); +[SysD, Qd, Rd, Nd, Kd, Sd] = getdlq(SysC, Qc, Rc, h_hf); + +t = 10; +xinit = [0 0 0]; +simtime = h_hf * [0:1/h_hf * t] - 1/60; +simin_ref = [simtime; ones(1, length(simtime))*8]'; +simin_drop = [simtime; zeros(1, length(simtime))]'; +simin_au = [simtime; zeros(3,length(simtime))]'; + +experiment = {}; diff --git a/init_mpc.m b/init_mpc.m new file mode 100644 index 0000000..ac3d8de --- /dev/null +++ b/init_mpc.m @@ -0,0 +1,22 @@ +% Prepares an MPC configuration to use with quadprog +function [mpc] = init_mpc(h, SysC, Qc, Rc) + [SysD, Qd, Rd, Nd, Kd, Sd] = getdlq(SysC, Qc, Rc, h); + model = ss(SysD, h); + mpc.h = h; + mpc.A = model.A; + mpc.B = model.B; + mpc.C = model.C; + mpc.D = []; + mpc.Cx = repmat([0.55; 10; pi/4], 2, 1); + mpc.CX = [diag([1 1 1]); diag([-1 -1 -1])]; + mpc.Cu = [10; 10]; + mpc.CU = [1; -1]; + mpc.Q = Qd; + mpc.R = Rd; + mpc.N = Nd; + mpc.Xf = []; + mpc.Qf = Sd; + mpc.K = Kd; + mpc.S = Sd; + + diff --git a/lqgsamp.m b/lqgsamp.m new file mode 100644 index 0000000..f6d3d5d --- /dev/null +++ b/lqgsamp.m @@ -0,0 +1,57 @@ +function [sysd,Q1e,Q2e,Q12e,R1,Qconst] = lqgsamp(sysc,h,Q1c,Q2c,Q12c,R1,tau) +% +% [sysd,Q1,Q2,Q12,R1,Qconst] = lqgsamp(sysc,h,Q1c,Q2c,Q12c,R1c) +% [sysd,Q1,Q2,Q12,R1,Qconst] = lqgsamp(sysc,h,Q1c,Q2c,Q12c,R1c,tau) +% +% Sample a continous time LQ design + +if nargin < 7 + tau = 0; +end + +[A,B,C] = ssdata(sysc); + +totsize = size(A,2)+size(B,2); +a1 = size(A,1); % number of states +b2 = size(B,2); % number of inputs + +inttau = max(0,ceil(tau/h-1)); % whole samples extra delay +fractau = tau - inttau*h; % fractional delay + +% Sample the plant, the cost, and the noise +Q = [Q1c Q12c; Q12c' Q2c]; +[Phi2,r,Q2] = calcc2d([A B;zeros(b2,a1+b2)],blkdiag(R1,zeros(b2)),Q,fractau); +Gamma2 = Phi2(1:a1,a1+1:a1+b2); +[X,r,Q1] = calcc2d([A B;zeros(b2,a1+b2)],blkdiag(R1,zeros(b2)),Q,h-fractau); +Gamma2 = X(1:a1,1:a1)*Gamma2; +Gamma1 = X(1:a1,a1+1:a1+b2); +[Phi,R1,Q,Qconst] = calcc2d([A B;zeros(b2,a1+b2)],blkdiag(R1,zeros(b2)),Q,h); +R1 = R1(1:a1,1:a1); +Phi = Phi(1:a1,1:a1); + +% Build extended state-space model +Phie = [Phi Gamma2; zeros(b2,a1+b2)]; +Gammae = [Gamma1; eye(b2)]; +Ce = [C zeros(size(C,1),b2)]; +Ge = [eye(a1);zeros(b2,a1)]; +Q1e = Q2+Phi2(1:a1,:)'*Q1(1:a1,1:a1)*Phi2(1:a1,:); +Q2e = Q1(a1+1:end,a1+1:end); +Q12e = [Phi2(1:a1,:)'*Q1(1:a1,a1+1:end)]; + +% Add additional integer delays (if tau > h) +if inttau > 0 + Phie = blkdiag([Phie Gammae],eye((inttau-1)*b2)); + Gammae = zeros(size(Phie,1),b2); + Phie = [Phie; zeros(b2,size(Phie,2))]; + Gammae = [Gammae; eye(b2)]; + Ce = [Ce zeros(size(Ce,1),inttau*b2)]; + Ge = [Ge; zeros(inttau*b2,size(Ge,2))]; + Q1e = [Q1e Q12e; Q12e' Q2e]; + Q1e = blkdiag(Q1e,zeros((inttau-1)*b2)); + Q2e = zeros(size(Q2e)); + Q12e = zeros(size(Q1e,1),size(Q2e,2)); +end + +R1 = blkdiag(R1,zeros(size(Phie)-size(A))); + +sysd = ss(Phie,Gammae,Ce,0,h); diff --git a/metrics.slx b/metrics.slx new file mode 100644 index 0000000000000000000000000000000000000000..5b5905c6b4da86209a0ce23d8c6bfd808f049291 GIT binary patch literal 25406 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 Sfi#FRh%y+kF);jy0r3ETX)VhD literal 0 HcmV?d00001 diff --git a/rsmpc.slx b/rsmpc.slx new file mode 100644 index 0000000000000000000000000000000000000000..ed4b33f5dd3535e9bbce7c45e2ebcc6ef23201c8 GIT binary patch literal 38976 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 bSk463lL6kWY#?o73}Or=Yzz$BCW3eX;*Xj^ literal 0 HcmV?d00001 diff --git a/runquadprog.m b/runquadprog.m new file mode 100644 index 0000000..d5dc8e0 --- /dev/null +++ b/runquadprog.m @@ -0,0 +1,53 @@ +% Run quadprog optimizer +% mpc is the mpc configuration with the following fields: +% A,B System model matrices +% Q State cost +% Qf Terminal cost +% R Control signal cost +% N Cross-couping cost (may be [], which is typical in discrete design) +% CX,Cx State constraints +% CU,Uc Input constraints +% Xf Terminal constraints +% x is the current state estimate +% xref is the target state +% N is the prediction horizon +function [optx, fval, exitflag, output] = runquadprog(mpc, x, xref, Np, Nc) + ns = size(mpc.A, 1); % Number of states + ni = size(mpc.B, 2); % Number of inputs + + dx = x-xref; + + % Setup costs. f is linear costs which is not used. + H = blkdiag(kron(eye(Np-1), mpc.Q), mpc.Qf, kron(eye(Np), mpc.R)); + f = zeros(length(H),1); + + if isfield(mpc, 'N') == 1 && isempty(mpc.N) == 0 + H(1:size(mpc.Q,1)*Np, size(mpc.Q,1)*Np+1:end) = kron(eye(Np), mpc.N); + H(size(mpc.Q,1)*Np+1:end, 1:size(mpc.Q,1)*Np) = kron(eye(Np), mpc.N'); + end + + % Setup create constraint inequality + A1 = kron(eye(Np), mpc.CX); + A4 = kron(eye(Np), mpc.CU); + A2 = zeros(size(A1,1), size(A4, 2)); + A3 = zeros(size(A4,1), size(A1, 2)); + A = [A1 A2; A3 A4]; + + if isfield(mpc, 'Xf') == 0 || isempty(mpc.Xf) + mpc.Xf = mpc.Cx - mpc.CX*xref; + end + b = [repmat(mpc.Cx - mpc.CX*xref, Np-1,1); mpc.Xf; repmat(mpc.Cu, Np, 1)]; + % Setup equality constraints (the model) + Aeq1 = [zeros(ns,ns*Np); kron(eye(Np-1), -mpc.A) zeros(ns*(Np-1), ns)] + kron(eye(Np), eye(ns)); + Aeq2def = [eye(Nc, Nc) zeros(Nc, Np-Nc); zeros(Np-Nc, Nc-1) ones(Np-Nc, 1) zeros(Np-Nc, Np-Nc)]; + Aeq2 = kron(Aeq2def, -mpc.B); + Aeq = [Aeq1, Aeq2]; + beq_ = mpc.A * dx; + beq = [beq_; zeros((Np-1)*ns, 1)]; + + % Set optimizer options + options = optimoptions('quadprog', 'Display', 'off', 'MaxIterations', 200, 'OptimalityTolerance', 1e-8); + + x0 = dx; + [optx,fval,exitflag,output] = quadprog(H, f, A, b, Aeq, beq, [], [], x0, options); + diff --git a/simrsmpc.m b/simrsmpc.m new file mode 100644 index 0000000..b0df266 --- /dev/null +++ b/simrsmpc.m @@ -0,0 +1,124 @@ +function [experiment] = simcdc(name, mpcmode, zetaVariant) +% Runs named experiments. First run init.m. +% +% The named experiments are: +% 'singlestep' Performs a single step 0->0.50 and runs 5 seconds. Drops are random. +% 'repstep' Repeated step changes. +% 'largerepstep' Performs large steps close to the constraint. Note: Keeps u, does not use OL data. +% 'largerepstepol' Same as above but uses open loop when switching. +% 'disturb' A noisy disturbance is applied through the input u. +% +% mpc_mode is one of: +% 0: Local (LF) control only +% 1: Mode A +% 2: Mode B +% 3: Mode C +% 4: Disregard drop and run HF controller only (local HF control) +% +% zetaVariant is one of: +% 0: LQ +% 1: u(0) +% 2: Open loop, u(k-i) +% 3: u(1) +% +% After finished experiment use savesim(experiment) to store the result on disk. +% The result is stored in sim/{name}/{mode}/. + +h_hf = evalin('base', 'h_hf'); +refscale = 10/0.55; +rng(1); + +assignin('base', 'zetaVariant', zetaVariant); + +if strcmp(name, 'singlestep') + sp=0.35; + xinit = [-0.401 0 0]; % Small difference from reference allows Matlab to solve algebraic loop for LQc + T = h_hf * [0:1/h_hf * 2] - 1/60; + % Delay the reference so LQ doesn't kick in for all modes at the first step! + simin_ref = [T; ones(1, 5)*-0.4*refscale ones(1, length(T)-5) * sp*refscale]'; + simin_drop = [T; randi(2, 1, length(T))-1]'; + simin_au = [T; zeros(3,length(T))]'; + stopTime=T(end); +elseif strcmp(name, 'repstep') + xinit = [-0.401 0 0]; % Small difference from reference allows Matlab to solve algebraic loop for LQc + T = h_hf * [0:1/h_hf * 2] - 1/60; + % Delay the reference so LQ doesn't kick in for all modes at the first step! + simin_ref = [ones(1, 5)*-0.4*refscale ones(1, length(T)-5) * 0.4*refscale]; + simin_ref = kron(repmat([1 -1], 1, 90), simin_ref); + simin_drop = randi(2, 1, length(simin_ref))-1; + simin_au = zeros(3,length(simin_ref)); + T = h_hf * [0:length(simin_ref)-1]; + stopTime=T(end); + simin_ref = [T; simin_ref]'; + simin_drop = [T; simin_drop]'; + simin_au = [T; simin_au]'; +elseif strcmp(name, 'largerepstep') || strcmp(name, 'largerepstepol') + xinit = [-0.501 0 0]; % Small difference from reference allows Matlab to solve algebraic loop for LQc + T = h_hf * [0:1/h_hf * 2] - 1/60; + % Delay the reference so LQ doesn't kick in for all modes at the first step! + simin_ref = [ones(1, 5)*-0.5*refscale ones(1, length(T)-5) * 0.5*refscale]; + simin_ref = kron(repmat([1 -1], 1, 90), simin_ref); + simin_drop = randi(2, 1, length(simin_ref))-1; + simin_au = zeros(3,length(simin_ref)); + T = h_hf * [0:length(simin_ref)-1]; + stopTime=T(end); + simin_ref = [T; simin_ref]'; + simin_drop = [T; simin_drop]'; + simin_au = [T; simin_au]'; + if strcmp(name, 'largerepstepol') + assignin('base', 'zetaVariant', 2); + end +% else +% assignin('base', 'zetaVariant', 1); +% end +elseif strcmp(name, 'disturb') +% assignin('base', 'zetaVariant', 2); + t = 360; + xinit = [0.541 0 0]; % Small difference from reference allows Matlab to solve algebraic loop for LQc + T = h_hf * [0:1/h_hf * t] - 1/60; + % Delay the reference so LQ doesn't kick in for all modes at the first step! + simin_ref = [ones(1, length(T))*0.54*refscale]; + simin_drop = randi(2, 1, length(simin_ref))-1; + simin_au = 0 + 1.*randn(1, length(T)); + T = h_hf * [0:length(simin_ref)-1]; + stopTime=T(end); + simin_ref = [T; simin_ref]'; + simin_drop = [T; simin_drop]'; + simin_au = [T; simin_au; zeros(2, length(simin_au))]'; + +elseif strcmp(name, 'basic') + xinit = [-0.401 0 0]; % Small difference from reference allows Matlab to solve algebraic loop for LQc + stopTime = 5; + T = h_hf * [0:1/h_hf * stopTime] - 1/60; + ref=(10/0.55)*0.5; + simin_ref = []; + steplen=3; + for sec = 1:steplen:stopTime + l=min(steplen, stopTime-sec); + simin_ref = [simin_ref ref*ones(1, 1/h_hf*l)]; + ref = -ref; + end + simin_ref = [simin_ref ones(1, length(T)-length(simin_ref))*simin_ref(end)]; + simin_ref = [T; simin_ref]'; + simin_drop = [T; randi(2, 1, length(T))-1]'; + simin_au = [T; zeros(1,length(T))]'; +else + ERROR +end + +SimStopTime=sprintf('%d', stopTime); +assignin('base', 'xinit', xinit); +assignin('base', 'simin_drop', simin_drop); +assignin('base', 'simin_au', simin_au); +assignin('base', 'simin_ref', simin_ref); +assignin('base', 'mpc_mode', mpcmode); +simout = sim('rsmpc', 'ReturnWorkspaceOutputs', 'on', 'StopTime', SimStopTime); + +experiment = {}; +experiment.sim = simout; +modes = {'LF', 'A', 'B', 'C', 'HF'}; +experiment.mpc_mode = modes{evalin('base', 'mpc_mode')+1}; +experiment.zeta_variant = sprintf('%d', evalin('base', 'zetaVariant')); +experiment.name = name; + +end diff --git a/sysmodel.m b/sysmodel.m new file mode 100644 index 0000000..7d32c07 --- /dev/null +++ b/sysmodel.m @@ -0,0 +1,16 @@ +function [SysC] = sysmodel() +l = 1.1; +g = 9.80665; +g1 = 0.44; +g2 = 10/(pi/4); +g3 = g; +g4 = 5/7; +g5 = 10/(l/2); +g34 = -g3*g4; +A = [ 0 1 0; 0 0 g34; 0 0 0; ]; +B = [ 0; 0; g1; ]; +C = [ g5 0 0; 0 0 g2 ]; +SysC = ss(A, B, C, []); +SysC.InputName= {'AngularVelocityV'}; +SysC.OutputName= {'PositionV', 'AngleV'}; +SysC.StateName= {'Position', 'Velocity', 'Angle'}; diff --git a/tt_rsmpc_init.m b/tt_rsmpc_init.m new file mode 100644 index 0000000..2234121 --- /dev/null +++ b/tt_rsmpc_init.m @@ -0,0 +1,55 @@ +% Input args: +% 1: Frequency +% 2: Horizon +function tt_rsmpc_init(args) + ttInitKernel('prioFP'); + + SysC = sysmodel(); + Qc = diag([args(7); args(8); args(9)]); + Rc = args(10); + + data.mpcL = init_mpc(1.0/args(1), SysC, Qc, Rc); + data.mpcR = init_mpc(1.0/args(3), SysC, Qc, Rc); + + data.NL = args(2); + data.NR = args(4); + data.u = 0; + data.Lu = 0; + data.pend_Lu = 0; + data.pend_j = -1; + data.Ru = zeros(1,3); + data.LQu = 0; + data.which = 0; + data.localExec = 0; + + + % Here are parameters from the paper algorithm + % NOTE: At this point j does not correspond. j in the paper is j+2 here. + % NOTE: At this point i does not correspond. i in the paper is i+1 here. + data.Delta = zeros(1,4) + data.sigma = 2; + data.applyi = -100; + data.applyj = -100; + data.r = -1 + + data.u_i = zeros(1,3); % Data from remote + data.flag_i = -2; % Flag from remote + data.flag_j = -2; % Flag from local + + data.k = -1; % The HF time step + data.i = -100; % Remote data timestamp, (time when opt was requested) + data.j = -100; % Local data timestamp, (time when opt was requested) + data.local_run_at = -1; % A timestamp (k) when local mode shall be run + + data.zetaVariant = args(5); % 0 = LQ, 1 = u(0), 2 = OpenLoop, 3 = u(1) + + data.mode = args(6) % 1=A, 2=B, 3=C + + if data.mode == 0 || data.mode == 4 + data.zetaVariant = 0; % Always use LQ backup for these to not make things confusing + end + + ttCreatePeriodicTask('rsmpc', 0, data.mpcR.h, 'tt_rsmpc_main', data); + ttSetPriority(1, 'rsmpc'); +end + diff --git a/tt_rsmpc_main.m b/tt_rsmpc_main.m new file mode 100644 index 0000000..d628c0f --- /dev/null +++ b/tt_rsmpc_main.m @@ -0,0 +1,223 @@ +function [exectime, data] = tt_switching_main(segment, data) + + exectime = 0; + switch segment + case 1 % Step time and read input + data.k = data.k + 1; + + sp = ttAnalogIn(1); + pos = ttAnalogIn(2); + vel = ttAnalogIn(3); + ang = ttAnalogIn(4); + + data.xk = [pos vel ang]'; + data.xref = [sp 0 0]'; + + data.drop = ttAnalogIn(5); + if data.mode == 4 + data.drop = 0; + end + data.Delta = zeros(1,4); % Selection vector + + case 2 % Update remote response. Mode 0 is local only. Flag_i checks feasibility. Drop=0 means network was ok. + + if data.flag_i == 1 % Feasible result + ttAnalogOut(4, 1); + else + ttAnalogOut(4, 0); + end + + if data.mode > 0 && data.flag_i == 1 && data.drop == 0 + data.Delta(1) = 1; + data.i = data.k-1; % Set the time of start for successful HF optimization. + data.applyi = data.k; + data.Ru = data.u_i; + if data.mode == 1 || data.mode == 3 % Stop local execution + data.local_run_at = -1; + if data.mode == 1 + data.r = data.k + 3; + else + data.r = data.k + 2; + end + else + data.r = data.k + mod(data.k,data.sigma)+data.sigma; + end + elseif data.drop == 0 && data.flag_i ~= 1 + disp(sprintf('HF infeasible, k=%d', data.k)); + end + + case 3 % Update local response and determine recovery + if data.pend_j > -1 && data.pend_j == data.k-2 + if data.flag_j == 1 % Feasible + ttAnalogOut(5, 1); + data.j = data.pend_j; + data.applyj = data.k; + data.Lu = data.pend_Lu; + else + ttAnalogOut(5, 0); + end + end + + if data.applyj-data.applyi >= data.sigma && data.k - data.applyj < data.sigma + data.Delta(2) = 1; + end + + DeltaBar = 0; + if data.k ~= 0 && data.k < data.r % What if there is no initial networked response? + DeltaBar = 1; + end + + data.Delta(3) = DeltaBar*(1-sum(data.Delta(1,1:2))); + data.Delta(4) = (1-sum(data.Delta(1,1:3))); + + if sum(data.Delta) == 0 || sum(data.Delta) > 1 + ME = MException('SwitchingMPC:DeltaError', 'Invalid Delta vector %i%i%i%i', data.Delta); + throw(ME) + end + + case 4 % Select and apply control signal + % HF selector function \Delta_\alpha + deltaAlpha = zeros(1,3); + if data.i > -1 && data.k-data.i <= length(deltaAlpha) + deltaAlpha(data.k-data.i) = 1; + end + deltaB = zeros(1,2); + if data.j > -1 && data.k-data.j > 1 && data.k-data.j-1 <= length(deltaB) + deltaB(data.k-data.j-1) = 1; + end + deltaG = (1-sum(deltaAlpha(1:2)))*deltaB(1) + (1-sum(deltaAlpha(2:3)))*deltaB(2); + + deltaOne = deltaAlpha(1); + + deltaB = 0; + + if deltaOne == 1 % Remote closed loop control + data.u = data.Ru(1); + data.which = 2; + elseif deltaG == 1 + data.u = data.Lu; + data.which = 1; + elseif deltaAlpha(2) == 1 + if data.zetaVariant == 2 + data.u = data.Ru(2); + else + data.u = data.Ru(1); + end + data.which = 1.75; + elseif deltaAlpha(3) == 1 + if data.zetaVariant == 2 + data.u = data.Ru(3); + else + data.u = data.Ru(1); + end + data.which = 1.5; + else + data.u = data.mpcR.K*(data.xref-data.xk); % Calculate HF LQ for recovery mode + data.which = 0; + end + + zeta_which = 0; + % The paper logic + if data.zetaVariant == 0 % LQ control + zeta_1 = data.mpcR.K*(data.xref-data.xk); + zeta_which = 0; + elseif data.zetaVariant == 1 % Hold control signal + zeta_1 = data.Ru(1); + zeta_which = 2; + elseif data.zetaVariant == 2 % Open loop control + if data.k - (data.i+1) < length(data.Ru) + zeta_1 = data.Ru(data.k-data.i); % Note: i is not according to definition + zeta_which = 2-0.25*(data.k-(data.i+1)); + else + zeta_1 = 0; + zeta_which = -1; + end + else % Hold during MPC_2 execution + if data.mode == 1 % Mode A + % Applies one step open loop since MPC_2 is started in this time step + zeta_1 = data.Ru(2); + zeta_which = 1.5; + elseif data.mode == 2 % Mode B + if data.k == data.local_run_at + zeta_1 = data.Ru(2); + zeta_which = 1.5; + else + zeta_1 = data.Ru(1); + zeta_which = 1.75; + end + else % Mode C + % Holds control signal since MPC_2 was started in previous time step + zeta_1 = data.Ru(1); + zeta_which = 1.75; + end + end + zeta_2 = data.mpcR.K*(data.xref-data.xk); + data.zeta2cost = 0.5*(data.xref-data.xk)'*data.mpcR.S*(data.xref-data.xk); + selections = [data.Ru(1) data.Lu zeta_1 zeta_2]; + newu = data.Delta*selections'; + + if data.Delta(1) == 1 + data.which = 2; + elseif data.Delta(2) == 1 + data.which = 1; + elseif data.Delta(3) == 1 + data.which = zeta_which; + else + data.which = 0; + end + + data.u = newu; + + ttAnalogOut(1, data.u); + ttAnalogOut(2, data.which); + + if data.mode == 1 && data.local_run_at == -1 % Mode A, shut down local on remote response + data.localExec = 0; + end + + case 5 + % Always run the HF controller + x = data.mpcR.A*data.xk + data.mpcR.B*data.u; % HF state prediction + [optx, fval, exitflag, output] = runquadprog(data.mpcR, x, data.xref, data.NR, data.NR); + if exitflag == 1 + data.u_i = optx(data.NR*3+1:data.NR*3+3); % Three steps of control signal from HF + end + data.flag_i = exitflag; + + case 6 + if data.mode == 1 && data.drop == 1 % Mode A, start Local MPC when drop occurs + if data.local_run_at == -1 % New drop + data.local_run_at = data.k; + end + elseif data.mode == 2 || data.mode == 3 + if data.local_run_at == -1 + data.local_run_at = data.k; + end + elseif data.mode == 0 && data.local_run_at == -1 % Local only, start and keep running + data.local_run_at = data.k; + end + + case 7 + if data.local_run_at == data.k + x = data.mpcL.A*data.xk + data.mpcL.B*data.u; + [ox, fv, fl, op] = runquadprog(data.mpcL, x, data.xref, data.NL, data.NL); + data.flag_j = fl; + data.pend_j = data.k; + if fl == 1 + data.pend_Lu = ox(data.NL*3+1); + else + data.u = 0; % Hm.... + end + data.local_run_at = data.k+2; + data.localExec = 1; + end + ttAnalogOut(3, data.localExec); + data.localExec = -1*data.localExec; + + case 8 + exectime = 0.01; + + case 9 + exectime = -1; + end +end -- GitLab