Definitivamente necesita un microcontrolador, una de las formas en que un microcontrolador es diferente de un sistema informático como el Raspberry Pi es la latencia y el tiempo. El Raspberry Pi ejecuta Linux, que al igual que la mayoría de los sistemas operativos multitarea tiene sondeo / conmutación de tareas (IRQ0) cada 10 ms. La implicación práctica de esto es que si en algún momento el Raspberry Pi necesita hacer algo más que volar el quadcopter (como tareas de servicio a nivel del sistema operativo), su código de control de vuelo se “oscurecerá” durante al menos 10 ms. (Aunque es cierto que puede ajustar el núcleo para reducir el tiempo de sondeo de la tarea).
Normalmente esto está bien, ya que el tiempo de respuesta mecánica del cuadricóptero es más lento que 10 ms, PERO esto se va a atornillar con sus bucles AHRS si no almacena los datos de la IMU, y sus bucles PID si no los compensa.
En términos simples: la Raspberry Pi está ejecutando un sistema operativo, que está haciendo un montón de cosas similares al sistema operativo en segundo plano, como búferes de vaciado y registros del sistema, y cosas por el estilo. Estas cosas suceden periódicamente e interrumpirán su código. Con el software normal, no notas esta interrupción porque está sucediendo a una escala de tiempo mucho más baja de lo que un humano puede ver. Sin embargo, con un quadcopter, hay procesos que no deberían interrumpirse (como la parte que recopila datos de IMU). No tiene mucho control sobre esta interrupción (porque un sistema operativo multitarea está diseñado de esta manera), por lo que la única forma de usar un Raspberry Pi para volar un quadcopter es construir buffers de hardware en el módulo IMU y escribir código para compensar la salida PID que no se actualiza (si no lo hace, puede desestabilizar la nave porque sus ganancias serían incorrectas).
- ¿Cuáles son las diferencias entre la supercomputadora raspberry pi y la supercomputadora real?
- ¿Merece la pena comprar una Raspberry Pi 3?
- ¿Cuáles son algunos buenos proyectos con Raspberry pi para un estudiante de secundaria?
- ¿Cómo podemos conectar una Raspberry Pi con un módulo GPS?
- Cómo conectar mi Raspberry Pi 2 y Arduino Uno R3 juntos
Por otro lado, los microcontroladores ejecutan un RTOS o algún código controlado por interrupciones de bajo nivel que garantiza una operación de baja latencia en las partes críticas del código.
Si necesita la potencia de procesamiento de la Raspberry Pi, lo que debe hacer es tener un microcontrolador que se ocupe de tareas de bajo nivel y baja latencia, como la interfaz con una IMU y ejecutar el PID y los bucles de salida. Luego esclavo el microcontrolador a la Raspberry Pi, y deje el código de navegación y comunicaciones de alto nivel a la Raspberry Pi.
En el pasado, eso es lo que hemos hecho. Un microcontrolador barato maneja IMU, PID y controles de vuelo manuales, y ejecuta un AHRS rudimentario basado en cuaternión con filtrado simple para la estabilización; luego, una computadora ARM quad core de 1 GHz más liviana que ejecuta Linux se ocupa del piloto automático GPS y las comunicaciones, así como un AHRS más potente con EKF. El AHRS del microcontrolador es rápido pero menos preciso y se desplaza con el tiempo, mientras que el AHRS de la computadora es lento (mayor latencia) pero más preciso. Entonces combinamos lo mejor de ambos mundos haciendo que el microcontrolador controle el quadcopter, y la computadora ARM periódicamente le envía correcciones AHRS para mantenerlo recortado y preciso.