Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola a todos,
Estoy realizando un controlador de posición para un cuadróptero (es mi PFC), quiero que sea Open-Hardware así que iré publicando por aquí y en el blog los avances que vaya haciendo. Se que ya existen alternativas comerciales y abiertas (el openPilot, el KK o el multiWii por ejemplo), pero mi idea es que al final sea totalmente autónomo.
Por otra parte quiero hacer el sistema lo más general posible para que pueda aplicarse a todo tipo de drones (áereos, terrestre, acuaticos, submarinos o espaciales).
He partido el proyecto en varios trozos:
- Piloto --> controlador de posición (mi PFC) evita que el cuadróptero se vaya al traste, controlará los sensores y enviará las señales a los drivers para controlar la estabilidad del conjunto.
- Navegador --> Es el que toma las decisiones para que sea autónomo. Por falta de tiempo no voy a realizarlo dentro del PFC, pero iré avanzando en él cuando tenga la parte del piloto hecha.
- Maquinista --> Mi idea es desarrollar unos drivers para motores brushless (los famosos ESC) que se controlen por bus SPI que den una mayor velocidad de respuesta al sistema (los 20ms del PWM me parecen mucho en una situación crítica).
- Controlador --> Servicio de telemetría en tierra para la recepción de la telemetría y el control (indicaciones) del equipo.
Las sugerencias serán bienvenidas.
S2
Ranganok Schahzaman
Mucha gente aplica filtros complementarios. Lo curioso, es que bajo determinadas circunstancias, los filtros complementarios son filtros de Kalman. Es decir, los filtros de Kalman, aplicando ciertos criterios y restricciones o condiciones puntuales, dan exactamente como resultado un filtro complementario. La diferencia real, es que mientras Kalman hace una lectura estadística, la teoría de filtros hace una lectura frecuencial sobre los mismos.
La sencillez en la fusión de datos por filtros complementarios es evidente, pero menos general. Sin embargo, para navegación inercial, no es nada descabellado ni malo, si no más bien bastante adecuado, aunque no consigue la misma precisión.
Dicho en palabras llanas: el GPS y el magnetómetro (cuidado con el rutado y la ubicación!!!!) dan buena fiabilidad a largo plazo (baja y muy baja frecuencia), mientras que en control de actitud momentáneo, son malos, obteniendo mejores resultados a corto plazo ('alta' frecuencia) con giros y con acelerómetros. La ubicación de todos estos elementos es crucial: un acelerómetro en una punta de un ala desvirtúa su medida cuando al avión gira, debido a la fuerza centrífuga. Eso implica que se deben calibrar las correcciones posicionales.
Sí, ya he visto que una corriente de 10mA cerca del magnetometro desvirtua las medidas, por otro lado se puede hacer la corrección del magnetometro a partir de los datos del accelerómetro (tengo las matemáticas por ahí, si quieres te las paso).
Creo que voy a utilizar:
- Gyro corregido con Accel (PI o PID, lo tendré que hablar con mi profe).
- Mag corregido con Accel (corrección de "soft & hard iron").
- Altura controlada por sonar (hasta 6 m ).
El GPS y el barómetro los dejaré para más adelante.
2 tareas a implementar (o a buscar):
- Cálculos en coma fija ( http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en552208 " onclick="window.open(this.href);return false; )
- Cálculos de matrices.
S2
Ranganok Schahzaman
No acabo de entender estas correcciones que propones. Quizás sería interesante echar una ojeada a esas mates que me comentas, pero entiendo que lo que interesa es calibrar el magnetómetro de manera estacionaria para el soft&hard Iron, luego mezclar mag+gyro (baja y alta frecuencia, respectivamente) para obtener la orientación respecto del norte, y terminar corrigiendo la orientación de vertical con el acelerómetro.
Aún así, si aceleramos el vehículo por otro medios (le hemos dado la orden de subir, por ejemplo), la cosa se complica, y por tanto sólo sería válida la orientación en vertical si estamos en estacionario. De lo contrario, hay que conocer la consigna de actitud. Esto último mismo está ya incluído en los sistemas de Kalman, pero resulta complicado.
Respecto del sónar, ¿que pretendes usar o hacer?¿módulo comprado o diseño propio? Piensa que no sólo la temperatura puede afectar: si está metido debajo de un quadcópter, la columna de aire generada por las cuatro (o más) hélices desvirtúan la velocidad del sonido (al ir el 'medio' hacia abajo, la velocidad del sonido aumenta a la ida, y disminuye a la vuelta, y encima, no el aumento no es ni fijo, ni constante a lo largo de la distancia...).
Respecto de la coma fija, yo me curré mis propios cálculos, sin librerías (que raro en mí), pero no entiendo el interés de funciones trigonométricas en coma fija (aunque puede tener un sentido). En mi caso, he hecho bastantes cálculos en coma fija, y las trigonométricas (que gastaba muchas), siempre acababa por poder convertirlas en constantes o tablas fijas precalculadas. En concreto, una vez hice una prueba de cálculo de diagrama de radiación de un arreglo de cápsulas utrasónicas con un ARM7TDMI. Empezé en coma flotante con cálculos íntegros de trigonometría, lo cual tardaba bastantes segundos, pero luego, simplemente pasando los trigonométricos a tabla, pero en coma flotante, se redujo a centenas de milisegundos. El ahorro ahí fue mucho más significativo que cuando lo paso todo a coma fija con sólo sumas, restas, multiplicaciones, y desplazamientos de bits, aunque esto último me supuso diez veces más de trabajo. Eso sí, en pocos milisegundos estaba calculado, aunque ahí el límite ya me lo ponía la GUI, no los cálculos.
En las correcciones yo estaba usando la señal del accelerómetro filtrada paso-bajo para bajas (eliminas las componentes lineales y te quedas con las angulares) y gyro para altas y compensas la deriva del filtro con el accelerómetro filtrado. El magnetometro como no lo había comprado no lo iba a usar para la corrección.
Las mates: Implementing a Tilt-Compensated eCompass using Accelerometer and Magnetometer Sensors: http://cache.freescale.com/files/sensors/doc/app_note/AN4248.pdf " onclick="window.open(this.href);return false;
Sobre la trigonometria, tengo que probar las librerías de coma fija, de coma flotante, las tablas y las aproximaciónes de Taylor ( sin(x) = x y cos(x) = 1-(x^2)/2 para x pequeñas ). Ya veremos qué me quedo al final.
S2
Ranganok Schahzaman