Project

General

Profile

Revision 1819

Added by Brian Bland almost 14 years ago

Shapes are now generalized and work for any (4n+1) robots.

View differences:

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