Skip to content

Pruebas de Hovering

MatiTaila edited this page May 15, 2012 · 27 revisions

25 de marzo

  • primera prueba
  • estaba mal la caracterización de los motores

  • Caracterizamos de nuevo los motores
  • Calibramos acelerometro, gyro y magneto de nuevo

26 de marzo

  • sube pero se va para el costado
  • no vuelve

  • estaba mal la calibración del gyro, faltaba (o sobraba) un 180/pi

  • sacamos moving average porque retardaba la estimacion del estado
  • empezamos a controlar theta
  • rampa al pasar de i2c=50 a w_hover

3abril

  • habia quedado mal el codigo.
  • los logs no sirven

  • Arreglado del codigo. Faltaba un continue en la parte que calentaba el kalman

3abril_tarde

  • gira como loco segun theta
  • puede ser q el sentido de giro sea incorrecto
  • OJO DISCONTINUIDAD DE THETA EN -PI Y PI

  • Cambio de signo del torque de drag!!!

3abril_noche

  • No gira mas según theta! -> El cambio de signo del drag estuvo bien
  • no le da pa levantar. Puede estar mal el w_hover ahora esta en 298 rad/s ~ i2c 155

  • Se agrego la posibilidad de aumentar y reducir el w_setpoint con teclas

4abril_mañana

  • bastante mejor. al aumentar el w setpoint empezo a levantar
  • 4abril_manana_5 es una prueba agarrandolo de abajo sin cuerdas para ver qué quieren hacer los motores. Se inclinó al quad según: z, -z, -y, y, -x, x
  • Parece que le da demasiada bola a los w_q y muy poca a euler
  • Matriz muy blanda. La mas blanda de todas

  • Cambio de matriz de control. Es razonable. Se probo apagado y mejoro el problema de darle bola al ángulo y no tanto al wq

4abril_tarde

  • Sobre la marcha se cambio el w__hover y aparte se iba subiendo mientras volaba
  • Se probo con 1 metro de setpoint en z
  • Se piensa que esta girando. mala estimacion de los estados wq

  • Re-calibrar el gyro
  • Compensación por temperatura del acc

2012_04_05_1

  • hizo cualquiera. estaba mal implementada la compensacion por temp del acc

2012_04_05_2

  • se va siempre para la derecha

  • Medición de w de los 4 motores. El 3 y el 4 (atras, derecha) dieron entre 1 y 6 hz menos que 1 y 2, probandolos a diferentes velocidades. A mayor velocidad mayor diferencia.
  • Cambio del motor 4 (derecha) por otro.
  • Actualización de la masa (incluye caja acrílico) y w_hover

2012_04_06_1

  • anduvo muuuucho mejor!!
  • se inclina un cacho para la izquierda
  • la masa del quad estaba mal

  • Verdadera actualización de la masa. Ahora si incluye la caja de acrílico
  • Arreglados los tiempos muertos donde la beigel quedaba trancada. Ahora se escriben los logs a un pendrive. El problema era escribir en la SD

2012_04_14_1

  • mejoro, sube bien derechito

  • Se incluye Kalman GPS con la posibilidad de mentir en los datos y hacer como q el GPS tirara ceros siempre. Actualiza gps cada 2 segundos
  • Se incluye integrador en x, y, z y theta
  • masa se calcula en funcion de w_hover

2012_04_16_1

  • anda mejor sin integrador
  • descubrimos que el giro en theta esta mal
  • la bateria no estaba bien apretada con el belcro

  • arreglo de theta. Estaba mal calculado
  • cambio ruidos Kalman
  • ajuste batería con belcro
  • GPS cada 1 segundo

2012_04_18_1

  • control en 8 estados. GPS fake
  • anduvo feo, se iba pila pa los cosatados, oscilaban psi y phi. Capaz q con los ruidos nuevos seguimos mas a la lectura del sensor y el control se vuelve muy violento
  • Probamos con imu_comm y los giros en theta andan mal con giros para un lado y parece q bien con giros pal otro...

  • cambio w_hover de 308 a 310 porque agregamos el gps y el cable que pesan un poquito
  • Cambio matriz de control. Ponemos una menos violenta

2012_04_18_2

  • se va siempre para atras creo.
  • pusimos 1, 2 y 3m de setpoint y no cambio nada

  • Agregado Bias

2012_04_21_1

  • 8 estados
  • ando feo. 2 pruebas con bias y 1 sin bias

  • Correccion continuidad theta bien hecho

2012_04_21_2

  • Sin bias. 8 estados.
  • Se hizo mierda
  • se fue un poquito para adelante y muchisimo para atras.

  • Calculo de phi y psi tiene en cuenta la norma de lo que tira el acc

2012_04_21_3

  • 8 estados - con bias
  • bailotea pa todos lados
  • un poco mejor pero feo igual

  • Cambio matriz realimentación más. La primera (soft) con Q=0.01eye(N) y la segunda (media) con Q=0.1eye(N). Pruebas con y sin integradores

2012_04_24_1

  • control de 12 estados, con corrección bias acc, gps fake, matriz media: Anduvo riquisimo! La mejor hasta ahora por lejos!
  • control 16 estados (12 + integrador en x, y, z, theta), corrección bias
  • acc, gps fake, matriz violenta: no mejoro demasiado, más bien dió peor que el anterior.
  • Probamos con 8 estados: dio feo

  • Diferentes matrices de realimentación

2012_04_25_1

  • pique retardado en la prueba 2
  • con la que anduvo bien el 24, esta vez no anduvo tan bien... cabeceaba
  • con normal-- no le daba pa responder y con normal++ oscilaba demasiado.
  • normal- y normal+: intermedio

2012_04_27_1_01

  • Prueba psi: vimos retraso en la estimación de psi

  • Cambio ruido kalman:
    Q_imu   = diag(1*[100 100 100 1 1 1 100 100 100 10 10 10 1 1 1])
    R_imu   = diag(100*[.1  .1  10  100 100 100 1 1 1 10])
    

2012_04_27_1_04

  • Sacamos la panza y enloqueció. Debe ser porque el w_hover ya no se corresponde

  • Bajamos w_hover para q concuerde con el peso del quad sin panza (sin beagle). quedó en w = 270

2012_04_27_1_05 y 2012_04_27_1_06

  • el 05 con k normal- y el 06 con k normal--
  • anduvo muy bien
  • muy estable y vuelve al equilibrio ante patadas inesperadas

2012_04_27_1_07

  • volvimos el w_hover a 310 y volvimos a montar la beagle pero esta vez con la batería arriba del casco para subir el centro de masa.
  • Super inestable

2012_04_27_1_08 al 2012_04_27_1_13

  • sacamos la batería y agregamos el mismo peso pero distribuido de manera q el casco quede mas parecido a una esfera
  • no anduvo nada bien: nos hace pensar que en realidad la forma de pelota/chorizoide no influía tanto
  • La razón por la que anduvo bien al sacar la caja y dejar solo la batería es que los motores hacen menos fuerza de la que se piensan. El sistema se linealiza en torno a un w_hover pero nosotros usamos otro mas chico, entonces nos movemos sobre una recta que no es tangente a la curva fuerza vs. velocidad angular en el nuevo w_hover. Al hacer poca fuerza, el sistema vuelve al equilibrio por cómo es el dispositivo de prueba.

  • Cambiamos K. generada con:
    CONTROL 1
    Q=diag([1 1 1  1e2 1e2 1e2  1 1 1  1 1 1  1 1 1 1]);
    R = diag(.1*[1 1 1 1]);
    

2012_04_27_1_14

  • Anda bien. Parece que encara. Vuelve medio lento a su posición ante patadas. Se nos acabó la beaglejuice, mañana probamos

2012_04_28_1

  • Probamos igual que ayer en el angulo psi. Anduvo bien, quedamos conformes. Estamos con la matriz de control anterior y los ruidos de kalman de ayer (estan escritos mas arriba)

2012_04_28_2

  • Prueba completa de vuelo. Anduvo mas o menos, capaz fue el tirón de la cuerda lo que lo descompenso. Se acabó la batería, vamos a seguir probando así como está.
  • Por las dudas: todas estas pruebas son con control proporcional de 12 estados y gps fake

2012_04_30

  • Pasamos todos los cambios q estaban hechos en la beiguel al git y nos pusimos al dia. beiguel quedo igual q origin master. Además se agregó el control remoto con el teclado pero todavía no lo vamos a usar.
  • Lo fuimos a probar a frankestein y anduvo Horrible. Que puede haber sido si esta igual q ayer? habrá quedado algo mal pulleado?

  • Cambio matrices Kalman, para que la posicion en z siga menos al gps y al barometro y mas a la prediccion. Sino al poner el gps fake no va a encarar si sube un poco xq el gps va a decir 0.
    KALMAN 1
    Q_imu_gps = diag([1e2 1e2 1e2 1e0 1e0 1e0 1e2 1e2 1e2 1e1 1e1 1e1 1e0 1e0 1e0 ]);
    R_imu_gps = diag([1e3 1e3 1e3 1e4 1e4 1e4 1e2 1e2 1e2 1e2 1e2 1e5]);
    R         = diag([1e1 1e1 1e3 1e4 1e4 1e4 1e2 1e2 1e2 1e5]);
  • Arreglado de tiempos que entraban al kalman. Incluir la librería que se usa para el control remoto via wifi hace que se enlentezca todo. Se saca el control remoto

2012_05_01_2

  • Pudimos volver a hacer andarlo bastante bien probando solo con psi

  • Cambio ruidos Kalman para que siga aún más a la observación (rodrigo):
    KALMAN 2
    %                  x   y   z  psi phi the vqx vqy vqz wqx wqy wqz ax  ay  az
    Q_imu_gps = diag([1e2 1e2 1e0 1e0 1e0 1e0 1e2 1e2 1e2 1e1 1e1 1e1 1e0 1e0 1e0 ]);
    Q_imu     = Q_imu_gps;
    %                 psi phi the ax  ay  az  wqx wqy wqz  x   y   z
    R_imu_gps = diag([1e4 1e4 1e4 1e4 1e4 1e4 1e1 1e1 1e1 1e2 1e2 1e4]);
    %                 psi phi the ax  ay  az  wqx wqy wqz  z
    R_imu     = diag([1e1 1e1 1e3 1e4 1e4 1e4 1e0 1e0 1e0 1e3]);
    %                  x   y   z  vqx vqy vqz
    Q_gps     = diag([1e2 1e2 1e2 1e2 1e2 1e2]);
    %                  x   y   z  vqx vqy vqz
    R_gps     = diag([1e0 1e0 1e5 1e0 1e0 1e5]);

2012_05_01_3

  • No anduvo muy bien, puede haber sido la conexion ssh. Creemos q al cerrar el emacs anduvo mejor

  • Cambio ruido Kalman. No sigue tanto a la observación sino que se guía más por la predicción:
    KALMAN 3
    %                  x   y   z  psi phi the vqx vqy vqz wqx wqy wqz ax  ay  az
    Q_imu_gps = diag([1e2 1e2 1e2 1e0 1e0 1e0 1e1 1e1 1e1 1e1 1e1 1e1 1e0 1e0 1e0 ]);
    %                 psi phi the ax  ay  az  wqx wqy wqz  x   y   z
    R_imu_gps = diag([1e3 1e3 1e3 1e4 1e4 1e4 1e3 1e3 1e3 1e2 1e2 1e5]);
    %                  x   y   z  psi phi the vqx vqy vqz wqx wqy wqz ax  ay  az
    % Q_imu     = diag([1e2 1e2 1e2 1e2 1e2 1e0 1e2 1e2 1e2 1e1 1e1 1e1 1e0 1e0 1e0]);
    Q_imu     = Q_imu_gps;
    %                 psi phi the ax  ay  az  wqx wqy wqz  z
    R_imu     = diag([1e3 1e3 1e3 1e4 1e4 1e4 1e3 1e3 1e3 1e5]);
    %                  x   y   z  vqx vqy vqz
    Q_gps     = diag([1e2 1e2 1e2 1e2 1e2 1e2]);
    %                  x   y   z  vqx vqy vqz
    R_gps     = diag([1e0 1e0 1e5 1e0 1e0 1e5]);

2012_05_02_1

  • Probamos con muchas matrices de control: normal--, normal-, normal y normal+
  • Anduvo feo, solamente no divergió con normal-
  • Todas estas no sirvieron para nada porque las matrices de control ya sabemos q no son buenas. Le dan demasiada bola a los ángulos. La matriz buena de control es la generada así:
    CONTROL 1
    Q=diag([1 1 1  1e2 1e2 1e2  1 1 1  1 1 1  1 1 1 1]);
    R = diag(.1*[1 1 1 1]);

  • Control mas chiquito, solo con psi y wqx. Generada con
    CONTROL 2
    Q=diag([10 1]);
    R = diag(.1*[1 1 1 1]);

2012_05_02_2

  • Se utiliza KALMAN 1 y CONTROL 2
  • Se queda torcido quien sabe por que! un viaje
  • Anda re estable igual, pero en otro ángulo

2012_05_02_3

  • Para todas las pruebas de esta serie se usan:
    CONTROL 3
    K_full
    +0 0 0  0       0 0 0 0 0   0      0 0
    +0 0 0   8.464          0 0 0 0 0    5.3818  0 0
    +0 0 0  0       0 0 0 0 0   0      0 0
    +0 0 0  -8.464  0 0 0 0 0  -5.3818  0 0
    
  • Para las que tienen integrador en psi, es
     CONTROL INT 3
    K_int_full
    +0      0       0       0
    +0      0       0       2.18
    +0      0       0       0
    +0      0       0       -2.18
    
  • Kalman siempre es Kalman 1

2012_05_02_3_01

  • Config para 2012_05_02_3

2012_05_02_3_02

  • Idem 2012_05_02_3_01.
  • setpoint psi en +20deg

2012_05_02_3_03

  • Idem 2012_05_02_3_01.
  • setpoint psi en +10deg

2012_05_02_3_04

  • Idem 2012_05_02_3_03.
  • setpoint psi en +10deg

2012_05_02_3_05

  • SIN integrador.
  • setpoint psi en +10deg

2012_05_02_3_06

  • SIN integrador.
  • setpoint psi en 0deg

2012_05_02_3_07

  • Idem 2012_05_02_3_06

2012_05_02_3_08

  • Con integrador como en 2012_05_02_3_01
  • setpoint psi en 0deg

  • Se implementa un filtro pasabajos en todas las medidas crudas. Es una convolución con
    FILTRO1
    h = [0.2 0.2 0.2 0.2 0.1 0.1]
  • Nueva calibración del magnetómetro
  • Control puesto a huevo, a dedaso:
    CONTROL4
    0     0       0       0       0       0       0       0       0       0      0       0
    0     0       0       10      0       0       0       0       0       1.5    0       0
    0     0       0       0       0       0       0       0       0       0      0       0
    0     0       0       -10     0       0       0       0       0       -1.5   0       0

2012_05_10_1

  • En realidad estas pruebas se realizaron el dia 9 de mayo y no el 10 como dice el nombre
  • KALMAN1, CONTROL1, FILTRO1: anduvo horrible. sacamos el filtro y tmb anduvo horrible
  • KALMAN1, CONTROL4, FILTRO1: anduvo mejor, queda torcido y oscila en torno a esa posición

  • Mucha menos bola a la medida de los ángulos, y mucha más bola a la predicción de los ángulos:
    KALMAN4
    %                  x   y   z  psi phi the       vqx vqy vqz wqx wqy wqz ax  ay  az
    Q_imu_gps = diag([1e2 1e2 1e2 1e-12 1e-12 1e-12 1e2 1e2 1e2 1e1 1e1 1e1 1e0 1e0 1e0 ]);
    %                 psi phi the     ax  ay  az  wqx wqy wqz  x   y   z
    R_imu_gps = diag([1e12 1e12 1e12 1e4 1e4 1e4 1e1 1e1 1e1 1e2 1e2 1e5]);
    %                  x   y   z  psi phi the vqx vqy vqz wqx wqy wqz ax  ay  az
    Q_imu     = diag([1e2 1e2 1e2 1e-12 1e-12 1e-12 1e2 1e2 1e2 1e1 1e1 1e1 1e0 1e0 1e0]);
    %                 psi phi the ax  ay  az  wqx wqy wqz  z
    R_imu     = diag([1e12 1e12 1e12 1e4 1e4 1e4 1e1 1e1 1e1 1e5]);
    %                  x   y   z  vqx vqy vqz
    Q_gps     = diag([1e2 1e2 1e2 1e2 1e2 1e2]);
    %                  x   y   z  vqx vqy vqz
    R_gps     = diag([1e0 1e0 1e5 1e0 1e0 1e5]);
  • Nueva matriz de control: generada con Q=[100, 0; 0 1], R=[0.1, 0; 0 0.1]:
    CONTROL5
    0 0 0  21.7200256131244 0 0 0 0 0  8.1711068151253 0 0
    0 0 0  0                0 0 0 0 0  0               0 0
    0 0 0 -21.7200256131244 0 0 0 0 0 -8.1711068151253 0 0
    0 0 0  0                0 0 0 0 0  0               0 0 
  • Nueva matriz de control: generada con Q=[1000, 0; 0 1], R=[0.01, 0; 0 0.01]:
    CONTROL6
    0 0 0  203.982087398182 0 0 0 0 0  24.9882846096994 0 0
    0 0 0  0                0 0 0 0 0  0                0 0
    0 0 0 -203.982087398182 0 0 0 0 0 -24.9882846096994 0 0
    0 0 0  0                0 0 0 0 0  0                0 0

2012_05_10_2

  • Anduvo riquísimo. Se queda re horizontal casi sin oscilar
  • Lo único es que no reacciona muy bien a las patadas...

  • Nueva matriz de control: generada con Q=[1000, 0; 0 1], R=[0.1, 0; 0 0.1]:
    CONTROL7
    0 0 0  67.23 0 0 0 0 0  14.02 0 0
    0 0 0  0     0 0 0 0 0  0     0 0
    0 0 0 -67.23 0 0 0 0 0 -14.02 0 0
    0 0 0  0     0 0 0 0 0  0     0 0

2012_05_11_3

  • CONTROL7 Y KALMAN4: Anduvo muy rico. nos quedamos super conformes. vuelve bastante rapido aunque con un cacho de sobretiro

  • K generada con Q=[1 1 1 1000 1000 1000 1 1 1 1 1 1] y R=[0.1 0.1 0.1 0.1]:
    CONTROL8
    -2.1172255e+00  -4.4529360e-18   1.5764300e+00   8.4920591e-17  -7.9192810e+01  -4.8922636e+01  -6.2181918e+00  -1.4037687e-17   7.1644844e+00   1.2139077e-17  -1.5148037e+01  -2.2810867e+01
    -4.2621828e-18  -2.1172255e+00   1.5764300e+00   7.9192810e+01   7.5759424e-17   4.8922636e+01   6.7217706e-18  -6.2181918e+00   7.1644844e+00   1.5148037e+01   4.1507257e-17   2.2810867e+01
    2.1172255e+00  -4.6256416e-18   1.5764300e+00   9.1072545e-17   7.9192810e+01  -4.8922636e+01   6.2181918e+00  -1.4529955e-17   7.1644844e+00   1.2789292e-17   1.5148037e+01  -2.2810867e+01
    -4.2592463e-18   2.1172255e+00   1.5764300e+00  -7.9192810e+01   7.5775518e-17   4.8922636e+01   6.7298643e-18   6.2181918e+00   7.1644844e+00  -1.5148037e+01   4.1508860e-17   2.2810867e+01
  • Kalman un poco menos exagerado:
    KALMAN5
    igual que la kalman4 pero e6 en vez de e12

2012_05_11_3_04

  • Probamos con una matriz completa de control, realimentando todos los estados. En equilibrio se portaba bastante bien pero al pegarle patada divergió...

  • Control que le de menos bola a posiciones y velocidades. generada con Q=[.1 .1 .1 1000 1000 1000 .1 .1 .1 1 1 1] y R=[0.1 0.1 0.1 0.1]:
    CONTROL9
    -6.6993949e-01   3.2202596e-19   4.8337980e-01  -1.7646371e-17  -7.3551997e+01  -4.8922636e+01  -3.2365353e+00   5.0784784e-18   3.9016885e+00  -1.5165370e-17  -1.4621997e+01  -2.2810867e+01
    -3.3736075e-18  -6.6993949e-01   4.8337980e-01   7.3551997e+01  -1.6003086e-16   4.8922636e+01  -1.1363108e-17  -3.2365353e+00   3.9016885e+00   1.4621997e+01   4.9137920e-18   2.2810867e+01
    6.6993949e-01  -1.0114894e-18   4.8337980e-01   1.2873008e-16   7.3551997e+01  -4.8922636e+01   3.2365353e+00  -1.3650680e-18   3.9016885e+00   1.4080424e-17   1.4621997e+01  -2.2810867e+01
    -2.0408264e-18   6.6993949e-01   4.8337980e-01  -7.3551997e+01  -1.3648410e-17   4.8922636e+01  -4.9229460e-18   3.2365353e+00   3.9016885e+00  -1.4621997e+01   3.4161584e-17   2.2810867e+01

2012_05_12_1

  • KALMAN5 y CONTROL9anduvo muy bien en el equilibrio. Las patadas se banco unas cuantas no demasiado fuerte. Cuando pateamos fuerte se puso loca. lindo.

2012_05_14

El gran dia!! Anduvo riquísimo!! Acá van los parámetros:

  • Igual que las anteriores 2 pero con e3 en vez de e6 y e12
    KALMAN 6
    %                  x   y   z  psi  phi  thet vqx vqy vqz wqx wqy wqz ax  ay  az
    Q_imu_gps = diag([1e2 1e2 1e2 1e-3 1e-3 1e-3 1e2 1e2 1e2 1e1 1e1 1e1 1e0 1e0 1e0 ]);
    %                 psi phi the ax  ay  az  wqx wqy wqz  x   y   z
    R_imu_gps = diag([1e3 1e3 1e3 1e4 1e4 1e4 1e1 1e1 1e1 1e2 1e2 1e5]);
  • K generada con Q=[1 1 1 100 100 100 1 1 1 1 1 1] y R=0.1*[1 1 1 1]
    CONTROL 10
    -2.1544956e+00   3.6950631e-18   1.5764300e+00  -1.0431816e-16  -3.6484209e+01  -1.5617918e+01  -4.5461357e+00   6.1044948e-18   7.1644844e+00  -7.9935009e-18  -1.0395011e+01  -1.2953205e+01
    1.7938951e-18  -2.1544956e+00   1.5764300e+00   3.6484209e+01   5.7983711e-17   1.5617918e+01  -9.7497291e-18  -4.5461357e+00   7.1644844e+00   1.0395011e+01   5.3337850e-18   1.2953205e+01
    2.1544956e+00   3.6950625e-18   1.5764300e+00  -1.0431816e-16   3.6484209e+01  -1.5617918e+01   4.5461357e+00   6.1044936e-18   7.1644844e+00  -7.9935004e-18   1.0395011e+01  -1.2953205e+01
    -3.3345374e-19   2.1544956e+00   1.5764300e+00  -3.6484209e+01   2.1897820e-17   1.5617918e+01  -1.4241196e-17   4.5461357e+00   7.1644844e+00  -1.0395011e+01  -4.9772267e-18   1.2953205e+01 
  • Control 12 estados, gps fake, kalman all in 1, con bias, sin integradores
  • Todavia quedan problemas de thetas y altura