1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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] = generate_params()
params = struct();
Tf = 60*60*24 * 2; % = 2 days
dt = 60 * 10; % = 10 minutes
% model
params.model = struct(...
'nx', 6, ...
'nu', 3, ...
'Mass', 300, ...
'GravitationalParameter', 3.986e14, ...
'ScalingMatrix', [1e-6*eye(3), zeros(3); zeros(3), 1e-3*eye(3)], ...
'TargetRadius', 7000e3, ...
'TimeStep', dt, ...
'HorizonLength', ceil(Tf / dt), ...
'InitialConditionA', [-15e-3; -400e-3; 24.4e-3; 0; 0.0081; 0], ...
'InitialConditionB', [-20e-3; 400e-3; 24.4e-3; 0; 0.0108; 0], ...
'InitialConditionC', [0.02; 0.01; -0.005; 0; 0; 0] ...
);
% constraints
params.constraints = struct(...
'MaxAbsPositionXZ', 0.1, ...
'MaxAbsPositionY', 1, ...
'MaxAbsThrust', 1, ...
'MaxFinalPosDiff' , 3e-4, ...
'MaxFinalVelDiff', 1e-3 ...
);
params.exercise = struct( ...
'QdiagOptA', [94.0; 0.1579; 300; 0.01; 0.10; 0.10] ...
);
% YOUR CODE HERE
end
|