miércoles, 17 de febrero de 2010

Practica 1

A continuación os ponemos unas imágenes de los avances de nuestro robot.

Aquí le vemos realizando un recorrido y el error cometido.Esta prueba se realizaría 10 veces para tomar los correspondientes errores. En general para desarrollar esta parte no hemos tenido muchos problemas.



---------------------------------------

En estos otros vemos las diferentes pruebas con los motores. Conseguimos mover los motores a diferentes velocidades o que se muevan un determinado número de grados.









---------------------------------------

Aquí "vemos", el funcionamiento de la odometría del robot. Hemos tenido que poner unas restricciones para que los datos fueran entre 0-360 como nos pedían. Se presentaban algunos problemas en la medida pero eran debido a que no limpiabamos bien la pantalla y se quedaban datos basura.




---------------------------------------

En este otro se ve como va dibujando su trayectoria según avanza. En si el desarrollo de esta parte es sencillo pero nos ha tenido en jaque unos problemas en las conversiones de tipos.



---------------------------------------

Para el calculo de la matriz de covarianza hemos realizado un programa en pascal que nos daba el siguiente resultado en pantalla:



Si os interesa os dejo el codigo del programa.

PROGRAM COVARIANZA;
CONST
NUM_TOTAL_VALORES = 10;
TYPE
tPuntos = ARRAY [1..NUM_TOTAL_VALORES,1..2] OF real;
tMatCovarianza = ARRAY [1..2,1..2] OF real;


VAR
puntos:tPuntos;
i,j:integer;
x,y,x_medio,y_medio:real;
MatrizCovarianza:tMatCovarianza;
a11,a12,a21,a22:real;

BEGIN
x_medio := 0;
y_medio := 0;
FOR i:= 1 TO NUM_TOTAL_VALORES DO BEGIN

write('Dame el valor de X',i,': ');
readln(x);
puntos[i,1]:=x;
x_medio := x_medio + x;

write('Dame el valor de Y',i,': ');
readln(y);
puntos[i,2]:=y;
y_medio := y_medio + y;

writeln;
END;

x_medio := x_medio / NUM_TOTAL_VALORES;
y_medio := y_medio / NUM_TOTAL_VALORES;
writeln('El punto medio es el (',x_medio:0:1,',',y_medio:0:1,')');
writeln;

MatrizCovarianza[1,1]:=0;
MatrizCovarianza[1,2]:=0;
MatrizCovarianza[2,1]:=0;
MatrizCovarianza[2,2]:=0;

FOR i:= 1 TO NUM_TOTAL_VALORES DO BEGIN
MatrizCovarianza[1,1]:= MatrizCovarianza[1,1] + ((puntos[i,1] - x_medio) * (puntos[i,1] - x_medio));
MatrizCovarianza[1,2]:= MatrizCovarianza[1,2] + ((puntos[i,1] - x_medio) * (puntos[i,2] - y_medio));
MatrizCovarianza[2,1]:= MatrizCovarianza[2,1] + ((puntos[i,2] - y_medio) * (puntos[i,1] - x_medio));
MatrizCovarianza[2,2]:= MatrizCovarianza[2,2] + ((puntos[i,2] - y_medio) * (puntos[i,2] - y_medio));
END;

MatrizCovarianza[1,1]:= MatrizCovarianza[1,1] / NUM_TOTAL_VALORES;
MatrizCovarianza[1,2]:= MatrizCovarianza[1,2] / NUM_TOTAL_VALORES;
MatrizCovarianza[2,1]:= MatrizCovarianza[2,1] / NUM_TOTAL_VALORES;
MatrizCovarianza[2,2]:= MatrizCovarianza[2,2] / NUM_TOTAL_VALORES;

writeln('La matriz de covarianza es:');
writeln;
writeln('|',MatrizCovarianza[1,1]:0:2,' ',MatrizCovarianza[1,2]:0:2,'|');
writeln('|',MatrizCovarianza[2,1]:0:2,' ',MatrizCovarianza[2,2]:0:2,'|');


END.

No hay comentarios:

Publicar un comentario