From a23ba49056a36aff221d0c23e228b981222c3576 Mon Sep 17 00:00:00 2001 From: Yuan Xu Date: Wed, 24 May 2023 17:35:46 +0200 Subject: add submission zip --- Submission files/generate_params_z.m | 55 ++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Submission files/generate_params_z.m (limited to 'Submission files/generate_params_z.m') diff --git a/Submission files/generate_params_z.m b/Submission files/generate_params_z.m new file mode 100644 index 0000000..a7cfaa9 --- /dev/null +++ b/Submission files/generate_params_z.m @@ -0,0 +1,55 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright (c) 2023, Amon Lahr, Simon Muntwiler, Antoine Leeman & Fabian Flürenbrock Institute for Dynamic Systems and Control, ETH Zurich. +% +% All rights reserved. +% +% Please see the LICENSE file that has been included as part of this package. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function [params_z] = generate_params_z(params) +% initialize params_z +params_z = params; + +% add initial condition of z-subsystem +params_z.model = rmfield(params_z.model,{'InitialConditionA', ... + 'InitialConditionB', ... + 'InitialConditionC'}); +params_z.model.InitialConditionA_z = [-0.07;0.04]; % TODO: tune + +% define projection matrices +T_z_x = [0 0 1 0 0 0; + 0 0 0 0 0 1]; +T_z_u = [0 0 1]; + +% projected system dynamics +params_z.model.A = T_z_x*params.model.A*T_z_x'; +params_z.model.B = T_z_x*params.model.B*T_z_u'; +params_z.model.nx = 2; +params_z.model.nu = 1; + +% state constraints +Hx = params.constraints.StateMatrix * T_z_x'; +hx = params.constraints.StateRHS; +X = Polyhedron('A',Hx,'b',hx); +X.minHRep(); + +params_z.constraints.StateMatrix = X.A; +params_z.constraints.StateRHS = X.b; + +% input constraints +Hu = params.constraints.InputMatrix * T_z_u'; +hu = params.constraints.InputRHS; +U = Polyhedron('A',Hu,'b',hu); + +params_z.constraints.InputMatrix = U.A; +params_z.constraints.InputRHS = U.b; + +% disturbance constraints +max_disturbance = 1e-4; % TODO: chose +params_z.constraints.MaxAbsDisturbance = max_disturbance; +H_w = kron(eye(params_z.model.nx),[1;-1]); +h_w = ones(2*params_z.model.nx, 1) * max_disturbance; + +params_z.constraints.DisturbanceMatrix = H_w; +params_z.constraints.DisturbanceRHS = h_w; +end -- cgit v1.2.1