Revision 1819
Shapes are now generalized and work for any (4n+1) robots.
branches/16299_s10/matlab/evolveRobots.m | ||
---|---|---|
22 | 22 |
makeMovie = false; |
23 | 23 |
showPlots = true; |
24 | 24 |
doFeedback = true; |
25 |
shape = 1;
|
|
25 |
shape = 4;
|
|
26 | 26 |
|
27 | 27 |
if shape == 1 |
28 |
n = 10%100;
|
|
28 |
n = 65;
|
|
29 | 29 |
elseif shape < 4 |
30 |
n = 9;
|
|
30 |
n = 65;
|
|
31 | 31 |
elseif shape == 4 |
32 |
n = 9;
|
|
32 |
n = 65;
|
|
33 | 33 |
elseif shape == 5 |
34 | 34 |
n = 20; |
35 | 35 |
end |
... | ... | |
70 | 70 |
|
71 | 71 |
elseif shape == 2 |
72 | 72 |
%square |
73 |
desiredR(2*(1:(n-1))+1) = 20; |
|
74 |
desiredR(2*(1:(n-1))) = 20*sqrt(2); |
|
75 |
desiredPhi = (0:(n-1))*pi/4; |
|
73 |
desiredPhi = (0:(n-1))*(2*pi/(n-1))+pi/2; |
|
74 |
for index=2:(n-1)/4 |
|
75 |
desiredR(index) = 20/cos(abs(desiredPhi(index)-3*pi/4)); |
|
76 |
end |
|
77 |
for index=1+(n-1)/4:(n-1)/2 |
|
78 |
desiredR(index) = 20/sin(abs(desiredPhi(index)-3*pi/4)); |
|
79 |
end |
|
80 |
for index=1+(n-1)/2:3*(n-1)/4 |
|
81 |
desiredR(index) = 20/sin(abs(desiredPhi(index)+3*pi/4)); |
|
82 |
end |
|
83 |
for index=1+3*(n-1)/4:n-1 |
|
84 |
desiredR(index) = abs(20/sin(abs(desiredPhi(index)-3*pi/4))); |
|
85 |
end |
|
86 |
desiredR(n) = 20*sqrt(2); |
|
87 |
desiredPhi = desiredPhi-pi/4; |
|
76 | 88 |
|
77 | 89 |
elseif shape == 3 |
78 | 90 |
%diamond |
79 |
desiredR(2*(1:(n-1))) = 20; |
|
80 |
desiredR(2*(1:(n-1))+1) = 20*sqrt(2); |
|
81 |
desiredPhi = (0:(n-1))*pi/4; |
|
91 |
desiredPhi = (0:(n-1))*(2*pi/(n-1))+pi/2; |
|
92 |
for index=2:(n-1)/4 |
|
93 |
desiredR(index) = 20/cos(abs(desiredPhi(index)-3*pi/4)); |
|
94 |
end |
|
95 |
for index=1+(n-1)/4:(n-1)/2 |
|
96 |
desiredR(index) = 20/sin(abs(desiredPhi(index)-3*pi/4)); |
|
97 |
end |
|
98 |
for index=1+(n-1)/2:3*(n-1)/4 |
|
99 |
desiredR(index) = 20/sin(abs(desiredPhi(index)+3*pi/4)); |
|
100 |
end |
|
101 |
for index=1+3*(n-1)/4:n-1 |
|
102 |
desiredR(index) = abs(20/sin(abs(desiredPhi(index)-3*pi/4))); |
|
103 |
end |
|
104 |
desiredR(n) = 20*sqrt(2); |
|
82 | 105 |
|
83 | 106 |
elseif shape == 4 |
84 |
%aarow |
|
85 |
desiredR(2:4) = 20; |
|
86 |
desiredR(5) = 13; |
|
87 |
desiredR(6) = 24; |
|
88 |
desiredR(7) = 36; |
|
89 |
desiredR(8) = 17; |
|
90 |
desiredR(9) = 17; |
|
91 |
desiredPhi(2) = 0; |
|
92 |
desiredPhi(3) = pi/2; |
|
93 |
desiredPhi(4) = 3*pi/2; |
|
94 |
desiredPhi(5:7) = pi; |
|
95 |
desiredPhi(8) = pi/4; |
|
96 |
desiredPhi(9) = 7*pi/4; |
|
107 |
%arrow |
|
108 |
desiredPhi(2:(n-1)/4) = pi; |
|
109 |
desiredPhi(1+(n-1)/4:(n-1)/2) = 0; |
|
97 | 110 |
|
111 |
for index=1+(n-1)/2:n |
|
112 |
desiredPhi(index) = index*(2*pi/(n-1))+pi/2; |
|
113 |
end |
|
114 |
for index=2:(n-1)/4 |
|
115 |
desiredR(index) = index*80*sqrt(2)/(n-1); |
|
116 |
desiredR(index+(n-1)/4) = desiredR(index); |
|
117 |
end |
|
118 |
for index=1+(n-1)/2:3*(n-1)/4 |
|
119 |
desiredR(index) = 20/sin(abs(desiredPhi(index)+3*pi/4)); |
|
120 |
end |
|
121 |
for index=1+3*(n-1)/4:n-1 |
|
122 |
desiredR(index) = abs(20/sin(abs(desiredPhi(index)-3*pi/4))); |
|
123 |
end |
|
124 |
|
|
98 | 125 |
elseif shape == 5 |
99 | 126 |
%2 circles |
100 | 127 |
desiredR(1:(n/2)) = 20; |
Also available in: Unified diff