jueves, diciembre 21, 2006

pic para el tuning

Ayer finalmente compiló el programa assembler y se pudo grabar en el pic.
Hoy en lo Rodrigo voy a probar si funciona correctamente.

martes, diciembre 12, 2006

PID's

Bueno finalmente queda terminado el bloque de PIDs, el sistema de control consiste de 4 bloques internis PID y 2 externos.
Los bloques internos controlan directamente la salida a los actuadores (Aleron, timon, elevador y acelerador), mientras que los externos se encargan de mantener la altura del avion y de elegir una direccion de vuelo.
Ademas de los bloques PID se tubo que construir en C un modelo de avion lo mas real posible para poder comprobar el correcto funcionamiento del sistema de control.
El desafio para los siguientes dias en lograr modelar nuestro avion para encontrar los parametros de cada bloque PID que optimicen el funcionamiento del aeroplano en cuanto a tiempo de levantamiento y error en estado estable.
Ma;ana Miercoles nos reuniremos con el grupo para definir como proseguimos.

UAV_TEAM ONLINE

Esto es una prueba de un nuevo producto lanzado por la gente de meebo, "meebome".
Sirve para chatear online desde el blog con una persona que tenga una cuenta meebo.

El user de nuestra cuenta meeboo es "uav_team" el password se los paso por mail.
Los que accedan al blog pueden chatear online con uav_team si este está online o dejar un mensaje en otro caso.

El visitante puede setear un nick temporal en la ventana meebo para que pueda ser identificado.

Es una simple prueba


sábado, diciembre 09, 2006

Integracion del Sistema

Ya que estamos en etapas casi finales, y que el sistema gano complejidad, la caja anterior de aluminio quedo chica. Decidi entonces buscar una solucion y termine comprando por 400 pesos algo que esta bastante bueno. La caja es de plastico, por lo que tendremos que hacerle el apantallamiento usando cinta adhesiva metalica, pero tiene ciertas ventajas.
Es liviana, resistente, buenas terminaciones y es estanca (no que precisemos demasiada estanqueidad, pero sirve para la suciedad y por si el bobby se queda en la lluvia otra vez :P )
Tiene una tapa con 4 tornillos de plastico, y el sistema entra bien.
Para tener una idea de disposicion, tome un poco de cinta de enmascarar y presente los distintos componentes, la idea fue dejar el switch RC lo mas accesible a los servos (por eso se encuentra en la tapa) y el amplificador lo mas cerca a los giroscopos (una vez cerrada queda uno "encima" del otro). La idea fue tambien dejar la bateria dentro de la caja.
Queda un poco de espacio todavia para el segundo receptor y su placa correspondiente (tuning de los loops pid)

viernes, diciembre 08, 2006

Creo que tenemos el Kalman listo

Bueno, parece que despues de tanto sufrir llegamos a buen puerto.
El Kalman anterior que habiamos hecho no tenia una referencia para "resetear" los angulos, el que tenemos ahora si.
Lo que hice fue agregar un Kalman anidado para no aumentar la complejidad del actual (recordar que ya era de 9 estados). Es entonces que arme un kalman de 3 estados el cual resetea los angulos mediante el uso de los accelerometros para theta y phi.
Para el angulo psi (heading) lo que uso es el psi del gps si la velocidad es mayor a 2m/s, de lo contrario uso el estado anterior. Lo de la velocidad es porque si bien el gps me da un angulo de heading, este es valido solamente a ciertas velocidades.

Ya sabemos que lo mejor hubiera sido usar una brujula 3d o algun dispositivo absoluto de angulos. Si bien compramos una brujula (que para la practica resulto ser lenta y un tanto imprecisa), el manejo de la interfaz requeria demasiado tiempo, del cual no disponemos. La otra opcion era comprar un dispositivo, sin embargo los sensores de angulos de 3 ejes andan por los 700 dolares en origen.(mas caro que todo nuestro sistema)

El update de los angulos mediante los accelerometros tiene una contrapartida, y es que durante un giro muy largo o durante un ascenso muy prolongado, las medidas de angulos que obtenemos no son buenas. Sin embargo, se puede hacer que el update por kalman2 (asi le llame a la pequeña funcion) se haga durante ciertos instantes convenientes.

El dispositivo ahora esta andando correctamente en la mesa. Saque el muestreo de 8 veces de los gyros (y el caculo de su media) porque demoraban demasiado los loops. Esto hacia que el paso de tiempo discreto fuera demasiado grande, lo que hacia que el filtro divergiera (creo que es por como calculamos ciertas exponenciales de matrices, precisamos deltaTs chicos, tambien tenemos la integracion por Runge-Kutta). Los deltaTs acutales andan entre 0.01 y 0.02 (ideal 0.01)
Cuando muestreabamos mas, los deltaTs llegaban incluso a 0.9 (era demasiado pedir) lo cual provocaba NAN luego de cierto tiempo.

El sistema como dije esta quieto, Andres Chappe, antes, para mejorar el rendimiento lo movia, lo cual hacia que las medidas variaran mas y su media fuera mas cercana a cero. Esto ya no es necesario; Al momento de escribir esto, acaba de terminar un logueo de 30 minutos. El error en la posicion es menor al metro. El error en los angulos esta en el orden de 0.2 grados.
Ahora lo que falta es subirse al auto y ver que nos da un log del camino.
Hoy es un gran dia :D

lunes, diciembre 04, 2006

Euler - DCM - Quaternions ... para tener a mano!

Diretion Cousine Matrix (DCM) to Euler Angules

Segundo PIC

Como ya comentamos en algún momento vamos a hacer el tuning de los PID online, durante el vuelo. Para realizar el tuning de los PID seguramente utilizaremos el método de Ziegler Nichols o algún otro que consideremos conveniente para nuestro caso.

Para realizar este tuning en forma remota se nos ocurre utilizar una segunda radio con una frecuencia diferente a la de control de vuelo manual. Utilizaríamos 3 o cuatros canales en modo on-off para generar una palabra digital y un canal para generar un valor analógico. La palabra digital identifica a un parámetro de un controlador y el valor analógico se corresponde con el valor que deseamos que tenga el parámtro. Además podemos utilizar un canal on-off para informarle al procesador que la palabra digital y el valor del parámetro están disponibles para leer.

El pic se encargaría de muestrear las salidas PWM del receptor (Rx), generar la palabra digital y el valor analógico correspondiente al valor que deseamos que tenga el parámetro definido por la palabra digital.

Luego el Robostix lee la entrada analógica a través de un ADC y lee la palabra digital y la señal de habilitación a través de los pines de un puerto GPIO (General Purpose Input Output).

Resultados de Kalman

Con la amplificación por 6 y con la nueva calibración de los acelerómetros, tomando en cuenta los rate reales de cada uno, hemos mejorado el funcionamiento del filtro de Kalman. Los datos ahora no divergen como antes. Notamos que el movimiento aleatorio en torno de las posiciones de equilibro ayuda a mantener el valor.

Tenemos un problema de que en determinado momento los valores pasaron a NaN sin previamente percibir un crecimiento sostenido de los mismos, por tanto no parece ser que los datos divergan por un tema de acumulación de errores sino que puede deberse a que en algún cociente se esté produciendo una división por cero.

Vamos a implementar una corrección de los gyros con estimaciones obtenidas a partir de los valores de los acelerómetros. Cuando el vuelo es recto y nivelado a una velocidad constante tenemos que las aceleraciones ax, ay , az son despreciables y por tanto las aceleraciones que sensan los acelerómetros solo tienen las proyecciones de la gravedad.

ax = -g.sin(theta)
ay = g.cos(theta).sin(phi)
az = g.cos(theta).cos(phi)

por tanto:

theta = atan[ -ax/(ay.sin(phi) + az.cons(phi)) ]
phi = atan(ay/az)

Para el caso de psi debemos utilizar el GPS y determinar la dirección de vuelo a partir de dos valores consecutivos.

sábado, diciembre 02, 2006

Resultados de la Calibración

Se calibraron los tres gyros para determinar la transferencia de cada uno.
Para filtrar el ruído de las medidas se promediaron las muestras para una velocidad dada.

Las velocidades angulares en grad/sec utilizadas para el experimento fueron las siguientes:

{ -60 , -36 , -18 ,-9 , -4.5 , 0 , 4.5 , 9 , 18 , 36 ,60 }

para cada velocidad se realizó el muestreo a 1 Hz durante 3 min.


Gráfica de las transferencias:



Resultados:


mV/grad
valor null (mV)
giroP
28.9 2169.4
giroQ
28.1 2099.1
gyroR
29.5
2588.6

Calibración de Gyros amplificados

El gyro tiene las siguientes especificaciones






Se modificó la placa de amplificación eliminando el filtro RC de la entrada no inversora, solo se dejó la resistencia de polarización a tierra y se aumentó la ganacia hasta 6.

Por tanto ahora tenemos aproximadamente 30 mV/grad, siendo 2.5 volts el valor correspondiente a velocidad nula.