Autor Tema: Movimiento en línea recta: ¿cuál es la mejor estrategia?  (Leído 15683 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Movimiento en línea recta: ¿cuál es la mejor estrategia?
« en: 26 de Junio de 2009, 18:07:18 »
Hola amigos, dispongo de una plataforma con dos motores DC con encoders acoplados a sendas ruedas a ambos lados de la plataforma. Un poco más adelante y en el centro hay una rueda loca.

Los motores están controlados por PWM mediante un L298 y, gracias a los encoders, siempre sé cuánto están girando.

Pues bien, no consigo que el dispositivo se mueva en línea recta. Si aplico máxima potencia a los motores siempre hay uno que gira un poco más que el otro y el movimiento va resultando curvo.

Me decidí por implementar un control PID en cada uno, para asegurarme que giran exactamente a la misma velocidad. Y he conseguido que funcione, al menos en teoría. Las pruebas en vacío y mirando la frecuencia de giro con el osciloscopio arrojaban buenos resultados.

Pero me he llevado un chasco al montar ambos motores porque tampoco va en línea recta. Creo que puedo mejorar el algoritmo PID, pero no tengo claro que sea la mejor estrategia para conseguir el movimiento rectilíneo.

¿Qué otras opciones consideráis?

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 110
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #1 en: 26 de Junio de 2009, 18:23:08 »
     Considero que es dificil que se vaya recto por si solo, debido a la naturaleza del sistema
Ademas, jamas he usado enconders porque en realidad me indican cuanto se ha movido una rueda, no cuanto se mueve en la realidad el robot, ambas ruedas podrian ir casi igual, pero al ser rueda loca, una pequeña variacion haria que perdiera la linea recta

   Yo sugeririra:

a) Usar una brujula electronica y corregir el rumbo si hay desviacion durante el trayecto
b) Fijar un pequeño servo en lugar de rueda loca y usar el sistema con direccion y claro, los dos motores como los tienes

    Ciertamente, el uso de enconders aunque mejoraras el PID esta sujeto a desviarse porque no te dicen exactamente hacia adonde se mueve el robot, ademas que en el mejor de los casos, funcionan solo en piso liso y limpio, ya no digamos en otros terrenos

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #2 en: 26 de Junio de 2009, 18:37:24 »
Manolo, por mi experiencia en vuelo RC puedo decirte que hagas lo que hagas con los parámetros de frecuencia, velocidad de giro o consumos ... valores "teóricos" al fin y al cabo siempre vas a tener que adaptarte a la física real del sistema.

Yo lo hice con dos motores glow a los que comandaba el control de gases y la variable de entrada era la velocidad de giro de cada una de las palas. "Teóricamente" ambas palas girando a la misma velocidad deberían proporcionar el mismo impulso y el avión volar recto sin intentar guiñar ni a babor ni a estribor.

Sin embargo es totalmente falso, y entre otros muchos efectos distorsionantes algo tan simple como que las palas no son exactamente iguales, ni en peso ni en geometría por lo que sus respectivos empujes son distintos girando ambas exactamente a la misma velocidad.

Monté una rueda horizontalmente sobre un eje vertical, y cada uno de los motores fijados en los extremos de un diámetro de dicha rueda con sus ejes de pala o planos de giro lo mas perfectamente paralelos que pude conseguir. Con este montaje, en teoría con ambos motores con el mismo empuje deberían mantener la rueda perfectamente estable, cualquier diferencia entre los respectivos empujes generaría un par de giro y comenzaría a girar en el sentido contrario al del motor con mayor empuje.

Esto, que parece muy complejo, solo nos lleva a una idea y que es que tenemos que utilizar un "trimado" o ajuste real del sistema a mano, o a ojo.

En tu caso imagino que cualquier pequeña diferencia entre el alineado de los ejes de las respectivas ruedas, o pequeña diferencia entre sus diámetros o incluso entre sus respectivas superficies de rodadura y por ende en sus coeficientes de rozamiento hace que una avance mas que la otra y el vehículo gire hacia el lado contrario al de la rueda que mas empuja.

Móntale un mecanismo que pueda "avanzar" o "retrasar" de forma fina el avance de una de las ruedas y utilízalo para conseguir un ajuste a ojo de la "derechura" del avance. A partir de ahí toma en consideración este parámetro e investiga si es constante o solo se produce en linea recta, no me extrañaría que fuese variable y que tuviese distintos valores por ejemplo cuando está girando.

En fin, es una idea que te lanzo.  :mrgreen:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #3 en: 26 de Junio de 2009, 20:44:50 »
Estoy de acuerdo Vixctor en que este sistema no funcionará en terrenos irregulares, o en sitios donde las ruedas puedan patinar. Sin embargo, en un suelo liso y con grip la matemática dice que debería ser posible.

Diego, la diferencia entre mi sistema y el de tu avión es que yo tengo retroalimentación de posición de cada rueda, por lo que debería ser capaz de mantener las dos a la par. Puede que tengas razón y una vez más tenga que rendirme ante la evidencia y la voz de la experiencia, pero de momento no lo descarto.

Además, juraría que el amigo Dogflu implementó algún algoritmo parecido en su robot Miguelito. A ver si asoma por aquí y nos cuenta cómo funcionaba.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #4 en: 27 de Junio de 2009, 05:31:41 »

Diego, la diferencia entre mi sistema y el de tu avión es que yo tengo retroalimentación de posición de cada rueda, por lo que debería ser capaz de mantener las dos a la par. Puede que tengas razón y una vez más tenga que rendirme ante la evidencia y la voz de la experiencia, pero de momento no lo descarto.


Yo también tenía retroalimentación, las RPM reales de cada pala girando con un sensor IR.

Si las RPM de ambas eran iguales teóricamente ofrecerían el mismo empuje, y eso era falso. Con las mismas RPM cada pala ofrecía un empuje distinto.

Así que las trimé para que con dos RPM distintas ofreciesen un empuje igual, o sea que equilibré los empujes modificando sus regímenes de giro.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #5 en: 27 de Junio de 2009, 23:10:34 »
La verdad es que no puedo ayudar mucho. Hice las pruebas para corregir el problema y no me fueron mal, tan solo me limitaba a penalizar la rueda que iba más rápida. Programaba un número determinado de rpm a una rutina principal y otra en segundo término más simple de supervisión que se activaba si había desfase entre los puntos acumulados de los encoder de las ruedas y, lo que hacía era simplemente penalizar a la rueda que más puntos llevaba hasta igualar los puntos acumulados. Por lo tanto ambas ruedas siempre hacían el mismo recorrido y como te indican es fundamental que la mecánica este lo más simétrica posible. En mi caso al usar dos servos del mismo modelo y piezas lego conseguia una buena simetria. En realidad en estos casos por muy bien que se corrija el defecto por soft y se utilice una buena mecánica simétrica, es cuestión de recorrer mas metros para que se aprecie las perdidas, todo está que el error no sea apreciable en la distancia máxima en línea recta que pueda recorrer nuestro cacharro. Por ejemplo, mi bot limpiador da la sensación de que se desplaza completamente recto, pero es que a los pocos metros ya choca con algún obstáculo.
Saludos desde Granada, España.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #6 en: 28 de Junio de 2009, 18:54:35 »
Creo que casi lo tengo. Estuve ajustando los parámetros del PID y el resultado es bastante satisfactorio.
Aún tengo que pulir algún detalle, pero estoy contento.
De hecho se observa cómo a veces se desajusta un poco y él mismo corrige volviendo a la trayectoria original.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #7 en: 28 de Junio de 2009, 23:20:08 »
 :-/ :-/ Felicidades Maestro  :-/ :-/ ya se vez la luz de tu frijolito  :D :D


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #8 en: 09 de Enero de 2010, 08:53:38 »
Gracias a los sabios consejos del maestro Bruno y a la ayuda en este hilo (Dudas PID) he mejorado el PID, dejo vídeo:

Desconectado Strepto

  • PIC16
  • ***
  • Mensajes: 159
    • Pictronics
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #9 en: 09 de Enero de 2010, 11:31:27 »
Tiene muy buena pinta y parece que anda de perlas! Sigue asi!

Un saludo!

Desconectado JCCC

  • PIC10
  • *
  • Mensajes: 10
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #10 en: 09 de Enero de 2010, 16:58:25 »
Hola amigos, este tema me parece interesante por los retos.
Teóricamente 2 motores de parámetros iguales, con la misma carga, con la misma alimentación de voltaje y en tu caso con 2 ruedas iguales deberían ir a la misma velocidad. Así que no tendrías problema (claro también digo que el piso es uniforme y rugoso).
En el video puedo ver que la batería ofrece más carga a un motor que a otro y que lo corregiste en el segundo video, ya va más cerca al C.G. de tu plataforma, al ofrecer más carga a un motor generas un desequilibro que tal vez afecte tu rueda loca (habría que ver qué tipo de rueda loca usas) también generas que una rueda tenga más agarre que la otra rueda y puede afectar el resultado dependiendo del tipo de suelo.
Todos estos problemas lo puedes solucionar con el método de prueba y error, considerando que tu planta es invariante en el tiempo, consideras diferentes voltajes para las ruedas (porque cada motor es una planta diferente) puedes llegar a encontrar 2 valores de voltajes diferentes que hagan que tu plataforma vaya en línea recta y es lo que creo que buscas.
En tu control PID buscas que las 2 ruedas giren a la misma velocidad pero 2 ruedas a la misma velocidad no garantizan que tu plataforma ira en línea recta, tal vez se vea afectada por el peso de la batería, por la rueda loca (todo eso lo tienes que modelar o interpretar para que consideres que son variables despreciables).
Lo que sería interesante seria diseñar el control para una plataforma variable (en peso, Centro de Gravedad y Masa, tal vez tamaño de llantas) el gran reto :P
Espero que estos consejos te sirvan…

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #11 en: 09 de Enero de 2010, 18:32:10 »
Muchas gracias por los consejos. Estoy de acuerdo con bastantes cosas, pero discrepo con una de ellas: si las dos ruedas van a la misma velocidad, y no hay derrapes, necesariamente se moverá en linea recta.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #12 en: 09 de Enero de 2010, 19:47:41 »
Me alegro mano que ya responda bien el programa a bajas velocidades.

P.D. No trates tan mal al pobre catalogo...:D
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #13 en: 24 de Enero de 2010, 16:45:58 »
He seguido depurando el algoritmo para que autocorrija la dirección ante las adversidades que encuentre en el camino, garantizando así que mantiene la línea recta.
Al final del vídeo se puede observar cómo corrige incluso agresiones externas  :D


Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Movimiento en línea recta: ¿cuál es la mejor estrategia?
« Respuesta #14 en: 24 de Enero de 2010, 16:59:36 »
 :D :osea que transportando la leche de tu hijo :D :D