Skip to content

Commit

Permalink
Matlab examples: omit setting dimensions
Browse files Browse the repository at this point in the history
  • Loading branch information
FreyJo committed Oct 8, 2020
1 parent 22ec3ae commit 4a59c90
Show file tree
Hide file tree
Showing 23 changed files with 11 additions and 323 deletions.
Expand Up @@ -123,8 +123,6 @@
ocp_model.set('cost_W_e', W_e);
ocp_model.set('cost_y_ref', yr);
ocp_model.set('cost_y_ref_e', yr_e);
ocp_model.set('dim_ny', ny);
ocp_model.set('dim_ny_e', ny_e);
else % external, auto
ocp_model.set('cost_expr_ext_cost', model.expr_ext_cost);
ocp_model.set('cost_expr_ext_cost_e', model.expr_ext_cost_e);
Expand All @@ -141,16 +139,8 @@

%% acados ocp model
ocp_model.set('name', model_name);
% dims
ocp_model.set('T', T);
ocp_model.set('dim_nx', nx);
ocp_model.set('dim_nu', nu);
ocp_model.set('dim_nbx', nbx);
ocp_model.set('dim_nbu', nbu);
% ocp_model.set('dim_ng', ng); % for general linear constraints
% ocp_model.set('dim_ng_e', ng_e);
ocp_model.set('dim_nh', nh);
ocp_model.set('dim_nh_e', nh_e);

% symbolics
ocp_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand Down
Expand Up @@ -64,8 +64,6 @@
if isfield(model, 'sym_u')
sim_model.set('sym_u', model.sym_u);
end
sim_model.set('dim_nx', nx);
sim_model.set('dim_nu', nu);

% explit integrator (erk) take explicit ODE expression
if (strcmp(method, 'erk'))
Expand Down
Expand Up @@ -101,16 +101,7 @@

%% acados ocp model
ocp_model = acados_ocp_model();
% dims
ocp_model.set('T', T);
ocp_model.set('dim_nx', nx);
ocp_model.set('dim_nu', nu);
if (strcmp(ocp_cost_type, 'linear_ls') | strcmp(ocp_cost_type, 'nonlinear_ls'))
ocp_model.set('dim_ny', ny);
ocp_model.set('dim_ny_e', ny_e);
end
ocp_model.set('dim_nbx', nbx);
ocp_model.set('dim_nbu', nbu);
% symbolics
ocp_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand Down Expand Up @@ -185,16 +176,13 @@
% create ocp
ocp = acados_ocp(ocp_model, ocp_opts);
ocp
ocp.C_ocp
ocp.C_ocp_ext_fun
% ocp.C_ocp
% ocp.C_ocp_ext_fun



%% acados sim model
sim_model = acados_sim_model();
% dims
sim_model.set('dim_nx', nx);
sim_model.set('dim_nu', nu);
% symbolics
sim_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand Down Expand Up @@ -282,7 +270,6 @@
avg_time_solve = toc/n_sim



% plot result
figure()
subplot(2, 1, 1)
Expand Down
Expand Up @@ -148,27 +148,8 @@
%% acados ocp model
ocp_model = acados_ocp_model();
ocp_model.set('name', model_name);

% dims
ocp_model.set('T', T);
ocp_model.set('dim_nx', nx);
ocp_model.set('dim_nu', nu);


if (strcmp(cost_type, 'linear_ls')) | (strcmp(cost_type, 'nonlinear_ls'))
ocp_model.set('dim_ny', ny);
ocp_model.set('dim_ny_e', ny_e);
end
if (ng>0)
ocp_model.set('dim_ng', ng);
ocp_model.set('dim_ng_e', ng_e);
elseif (nh>0)
ocp_model.set('dim_nh', nh);
ocp_model.set('dim_nh_e', nh_e);
else
ocp_model.set('dim_nbx', nbx);
ocp_model.set('dim_nbu', nbu);
end
% symbolics
ocp_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand Down Expand Up @@ -263,9 +244,7 @@
ocp_opts.set('sim_method_num_steps', sim_method_num_steps);
end

ocp_opts.opts_struct


% ocp_opts.opts_struct

%% acados ocp
% create ocp
Expand All @@ -292,9 +271,6 @@
%x0(1) = 1.5;
%ocp.set('constr_x0', x0);


%ocp.set('cost_y_ref', 1);

% if not set, the trajectory is initialized with the previous solution


Expand Down
Expand Up @@ -75,8 +75,6 @@
if isfield(model, 'sym_u')
sim_model.set('sym_u', model.sym_u);
end
sim_model.set('dim_nx', model.nx);
sim_model.set('dim_nu', model.nu);
else % irk irk_gnsf
sim_model.set('dyn_type', 'implicit');
sim_model.set('dyn_expr_f', model.expr_f_impl);
Expand All @@ -88,9 +86,6 @@
% if isfield(model, 'sym_z')
% sim_model.set('sym_z', model.sym_z);
% end
sim_model.set('dim_nx', model.nx);
sim_model.set('dim_nu', model.nu);
% sim_model.set('dim_nz', model.nz);
end

sim_model.model_struct
Expand Down
Expand Up @@ -34,16 +34,12 @@
%% example of closed loop simulation
clear all



% check that env.sh has been run
env_run = getenv('ENV_RUN');
if (~strcmp(env_run, 'true'))
error('env.sh has not been sourced! Before executing this example, run: source env.sh');
end



%% handy arguments
compile_interface = 'auto';
codgen_model = 'true';
Expand Down Expand Up @@ -83,15 +79,13 @@
ocp_cost_type = 'linear_ls';



%% create model entries
nfm = 4; % number of free masses
nm = nfm+1; % number of masses
model = masses_chain_model(nfm);
wall = -0.01;



% dims
T = 8.0; % horizon length time
nx = model.nx; % 6*nfm
Expand All @@ -101,7 +95,6 @@
nbx = nfm;
nbu = nu;
ng = 0;
ng_e = 0;
nh = 0;
nh_e = 0;

Expand All @@ -125,25 +118,11 @@
ubu = 1.0*ones(nbu, 1);



%% acados ocp model
ocp_model = acados_ocp_model();
% dims
ocp_model.set('T', T);
ocp_model.set('dim_nx', nx);
ocp_model.set('dim_nu', nu);
ocp_model.set('dim_ny', ny);
ocp_model.set('dim_ny_e', ny_e);
if (ng>0)
ocp_model.set('dim_ng', ng);
ocp_model.set('dim_ng_e', ng_e);
elseif (nh>0)
ocp_model.set('dim_nh', nh);
ocp_model.set('dim_nh_e', nh_e);
else
ocp_model.set('dim_nbx', nbx);
ocp_model.set('dim_nbu', nbu);
end

% symbolics
ocp_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand Down Expand Up @@ -227,24 +206,14 @@
ocp_opts.set('sim_method_num_stages', ocp_sim_method_num_stages);
ocp_opts.set('sim_method_num_steps', ocp_sim_method_num_steps);

%ocp_opts.opts_struct



%% acados ocp
% create ocp
ocp = acados_ocp(ocp_model, ocp_opts);
%ocp
%ocp.C_ocp
%ocp.C_ocp_ext_fun



%% acados sim model
sim_model = acados_sim_model();
% dims
sim_model.set('dim_nx', nx);
sim_model.set('dim_nu', nu);
% symbolics
sim_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand All @@ -263,8 +232,6 @@
sim_model.set('dyn_expr_f', model.expr_f_impl);
end

%sim_model.model_struct



%% acados sim opts
Expand All @@ -276,10 +243,6 @@
sim_opts.set('method', sim_method);
sim_opts.set('sens_forw', sim_sens_forw);

%sim_opts.opts_struct



%% acados sim
% create sim
sim = acados_sim(sim_model, sim_opts);
Expand Down
17 changes: 1 addition & 16 deletions examples/acados_matlab_octave/masses_chain_model/example_ocp.m
Expand Up @@ -125,23 +125,8 @@
%% acados ocp model
ocp_model = acados_ocp_model();
ocp_model.set('name', model_name);
% dims
ocp_model.set('T', T);
ocp_model.set('dim_nx', nx);
ocp_model.set('dim_nu', nu);
ocp_model.set('dim_ny', ny);
ocp_model.set('dim_ny_e', ny_e);
if (ng>0)
ocp_model.set('dim_ng', ng);
ocp_model.set('dim_ng_e', ng_e);
elseif (nh>0)
ocp_model.set('dim_nh', nh);
ocp_model.set('dim_nh_e', nh_e);
else
ocp_model.set('dim_nbx', nbx);
ocp_model.set('dim_nbu', nbu);
end
ocp_model.set('dim_np', np);

% symbolics
ocp_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand Down
22 changes: 0 additions & 22 deletions examples/acados_matlab_octave/pendulum_dae/example_closed_loop.m
Expand Up @@ -43,8 +43,6 @@
%% options
compile_interface = 'auto'; % true, false
codgen_model = 'true'; % true, false
% compile_interface = 'auto'; % true, false
% codgen_model = 'false'; % true, false
% simulation
gnsf_detect_struct = 'true'; % true, false
sim_method = 'irk'; % irk, irk_gnsf, [erk]
Expand Down Expand Up @@ -103,11 +101,9 @@
ny_e = nx; % number of outputs in mayer term

ng = 0; % number of general linear constraints intermediate stages
ng_e = 0; % number of general linear constraints final stage
nbx = 0; % number of bounds on state x

nbu = nu; % number of bounds on controls u
nh_e = 0;

% cost
% linear least square cost: y^T * W * y, where y = Vx * x + Vu * u - y_ref
Expand Down Expand Up @@ -145,21 +141,6 @@
nh = 0;
end

% dims
ocp_model.set('dim_nx', nx);
ocp_model.set('dim_nu', nu);
ocp_model.set('dim_nz', nz);
if (strcmp(cost_type, 'linear_ls'))
ocp_model.set('dim_ny', ny);
ocp_model.set('dim_ny_e', ny_e);
end
ocp_model.set('dim_nbx', nbx);
ocp_model.set('dim_nbu', nbu);
ocp_model.set('dim_ng', ng);
ocp_model.set('dim_ng_e', ng_e);
ocp_model.set('dim_nh', nh);
ocp_model.set('dim_nh_e', nh_e);

% symbolics
ocp_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand Down Expand Up @@ -261,8 +242,6 @@
if isfield(model, 'sym_p')
sim_model.set('sym_p', model.sym_p);
end
sim_model.set('dim_nx', nx);
sim_model.set('dim_nu', nu);

% Note: DAEs can only be used with implicit integrator
sim_model.set('dyn_type', 'implicit');
Expand All @@ -271,7 +250,6 @@
if isfield(model, 'sym_z')
sim_model.set('sym_z', model.sym_z);
end
sim_model.set('dim_nz', nz);

%% acados sim opts
sim_opts = acados_sim_opts();
Expand Down
4 changes: 0 additions & 4 deletions examples/acados_matlab_octave/pendulum_dae/example_sim.m
Expand Up @@ -88,9 +88,6 @@
if isfield(model, 'sym_p')
sim_model.set('sym_p', model.sym_p);
end
sim_model.set('dim_nx', nx);
sim_model.set('dim_nu', nu);


% Note: DAEs can only be used with implicit integrator
sim_model.set('dyn_type', 'implicit');
Expand All @@ -99,7 +96,6 @@
if isfield(model, 'sym_z')
sim_model.set('sym_z', model.sym_z);
end
sim_model.set('dim_nz', nz);

%% acados sim opts
sim_opts = acados_sim_opts();
Expand Down
Expand Up @@ -138,20 +138,6 @@
ocp_model.set('name', model_name);
ocp_model.set('T', T);

% dims
ocp_model.set('dim_nx', nx);
ocp_model.set('dim_nu', nu);
if (strcmp(cost_type, 'linear_ls'))
ocp_model.set('dim_ny', ny);
ocp_model.set('dim_ny_e', ny_e);
end
ocp_model.set('dim_nbx', nbx);
ocp_model.set('dim_nbu', nbu);
ocp_model.set('dim_ng', ng);
ocp_model.set('dim_ng_e', ng_e);
ocp_model.set('dim_nh', nh);
ocp_model.set('dim_nh_e', nh_e);

% symbolics
ocp_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand Down Expand Up @@ -252,9 +238,6 @@

%% acados sim model
sim_model = acados_sim_model();
% dims
sim_model.set('dim_nx', nx);
sim_model.set('dim_nu', nu);
% symbolics
sim_model.set('sym_x', model.sym_x);
if isfield(model, 'sym_u')
Expand Down

0 comments on commit 4a59c90

Please sign in to comment.