Estoy haciendo un quadcopter. He configurado un bucle PID para estabilizarlo en un ángulo de Euler dado (cabeceo y balanceo). El problema surge cuando el rollo se acerca a los 90 grados (45 grados y más). Los valores ya no tienen sentido, ya que se acerca al bloqueo del cardán. Tengo la intención de hacer maniobras complejas como bucles, etc., que excede el límite de balanceo de 45 grados.
¿Cómo puedo usar quaternions para superar este problema? (Obtengo cuaterniones del MPU-9150.) He leído muchos artículos sobre el tema de los cuaterniones, pero todos hablan de rotaciones en software 3D y de interpolaciones entre dos puntos de rotación. Esto tiene poco sentido ya que no conozco números y matrices imaginarios.
quadcopter
pid
stability
Amigo de kim
fuente
fuente
Respuestas:
Un quadcopter contiene (entre otras cosas) dos algoritmos separados e independientes: un algoritmo de estimación de actitud y un algoritmo de control.
El algoritmo de estimación de actitud calcula información sobre la orientación del quadcopter: los ángulos de balanceo, cabeceo y guiñada.
El algoritmo de control es responsable de conducir los motores para que la orientación del quadcopter coincida con lo que espera el piloto (o el software del piloto automático). Este algoritmo es el que leería los ángulos estimados del cuadricóptero (del algoritmo de estimación de actitud) y cambiaría la velocidad de los motores para intentar igualar los ángulos deseados. Los PID son un algoritmo de control común y adecuado para cuadricópteros.
El bloqueo de cardán es un fenómeno que puede ocurrir en el algoritmo de estimación de actitud. No tiene nada que ver con el algoritmo de control. Como tal, no necesita ESC, motores o hélices para probar el bloqueo del cardán: puede modificar su código para mostrar sus ángulos de balanceo, inclinación y guiñada, y probar que los valores correctos se calculan a medida que mueve manualmente su quadcopter. Es posible que pueda hacer esto con el quadcopter conectado a su computadora, a través de Bluetooth, o utilizando otros métodos dependiendo de su plataforma.
Si los ángulos se calculan correctamente, no necesita preocuparse por los cuaterniones. Si no se calculan correctamente, los cuaterniones podríanayudarte. El algoritmo de estimación de actitud generará 3 ángulos para que el algoritmo de control los use, sin embargo, podría usar una representación interna diferente, como cuaterniones o matrices 3x3. En ese caso, todavía convertiría la información de actitud en ángulos para proporcionar datos utilizables al algoritmo de control. En términos generales, los cuaterniones no son intuitivos pero son computacionalmente eficientes. Esto los hace muy adecuados para plataformas lentas como Arduino. Las matrices o ángulos pueden ser una opción más fácil para un hardware más rápido. Si necesita que elabore una u otra solución, avíseme, pero sería bastante prematuro dar detalles en esta etapa, ya que no estoy convencido de que necesite implementar cuaterniones.
Finalmente, si los ángulos se calculan correctamente, la forma de hacer su bucle quadcopter es controlar la velocidad angular en lugar del ángulo. Si sus palos representan el ángulo del cuadricóptero, no hay forma de hacer un bucle completo: intente visualizar la posición de los palos como los bucles del cuadricóptero y debe entender por qué. Sin embargo, si los palos controlan la velocidad angular, entonces puede controlar la velocidad a la que gira.
¡Buena suerte con tu proyecto!
Nota: En aras de la simplicidad, no he mencionado la opción teórica de manipular los datos como matrices o cuaterniones tanto en el algoritmo de estimación de actitud como en el algoritmo de control. Nunca he visto un quadcopter implementando tales algoritmos.
fuente
Primero, creo que necesitas regresar y mirar tu código. El bloqueo de cardán es solo un problema cuando te acercas mucho (dentro de un par de grados) de 90. Si ves un comportamiento extraño a 45 grados, otra causa es otra.
En cuanto a su pregunta, los cuaterniones generalmente no se usan directamente en el control PID básico, ya que tienen un comportamiento complicado que resulta en resultados no intuitivos. Por lo general, se convierten a ángulos de Euler y luego se usan en el controlador PID normal, o se diseñan controladores no lineales especiales para usarlos.
Tenga en cuenta que, para sus maniobras en bucle, el PID generalmente no es un buen controlador: las ganancias que funcionan bien cerca del vuelo estacionario ya no funcionan bien en ángulos grandes. Por lo general, cuando alguien quiere hacer un bucle, pasa a "bucle abierto", es decir, comienza la maniobra bajo control y luego, una vez que pasa un cierto ángulo, simplemente aplica una serie fija de comandos hasta que haya completado el bucle. Averiguar qué serie fija de comandos usar es la parte difícil y, a menudo, usa el aprendizaje de refuerzo (algo así como una forma formal de hacer prueba y error).
fuente
Serial Chart
( code.google.com/p/serialchart ). La entrada es la salida directa de Euler del I2CDevLib (MPU-9150). Probaré un poco más. El "error" podría haber sido causado por movimientos imprecisos de mi parte.Este documento, Control de actitud basado en un cuaternión completo para un Quadrotor por Emil Fresk y George Nikolakopoulos, demuestra lo que está tratando de lograr.
fuente
Este curso gratuito de MOOC, ¡ Bienvenido a AUTONAVx de TUMx! Navegación autónoma para Flying Robots , puede ayudar. Cubre:
fuente