Project

General

Profile

Revision 1821

Added by Chase Brownell almost 14 years ago

Individual Wheel Speeds

View differences:

branches/16299_s10/matlab/visualizeRobots.m
26 26
axis manual
27 27
set( gca,'nextplot','add' );
28 28
for j = 1:n
29
    %h = plot_arrow( Xs(j,idx),Ys(j,idx),Xs(j,idx) + Speeds(j, idx-1) * arrowScale * cos(Thetas(j,idx)),Ys(j,idx) + Speeds(j, idx-1) * arrowScale * sin(Thetas(j,idx)),...
30
    h = plot_arrow( Xs(j,idx),Ys(j,idx),Xs(j,idx) + cos(Thetas(j,idx)),Ys(j,idx) + sin(Thetas(j,idx)),...
31
        'color',color(j,:),'facecolor',color(j,:),'edgecolor',color(j,:) );
29
    h = plot_arrow( Xs(j,idx),Ys(j,idx),Xs(j,idx) + Speeds(j, idx-1) * arrowScale * cos(Thetas(j,idx)),Ys(j,idx) + Speeds(j, idx-1) * arrowScale * sin(Thetas(j,idx)),'color',color(j,:),'facecolor',color(j,:),'edgecolor',color(j,:) );
30
   	%h = plot_arrow( Xs(j,idx),Ys(j,idx),Xs(j,idx) + cos(Thetas(j,idx)),Ys(j,idx) + sin(Thetas(j,idx)),'color',color(j,:),'facecolor',color(j,:),'edgecolor',color(j,:) );
31
        
32 32
    set( h,'linewidth',3 );
33 33
	d = plot( Xs(j,idx),Ys(j,idx), '.k');
34 34
	set( d,'MarkerSize',5 );
branches/16299_s10/matlab/motionModel.m
11 11

  
12 12
transform = [ R/2 R/2; -R/L R/L];
13 13
inverseTransform = inv(transform);
14
wheels = zeros(2, numRobots);
14 15

  
15 16
%Transforms from v, omega into wheel speed, limits wheel speed and adds noise, then translates back.
16 17
for i=2:numRobots
17 18
    
18
    wheels = inverseTransform * [v(i); omega(i)] + noise * randn(2,1);
19
    wheels = min(wheels, wheelMax); 
20
	wheels = max(wheels, wheelMin);
21
	q = transform * wheels;
19
    wheels(:, i) = inverseTransform * [v(i); omega(i)] + noise * randn(2,1);
20
    wheels(:, i) = min(wheels(:, i), wheelMax); 
21
	wheels(:, i) = max(wheels(:, i), wheelMin);
22
	q = transform * wheels(:, i);
22 23
	v(i) = q(1);
23 24
	omega(i) = q(2);
24 25
	
......
34 35
x = xold + cos(thetaold).*v*dt;
35 36
y = yold + sin(thetaold).*v*dt;
36 37
theta = thetaold + omega*dt;
38

  
39
disp(x)
37 40
    
38 41
phi = theta - atan2(y-y(1), x-x(1));
39 42

  
branches/16299_s10/matlab/evolveRobots.m
5 5
 dt = 0.041709;
6 6
%else:
7 7
%dt = .01;
8
tf = 5.5 %40;
8
tf = 20 %40;
9 9

  
10 10

  
11 11
%shape numbers:
......
21 21
%%% output options
22 22
makeMovie = false;
23 23
showPlots = true;
24
doFeedback = false;
25
shape = 4;
24
doFeedback = true;
25
shape = 1;
26 26

  
27 27
if shape == 1
28 28
    n = 65;
......
136 136
    
137 137
    V(1,end/2:3*end/4) = 1;
138 138
    %changing orientation of the queen
139
    W(1,floor(end/6):floor(end/6)+20) = pi/2;
140
    W(1,floor(end/3):floor(end/3)+20) = -1*pi/2;
139
    %W(1,floor(end/6):floor(end/6)+20) = pi/2;
140
    %W(1,floor(end/3):floor(end/3)+20) = -1*pi/2;
141 141
    % start robots at random spots
142 142
    %for i=2:n
143 143
    %     X(i,1) = rand*15 - 7.5;
......
158 158

  
159 159
color = hsv(n);
160 160

  
161
encoderNoise = 1 * randn(2, n);
161
encoderNoise = 3 * randn(2, n);
162 162

  
163 163

  
164 164
% The things that end in s are the sensor values
branches/16299_s10/matlab/sensorModel.m
19 19
% TODO: model encoder error?
20 20
% Use the lagged values for position
21 21

  
22
noise = noise + encoderNoise .* (encoderNoiseVar * abs(randn(2, n)));
23 22

  
23
noise = noise + (encoderNoise .* (encoderNoiseVar * abs(randn(2, n))) ./ wheels);
24 24

  
25

  
25 26
R = 3.5;
26 27
L = 12.75;
27 28

  
28 29
transform = [ R/2 R/2; -R/L R/L];
29 30

  
31

  
32

  
30 33
for i=2:n,
31 34
	
32
    wheels = wheels + noise(:, i);
33
	q = transform * wheels;
35
	
36
    wheels(:, i) = wheels(:, i) + noise(:, i) ;
37
	q = transform * wheels(:, i);
34 38
	v(i) = q(1);
35 39
	omega(i) = q(2);
40
	% disp(wheels)
36 41
	
37 42
end
38 43

  
44
disp(wheels)
45

  
39 46
xSensor = xoldSensed;
40 47
ySensor = yoldSensed;
41 48
thetaSensor = thetaoldSensed;
branches/16299_s10/latex/math.tex
10 10
\item $x$ - true x position
11 11
\item $\tilde{x}$ - sensed x
12 12
\item $\hat{x}$ - desired
13
\item $r$ - true r
14
\item $\tilde{r}$ - sensed r
15
\item $\hat{r}$ - desired
16
\item $\phi$ - true phi position
17
\item $\tilde{\phi}$ - sensed phi
18
\item $\hat{\phi}$ - desired
19
\item $y$ - true y position
20
\item $\tilde{y}$ - sensed y
21
\item $\hat{y}$ - desired
22

  
23
\item $(\hat{r}, \hat{\phi}) ^ n$
24
\item $(\hat{x}, \hat{y}) ^ n$
25
\item $(\hat{v}, \hat{\omega}) ^ n$
26
\item $(\tilde{v}, \tilde{\omega}) ^ n$
27
\item $(\tilde{x}, \tilde{y}, \tilde{\Theta}, \tilde{\phi}) ^ n$
28
\item $(\hat{\omega_l}, \hat{\omega_r}) ^ n$
29
\item $({\omega_l}, {\omega_r}) ^ n$
30
\item $(\tilde{\omega_l}, \tilde{\omega_r}) ^ n$
31
\item $(\tilde{x}, \tilde{y}, \tilde{\Theta}) ^ n$
32

  
33
\item $(\tilde{x}, \tilde{y}, \tilde{\phi}) ^ n$
34
\item $\phi ^ n$
35
\item $\tilde{\phi} ^ n$
13 36
\end{itemize}
14 37

  
15 38

  
39

  
40

  
16 41
\textbf{motion model}
17 42

  
18 43
\[

Also available in: Unified diff