-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfeedbackControllerFinal.m
More file actions
61 lines (54 loc) · 1.36 KB
/
Copy pathfeedbackControllerFinal.m
File metadata and controls
61 lines (54 loc) · 1.36 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
%% feedback controller
A=[0 -pi/16 0;pi/16 0 3*pi/16;0 0 0];
B=[1/2 1/2;0 0;1/0.15 -1/0.15];
C=[1 0 0;0 1 0];
D=[0 0;0 0];
F=[-1 4.899 0;-4.899 -1 0;0 0 -30];
K=[1 0 0;0 0 1];
n = rank(obsv(F, K))
p =lyap(A,-F,-B*K)
New_K = K* inv(p);
SYS= ss(A-B*New_K,B,C,D);
pole(SYS);
K1 = place(A, B, [-30 -1+4.899*i -1-4.899*i]) ;
t = 0 : 0.001 : 32 ;
%% static Controller
syms s;
G_closeLoop = inv(C*inv(-(A-B*K1))*B)
%% integral control
% syms k11 k12 k21 k22 s
% Ka = [k11 k12; k21 k22];
% delta_f = [(s*eye(3)-A+B*K1) -B*Ka; C s]
% K_X = []
A_bar = [0 -pi/16 0 0 0;pi/16 0 3*pi/16 0 0; 0 0 0 0 0; 1 0 0 0 0; 0 1 0 0 0];
B_bar = [1/2 1/2;0 0;1/0.15 -1/0.15; 0 0; 0 0];
C_bar = [1 0 0 0 0; 0 1 0 0 0];
D_bar = [0 0 0 0 0; 0 0 0 0 0];
K_bar = place(A_bar, B_bar, [-60 -55 -70 -1+4.899*i -1-4.899*i ]);
Ka = K_bar(:,4:5);
K_f = K_bar(:,1:3);
%% desired path
a_m = 3;
dt = 1/1e3;
StopTime = 10;
t = (0:dt:StopTime-dt);
X_ref = a_m * cos(pi/16 *t);
Y_ref = -a_m*sin(pi/16 *t)
path = [X_ref; Y_ref];
%figure(1)
% plot(X_ref, Y_ref)
% xlim([-10 10])
% ylim([-10 10])
%% full-order observer
L = place(A', C', [-20, -20, -100]);
L = L'
%% reduced-order observer
F = -40;
L_R = [1 -400];
T = lyap(-F, A, -L_R*C);
Q = inv([1 0 0; 0 1 0; T]);
Q1 = [1 0; 0 1; -0.5031 67.9061];
Q2 = [0 0 6.7909]';
%% phase4
A_original1 = 1.2*A;
A_original2 = 5*A;