[Cursodrones] Normalizar salida PID
Alberto Martin
almartinflorido en gmail.com
Mie Mar 4 21:09:59 CET 2015
Buenas,
primero aclarar una cosa, que el rango de velocidad esté en -1 y 1 es para
el AR.Drone real, en el simulado estos valores pueden ser mayores que 1 o
menores que -1. En cualquier caso para indicar el movimiento si se utiliza
el valor positivo o negativo, tal y como está explicado en el pdf de las
prácticas.
Otra manera de normalizar es la siguiente:
1. En primer lugar haces un cambio de coordenadas para que el centro de tu
imagen sea el (0,0). Recuerda que en opencv el punto (0,0) es la esquina
superior izquierda de la imagen.
2. Con el cambio de coordenadas tendrás errores positivos y negativos, que
al pasarlos al PID te devolverá un valor o positivo o negativo. Justo como
nos interesa comandarle al drone.
3. Si los valores devueltos por el PID son muy grandes puedes jugar con las
constantes K, por ejemplo, si pones una Kp de 0.1 estás dividiendo entre 10
el valor . 10 * 0.1 = 1.
Este es otro método que puedes utilizar.
Un saludo
2015-03-04 10:44 GMT+01:00 Oscar Higuera <oscar.higuera en gmail.com>:
> Lo normal es poner limites a la entrada y calcular las salidas minima y
> maxima del pid en funcion de los rangos de entrada y luego normalizar a -1,1
>
> Tambien puedes primero limitar las salidas del PID antes de normalizar
> (para quitarte extremos y aprovechar al maximo los rangos de salida).
>
> Date cuenta de que se puede usar el error como entrada, pero tambien los
> valores actuales y pasados de la variable que se esta procesando (la
> posicion), dependiendo de lo que uses tendras que definir los rangos de
> dichas entradas.
>
> Tambien puedes experimentar y poner los limites de salida "a mano" y luego
> normalizarlos a -1,1 (un poco mas cutre pero funciona)
>
> Saludos,
>
> Sent from my iPhone
>
> On 4 Mar 2015, at 10:24, Jorge Tudela Gonzalez de Riancho <
> jorgetgr87 en gmail.com> wrote:
>
> Buenos dÃas,
>
> Me ha surgido esta duda respecto al rango de salida del PID.
>
> En primer lugar decir que he probado con mi propio PID, y que investigando
> si alguna libreria tenia ya alguno predefinido existen varios, por si os
> interesa:
>
> http://cgkit.sourceforge.net/doc2/pidcontroller.html#PIDController
> https://pypi.python.org/pypi/pypid/
>
> El caso, es que al final, para no complicarme mucho, me he basado en este,
> que es muy simple:
>
> http://code.activestate.com/recipes/577231-discrete-pid-controller/
>
> La formula es la siguiente:
>
> error_ant = error iteracionn anterior
> error_ac = acumulación del error
>
> PID = Kp * error + Kd*(error - error_ant) + Ki * error_ac
>
> Mi problema viene al intentar normalizar la salida al rango [1, -1], el de
> la velocidad del Drone.
>
> Dado que no conozco el rango que puede tener PID, no puedo normalizar la
> salida. La intuición me dice que tendrÃa que acotar los terminos de error
> para poder hacerlo, ya que las Ks las conozco.
>
> Mi pregunta es si esta aproximación la de acotar los 3 terminos de error
> es la correcta, o existe alguna otra mejor.
>
> Muchas gracias,
>
> Saludos.
>
>
>
> _______________________________________________
> Cursodrones mailing list
> Cursodrones en gsyc.es
> http://gsyc.es/cgi-bin/mailman/listinfo/cursodrones
>
>
> _______________________________________________
> Cursodrones mailing list
> Cursodrones en gsyc.es
> http://gsyc.es/cgi-bin/mailman/listinfo/cursodrones
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.es/pipermail/cursodrones/attachments/20150304/fbf2d18c/attachment-0001.htm
More information about the Cursodrones
mailing list