La geometría Single Belt de la A a la Z

Fecha de publicación
Cateogría del artículo Motion Control
Visualizaciones del artículo Leído  2799  veces

Pere Garriga nos da a conocer todos los detalles de la cinemática para un robot cartesiano de dos ejes en la que los dos motores están fijos

La geometría Single Belt de la A a la Z

Quien más quien menos ha visto alguna aplicación de un robot cartesiano de dos ejes en la que los dos motores están fijos, a esta geometría se la conoce por varios nombres, H-Boot, Gantry, cinemática paralela y Single Belt. Este artículo pretende dar a conocer todos los detalles de dicha geometría o cinemática.

Croquis de esta geometría

Se llama Single Belt porque con una sola correa dentada, la que se muestra en color rojo, se realiza el movimiento de los dos ejes. Dicha correa está cortada y sus puntos de inicio y final están sujetos al brazo que se mueve en el sentido del eje Y. Si observamos el recorrido de la correa, vemos que pasa por una serie de poleas conducidas, o de giro libre, y por las poleas motrices de cada motor. Con esto se consigue que combinando el giro de los motores M1 y M2, el punto efectivo, punto en verde, en adelante TCP (Tool Center Point), del movimiento en el plano cartesiano X, Y se desplace a cualquier posición.



La tabla de la verdad muestra las reglas del movimiento, contempla todas las posibilidades de giro de M1 y M2 y lo que ocurre en cada caso. Veamos la combinación número 7, la tabla nos indica que girando M1 en sentido Fwd (horario) y M2 en sentido Rev (anti horario), el TCP se desplaza hacia arriba en vertical. Si intentamos imaginar el movimiento veremos que tanto M1 como M2 están “tirando” de la correa de forma que obligan a que el TCP suba, si ambos motores giran por igual el movimiento será completamente vertical. Lo mismo ocurre con la combinación num. 6, pero en sentido contrario. Con un poco de imaginación se pueden visualizar todas las combinaciones de la tabla.

Ventajas que ofrece.

A priori podríamos pensar que lo estamos complicando, que sería más fácil trabajar con ejes totalmente independientes. Pero esta geometría ofrece varias ventajas importantes, tanto a nivel de prestaciones, como a nivel de instalación.

Lo primero que se observa es que ninguno de los motores se mueve, por tanto, eliminamos la necesidad de cadenas porta cables para las mangueras de potencia y feedback. Los motores trabajan en compartición de par por lo que se reduce su tamaño y su propia inercia, consiguiendo así ciclos de trabajo más cortos. Dicho de otra forma, más cadencia o más ciclos por minuto.

Calculo de la transformada.

Para empezar a ver el funcionamiento de esta geometría, hemos visto cómo se comporta según las reglas de movimiento mostradas en la tabla de la verdad, pero con esto, todavía no sabemos a qué posiciones tenemos que mover M1 y M2 para mover el TCP a unas determinadas coordenadas X e Y. Para ello hay que conocer las ecuaciones que transforman los valores de posición de los motores M1 y M2 a coordenadas X e Y, a esto se le llama transformada directa. También hay que conocer la transformada inversa, las ecuaciones que transforman las coordenadas X e Y a las posiciones de M1 y M2.

Hay que decir que siempre que se trabaja con transformadas, se necesitan ejes virtuales en el plano cartesiano, en esta ocasión un eje X y un eje Y.

De ahora en adelante se da por sabido que al hacer referencia al eje X o Y se trata de ejes virtuales.

En esta geometría las transformadas son muy fáciles de calcular y cualquier pequeño controlador las puede gestionar.

Transformada directa:

X = (M1 + M2) / 2; Y = (M1 – M2) / 2; Supongamos que, al dar tensión al robot, la lectura de la posición que nos dan sus encoders absolutos, es de M1 = 1240.8 y M2 = 42.4 mm, necesitamos conocer las coordenadas de X e Y para ello calculamos la transformada directa y obtenemos que la coordenada del eje X será X = (1240.8 + 42.4) / 2; X = 641.6 mm, y la del eje Y = (1240.8 - 42.4) / 2 lo que resulta en Y = 599.2mm.
La transformada directa solo se emplea durante la inicialización del robot para conocer su posición en el plano cartesiano, es como si fuese el referenciado, con el que obtenemos su posición de partida sobre X e Y.

Transformada inversa:

M1 = X + Y; M2 = X – Y; Supongamos que queremos mover el robot a las coordenadas X = 480 e Y = 35 mm, ¿a qué posición tengo que mover M1 y M2? Calculamos la transformada inversa, M1 = 480 + 35; M1 = 515; M2 = 480 – 35; M2 = 445 mm. Con este simple cálculo obtenemos las posiciones a las que se deben mover M1 y M2 para posicionar el robot en las coordenadas X e Y indicadas.

La transformada inversa es la que nos da la posición a la que mover los ejes reales M1 y M2, para conseguir la posición deseada del TCP.

Formas de implementación.

Hay varias formas de implementar esta cinemática, según el controlador y la arquitectura de la que se disponga. Empezamos por la de menores prestaciones.

En este caso, tal como se muestra en el gráfico, se trata de un simple PLC comunicado con los servodrives, en EtherNet/IP u cualquier otro tipo de comunicación, que controlan el motor M1 y M2. La capacidad de realizar posicionados simples la tienen los servodrives, el PLC solo les envía los valores dinámicos, la posición de destino y la orden de iniciar el movimiento.

Pseudocódigo de ejemplo para realizar un movimiento en U invertida según las coordenadas del gráfico:

// Fijamos valores dinámicos
    Velocidad = 1000 mm/seg
    Aceleración = 50000 mm/Seg²
    Deceleración = 50000 mm/Seg²
    Jerk = 4166667 mm/Seg³
    Enviar valores a los Servodrives

// Calculamos los valores de la transformada inversa de las
// coordenadas de P0 a P3
    Para el punto 0, M1[0]= 100+40 = 140
    Para el punto 0, M2[0]= 100-40 = 60

    Para el punto 1, M1[1]= 100+200 = 300
    Para el punto 1, M2[1]= 100-200 = -100

    Para el punto 2, M1[2]= 250+200 = 450
    Para el punto 2, M2[2]= 250-200 = 50

    Para el punto 3, M1[3]= 250+-10 = 240
    Para el punto 3, M2[3]= 250--10 = 260

// Gestión de los posicionados de P0 a P3

    Enviar a los servodrives las posiciones de M1[0] y M2[0]
    Dar el comando de iniciar el posicionado
    Esperar hasta que se alcance la posición en ambos ejes

    Enviar a los servodrives las posiciones de M1[1] y M2[1]
    Dar el comando de iniciar el posicionado
    Esperar hasta que se alcance la posición en ambos ejes

    Enviar a los servodrives las posiciones de M1[2] y M2[2]
    Dar el comando de iniciar el posicionado
    Esperar hasta que se alcance la posición en ambos ejes

    Enviar a los servodrives las posiciones de M1[3] y M2[3]
    Dar el comando de iniciar el posicionado
    Esperar hasta que se alcance la posición en ambos eje

Esta sería la forma más básica para realizar movimientos en un robot Single Belt con el más sencillo de los PLC y unos servodrives con capacidad de realizar posicionados. Hay que decir que las prestaciones son bastante limitadas por el hecho de poder realizar, únicamente, posicionados punto a punto.

En este caso se muestra una arquitectura de control integrada con un PAC (Programable Automation Controller) y servodrives en bus SERCOS III. Esta arquitectura es la que ofrece mayores prestaciones.

En la mayoría de controladores PAC se puede tomar el control de la referencia de posición que se envía a los ejes, en tal caso la idea es la de crear dos ejes virtuales, el X y el Y. En una tarea rápida se calcula la transformada inversa de las posiciones de X e Y para obtener los valores de posición donde deben estar M1 y M2 en todo momento, estas referencias de posición son las que se envían a los servodrives a través del bus SERCOS III y estos se encargan de conseguir que la posición real de cada eje siga con la máxima precisión al valor de referencia, con el mínimo error de seguimiento. Por tanto, cualquier movimiento en los ejes cartesianos, X, Y se transformará al movimiento adecuado en M1 y M2 para que el TCP esté en todo momento en la posición marcada por X e Y. Esta es la forma en que funcionan un robot delta, un articulado o una plataforma Steward.

De esta manera se puede realizar cualquier tipo de movimiento en los ejes X e Y, el más simple sería el de encadenar simples posicionados para conseguir la trayectoria en U invertida redondeada o se puede mejorar con interpolaciones tipo Splines, para conseguir mayor velocidad y suavidad.

El siguiente pseudocódigo pretende clarificar lo explicado:

// Tarea cíclica rápida, de 1 a 4 mseg., para el cálculo de la
// transformada inversa y envió de posición de referencia
    Posición de referencia para M1 = Posición de X + Posición de Y;
    Posición de referencia para M2 = Posición de X - Posición de Y;
    Transferir posiciones de referencia de los ejes a los servodrives

// Función para inicializar las posiciones de los ejes virtuales X e Y
  Si es el primer escan, entonces ejecuta
    Posición de X = ( Posición M1 + Posición M2 ) / 2;
    Posición de Y = ( Posición M1 - Posición M2 ) / 2;
    Ejes preparados = TRUE; // Ya se pueden mover los ejes X e Y
  Fin de bloque

// Programa principal, tarea cíclica a 10 mseg.
  Si se ha seleccionado modo MANUAL, entonces ejecuta
    Consultar pulsadores de avance manual X_JogFwd, XJogRew, Y_JogFwd
    e YJogRew y Programar los movimientos en JOG correspondientes
    para cada eje.
  Fin de bloque

Si se ha seleccionado modo AUTOMATICO, entonces ejecuta

// Aquí es donde se programará la secuencia del ciclo automático
    Mediante una máquina de estados u otra técnica se programará la
    secuencia de movimientos del ciclo automático. Pongamos un ejemplo
    de una pick & place, empleando la trayectoria de U invertida más
    básica, con los puntos P0, P1, P2, P3.

Estado 00: Ir a la posición de Pick P0, al alcanzar la posición
                ir al siguiente estado.
Estado 10: Activar el vacío para coger la pieza y esperar 60 mseg,
                ir al siguiente estado
Estado 20: Subir a la posición P1, al alcanzar la posición ir al
                siguiente estado.
Estado 30: Desplazar a la posición P2, al alcanzar la posición ir
                al siguiente estado.
Estado 40: Bajar a la posición de Place P3, al alcanzar la posición
                ir al siguiente estado.
Estado 50: Desactivar el vacío para soltar la pieza y esperar
                100 mseg, ir al siguiente estado
Estado 60: Subir a la posición P2, al alcanzar la posición ir al
                siguiente estado.
Estado 70: Desplazar a la posición P1, al alcanzar la posición
                volver al estado 0.
Fin de bloque

En caso de que el PAC no permita tomar el control de la referencia de posición para los servodrives, se puede optar por la técnica de realizar un posicionado absoluto para el eje M01 y otro para el M02 en una tarea rápida, de forma que cada vez que se modifica el valor de la posición, el que se obtiene del cálculo de la transformada inversa, se vuelva a ejecutar el posicionado. De esta forma M01 y M02 estarán siguiendo continuamente las posiciones transformadas de X e Y y el TCP del robot siempre estará en la posición física X e Y correspondientes.

Sería como se muestra en el siguiente pseudocódigo:

//-------------------------------------------------------------------
// Tarea cíclica rápida, de 1 a 4 mseg., para el cálculo de la
// transformada inversa y posicionado de los ejes
    Posición de referencia para M1 = Posición de X + Posición de Y;
    Posición de referencia para M2 = Posición de X - Posición de Y;

    Si la posición de M1 ha cambiado, entonces
      Posicionado absoluto de M1 a la nueva posición
    Fin de bloque

    Si la posición de M2 ha cambiado, entonces
      Posicionado absoluto de M2 a la nueva posición
    Fin de bloque

// ------------------------------------------------------------------

En todos los casos se pueden emplear, posicionados, interpolaciones lineales y circulares, movimientos en manual, interpolaciones mediante Splines, para generar la trayectoria del robot en X, Y. Según sea el PAC empleado se tendrá más o menos funcionalidad para programar la trayectoria, o el Motion Path en inglés.

Un punto importante en todos los casos, es que durante la inicialización y antes de realizar ningún movimiento, hay que calcular la transformada directa con los valores de posición que se obtienen de los encoders absolutos de M1 y M2 y traspasar los valores obtenidos de X e Y a los ejes virtuales.

No es nada aconsejable, aunque es posible, el empleo de encoders incrementales puesto que el proceso de referenciado requiere algunas líneas de código y en caso de parada, la re-inicialización del trabajo puede requerir más tiempo e incluso la intervención del operari@.

El robot X, Y o X, Z con esta geometría, tan ingeniosa, resulta muy adecuado para aplicaciones de Pick & Place, entre otras, dado que se pueden conseguir velocidades muy altas, más de 80 ciclos/min. Es fácil de instalar y se puede controlar con un simple PLC o, mejor, con un PAC para poder programar un Motion Path más optimizado y de movimiento más suave.

Algunos fabricantes, como FESTO con el EXCT, ya disponen de robots con está geometría como producto estándar.

Linkedin Pere Garriga

/blogs-automatizacion/marcas/498-motion-control

Motion Control

Blog dedicado a la introducción en los conceptos de Motion Control (Control de movimiento) en sistemas de automatización




Descargas