-
Notifications
You must be signed in to change notification settings - Fork 5
/
testEnergyOptimizationMRB2.m
113 lines (89 loc) · 2.3 KB
/
testEnergyOptimizationMRB2.m
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
% calcula la energia utilizada para diferentes ángulos de rotación del
% polígono
clear
clc
close all
%% Definir valores de la simulacion
% Poligono
n_vertices = 4;
polygon_radius = 200; %meters
rad_var = 5;
ang_var = 1;
% UAV and coverage
dx = 20; % distance between lines
curve_radius = 15; %meters
u = 15; %m/s
%Wind
w = 5; %m/s
gamma_w = pi/4;
%Power estimation
b0 = 0.0555;
b1 = 0;
%b2 = 0.0111;
maxb2 = 0.0111;
%% Generar poligono
M = getPolygon(n_vertices,polygon_radius,rad_var,ang_var);
% Graficar polygono
figure('Position',[10 100 500 500],'Renderer','zbuffer');
line([M(:,1)';M(:,3)'],[M(:,2)';M(:,4)'],'Color','r');
title('Polygon');
ylabel('x(meters)');
xlabel('y(meters)');
%% Obtener una grafica de la función energia
disp('Iniciar rotación');
steps = 1000;
maxrotation = pi;
diam = zeros(steps+1,1);
energy = zeros(steps+1,1);
length = zeros(steps+1,5);
gamma = zeros(steps+1,1);
x = 0:maxrotation/steps:maxrotation;
xdeg = (180/pi) .* x;
pts_s = [M(:,1) M(:,2)];
pts_e = [M(:,3) M(:,4)];
%al rotar el angulo del poligono se debe cambiar el angulo del
%viento!!!!!!!!
figure('Position',[500 290 500 500],'Renderer','zbuffer');
title('Energy')
ylabel('Energy')
xlabel('\beta (radians)')
hold on;
b2steeps = 10;
for b2 = 0:maxb2/b2steeps:maxb2
disp('b2:'); disp(b2);
i=1;
for beta = 0:maxrotation/steps:maxrotation
% Rotate M
pts_s2 = rotatePolygon(pts_s, beta);
pts_e2 = rotatePolygon(pts_e, beta);
M2 = [pts_s2' pts_e2'];
diam(i) = diameter(M2);
gamma_w_prima = gamma_w - beta;
[energy(i), D, gamma(i)] = f_energy(M2, dx, curve_radius, u, w, gamma_w_prima, b0, b1, b2);
length(i,:) = [D sum(D)];
i = i+1;
end
plot(xdeg,energy)
end
hold off;
figure('Position',[500 90 500 500],'Renderer','zbuffer');
plot(xdeg,diam)
title('Diameter')
ylabel('Diameter')
xlabel('\beta (degrees)')
%figure('Position',[500 90 500 500],'Renderer','zbuffer');
%plot(x,gamma)
%title('gamma angle')
%ylabel('Diameter')
figure('Position',[500 190 500 500],'Renderer','zbuffer');
hold on;
plot(xdeg,length(:,1))
%plot(xdeg,length(:,1) + length(:,2),'r--')
plot(xdeg,length(:,2))
%plot(xdeg,length(:,3) + length(:,4),'b--')
plot(xdeg,length(:,3))
plot(xdeg,length(:,4))
hold off;
title('Path length')
ylabel('meters')
xlabel('\beta (degrees)')