Paso 3: Código Resumen
Set_Waypoint(longitude,Latitude,Altitude)
En realidad, todavía hay un montón de bytes que se deben mover entre registros y un montón de temporizadores que deban establecerse precisamente. Esta es mi primera vez trabajando con dicho código "bajo nivel", pero entendiendo cómo funcionan estas cosas es realmente gratificante y le dará mucha más confianza en el largo plazo.
En su nivel más básico, nuestro sistema de piloto automático es esencialmente un interruptor del servo, que decide si o no escribir valores de servo del receptor de radio (enviado vía transmisor) o de los cálculos del piloto automático. Se decidirá si es o no el avión en piloto automático desde el estado de un interruptor de palanca del transmisor. El estado de este interruptor será enviado sobre uno de los canales normales de radios (es decir, tren de aterrizaje o las aletas).
Cálculo de salidas de piloto automático comienza con lecturas del sensor. Mi proyecto lo logra usando el bus I2C. Cada sensor tiene un propósito muy específico. Su acelerómetro permite medir la fuerza neta sobre el avión menos la aceleración debido a la gravedad. Suponiendo que la gravedad es la fuerza más grande en su avión, se puede escribir fácilmente un vector < accel_x accel_y, accel_z > encontrar el pitch y el rollo de su avión. El magnetómetro le dirá que la fuerza magnética neta sobre su avión, en Gauss < mag_x, mag_y, mag_z > esta información puede utilizarse para encontrar sus aviones rumbo en relación con el campo magnético de tierras. Si bien en teoría esto debería ser suficiente información para volar, estos sensores son muy propensos a ruido. El acelerómetro hará esencialmente meanlingless una vez que sus motores están funcionando (y así sometidos a un montón de aceleraciones lineales) y su magnetómetro se deriva como usted del acelerador hacia arriba y hacia abajo (a partir de los cambios realizados en el campo magnético inducido por sus motores).
Por suerte, su giroscopio está aquí para salvar el día. Es inmune a aceleraciones lineales (vibraciones) y a los cambios en campo magnético. El giroscopio le dirá su velocidad angular sobre el eje z, x y y. Si usted integrar este valor en la forma correcta, debe ser capaz de encontrar cómo el desvío, echada y rodillo de aeroplanos han cambiado entre calcuations. Sin embargo, no puede, confiar únicamente en el giroscopio porque
1) giroscopio nunca leerá un cero incluso si lo pones en la mesa
2) acumula errores como usted integra porque no puede resolver para usted constante de integración (C)
Si no saben cálculo, no temas, que le guiará a través de los pasos.
También es posible utilizar tu GPS como fuente de datos deriva-libre desvío si la frecuencia de actualización y la precisión del GPS es suficiente.
Combinan toda esta información para crear una oreintation exacta de la aeronave (pitch, roll, guiñada). Con estos valores se puede crear un lazo de PID que debe mantener el aeroplano en una orientación deseada.
Una vez se puede controlar la actitud del avión, es necesario calcular qué actitud tendrá su avión hacia el siguiente waypoint. Esto puede lograrse comparando las coordenadas GPS de la ubicación de los aeroplanos a la ubicación deseada de los aeroplanos. El GPS le proporcionará el cojinete para el avión (la dirección debe hacer frente) mientras que el compás/giroscopio proporcionará el título (la manera en que la aeronave quede realmente). Althoo