Documentos de Académico
Documentos de Profesional
Documentos de Cultura
7 SEPTIEMBRE, 2016
También vimos las ventajas y limitaciones de cada uno de los dispositivos, y adelantamos
que se combinan muy bien porque las características de su medición se complementan.
En esta última entrada de la serie veremos los IMU’s, dispositivos que combinan las
ventajas de ambos sensores para obtener mejores funcionalidades que la que podríamos obtener
usando un acelerómetro o giroscopio independientemente.
En la actualidad su bajo coste ha hecho que sean componentes frecuentes en una gran
cantidad de aparatos cotidianos. Existen muchos fabricantes de IMU’s, como Panasonic,
Robert Bosch GmbH, InvenSense, Seiko Epson, Sensonor, STMicroelectronics, Freescale
Semiconductor, y AnalogDevices.
Nosotros los usaremos frecuentemente en nuestros proyectos de electrónica y Arduino, por
ejemplo, para determinar la dirección de avance de un vehículo, la orientación de un accionador,
la inclinación de una plataforma, o incluso como forma de actuar con un ordenador con un guante
o un ratón 3D.
¿QUÉ ES UN IMU?
Una unidad de medición inercial (IMU) es el nombre genérico para denominar a un
dispositivo que es capaz de medir la velocidad, orientación y aceleración de un sistema.
En realidad, los acelerómetros y giroscopios pueden ser considerados como IMU’s simples pero, en
general, el nombre de IMU se reserva para dispositivos que integran más de un sistema de
medición.
Al hablar de IMU’s es frecuente hacer referencia a la cantidad de grados de libertad (DOF)
que dispone. Los grados de libertad de un sensor representan la cantidad de magnitudes
independientes que es capaz de medir.
IMU de 10 DOF, que añade un barómetro para la estimación de la altura del sensor.
Los acelerómetros no tienen deriva (drift) a medio o largo plazo, ya que realizan la
medición medida absoluta del ángulo que forma el sensor con la dirección vertical, marcada
por la gravedad. Sin embargo, se ven influenciados por los movimientos del sensor y el ruido
por lo que no son fiables a corto plazo.
Los giroscopios funcionan muy bien para movimientos cortos o bruscos, pero al usar
giroscopios de vibración que realmente miden la velocidad angular, y obtienen el ángulo por
integración respecto al tiempo, acumulan los errores y el ruido en la medición, por lo que a
medio o largo plazo tienen deriva (drift).
Por tanto combinar las mediciones de ambos dispositivos permite a las IMU obtener
mediciones de la orientación más precisas que la de un acelerómetro y un giroscopio por
separado. Veremos esto a continuación, pero antes haremos una reflexión sobre que es la
orientación.
OBTENER LA ORIENTACIÓN
CON UN IMU
Para determinar la distribución de un objeto respecto a una base en un espacio
tridimensional deberemos establecer su posición y orientación. Se requieren tres parámetros
para determinar la posición relativa y otros tres para determinar su orientación.
Seguramente la más extendida e intuitiva son los ángulos de navegación, o ángulos de Tait-
Bryan, en los que la orientación se representa como tres rotaciones ortogonales en torno al
eje X (roll), Y (pitch), y Z (yaw).
Los ángulos de Tait-Bryan son una variación de los ángulos de Euler, introducidos por el
matemático Leonhard Euler durante su estudio sobre la mecánica del sólido rígido.
El gimbal lock es una desventaja tan importante que la forma habitual de representar la
rotación mediante el uso de cuaterinones. Los cuaterniones son una extensión de los números
complejos introducida por Hamilton en 1843, que emplean tres unidades imaginarias i, j, y k tal
que,
Es sabido que números complejos pueden usarse para representar vectores en el plano. De
forma equivalente, un cuaternión permite expresar un vector en el espacio tridimensional.
Comparados con los ángulos de Euler, los cuaterniones son más simples de componer y
evitan el problema del bloqueo del cardán. Comparados con las matrices de rotación, son más
eficientes y más estables numéricamente
Por este motivo los cuaterniones son una de las formas más habituales de expresar la
orientación en gráficos de ordenador y serán la forma preferida a emplear cuando queramos
trabajar con orientaciones en IMU’s y en proyectos de Arduino.
FILTRADO DE SEÑAL EN UN
IMU
Para poder tener las ventajas en tiempos cortos del giroscopio y las ventajas a medio y largo
plazo del acelerómetro es necesario que combinemos y filtremos la señal registrada en bruto
(RAW).
Existen varios filtros posibles siendo el más famoso el filtro de Kalman, desarrollado en
1960 por Rudolf E. Kalman. Es considerado como uno de los grandes descubrimientos del siglo
XX por sus implicaciones en el proceso de filtrado en sensores (no solo IMU’s) y es uno de
artífices de la carrera espacial.
A grandes rasgos el filtro de Kalman realiza una estimación del valor futuro de la medición,
y después compara el valor real mediante un análisis estadístico para compensar el error en futuras
mediciones.
Sin embargo, el filtro de Kalman en su versión general implica la realización de cálculos
complejos (ver Wikipedia) que suponen una implementación y tiempo de cálculo excesivo
para Arduino.
Por este motivo es frecuente emplear un filtro más sencillo denominado filtro
complementario. En realidad, el filtro complementario puede considerarse una simplificación
del filtro de Kalman que prescinde por completo del análisis estadístico.
Donde A y B son dos constantes que, inicialmente, puede tomarse 0.98 y 0.02
respectivamente. Podemos calibrar el filtro simplemente variando los valores de A y B siempre
que cumplamos la condición de que sumen 1 entre ellos.
El filtro complementario se comporta como un filtro de paso alto para la medición del
giroscopio y un filtro de paso bajo para la señal del acelerómetro. Es decir, la señal del giroscopio
manda a corto plazo, y la del acelerómetro y medio y largo, que es exactamente lo que queremos
para compensar sus ventajas y defectos.
En la mayoría de aplicaciones domésticas, el filtro complementario es suficiente y
proporciona valores muy similares al filtro Kalman, siempre que los valores de A y B esten
debidamente calibrados.
Existen versiones más sofisticadas del filtro complementario, así como versiones
simplificadas unidimensionales del filtro de Kalman que sí pueden ser implementadas en
Arduino. Veremos esto en una próxima entrada avanzada.
Mientras tanto, emplearemos las IMU’s como el MPU6050 y los filtros empleados en
nuestros proyectos de electrónica y Arduino.
&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Un cuadrotor tiene cuatro motores que pueden girar a diferentes velocidades, por lo que
parece razonable que tiene cuatro "grados de libertad" que puede ser controladas. Los
cuatro gobiernos controlables son:
1. válvula reguladora
2. pitch
3. rodillo
4. desvío
Cómo esas entradas de control son derivados y como comandos de radio para el
cuadrotor serán cubiertos en un paso posterior. Este paso se centra en cómo llegar desde
los cuatro comandos (las entradas) a las cuatro velocidades de motor (las salidas).
Puede ver la imagen en el paso anterior e intuitivamente adivinar cuál debe ser la
asignación de entrada/salida para un cuadrotor. Es más fácil de representar como una
matriz de 4 x 4, que es simplemente una tabla donde las filas son las entradas y las
columnas son salidas (o viceversa). Imagen de este paso muestra la matriz de comando
para un cuadrotor + modo con hélice direcciones indicadas en imagen del paso anterior.
[+] Indica que el motor debe ser acelerado en respuesta a un comando de entrada positivo.
[-] Indica que el motor debe ser retrasado en respuesta a un comando de entrada positivo.
[0] indica que la velocidad del motor se ve afectada por un comando de entrada positivo.
La válvula reguladora, echada y rodillo trabajo aumentando o reduciendo el empuje
producido por los motores especiales para crear un esfuerzo de torsión neto en el marco
de cuadrotor. Obras de desvío en un principio diferente, con par de reacción del motor
para girar el bastidor. El par de reacción para cada motor es en sentido contrario a la
hélice y es proporcional a la resistencia vista por el propulsor que empuja a través del aire.
En un mundo ideal, podría tomar las cuatro entradas (acelerador, pitch, roll, desvío) y
directamente se les asignan a las cuatro salidas motor utilizando la matriz de comandos
del paso anterior. Pero hay algunas cosas que hacen poco práctico hacerlo en la vida real:
1. disturbios tales como viento y no ideales tales como diferencias en los motores y hélices
causa la dinámica de la vida real ser ruidoso y variable. Asignación de mando directo no
toma en cuenta, y nuestra mente, ojos y manos podrían no ser lo suficientemente rápidas
como para reaccionar a éstos en tiempo real, sobre todo en un pequeño cuadrotor.
2. queremos cuadrotor tener cierto grado de "autonomía". En particular, sería bueno si el
cuadrotor podría uno mismo-nivel, volviendo a casi horizontal cuando mandamos cero
pitch, roll y yaw. Con asignación directa, estamos ordenando la cuadrotor para girar pero
no sabe volver a la horizontal cuando hemos terminado.
Esto es donde control de regeneración . A pesar de sus notaciones matemáticas
complejas, el concepto de control por realimentación es simple. Imagine que lavarse las
manos en un fregadero que nunca has usado antes. Se establece el mando del grifo en
alguna posición intermedia. Si el agua 's demasiado frío, usted súbalo. Si el agua 's
demasiado caliente, gire hacia abajo. Cuánto usted gire hacia arriba o hacia abajo
depende de cuán caliente o frío se compara a tu gusto. Si el agua comienza frío, pero
rápidamente se calienta, usted puede preventivamente girar la perilla abajo a prevenirla de
superación y quema las manos. Todos estos conceptos son matemáticamente
formalizados en el control de retroalimentación.
Control de retroalimentación en un cuadrotor:
Una estructura común para el control de retroalimentación se denomina control PID
(proporcional-Integral-derivado). Lo que se desea controlar en este caso es
el ángulo (pitch, roll o ángulo de desvío) de la cuadrotor. Esto es análogo a la temperatura
del agua en el fregadero. Con ningún comando entrada, tratamos de controlar el ángulo
para ser cero. Sin embargo, también podemos mandar a un ángulo distinto de cero para
mover el cuadrotor. Los comandos que envía a los motores se basan en el error entre el
ángulo que queremos y el ángulo que realmente tienen, como es medido por la IMU.
- Proporcional (P): el comando es proporcional a cuánto error angular tenemos. Ayuda a
devolver la cuadrotor cero ángulo, o empujar a cualquier ángulo que te mando.
-Integral (I): El comando es proporcional al error acumulado en el tiempo. Puede ayudar a
luchar contra los disturbios como el viento o el rendimiento del motor asimétrico. No utilice
esto en mi quad, aunque dejé código de marcador de posición para en el proyecto de
Arduino.
- Derivado (D): el comando es proporcional a la tasa de cambio del error *. Resiste el
movimiento y mantiene el ángulo de la superación de la meta.
Analogía masa-resorte-amortiguador:
Los efectos del control PD (sin término integral) en un cuadrotor son similares a agregar un
resorte virtual y un regulador de tiro virtual (amortiguador) a la cuadrotor, que es la masa.
Ver la primera imagen para una representación gráfica de esto. La rigidez se establece por
una constante, Kp, la "ganancia proporcional". La tasa de amortiguación se encuentra por
otra constante, Kd, el "beneficio derivado". El ángulo θr, define el ángulo en el que los
resortes se estiran uniformemente. Imaginar los resortes a una tabla movible y la tabla
para ordenar cuadrotor para ir a un determinado ángulo de rotación.
-Aumento de Kp empuja el cuadrotor hacia el ángulo de referencia más rápido, pero
también puede resultar en más overshoot y oscilación.
-Aumento de Kd se ralentiza la velocidad de rotación de la cuadrotor, pero puede también
húmedo a oscilaciones.
Tenga en cuenta que las ganancias se pueden aumentar a un punto donde este modelo se
rompe. Si Kp, Kd, o ambos son demasiado altos, el controlador iniciará amplificar ruido,
conduce a inestabilidad y oscilaciones. Estas oscilaciones tienden a ser en una frecuencia
más rápida que las oscilaciones que se vería desde una alta Kp: relación entreKd . Si ves
oscilaciones rápidas, la mejor cosa a hacer es bajar ambos beneficios.
Las ganancias requiere práctica y experiencia y depende del exacto y preferencia de
vuelo. Una muy buena guía para PID Sintonía multirotors, con vídeo ejemplo para mostrar
los distintos tipos de oscilaciones, pueden encontrarse aquí. Que la analogía del
resorte/apagador le ayuda a pensar intuitivamente las ganancias.
* En realidad, en la práctica a veces es más fácil utilizar el índice medido de rotación
directamente, en lugar de intentar medir la tasa de cambio del error. El error sólo existe en
software y computación que el derivado de la misma puede ser ruidoso. Prácticamente
hablando, utilizando la tasa medida de rotación directamente en el giroscopio funciona muy
bien. Para esto en la analogía masa-resorte-amortiguador, los amortiguadores están
conectados a tierra (ángulo cero) en vez de a la tabla. En esta configuración, resisten toda
la rotación, incluso mandó a rotación.
Pitch, Roll y Yaw controladores:
El cuadrotor tiene en realidad tres controladores de retroalimentación independientes, uno
para pitch, roll y yaw. Acelerador se asigna directamente a los cuatro motores sin control
de retroalimentación en este cuadrotor. Con un sensor de altitud, podría añadirse un cuarto
regulador de retroalimentación.
Los controladores de la echada y del rodillo son controladores PD que coincidan
exactamente con la primera imagen. En la medida en que el cuadrotor es simétrica, las
ganancias de la echada y del rodillo deben ser el mismo. Las salidas de la proporcional y
de los beneficios derivados se suman juntos y enviadas a los motores a través de la matriz
de comando en el paso anterior. La segunda imagen muestra los controladores PD echada
y el rodillo en forma de diagrama de bloque. Las variables son:
Kp - ganancia proporcional
Kd - derivado de la ganancia
Θr - ángulo de referencia o el comando
Θ - ángulo medido de la IMU
Ω - medida tasa de rotación de la IMU.
y - el comando de salida.
El control de guiñada se basa sólo en tarifa, por lo que no coincide exactamente con las
imágenes. El error es la diferencia entre la tasa de desvío ordenada y la medida del desvío
de la IMU. El magnetómetro en la IMU podría utilizarse para medir el ángulo de desvío
absoluto para implementar un completo controlador PD, pero no he probado esto todavía.