Herramientas Buscar en Tema
Antiguo 27/09/2015, 13:19   #1681
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
Pues si rortega, pienso igual que tu, creo que estas en lo cierto y lastima que yo no pueda ayudarte en la programación, pero creo que con eso que comentas, de controlar con varios pulsos concretos seria una solución limpia y mucho mas efectiva.
Eso si con la ayuda del filtro de parada (la ventada de angulo permitido), que creo que eso si seria efectivo.

Creo que con el otro tema de meridiano 0, ya empiezo a comprender el tema.
Corrígeme, pero creo que el problema se establece al estar el Traker360, en distinto cuadrante del avión, cuando uno está al Este y el otro al Oeste de meridiano, cuando la diferencia es negativa.
Los Germánicos como están lejos del meridiano, ni lo han pensado.
La solución parece fácil de implementar con un condicional en la formula.

Esto ultimo y un poco la comprensión del problema, me lo ha comentado un compañero que entiende algo del tema, (es ingeniero aeronáutico y también sabe algo de programación), y no entiende como han sido tan mendrugos de no haber puesto la solución.

Sl2
Simba esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 13:25   #1682
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Cita:
Iniciado por Simba Ver mensaje
Pues si rortega, pienso igual que tu, creo que estas en lo cierto y lastima que yo no pueda ayudarte en la programación, pero creo que con eso que comentas, de controlar con varios pulsos concretos seria una solución limpia y mucho mas efectiva.
Eso si con la ayuda del filtro de parada (la ventada de angulo permitido), que creo que eso si seria efectivo.

Creo que con el otro tema de meridiano 0, ya empiezo a comprender el tema.
Corrígeme, pero creo que el problema se establece al estar el Traker360, en distinto cuadrante del avión, cuando uno está al Este y el otro al Oeste de meridiano, cuando la diferencia es negativa.
Los Germánicos como están lejos del meridiano, ni lo han pensado.
La solución parece fácil de implementar con un condicional en la formula.

Esto ultimo y un poco la comprensión del problema, me lo ha comentado un compañero que entiende algo del tema, (es ingeniero aeronáutico y también sabe algo de programación), y no entiende como han sido tan mendrugos de no haber puesto la solución.

Sl2
Porque creo que no ha reportado nadie el error, que ésto se lo ha guisado y comido una persona sola, el único que ha programado y probado el tracker, y que hasta que no se ha puesto gente a montarlo y usarlo no se han experimentado problemas.

Suele suceder en programación que un informático está siempre desarrollando y hace siempre las mismas pruebas, da los mismos pasos, y hasta que no llega el software a manos de un usuarios normales, que hacen las cosas de otroa manera, sin pensar como informáticos, no empiezan a aflorar los fallos.

En el caso del algoritmo de RVOSD pasaba eso, nadie lo había probado, hasta que Guillesan se empeñó, y se ha visto que estaba literalmente sin terminar, o estaba terminado sin testear.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 14:28   #1683
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Creo que ya sé por qué el OFFSET es 900 por defecto, podría deberse a que el magnetómetro de la crius está desviado 90 grados con respecto a la flechita blanca. Pero claro, cara al usuario final, el offset debería ser 0, porque a lo que le damos vuelta es a la placa y no al magnetómetro.

Lo he descubierto dándole vueltas a la fórmula que calcula el heading y poniendo tanto offset como declinación a 0 para que no influya a la fórmula. Compilo subo y cuando apunto el tracker al Norte en el display me muestra 90 grados.

En esa funnción hace una operación módulo 3600, que tampoco tiene mucha explicación, porque por más vueltas que le demos al al tracker en el mismo sentido, nunca sobrepasa el valor de 360 grados, empezando de cero nuevamente en cada vuelta.

A parte hay un par de multiplicaciones por M_PI, cuando mirando otros ejemplos de implementación del MAG, esas multiplicaciones deberían ser PI. Ésto no produce ninguna diferencia, pero lo he dejado así para seguir pera seguir lo que parece un estandar en las implementaciones. M_PI y PI parecen ser lo mismo (3.1415....).

Resumiendo, añadíamos 2700 (270 grados) para compensar ese desplazamiento de 90 grados, de modo que así nos apunta a 360, o lo que es lo mismo, a cero. El poner 2700 y no 270, es porque el magnetómetro nos devuelve los datos en radianes/10, y al pasarlo a grados haqy que multiplicar por 180 grados * 10.

Mi intención es modificar esa fórmula para que la flecha y el offset de la crius tenga la lógica humana de a pie. Flecha al norte offset 0, flecha al este offset 90, flecha al sur offset 180, flecha al oeste offset 270. Y por supuesto sin multiplicar por 10.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 14:35   #1684
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
OK pues adelante y luego lo de los pulsos pasando del control actual de PID, eso estoy deseando probarlo.
Simba esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 18:27   #1685
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
Bueno, resulta que buscando me encuentro con algo muy parecido o practicamente igual, al calculo del PID utilizado en nuestro Traker.

Parece ser que si utiliza un sistema real de PID, un metodo de acumulador utilizado en Arduino, para poder utilizar la función Integral y Derivativa, con una cierta logica, que yo no alcanzo a entender, pero que habitualmente es lo se utiliza en Arduino.
Pongo enlace por si interesa:
http://blog.solutions-cubed.com/pid-...th-an-arduino/
Simba esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 19:21   #1686
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Cita:
Iniciado por Simba Ver mensaje
Bueno, resulta que buscando me encuentro con algo muy parecido o practicamente igual, al calculo del PID utilizado en nuestro Traker.

Parece ser que si utiliza un sistema real de PID, un metodo de acumulador utilizado en Arduino, para poder utilizar la función Integral y Derivativa, con una cierta logica, que yo no alcanzo a entender, pero que habitualmente es lo se utiliza en Arduino.
Pongo enlace por si interesa:
http://blog.solutions-cubed.com/pid-...th-an-arduino/
Fíjate lo que dice...:

"This is similar in operation to a hobby servo, but the potentiometer provides the control signal instead of a pulse from a receiver (and of course you are using a motor, not an RC servo)."

Estoy trabajando en el lío, y no estoy muy lejos de tenerlo...
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 19:42   #1687
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
Si, esta claro que el sistema de PID utilizado es similar al que utiliza un servo radiocontrol, pero tienes que tener en cuenta un detalle, en el servo de Pan al utilizar un servo 360º, este ya no tiene la referencia de error, que le suministraba el potenciómetro sustituido.

En este caso el error se lo suministra el calculo de posición, pero esta información no la tiene directamente el servo, el cual en nuestro caso se comporta como un simple motor, con dos sentidos de giro y un cierto control de velocidad, pero no de posición.
Para conseguir un mínimo control de posición, se necesita algo mas que decirle que gire en el sentido de reducir el error, creo que se necesita modular el pulso de control, no a saltos en función de la magnitud del error, si no de forma continua, en función de la magnitud de la desviación, y eso solo lo puede hacer un sistema de control PID.

Es para pegarle una buena pensada, por que tiene su miga.
Simba esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 19:48   #1688
marcoasj
* * * *
 
Avatar de marcoasj
 
Ingreso 02/mar/2015
De Cáceres
532 Mensajes
Cita:
Iniciado por Simba Ver mensaje
Si, esta claro que el sistema de PID utilizado es similar al que utiliza un servo radiocontrol, pero tienes que tener en cuenta un detalle, en el servo de Pan al utilizar un servo 360º, este ya no tiene la referencia de error, que le suministraba el potenciómetro sustituido.

En este caso el error se lo suministra el calculo de posición, pero esta información no la tiene directamente el servo, el cual en nuestro caso se comporta como un simple motor, con dos sentidos de giro y un cierto control de velocidad, pero no de posición.
Para conseguir un mínimo control de posición, se necesita algo mas que decirle que gire en el sentido de reducir el error, creo que se necesita modular el pulso de control, no a saltos en función de la magnitud del error, si no de forma continua, en función de la magnitud de la desviación, y eso solo lo puede hacer un sistema de control PID.

Es para pegarle una buena pensada, por que tiene su miga.
A ver si me estoy enterando, sibse cambia el tema lo que se conseguirá es que se envíen pulsos de control del servo cuya fuerza será proporcional al lo lejos que estemos de la dirección correcta. Es decir mayor error en ángulo, mayor pulso que devendrá en mayor velocidad, y conforme se acerque al error cero menor pulso. Correcto ??

Enviado desde mi SM-G900F mediante Tapatalk
__________________
Permiso para aporrizar en...cualquier sitio...
marcoasj esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 20:13   #1689
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
Si pero con matices.
Esa acción que parece fácil tiene que tener implícita un control PID, pero creo que es necesario.
Simba esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 21:22   #1690
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
No hablo mucho porque estoy a punto de volverme loco...Hay algo que no hago bien, o un error en algún sitio que no termino de congsguir lo que busco. Creo que mañana seguiré...
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 27/09/2015, 21:37   #1691
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
Ok un buen descanso hace ver lo que no se ve cansado.
Buenas noches
Simba esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 00:54   #1692
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
He conseguido el mismo comportamiento, sin control de PIDs, con el OFFSET a 0 para la crius. Me falta quitar el problema de volar al este o al oeste, que ya me imagino donde está el error.

La función getError() queda al final así:

Cita:
int getHeading() {
while (!readRawAxis());

double heading = atan2((magADC[1]* magGain[1]) - magZero[1], (magADC[0]* magGain[0]) - magZero[0]) ;

if (heading < 0)
heading += 2 * PI;

if (heading > 2 * PI)
heading -= 2 * PI;

#ifdef CRIUS_SE
#define MAG_CORRECTION 270
#else
#define MAG_CORRECTION 0
#endif

return (int)(heading*180/M_PI+MAG_CORRECTION+DECLINATION+OFFSET)%360;
}
Coloca la corrección de 270 grados si tenemos una crius y trabajamos en grados a partir de ahora (antes trabajaba en grados multiplicado por 10), lo que nos permitirá indicar un offset en grados en caso de que cambiemos la placa de posición.

La función getError() queda así:

Cita:
void getError(void)
{

delta=trackerPosition.heading-targetPosition.heading/10;
if (delta > 180) {
delta -= 360;
}
else if (delta < -180) {
delta += 360;
}

}
Ya no metemos los errores sucesivos en el array Error[], pues no necesitamos realizar calculos con ellos. Usamos una variable llamda delta en su lugar. Nuevamente, trabajamos en grados, sin pultiplicar por 10.

La función calculatePID() quedaría así:

Cita:
void calculatePID(void)
{

int PAN_SPEED;

PAN_SPEED=map(abs(delta), MIN_DELTA, 180, MIN_PAN_SPEED, MAX_PAN_SPEED);

if(abs(delta)<=MIN_DELTA)
PWMOutput = PAN_0;
if (delta<0)
PWMOutput = PAN_0 + PAN_SPEED;
else if(delta>0)
PWMOutput = PAN_0 - PAN_SPEED;

#if SERVOTEST
Serial.print(" PAN_0: ");Serial.print(PAN_0);
Serial.print(" PAN_SPEED: ");Serial.print(PAN_SPEED);
Serial.print(" PWMOutput: ");Serial.println(PWMOutput);
#endif

}
La clave estaría en:

PAN_SPEED=map(abs(delta), MIN_DELTA, 180, MIN_PAN_SPEED, MAX_PAN_SPEED);

que mapea (asigna de forma proporional) valores entre MIN_PAN_SPEED y MAX_PAN_SPEED para el gradiente de errores que van desde MIN_DELTA hasta 180.

De esta forma, cuando el tracker va llegando a la posición donde se encuentra el avión, se va reduciendo la velocidad de giro poco a poco, y por el contrario, si se encuentra lejos, intenta moverse lo más rápido posible.

Ya no harían falta en el config.h los parámetros P, I, D y MAX_PID_ERROR. Para configurar esta nueva forma de mover el tracker, se usarían los siguientes parámetros:

Cita:
#define CRIUS_SE
#define MIN_DELTA 1
#define MIN_PAN_SPEED 0
#define MAX_PAN_SPEED 300
#define DECLINATION 0
#define OFFSET 0
  • MIN_DELTA: EL ángulo mínimo entre el tracker y el avión a partir del cual ya dejamos de mover el tracker, consideramos que hemos llegado al objetivo.
  • MIN_PAN_SPEED: El valor mínimo en milisegundos a los que tenemos que incrementar el pulso definido en PAN_0 para que el tracker se mueva a la velocidad más lenta.
  • MAX_PAN_SPEED: El valor mínimo en milisegundos a los que tenemos que incrementar el pulso definido en PAN_0 para que el tracker se muev a la velocidad más rápida.
  • DECLINATION: Sin cambios, sigue teniendo la misma función.
  • OFFSET: Ahora se introduce en grados, y puede ir de -180 a 180, o de 0 a 360.
Estos cambios implican también algunos cambios menores para poder visualizar en el LCD los datos correctamente, pues se estaban trabajando con las mismas unidades pero multiplicadas por 10. También tendré que repasar el modo SERVOTEST para que vaya en sintonía con los cambios introducidos en las funciones.



De momento en mi tracker tiene el mismo comportamiento que tenía con el control con PIDs, pero ahora la configuración es más intuitivas y sencilla.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 01:27   #1693
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Ahí dejo un vídeo del comportamiento del tracker con los mismos parámetros del post anterior:


El tracketeo se debe en su mayor parte a lo mal montados que están la caja y el servo.

Mañana intentaré corregir el problema del meridiano 0 y ajustaré parámetros para afinarlo lo más posible.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 08:02   #1694
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
La parte que no he contado de la historia, es que podemos aplicar distintas funciones maps (con dos bastaría) en función del delta, o aplicarla únicamente en el tramo donde más cerca estemos de alcancar el ángulo mínimo, o incluso crearnos nuestra propia función función de transformación.

De todas formas creo que no va a ser necesario tanto lío porque como ya dije, al menos mi servo no va a distintas y tan variadas velocidades, va o muy rápido, o lento, o casi parándose, pero poco más.

Todo ésto son elucubraciones mías, no hay nignún copy paste de ningún sitio, sólo le he dado forma a lo que llevaba rondando mi cabeza bastante tiempo. No sé si al final será más o menos efectivo que lo que hay ahora mismo, pero tengo claro que será mucho más intuitivo de configurar para afinarlo, si es que se puede afinar.

En el cálculo con parámetros PID, aunque no lo he comprobado con datos, tengo clarísimo que esos cálculos de PIDs, metiendo además de por medio el MIN_PAN_SPEED y demás, era para conseguir hacer una curva de respuesta muy parecida a la de una honda cuadrada, en la que quizás el flanco de subida tiene cierta pendiente, es decir, pasar un valor alto cuando está lejos el objetivo, y pasar valores próximos al pulso de parada cuando casi lo alcanzamos.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 08:24   #1695
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Hacer clic en la imagen para la versión completa

Nombre:  uploadfromtaptalk1443421157084.jpg
Vistas: 46
Tamaño:  197,5 KB (Kilobytes)
ID: 61831

La función map que he aplicado está representada con la línea contínua recta.

La línea curva discontínua sería quizás lo más adecuado aplicar (interpretarla de derecha a izquierdas).
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 09:41   #1696
TURRUK
* * *
 
Avatar de TURRUK
 
Ingreso 04/abr/2012
397 Mensajes
Hola señor Rortega, me gusta este concepto de ajustes simples de PID y restos ,mi pregunta, se queda lo mismo o mas aun fino? Para personas que se anima hacer este tracker se simplifica mucho .Gracias.
TURRUK esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 09:43   #1697
marcoasj
* * * *
 
Avatar de marcoasj
 
Ingreso 02/mar/2015
De Cáceres
532 Mensajes
Cita:
Iniciado por rortega Ver mensaje
Archivo adjunto 61831

La función map que he aplicado está representada con la línea contínua recta.

La línea curva discontínua sería quizás lo más adecuado aplicar (interpretarla de derecha a izquierdas).
Vaya Currada que te has pegao......

Por cierto algun avance en el mov del tilt ??

Enviado desde mi SM-G900F mediante Tapatalk
__________________
Permiso para aporrizar en...cualquier sitio...
marcoasj esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 10:17   #1698
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
rortega, creo entender lo que pretendes pero me faltan datos, en principio opino que lo del MIN_PAN_SPEED, fue una solución que le diaron por alguna razón que desconozco, y se ha quedado sin hacer ninguna falta, puesto que nosotros la llevamos a 0 y es como mejor funciona.

Yo lo llevo solo con la función PID, y la ventana del filtro de paro servo, también esta al mínimo, a 1 y -1, lo cual quiere decir que prácticamente solo esta trabajando el PID.
Con todo lo que estas haciendo, se mejorara la interpretación del error, y eso mejorara la respuesta, pero creo que esto no eliminara el PID, pues siempre se necesitara la función PID para hacer un control fino y sin oscilaciones.
Simba esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 10:19   #1699
marcoasj
* * * *
 
Avatar de marcoasj
 
Ingreso 02/mar/2015
De Cáceres
532 Mensajes
Cita:
Iniciado por Simba Ver mensaje
rortega, creo entender lo que pretendes pero me faltan datos, en principio opino que lo del MIN_PAN_SPEED, fue una solución que le diaron por alguna razón que desconozco, y se ha quedado sin hacer ninguna falta, puesto que nosotros la llevamos a 0 y es como mejor funciona.

Yo lo llevo solo con la función PID, y la ventana del filtro de paro servo, también esta al mínimo, a 1 y -1, lo cual quiere decir que prácticamente solo esta trabajando el PID.
Con todo lo que estas haciendo, se mejorara la interpretación del error, y eso mejorara la respuesta, pero creo que esto no eliminara el PID, pues siempre se necesitara la función PID para hacer un control fino y sin oscilaciones.
Totalmente de acuerdo, a mi me dejó de oscilar el pan con la ventana de error del PID.

Enviado desde mi SM-G900F mediante Tapatalk
__________________
Permiso para aporrizar en...cualquier sitio...
marcoasj esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 11:12   #1700
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
Estoy probando 2 servos de Pan 360º, y me da el maximo de desviación del 0, con +- 200ms, es decir que con 1500ms están parados y con 1300ms está a máxima velocidad en un sentido y con 1700ms al maximo en sentido contrario, o sea tenemos una ventana de control de +-200ms.
Este es el rango maximo que deberíamos tener para la variable de error, pues ir mas lejos de esos valores no es significativo.

Esta probado sin carga en los servos, pero creo que es bastante real, no necesitaríamos mas rango que esa ventana de +-200ms.
Si se consigue con lo que estas haciendo, acotar el rango de error a esos valores de respuesta del servo, se conseguiría una mejor resolución.

Si es necesario podría hacer un vídeo, pero solo si es necesario.
Simba esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 12:35   #1701
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Cita:
Iniciado por TURRUK Ver mensaje
Hola señor Rortega, me gusta este concepto de ajustes simples de PID y restos ,mi pregunta, se queda lo mismo o mas aun fino? Para personas que se anima hacer este tracker se simplifica mucho .Gracias.
No me ha dado tiempo para probar a afinar, pero ahora es de suponer que conseguirlo será más intuitivo, espero.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 12:37   #1702
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Cita:
Iniciado por marcoasj Ver mensaje
Vaya Currada que te has pegao......

Por cierto algun avance en el mov del tilt ??

Enviado desde mi SM-G900F mediante Tapatalk
Para resolver tu problema no, de momento. Pero sigo con ello en mente, no me he olvidado.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 12:50   #1703
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Cita:
Iniciado por Simba Ver mensaje
rortega, creo entender lo que pretendes pero me faltan datos, en principio opino que lo del MIN_PAN_SPEED, fue una solución que le diaron por alguna razón que desconozco, y se ha quedado sin hacer ninguna falta, puesto que nosotros la llevamos a 0 y es como mejor funciona.

Yo lo llevo solo con la función PID, y la ventana del filtro de paro servo, también esta al mínimo, a 1 y -1, lo cual quiere decir que prácticamente solo esta trabajando el PID.
Con todo lo que estas haciendo, se mejorara la interpretación del error, y eso mejorara la respuesta, pero creo que esto no eliminara el PID, pues siempre se necesitara la función PID para hacer un control fino y sin oscilaciones.
Es que yo creo que no hay mucho lugar a las oscilaciones, o llegas al punto exacto o te quedas retrasado, porque estamos siguiendo siempre al avión. Si éste no cambia de dirección repentinamente, nunca lo sobrepasamos, porque en la parte final el servo se mueve muy lento.

Esos traqueteos no son oscilaciones, es la holgura de mi mal montaje. Cuando el tracker alcanza al avión, si este se va alejando en la misma dirección a la que apunta, o se acerca directo a él , se queda quietecito.

Yo lo que trato de explicar es que el control de PID que teníamos hasta ahora, lo que hace no es corregir oscilaciones, lo que hace es intentar conseguir una curva en el ancho del pulso muy parecida a la que he pintado, reduciendo la velocidad si se estrecha el ángulo o aumentando si se ensancha. Es como si se hubiese intentado aprovechar el código para conseguir un comportamiento muy concreto. No termino de explicarme bien, pero es como si le pones ruedas a una tabla de surf, se diseñaron para navegar por el agua, pero tú le haces un apaño y la usas para otra cosa.

De todos modos puedo estar equivocado.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 12:51   #1704
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Cita:
Iniciado por Simba Ver mensaje
Estoy probando 2 servos de Pan 360º, y me da el maximo de desviación del 0, con +- 200ms, es decir que con 1500ms están parados y con 1300ms está a máxima velocidad en un sentido y con 1700ms al maximo en sentido contrario, o sea tenemos una ventana de control de +-200ms.
Este es el rango maximo que deberíamos tener para la variable de error, pues ir mas lejos de esos valores no es significativo.

Esta probado sin carga en los servos, pero creo que es bastante real, no necesitaríamos mas rango que esa ventana de +-200ms.
Si se consigue con lo que estas haciendo, acotar el rango de error a esos valores de respuesta del servo, se conseguiría una mejor resolución.

Si es necesario podría hacer un vídeo, pero solo si es necesario.
No, no hace falta, lo entiendo perfectamente.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 13:13   #1705
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
Mira, según lo veo yo, y me baso en mi experiencia profesional, toda acción necesariamente tiene una reacción, y si pop ejemplo mueves algo a la izquierda salvo que el ajuste final sea muy muy lento, o te pasas o no llegas.
Esto es física pura y dura, y en un control de posición que es en lo que estamos, tenemos que mover el traker de la posición A a la B, en el menor tiempo posible, lo mas exacto posible y sin rebotes en lo posible, y todo esto que yo sepa solo es posible con un control de tipo PID.

Con P tenemos proporcional al error, la fuerza para mover el bicho lo mas rápidamente posible.

Con I tenemos el control sobre el 0 de posición, lo mas exacto posible, y se basa en la integral en el tiempo del error, en el programa utiliza una función acumulador.

Con D que es la menos importante, tenemos la aceleración necesaria para que arranque el movimiento con viveza, y también es función del tiempo, pero actuá como fuerza antagonista a la P, es decir si se mueve lento acelera y si se mueve rápido decelera. Es la que se encarga de amortiguar sobre el punto 0, y se nota mucho cuando ajustamos con el servotes.

Estos valores son muy importantes para que funcione fino, pero no son complicados de ajustar, sobre todo partiendo de unos valores conocidos, pues los Traker son todos muy similares (si no ponemos servos muy raros).
Simba esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 14:23   #1706
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Cita:
Iniciado por Simba Ver mensaje
Mira, según lo veo yo, y me baso en mi experiencia profesional, toda acción necesariamente tiene una reacción, y si pop ejemplo mueves algo a la izquierda salvo que el ajuste final sea muy muy lento, o te pasas o no llegas.
Esto es física pura y dura, y en un control de posición que es en lo que estamos, tenemos que mover el traker de la posición A a la B, en el menor tiempo posible, lo mas exacto posible y sin rebotes en lo posible, y todo esto que yo sepa solo es posible con un control de tipo PID.

Con P tenemos proporcional al error, la fuerza para mover el bicho lo mas rápidamente posible.

Con I tenemos el control sobre el 0 de posición, lo mas exacto posible, y se basa en la integral en el tiempo del error, en el programa utiliza una función acumulador.

Con D que es la menos importante, tenemos la aceleración necesaria para que arranque el movimiento con viveza, y también es función del tiempo, pero actuá como fuerza antagonista a la P, es decir si se mueve lento acelera y si se mueve rápido decelera. Es la que se encarga de amortiguar sobre el punto 0, y se nota mucho cuando ajustamos con el servotes.

Estos valores son muy importantes para que funcione fino, pero no son complicados de ajustar, sobre todo partiendo de unos valores conocidos, pues los Traker son todos muy similares (si no ponemos servos muy raros).
Sí, si lo entiendo, pero no trato de decir que no hay que usar un sistema de control PID, trato de decir que tal sistema PID no parecía estar empleado como tal. De todos modos, con la nueva implementación el efecto debería ser igual, pues si te pasas también corriges, y de forma proporcional al error.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 14:53   #1707
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
Entonces entiendo que la nueva implementación, sustituye al control PID actual, pero con otro principio de control.
Pues se prueba y se sale de dudas.

Lo que si que te digo es que para mi sera un nuevo sistema o algoritmo de control, pero en sistemas de control, incluso en aquellos que son de respuesta super lenta, como son los controles termicos (control de temperatura de un horno), el sistema PID es insustituible, salvo que se asuma de antemano, una oscilación de temperatura de x grados, alrededor del punto de consigna.
Pero bueno todo consiste en probar.
Simba esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 19:03   #1708
Simba
* * * * * *
 
Avatar de Simba
 
Ingreso 04/jul/2008
4.669 Mensajes
Hola rortega, no se si te lo vas a creer, pero me acabo de enterar de por donde llevas las cosas.
Resulta que esta mañana he tenido Hospitalitis con mi Sra. suegra, o sea que la he tenido que llevar temprano al Hospital (al final nada grabe, una chorrada), pero el caso es que estaba con el Movil y el Tapatalk, y entre unas cosas y otras, no me he enterado de los posts anteriores, ni del video de tu traker.
Resumiendo que después de leerlo todo, veo que los progresos pueden ser muy buenos, sobre todo si los traqueteos son por la mecánica, habrá que ver eso.

Un saludo
Simba esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 19:19   #1709
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Cita:
Iniciado por Simba Ver mensaje
Hola rortega, no se si te lo vas a creer, pero me acabo de enterar de por donde llevas las cosas.
Resulta que esta mañana he tenido Hospitalitis con mi Sra. suegra, o sea que la he tenido que llevar temprano al Hospital (al final nada grabe, una chorrada), pero el caso es que estaba con el Movil y el Tapatalk, y entre unas cosas y otras, no me he enterado de los posts anteriores, ni del video de tu traker.
Resumiendo que después de leerlo todo, veo que los progresos pueden ser muy buenos, sobre todo si los traqueteos son por la mecánica, habrá que ver eso.

Un saludo
No es mi intención sustituir el sistema ahora, es más, voy a resolver el tema del offset y el tema del meridiano para que no haya más problemas con eso, porque ahora mismo es lo más simple y creo que más urgente.

Con respecto a los PIDs mi intención es comprender mejor cómo y por qué lo han implementado así, y tratar de mejorarlo para que no nos topemos más con los problemas de ajustes, que son incomprensibles. Hoy me he dedicado un rato a mirar en detalle la función calculatePID y estoy empezando a comprender el por qué de algunas cosas.

Lo ideal sería desarrollarlo de tal forma que se autoajuste. Me explico, hacer que el tracker por sí sólo calcule su rango de pulsos que lo llevan de estar parado a alcanzar la máxima velocidad, y a partir de ahí ajustar todos los parámetros que intervienen en el control PID para que la curva de respuestas contenga la menor oscilación posible.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando
Antiguo 28/09/2015, 19:23   #1710
rortega
* * * * * *
 
Avatar de rortega
 
Ingreso 20/abr/2012
3.835 Mensajes
Cita:
Iniciado por rortega Ver mensaje
No es mi intención sustituir el sistema ahora, es más, voy a resolver el tema del offset y el tema del meridiano para que no haya más problemas con eso, porque ahora mismo es lo más simple y creo que más urgente.

Con respecto a los PIDs mi intención es comprender mejor cómo y por qué lo han implementado así, y tratar de mejorarlo para que no nos topemos más con los problemas de ajustes, que son incomprensibles. Hoy me he dedicado un rato a mirar en detalle la función calculatePID y estoy empezando a comprender el por qué de algunas cosas.

Lo ideal sería desarrollarlo de tal forma que se autoajuste. Me explico, hacer que el tracker por sí sólo calcule su rango de pulsos que lo llevan de estar parado a alcanzar la máxima velocidad, y a partir de ahí ajustar todos los parámetros que intervienen en el control PID para que la curva de respuestas contenga la menor oscilación posible.
Como no hay espacio en memoria para muchas florituras, mi idea es realizar un sketch por separado que nos devuelva los valores de PID y demás parámetros (PAN_0, MIN_PAN_SPEDD)... más adecuado, y a posteriori en el sketch principal ajustar esos valores lo mínimo si fuera necesario.
__________________
WiiFPV Team: VIMEO - YouTube
rortega esta en línea ahora   Responder Citando


Herramientas Buscar en Tema
Buscar en Tema:

Búsq. Avanzada

Ir al foro

Temas similares
Tema Autor Foro Resp. Último mensaje
Ayuda! antena tracker darylkorn R/C Antenas, Emisores, Receptores y Comunicaciones 0 14/04/2015 10:25
Opiniones antena tracker mdf o rv antoniobernal R/C Antenas, Emisores, Receptores y Comunicaciones 7 14/07/2014 10:34
Busco antena tracker duckcrazy MERCADO de COMPRA / VENTA 0 15/06/2012 08:45
Opiniones Recomendarme un Antena Tracker jonpeter R/C Antenas, Emisores, Receptores y Comunicaciones 3 06/05/2012 20:30


Tu hora GMT +1. Ahora son las 12:36.


2015