Tutorial Naze32 – Parte 5 : Ajuste de PID en naze con Cleanflight

2
14050

Uno de los puntos mas críticos para la estabilidad de un multirrotor es el ajuste de los PIDs. En este tutorial vamos a explicar de manera sencilla como enfrentarnos a ello y ajustarlos

En Internet, tanto en web, en foros como en portales de vídeos, podemos encontrar vídeos explicativos de como configurar los PIDs con diferentes técnicas. Nosotros vamos a intentar usar la mas sencilla y a entender como funcionan los PID.

Antes que nada hay que decir que este tutorial esta realizado basándonos en un multirrotor de 4 motores con disposición en X, lo que normalmente se denomina X-Quad en la configuración de muchas placas, esto es importante tenerlo en cuenta ya que para hexacópteros, tricópteros,etc es diferente como los PID intervienen en la estabilización del multirrotor.

Aclarado este punto vamos a explicar que son los PID, ya que sin entender la teoría no podremos llevarlo a la practica.

¿Que son los PID en un multirrotor?

Los comúnmente llamados PIDs nacen de una formula matemática que representa un mecanismo de control por realimentación que sirve para el control de un determinado elemento. En la practica esto sirve para calcular la desviación entre un valor que es medido por el sistema y el valor deseado que debería tener.

ec_pid_basico

Bien, esto que parece tan enrevesado lo podemos trasladar a nuestro multirrotor pensando de la siguiente manera:

“En el momento que el multirrotor cambia su posición en cualquiera de sus tres ejes (pitch, roll, yaw) la controladora, en este caso nuestra naze32 mide mediante los giroscopios el cambio angular producido. Con ese valor medido por el sensor y aplicando los valores de PID intenta volver el multirrotor a su estado original.”

Los PID están compuestos por una triada de valores para cada uno de los ejes de nuestro multirrotor.  Sus nombres son proporcional, integral, y derivativo, por sus siglas PID

  • El valor Proporcional (P) : El valor Proporcional depende del error actual.  Este valor sera la fuerza que hay que aplicar para devolver nuestro multirrotor a la posición original. Es una manera elegante de decir cuanto nos hemos movido del punto deseado.
  • El valor Integral (I) : Depende de los errores pasados. Este valor es la cantidad de tiempo durante el que estamos fuera del punto deseado. Es decir el tiempo que pasamos fuera del sitio ideal.
  • El valor Derivativo (D) : es una predicción de los errores futuros. Este valor marca la velocidad a la que va a ser corregido. Es decir va a ir en contra de los valores P e I para que el multirrotor este el menor tiempo posible fuera del punto deseado.

Nota: matemáticamente se podría llegar a deducir que el valor D no es muy útil para los multirrotores, pero si el firmware de la placa tiene ese valor añadido al bucle de control nos vendrá genial ya que amortiguará los efectos producidos por los valores P e I.

¿Cuales son los PID ideales para un multirrotor?

Los valores PID ideales cambian con cada multirrotor dependiendo del mismo ya que elementos como la motorización, vibraciones, etc interfieren en nuestro ajuste ideal, por lo que no recomendamos nunca que copieis los valores de un multirrotor parecido al vuestro, ni aun siendo idéntico el hardware que lo compone.

¿Como calculo los valores PID para mi multirrotor?

Bien, esa es la madre de todas las preguntas en el ajuste PID. Como hemos dicho antes, son una triada de valores por cada eje. Vamos a explicarlo en un eje (eje pitch) y lo único que tendrás que hacer es repetir el proceso por cada uno de los ejes restantes.

Es importantisimo realizar este ajuste en un día sin viento ya que nos influirá en el ajuste del multirrotor

Ajuste de valor P

De los tres valores, P I y D, el valor P es el mas importante. Es el que aplicara la fuerza para devolver el multirrotor a su posición inicial. Pongamos un ejemplo.

Si estamos en el nivel ideal P no influirá en absoluto. Si inclinamos el multirrotor por ejemplo 2 grados P influirá en los motores según la formula T + (P*2), donde T es el valor del acelerador y P el valor que estamos ajustando. Si inclinamos el multirrotor 5 grados sera T + (P*5), por lo que el valor de P es uno de los mas importantes a la hora de devolver el multirrotor a su posición ideal.

gráfica del parametro P
gráfica del parametro P

Un valor de P demasiado alto hará que se ejerza demasiada fuerza para estabilizarlo lo que ocasionara que al volver a su posición ideal la sobrepase y provoque oscilaciones.

Un valor de P demasiado bajo hará que no se ejerza la fuerza necesaria para devolverlo a su posición ideal y el multirrotor tienda a darse la vuelta.

Un valor de P por debajo del punto ideal hará que el quad sea controlable en un vuelo normal aunque notaremos cierta deriva, pero si hacemos algún movimiento brusco provocara que se tome mas tiempo del adecuado para volver a su punto ideal ya que la fuerza es algo menor que la indicada.

Ajuste de valor I

Como hemos dicho anteriormente el valor I es el tiempo transcurrido en el que permanecemos fuera del punto ideal.

Si estamos en el punto ideal no influirá en absoluto. Si estamos fuera del punto ideal 2 grados se aplicara la formula T + (P*2). Si estamos fuera del punto ideal 2 grados durante 0,5 segundos entonces la formula cambiara a T + (P*2) + (I*0,5).

Esto quiere decir que a mayor tiempo que estemos fuera del punto ideal mas aumenta la velocidad del motor ya que a mayor tiempo fuera del punto ideal mas influirá el valor I.

gráfica del parametro I
gráfica del parametro I

Un valor de I demasiado bajo provocara que el multirrotor no llegue a la posición ideal.

Si el valor de I es demasiado alto aumentara la velocidad del motor para recuperar el punto ideal por lo que puede llegar a oscilar debido a que sobrepase el punto ideal debido a que se recuperó con excesiva velocidad. Es muy similar al efecto de llevar P demasiado alto, aunque como el parámetro I influye según el tiempo que lleva fuera del punto ideal necesitara mas tiempo para detectar que esta fuera del punto ideal e intentar volver a el.

Si el valor de I esta solo un poco elevado lo podemos detectar mediante un vuelo continuado inclinando en el eje que queremos ajustar ya que al permanecer inclinado a medida que pase el tiempo tendera a equilibrarse.

Ajuste de valor D

El parámetro D realiza una compensación mediante la predicción del error futuro provocado por la corrección de los valores P e I.

De esta manera podemos decir que actúa en contra de los valores P e I amortiguando el exceso de fuerza o velocidad con la que se corrige para volver al punto ideal.

Los sistemas de control no suelen usar este valor para la corrección del estado, pero si esta presente el efecto que provoca mediante la compensación hace que pueda ser útil en algunos sistemas como los multirrotores aunque no es esencial para ellos.

Estando en un punto de 2 grados de error con respecto al punto ideal anteriormente vimos que se aplicaba la formula T + (P*2), si ademas entraba en juego el valor I al estar en ese punto durante 0.5 segundos la formula aplicada era  T + (P*2) + (I*0,5). De esta forma al incluir el parámetro D que seria a la velocidad a la que el multirrotor vuelve a su posición ideal, por ejemplo demos un valor de 3 grados por segundo, la formula seria  T + (P * 1) + (I * 0.5) – (D * 3). Es decir que reduciría la aceleración del motor (T) lo que provocaría un efecto de amortiguación

gráfica parámetro D
gráfica parámetro D

 

Si el valor de D es demasiado bajo el multirrotor oscilara ya que el efecto de atenuación seria mínimo

Si el valor de D es demasiado alto el multirrotor tendrá una respuesta muy lenta a la recuperación o movimiento en el eje donde se aplique la corrección ya que atenuará demasiado.

Puesta en practica: Ajuste de PID en naze32

Ahora que sabemos cómo influyen vamos a ajustarlo.

Este ajuste deberás realizarlo para cada uno de los ejes pitch, roll y yaw

Existen tres formas, la primera es tenerlo agarrado con la mano y la segunda es tenerlo en vuelo y comprobando su respuesta aterrizar para ajustar valores y volver a comprobarlo en vuelo. La tercera es en vuelo.

Si usamos la primera forma de agarrarlo con las manos os pedimos que actuéis con extrema precaución ya que las hélices son muy peligrosas debido a las altas revoluciones.

Forma manual (No recomendada, es peligrosa)

Usa esta opción bajo tu propia responsabilidad.

  1. Coge tu quad con una mano y ve aumentando el gas en la emisora hasta que notes que el quad tira de tu mano hacia arriba. En ese punto baja un poco hasta que lo sientas como que flota o liviano.
  2. Acto seguido comienza a moverlo en el eje para el que quieres ajustar el valor P, en este ejemplo estamos usando el Pitch así que sera inclinarlo hacia delante y hacia detrás. Notaras que los motores ejercen fuerza para equilibrarlo de nuevo.
  3. Ve subiendo P hasta que notes que la fuerza aumenta de manera que te cueste moverlo y sigue hasta que empiece a oscilar levemente tras inclinarlo.
  4. Ve reduciendo P hasta que desaparezca la oscilación al inclinarlo.

Método de test

Es la forma mas tediosa aunque es la mas segura para ajustar los pids. Se trataría de ajustar el valor P mediante tecnica de ensayo-error. Es decir, subiremos el valor P, probaremos como se comporta en vuelo real, si hay oscilaciones en el eje, modificaremos el valor hasta que empiecen a producirse y llegado a ese valor iremos bajando hasta que dejen de producirse.

Método avanzado Inflight

Es un método mas lioso, pero muy preciso. Estamos realizando un tutorial exclusivo para este método.

Nota sobre el valor P: Para vuelos acrobáticos es aconsejable tener un valor de P mas alto de lo habitual. Para vuelos no acrobáticos el valor de P debe ser bajo

 

Compartir

2 Comentarios

  1. Hola, muy buen articulo, todo bastante claro. He encontrado este articulo indagando para buscar la posibilidad de obtener las funciones de transferencias de nuestra controladora para poder diseñar e implementar los distintos PIDs a trabes de Matlab ya que es mas ilustrativo. ¿Se te ocurre alguna idea?

    Un saludo.