-
Notifications
You must be signed in to change notification settings - Fork 14
Pruebas de Hovering
MatiTaila edited this page May 15, 2012
·
27 revisions
- primera prueba
- estaba mal la caracterización de los motores
- Caracterizamos de nuevo los motores
- Calibramos acelerometro, gyro y magneto de nuevo
- 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
- habia quedado mal el codigo.
- los logs no sirven
- Arreglado del codigo. Faltaba un continue en la parte que calentaba el kalman
- 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!!!
- 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
- 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
- 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
- hizo cualquiera. estaba mal implementada la compensacion por temp del acc
- 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
- 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
- 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
- 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
- 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
- se va siempre para atras creo.
- pusimos 1, 2 y 3m de setpoint y no cambio nada
- Agregado Bias
- 8 estados
- ando feo. 2 pruebas con bias y 1 sin bias
- Correccion continuidad theta bien hecho
- 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
- 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
- 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
- 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
- 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])
- 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
- el 05 con k normal- y el 06 con k normal--
- anduvo muy bien
- muy estable y vuelve al equilibrio ante patadas inesperadas
- 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
- 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]);
- Anda bien. Parece que encara. Vuelve medio lento a su posición ante patadas. Se nos acabó la beaglejuice, mañana probamos
- 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)
- 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
- 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
- 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]);
- 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]);
- 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]);
- Se utiliza KALMAN 1 y CONTROL 2
- Se queda torcido quien sabe por que! un viaje
- Anda re estable igual, pero en otro ángulo
- 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
- Config para 2012_05_02_3
- Idem 2012_05_02_3_01.
- setpoint psi en +20deg
- Idem 2012_05_02_3_01.
- setpoint psi en +10deg
- Idem 2012_05_02_3_03.
- setpoint psi en +10deg
- SIN integrador.
- setpoint psi en +10deg
- SIN integrador.
- setpoint psi en 0deg
- Idem 2012_05_02_3_06
- 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
- 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
- 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
- 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]
yR=[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
- 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]
yR=[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
- KALMAN5 y CONTROL9anduvo muy bien en el equilibrio. Las patadas se banco unas cuantas no demasiado fuerte. Cuando pateamos fuerte se puso loca. lindo.
- 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]
yR=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