Labview
Cinemática Directa con Labview, Comprobación con RobotStudio
En el anterior post se abordo los conceptos clásicos que involucran la localización espacial del robot en un conjunto de sistemas de coordenadas. Por lo tanto en este post se pondrán en practicas esos conceptos teóricos valiendonos de la cinemática directa, que es la ciencia que abarca el movimiento sin involucrar las fuerzas que lo originan.
Para esto se elaborara un análisis en los eslabones vinculados en el movimiento del robot (Conjuto de eslabones = Estructura Robot) haciendo los cálculos matematicos necesarios para cada uno de ellos. Esto nos permitira conocer el valor de las coordenadas de la herramienta de trabajo o el TCP (tool center pointer) de nuestro Robot.
Figura1: TCP o efector final
El algoritmo a utilizar para el análisis de los eslabones es el muy reconocido Algoritmo de Denavit-Hartemberg que nos permite conocer la ubicacion de los sistemas de referencia para cada una de las articulaciones. Mas informacion
Figura2: Eslabones y transformaciones de Denavit-Hartemberg (
.)
Usaremos Labview valiendonos de su interfaz gráfica de programación y después realizaremos una comprobación de esos datos obtenidos en nuestro programa con el Software de programación y simulación de Robots de la Compañía ABB Robotics RobotStudio.
El primer robot a analizar es el IRB120 tomando en cuenta los valores del fabricante como longitud de los eslabones, rango de apertura de los ángulos de las articulaciones etc. estos datos aparecen en el Datasheet del IRB120.
Figura3: Datos característicos del IRB120
Al hacer el respectivo análisis de las transformaciones en cada par de eslabones nos queda la siguiente Matriz con los datos característicos de cada eslabón.
Figura4: Matriz de Valores de cada eslabón del IRB120
Ahora que se poseen los datos de cada eslabón usaremos las matrices de transformaciones homogeneas entre cada sistema para encontrar el valor en coordenadas cartesianas del Efector final (TCP), debido a que son 6 eslabones tendremos 6 Matrices que definiran la orientacion de cada una de ellas, consecutivamente aplicaremos una multiplicación de cada matriz característica y de esta forma tendremos el valor de X, Y y Z del TCP.
Cabe destacar que los calculos paso a paso de estas matrices no seran mostrados aca ya que nos estamos valiendo del toolkit de Labview llamado MathScrip (Desarrollado en conjunto con Matlab y National Instruments) Dejando de un lado el calculo, estaremos listos para obtener el valor de X, Y y Z del efector final si conocemos el angulo de cada articulacion.
A continuacion se muestra el codigo del Mathscrip del programa del VI de Labview
%%%% %%%%%%%%%%%%%PASANDO ANGULO A RADIANES %%%%%%%%%%%%%%%%%%%%%%
th1= (pi*th1x)/180;
th2y=(pi*th2x)/180;
th3= (pi*th3x)/180;
th4= (pi*th4x)/180;
th5= (pi*th5x)/180;
th6y=(pi*th6x)/180;
%%%%%% %%%%MATRIZ DE DENAVIT- HARTEMBERG MODEL IRB 120 %%%%%%%%%%%%%%%%%%%
a1 = 0; d1 = 290; alpha1 = -pi/2; % th1r = 0;
a2 = 270; d2 = 0; alpha2 = 0; th2 = th2y -pi/2;
a3 = 70; d3 = 0; alpha3 = -pi/2; %th3r = pi;
a4 = 0; d4 = 302; alpha4 = pi/2; % th4r = 0;
a5 = 0; d5 = 0; alpha5 = -pi/2; %th5r = 0;
a6 = 0; d6 = 72; alpha6 = 0; th6 = th6y +pi;
%%%% %%%%%%%%%%%%%PASANDO ANGULO A RADIANES IRB140 %%%%%%%%%%%%%%%%%%%%%%
%th1= (pi*th1x)/180;
%th2y=(pi*th2x)/180;
%th3y= (pi*th3x)/180;
%th4= (pi*th4x)/180;
%th5= (pi*th5x)/180;
%th6y=(pi*th6x)/180;
%%%%%% %%%%MATRIZ DE DENAVIT- HARTEMBERG MODEL IRB 140 %%%%%%%%%%%%%%%%%%%
%a1 = 70; d1 = 352; alpha1 = -pi/2; % th1 = th1y + pi/2;
%a2 = 360; d2 = 0; alpha2 = 0; th2 = th2y -pi/2;
%a3 = 0; d3 = 0; alpha3 = pi/2; th3 = th3y +pi;
%a4 = 0; d4 = 380; alpha4 = -pi/2; %th4 = th4y +pi ;
%a5 = 0; d5 = 0; alpha5 = pi/2; % th5= th5y +pi/2 ;
%a6 = 0; d6 = 65; alpha6 = pi/2; th6 = th6y – pi;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %%%%%%% MATRICES DE TRANSFORMACION HOMEGENEA %%%%%%%%%%%%%%%%%%%%%%%%
A01 = [cos(th1) -cos(alpha1)*sin(th1) sin(alpha1)*sin(th1) a1*cos(th1);
sin(th1) cos(alpha1)*cos(th1) -sin(alpha1)*cos(th1) a1*sin(th1);
0 sin(alpha1) cos(alpha1) d1;
0 0 0 1];
A12 = [cos(th2) -cos(alpha2)*sin(th2) sin(alpha2)*sin(th2) a2*cos(th2);
sin(th2) cos(alpha2)*cos(th2) -sin(alpha2)*cos(th2) a2*sin(th2);
0 sin(alpha2) cos(alpha2) d2;
0 0 0 1];
A23 = [cos(th3) -cos(alpha3)*sin(th3) sin(alpha3)*sin(th3) a3*cos(th3);
sin(th3) cos(alpha3)*cos(th3) -sin(alpha3)*cos(th3) a3*sin(th3);
0 sin(alpha3) cos(alpha3) d3;
0 0 0 1];
A34 = [cos(th4) -cos(alpha4)*sin(th4) sin(alpha4)*sin(th4) a4*cos(th4);
sin(th4) cos(alpha4)*cos(th4) -sin(alpha4)*cos(th4) a4*sin(th4);
0 sin(alpha4) cos(alpha4) d4;
0 0 0 1];
A45 = [cos(th5) -cos(alpha5)*sin(th5) sin(alpha5)*sin(th5) a5*cos(th5);
sin(th5) cos(alpha5)*cos(th5) -sin(alpha5)*cos(th5) a5*sin(th5);
0 sin(alpha5) cos(alpha5) d5;
0 0 0 1];
A56 = [cos(th6) -cos(alpha6)*sin(th6) sin(alpha6)*sin(th6) a6*cos(th6);
sin(th6) cos(alpha6)*cos(th6) -sin(alpha6)*cos(th6) a6*sin(th6);
0 sin(alpha6) cos(alpha6) d6;
0 0 0 1];
A06 = A01*A12*A23*A34*A45*A56;
x = A06(1,4)
y = A06(2,4)
z = A06(3,4)
El código posee dos matrices características una para el IRB120 y otro para el IRB140 solo basta con descomentar el código característico del IRB140 y comentar el de IR120 para obtener los datos.
Figura5: Matriz de Valores de cada eslabón del IRB140
Diagrama de bloques de Labview
Figura6: Diagrama de bloques en labview junto con el script.
Panel Frontal Labview
Figura7: Interfaz de Labview Acá se puede ajustar el Angulo de cada eslabón y se mostraran el valor de XYZ
A continuación se muestran los datos obtenidos y comparados con RobotStudio.Para una posicion de 0º en todos los 6 eslabones el valor de X = 374 Y=0 Z=630 esta es la posiciones inicial del robot donde estos datos siempre estan referenciados al vector universal U
Podemos ver la posicion inicial del robot en RobotStudio y los valores de XYZ barrita de valores TCP, que coinciden con el VI de Labview.
Figura8: Interfaz de Robot Studio parte izquierda muesta los datos de ajuste en grados e informacion de la posicion del TCP (XYZ)
Demostración (1) IRB120 (se mostraran interfaz de Labview y despues de RobotStudio)
Figura9: Demostracion (1) IRB120
Demostración (2) IRB140 (Se ha descomentado y comentado respectivamente en El programa (: ) Mostrando los mismos angulos que el IRB120 y se muestra la diferencia de la posicion del TCP ya que los eslabones no tienen la misma configuración o longitud
Figura10: Demostracion (2) IRB140
Podemos ver que los valores del angulo y coordenadas XYZ del TCP para el IRB120 y el IRB140 para ambas interfaces coinciden.
De esta forma concluimos con la practica.