8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
1/76
1
INTRODUCCION
Con el desarrollo de los computadores desde el siglo pasado hasta nuestros das,
muchas de las actividades humanas han sido notablemente influenciadas por la
sistematizacin. La ciencia, la ingeniera y las comunicaciones han sido motores
de desarrollo de este campo ya que son las reas mas beneficiadas por sus
logros.
Es muy comn encontrar que muchas tareas se realizan con el uso de
computadores, por ejemplo: transacciones bancarias, facturas, cartas, problemas
numricos complejos, dibujo de planos, clculo de estructuras, etc. Cada tarea
requiere de una aplicacin especfica que se encarga de hacer que el computador
responda de la manera requerida.
La necesidad cada vez ms apremiante de aumentar la productividad y conseguir
productos acabados de calidad uniforme, hace que la industria gire cada vez ms
hacia la automatizacin apoyada en computador. En el momento actual, la
mayora las tareas de fabricacin automatizadas se realizan mediante mquinas
de uso especial para realizar funciones en un proceso de manufactura.
Generalmente la inflexibilidad y el alto costo de estas mquinas, llamadas a
menudo sistemas de automatizacin duros, ha llevado a un inters creciente en el
uso de robots capaces de efectuar una variedad de funciones de fabricacin en un
entorno de trabajo ms flexible y a un coste menor de produccin.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
2/76
2
Las universidades estn llamadas a ser las pioneras en introducir estas
tecnologas al mercado nacional como es el caso de la Universidad del Valle que
esta haciendo avances en el grupo de robtica con un proyecto a largo plazo con
miras a construir una celda de manufactura flexible algunos de tales avances son:
el trabajo acerca del robot industrial de tipo SCARA1, el trabajo que trata del
modelo dinmico del robot CERMA UNIVALLE2, el trabajo acerca de la
planeacin dinmica de procesos de manufactura en celdas flexibles3, y el trabajo
sobre el seguimiento de trayectorias predefinidas en el desplazamiento de robots.
Durante el ao 2000 el grupo de robtica de la Universidad del Valle trabajo en un
proyecto de investigacin destinado al diseo del robot articulado tipo industrial
que hace parte de una celda flexible de manufactura preconcebida, trabajo
realizado por el Profesor Jos Isidro Garca como tesis de la maestra en
automtica, este trabajo de grado pretende ser un complemento y ampliacin de el
trabajo de maestra mencionado.
Un robot industrial en un manipulador de uso general controlado por computador
que se compone de elementos rgidos conectados en serie mediante
articulaciones prismticas o de revolucin. El final de la cadena est fijo a una
1
ABADIA N. JOSE ANTONIO. Informe cientfico final del proyecto de investigacin, Especificaciny diseo, construccin y operacin y mantenimiento de un robot industrial de tipo scara con unaarquitectura de pilotaje, tiempo real y multiprocesador, etapa IV Santiago de Cali, Diciembre 1996. 2TOMAS BUITRAGO, Modelo dinmico del robot CERMA UIVALLE, proyecto de investigacin.
Maestra en automtica, programa de postgrado en ingeniera elctrica y electrnica y de lacomputacin, Santiago de Cali 1998.3 ELIOT MOTATO ESCOBAR, Planeacin Dinmica de procesos de manufactura en celdas
flexibles, proyecto de investigacin. Maestra en automtica, programa de postgrado en ingenieraelctrica y electrnica y de la computacin, Santiago de Cali 1999
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
3/76
3
base soporte, mientras el otro extremo est libre y equipado con herramienta para
manipular objetos o realizar tareas de montaje. El movimiento de las
articulaciones resulta en, o produce, un movimiento relativo de los distintos
elementos. Mecnicamente, un robot se compone de un brazo y de una mueca
ms una herramienta. Se disea para alcanzar una pieza de trabajo localizada
dentro de su volumen de trabajo. El volumen de trabajo es la esfera de influencia
de los robots, cuyo brazo puede colocar el sub-montaje de la mueca en cualquier
punto de la esfera. El brazo generalmente se puede mover con 3 grados de
libertad. La combinacin de los movimientos posiciona la mueca sobre la pieza
de trabajo. La mueca normalmente consta de tres movimientos giratorios. La
combinacin de estos movimientos orienta la pieza de acuerdo a la configuracin
del objeto para facilitar su alcance. Estos tres ltimos movimientos se denominan
a menudo elevacin, desviacin y giro (Pitch, Yaw y Roll). Por tanto, para un robot
con seis articulaciones, el brazo es el mecanismo posicionamiento, mientras que
la mueca es el mecanismo de orientacin.
Hoy da vemos la robtica con un campo de trabajo mucho ms amplio que el que
se tena el pasado, tratando con investigaciones y desarrollos en una serie de
reas interdisciplinarias, que incluyen cinemtica, dinmica, planificacin de
sistemas, control, sensores, lenguajes de programacin e inteligencia artificial.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
4/76
4
OBJETIVOS
Objetivo General.
Crear una aplicacin
4
que se ejecute en la plataforma MicrosoftWindows para asistir en el anlisis cinemtico y dinmico de un Robot
industrial que es parte de una celda de manufactura flexible, proyecto
del laboratorio de robtica de la Universidad del Valle, en el que han
estado trabajando en los ltimos aos.
Objetivos Especficos
Simular grficamente en tiempo real el funcionamiento del robot, luego
de haberle programado una trayectoria.
Permitir al usuario modificar o tomar decisiones sobre los resultados
basndose en su criterio y experiencia.
Estar en capacidad de reajustar la simulacin.
Interesar al usuario mediante una interfase fcil de emplear. Elaborar un informe que explique los fundamentos de la aplicacin y sus
restricciones.
4La aplicacin se denomino S2A2RD v 0.0, acronimo en ingles de Software of Simulation and
Anlisis for Aided Robots Design.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
5/76
5
JUSTIFICACIN
La ingeniera desarrolla un papel preponderante en el desarrollo de la industria, y
en ella el rea de la robtica industrial aplicada es un factor importante en la
optimizacin de los procesos de produccin, pero debido a los altos costos de su
tecnologa no ha sido adoptada en nuestro medio y en donde se ha hecho, no ha
sido integrado completamente en el proceso productivo.
Nuestro medio se ve afectado por el descuido tecnolgico a que se ha sometido el
sector de la manufactura de productos, esto se debe a que se han obtenido
resultados aceptables sin desarrollar tecnologas avanzadas; tecnologas que
como la robtica de ser implantada de forma adecuada, dara un gran impulso a
la industria hacindola mas competitiva a nivel internacional.
En este trabajo se seala que es el momento propicio para aprovechar la
tecnologa que se desarrolla actualmente en torno a la grafica computacional y el
desarrollo de software en el rea de ingeniera, tecnologa con la que el autor de
este documento ha estado trabajando en los ltimos 4 aos; y el trabajo que en los
ltimos aos se ha realizado en la Universidad del Valle por parte docentes en el
rea de robtica. La implantacin de la robtica en nuestro medio depende de
una disminucin de sus costos, no tanto en el hardware, sino en la tecnologa de
control y diseo de robots, tecnologa fundamentada en buena parte en el
entendimiento y manejo de los modelos cinemticos y dinmicos, entendimiento y
manejo sobre los que gira este trabajo.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
6/76
6
1. CARACTERISTICAS DEL MANIPULADOR
Como se menciono anteriormente en la introduccin este manipulador5 fue
diseado en el Laboratorio de Robtica de la Universidad del Valle por el Profesor
Jos Isidro Garca como parte de una celda de manufactura flexible, las siguientes
caractersticas son tomadas y adaptadas de su trabajo.
Estructura: Robot articulado vertical de 5 ejes con desplazamiento
Cargas: 20 Kg.
Precisin: Exactitud = 0.5 mm
Repetitividad = 0.02 mm
Velocidad: Resolucin = Controlado por software
Velocidad de la herramienta: Controlado por software
Aceleraciones y desaceleraciones: Controlados por software
Alcance: Eje Z0: Traslacin 1.05 m
Eje Z1: Rotacin 180
Eje Z2: Hombro -100/35
Eje Z3: Codo 70
Eje Z4: Pitch 90
Eje Z5: Roll 180
Peso: 24 Kg
5 Los trminos manipulador y robot industrial son utilizados como sinnimos en este documento.
Ilustracin 1.MARCOS DE REFERENCIA
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
7/76
7
Para la obtencin de los parmetros fsicos6 de las diferentes partes que
conforman el manipulador se utiliz el programa comercial MECHANICAL
DESKTOP, cuyos resultados se enuncian a continuacin:
PARTE 1: Translacin
Masa 4.5102 Kg.
Volumen 1.664 x 10-3 mm3
Centro de Masa X: 0 m
Y: -0.0533 m
Z: 0 m
Momentos de inercia X: 0.0255 Kg. m2
Y: 0.0196 Kg. m2
Z: 0.0291 Kg. m2
Productos de inercia XY: 0 Kg. m2
XZ: 0 Kg. m2
6 Los centros de masa, momentos y productos de inercia estn calculados respecto al marco de
referencia local de la Parte-Elemento.
Ilustracin 2. UBICACIN DE LOS EJES
Ilustracin 3.TRANSLACION
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
8/76
8
YZ: 0 Kg. m2
Parte 2: Rotacin
Masa: 16.4456 Kg.
Volumen: 6.068 x 10-3 m3
Centro de Masa: X: 0.6545 m
Y: -0.544 m
Z: -0.9267 m
Momentos de inercia: X: 19.3295 Kg. m2
Y: 21.3357 Kg. m2
Z: 12.2623 Kg. m2
Productos de inercia XY: -5.8478 Kg. m2
XZ:-10.0106 Kg. m2
YZ: 8.2816 Kg. m2
Parte 3: Hombro
Masa: 1.5271 Kg.
Volumen: 0.563 x 10-3 m3
Centro de Masa: X: 0.1596 m
Y: 0 m
Z: 0 m
Momentos de inercia: X: 0.0053 Kg. m2
Y: 0.0672 Kg. m2
Z: 0.0638 Kg. m2
Productos de inercia: XY: 0 Kg. m2
XZ: 0 Kg. m2
Ilustracin 4.ROTACION
Ilustracin 5.HOMBRO
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
9/76
9
YZ: 0 Kg. m2
Parte 4: Codo
Masa: 1.3727275 Kg.
Volumen: 0.506 x 10-3 m3
Centro de Masa: X: 0.0957 m
Y: 0 m
Z: 0 m
Momentos de inercia: X: 0.0022 Kg. m2
Y: 0.0185 Kg. m2
Z: 0.0174 Kg. m2
Productos de inercia: XY: 0 Kg. m2
XZ: 0 Kg. m2
YZ: 0 Kg. m2
Parte 5: Pitch
Masa: 0.0967 Kg.
Volumen: 0.0357 x 10-3 m3
Centro de Masa: X: 0
Y: 0
Z: 0
Momento de inercia: X: 0 Kg. m2
Y: 0 Kg. m2
Z: 0 Kg. m2
Productos de inercia: XY: 0 Kg. m2
XZ: 0 Kg m2
Ilustracin 6. CODO
Ilustracin 7. PITCH
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
10/76
10
YZ: 0 Kg m2
Parte 6: Roll
Masa: 0.381 Kg.
Volumen: 0.1408 x 10-3 m3
Centro de Masa: X: 0 m
Y: 0 m
Z: 0.0778 m
Momento de inercia: X: 0.0026 Kg. m2
Y: 0.025 Kg. m2
Z: 0.003 Kg. m2
Producto de inercia: XY: 0 Kg. m2
XZ: 0 Kg. m2
YZ: 0
2. MARCO TEORICO
2.1 Matrices de rotacin
Una matriz de rotacin 3x3 se define como una matriz de transformacin que
opera sobre un vector de posicin y transforma sus coordenadas expresadas en
un sistema de coordenadas rotado Ouvw sobre un sistema de coordenadas de
referencia Oxyz. Fsicamente, se puede considerar que Ouvw es un sistema ligado
al cuerpo. Esto significa que esta permanente y convenientemente unido al cuerpo
rgido movindose con l.
Ilustracin 8. ROLL
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
11/76
11
Sean (ix, jy, kz) y (iu, jv, kw) los vectores unitarios a lo largo de los ejes de
coordenadas de los sistemas Oxyz y Ouvw, respectivamente. El vector de posicin
P se puede representar por sus coordenadas con respecto a ambos sistemas.
Para facilitar el anlisis, se supone que P est en reposo y fijo respecto a Ouvw.
Entonces el vector P se puede representar respecto a Ouvw y Oxyz,
respectivamente, como:
Puvw = (pu, pv, pw)T y Pxyz = (px, py, pz)
T
Ecuacin 1.
Donde Puvw y Pxyz representan el mismo vector P en el espacio en diferentes
sistemas de coordenadas y el superndice T denota la operacin transpuesta en
vectores y matrices.
Ilustracin 9. SISTEMAS DE COORDENADAS DE REFERENCIA YLIGADO AL CUERPO
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
12/76
12
Nuestro inters es la matriz R 3x3 que transforma Pxyz en Puvw, despus de que
OUVW ha sido girado. Esto es:
Pxyz = RPuvw
Ecuacin 2.La matriz R est dada por:
Ecuacin 3.
Anlogamente se puede obtener
Puvw = QPxyz
Ecuacin 4.
Como las matrices de rotacin son ortogonales y los productos escalares son
conmutativos, entonces:
Q = R-1 = RT
Ecuacin 5.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
13/76
13
2.2 Matriz de transformacin.
La matriz de transformacin es una matriz 4x4 que transforma un vector de
posicin desde un sistema coordenado a otro. Una matriz de este tipo se puede
considerar que consiste de cuatro submatrices:
Ecuacin 6. Matriz de transformacin.
La submatriz 3x3 superior izquierda representa la matriz de rotacin; la submatriz
superior derecha 3x1 representa el vector de posicin del origen del sistema
rotado con respecto al sistema de referencia; la submatriz inferior izquierda de 1x3
representa la transformacin de perspectiva (en simulacin es nulo); y el cuarto
elemento diagonal es el factor de escala global (para nuestro fin es siempre 1).
2.3 Cinemtica
La cinemtica estudia la posicin y orientacin de la herramienta del robot (efector
final) a partir de la posicin y orientacin de las articulaciones.
Todo robot esta formado de articulaciones rotacionales y/o prismticas, cada una
con un grado de libertad (DOF), cuando la articulacin es rotacional, la variable de
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
14/76
14
articulacin es un ngulo y si por el contrario es prismtica, la variable de
articulacin es una distancia.
2.4 Formulacin de Denavit Hartenberg
Los robots industriales son modelados por un mtodo matricial desarrollado en
1955 por Denavit y Hartenberg, este mtodo establece en forma sistemtica un
sistema coordenado para cada elemento de la cadena cinemtica. La
representacin de Denavit Hartenberg (D-H) da como resultado una matriz de
transformacin homognea 4x4 que representa cada uno de los sistemas
coordenados de los elementos en la articulacin con respecto al sistema de
coordenadas del elemento previo. As, mediante transformaciones secunciales, el
efector final se puede expresar en las coordenadas de la base que constituye el
sistema inercial.
La representacin D-H de un elemento rgido depende de 4 parmetros
geomtricos asociados a cada elemento. Estos parmetros se definen as:
Ilustracin 10. SISTEMASCOORDENADOS
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
15/76
15
i: Es el ngulo de la articulacin del eje X i-1 al eje Xi respecto al eje Zi-1 (usando la
regla de la mano derecha).
di: Es la distancia desde el origen del sistema coordenado (i-1) hasta la
interseccin del eje Zi-1 con el eje Xi a lo largo del eje Zi-1.
ai : Es la distancia de separacin desde la interseccin del eje Z i-1 con el eje Xi
hasta el origen del sistema i-simo a lo largo del eje Xi.
i : Es el ngulo de separacin del eje Z i-1 al eje Zi respecto al eje Xi (usando la
regla de la mano derecha).
Para una articulacin giratoria (rotacional), di, ai y i son los parmetros de
articulacin permaneciendo constantes, mientras que i es la variable de
articulacin y cambia cuando el elemento i gira respecto al elemento i-1. Para una
articulacin prismtica, i, ai y i son los parmetros y di es la variable que cambia
cuando el elemento se mueve.
Con los parmetros se define la matriz de transformacin en cada articulacin i.
Para obtener la posicin y orientacin del efector final respecto a la base, se post-
multiplican las matrices de cada articulacin desde la base hasta la articulacin n.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
16/76
16
0A11A2
2A3i-2Ai-1
i-1Ain-1An=A : Cada
i-1Ai contiene una incgnita bien sea i o di
Como resultado, el problema cinemtico inverso corresponde al clculo de las
incgnitas que satisfagan la anterior ecuacin matricial.
2.5 Dinmica
La dinmica de robot, por otra parte, trata con la formulacin matemtica de las
ecuaciones del movimiento del brazo. Las ecuaciones dinmicas del movimientode un manipulador son un conjunto de ecuaciones matemticas que escriben la
conducta dinmica del manipulador. Tales ecuaciones de movimiento son tiles
para la simulacin por computador. Este modelo dinmico se obtiene de las leyes
fsicas conocidas. Lo que conduce a la obtencin de las ecuaciones dinmicas
para las distintas articulaciones del manipulador en trminos de los parmetros
geomtricos en inerciales especificados en los distintos elementos.
2.6 Formulacin de Lagrange-Euler7
Las ecuaciones de movimiento que genera un manipulador se pueden expresar
convenientemente mediante la aplicacin directa de la formulacin de Lagrange-
Euler a sistemas no conservativos. Muchos investigadores utilizan la
representacin de Denavit Hartenberg para describir el desplazamiento espacial
7La explicacin de esta formulacin fue adaptada del libro de Lee, Gonzlez, Fu. Robtica de
1990.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
17/76
17
entre los sistemas de coordenadas de elementos vecinos para obtener la
informacin cinemtica del elemento, y emplean la tcnica dinmica lagrangiana
para deducir las ecuaciones dinmicas del manipulador. La aplicacin directa de
esta formulacin, junto con la representacin de coordenadas conveniente y
compacta de las ecuaciones de movimiento del manipulador. El mtodo se
expresamente mediante operaciones matriciales y facilita tanto su anlisis como
su implementacin en un computador.
La derivacin de las ecuaciones dinmicas de un manipulador con n grados de
libertad se basa en la comprensin de:
1. La matriz de transformacin de coordenadas homogneas 4x4, i-1Ai, describe la
relacin espacial entre los sistemas de coordenadas del elemento i-simo y el
elemento (i-1)-simo. Relacin a un punto fijado en el elemento i prestaban
coordenadas homogneas con respecto al sistema e coordenadas i-simo en el
sistema de coordenadas (i-1)-simo.
2. La ecuacin de Lagrange-Euler
Ecuacin 7. Ecuacin de Lagrange-Euler
Donde
L = funcin lagrangiana = energa cintica K energa potencial P;
K = energa cintica total del brazo;
P = Energa potencial total del brazo;
qi = coordenada generalizada el brazo;
vi = primera derivada respecto al tiempo de qi ;
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
18/76
18
i = fuerza (o par) generalizado aplicado al sistema en la articulacin i para mover
mover el elemento i.
En las ecuaciones de Lagrange-Euler se requiere escoger adecuadamente un
conjunto de coordenadas generalizadas para describir el sistema. Estas
coordenadas describen completamente la localizacin (posicin orientacin) de un
sistema respecto a otro de referencia. En general para los manipuladores existe
una correspondencia natural entre las coordenadas generalizadas y las variables
de articulacin definidas en las matrices de transformacin. As, en el caso de q i
giratoria qi =
i; mientras que si qi es prismtica qi = di.
La siguiente deduccin de las ecuaciones de movimiento de un manipulador de n
grados de libertad se basa en la matrices de transformacin tal y como de
desarrollaron en 2.2.
2.6.1 Velocidades de las articulaciones del robot
Para realizar la formulacin de Lagrange-Euler se debe conocer la energa cintica
del sistema y para ello se requiere saber la velocidad de cada articulacin. Se
deducir la velocidad de un punto fijo en el elemento i y los efectos del movimiento
de las otras articulaciones en todos los puntos del elemento i.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
19/76
19
Respecto ala figura 11, seai
ri un punto fijo y en reposo en el elemento i respecto alsistema coordenado del elemento i-simo.
iri = (xi,yi,zi,1)T
Ecuacin 8.
Sea 0ri el mismo puntoiri
8con respecto al sistema coordenado de la base, i-1Ai la
matriz de transformacin que relaciona el desplazamiento espacial del sistema de
coordenadas del elemento i-simo respecto al (i-1)-simo y 0Ai la matriz de
transformacin que relaciona el sistema de coordenadas i-simo con el sistema de
la base; entonces
0ri =0Ai
iri Ecuacin 9.donde
0Ai =0A1
1A22A3
i-2Ai-1i-1Ai
Ecuacin 10.
8En el vector iri se incluye el cuarto trmino 1, por razones de compatibilidad con la matriz de
transformacin.
Ilustracin 11. Punto iri en el elemento i
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
20/76
20
Si la articulacin i es de revolucin, forma general de i-1Ai esta dada por:
i-1Ai =
Ecuacin 11.
Si la articulacin i es prismtica, la forma general de i-1Ai es:
i-1Ai =
Ecuacin 12.
Con el fin de deducir las ecuaciones de movimiento que son aplicables a ambos
tipos de articulacin, usaremos la variable qi para representar la coordenada
generalizada de la articulacin i.
Como el punto iri esta en reposo en el elemento i, y suponiendo su movimiento
como de cuerpo rgido, la velocidad de iri expresada en el sistema coordenado de
la base se puede expresar como
Ecuacin 13.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
21/76
21
Esta forma compacta se obtiene porque las derivadas de iri son cero. La derivada
parcial de 0Ai con respecto a qj se puede calcular con facilidad gracias a la matriz
Qi que para una articulacin de revolucin de define como
Qi =
Ecuacin 14.
Y, para una articulacin prismtica como
Qi =
Ecuacin 15.
Por lo cual
Ecuacin 16.
Conviene anotar que para la derivada parcial de i-1Ai respecto a qi resulta una
matriz que no es de transformacin. Al premultiplicar por Qi la matriz i-1Ai se realiza
en esta ltima una operacin equivalente a intercambiar sus dos primeras filas,
negando la primera y anulando la tercera y cuarta; esto si i-1Ai es una matriz de
rotacin. Para una articulacin prismtica, el efecto es sustituir la tercera fila de
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
22/76
22
i-1Ai por la cuarta y anular las otras. La ventaja de usar las matrices Q i es que
permiten seguir utilizando las matrices i-1Ai y aplicar las operaciones que las
preceden.
De la aplicacin de la ecuacin anterior se tiene, para i = 1,2,, n
0A11A2
j-2Aj-1Qjj-1Aj
i-1Ai para ji
0 para ji
Ecuacin 17.
Esta ecuacin se puede interpretar como el efecto del movimiento de la
articulacin j sobre todos los puntos de en el elemento i. Para simplificar las
notaciones, se define Uij = 0Ai/qj, la anterior ecuacin se puede escribir como:
0Aj-1Qjj-1Ai para ji
0 para j>i
Ecuacin 18.
Utilizando esta notacin, Vi9se puede expresar como
Ecuacin 19. Velocidad de iri respecto a la base
9No se debe confundir el vector de velocidad del elemento V i con el escalar vi que es simplemente
la derivada respecto al tiempo de q i.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
23/76
23
A continuacin los efectos de la interaccin entre las articulaciones se escriben
como Uijk = Uij/qk, de la siguiente manera:
0Aj-1Qjj-1Ak-1Qk
k-1Ai ikj
Uijk =0Ak-1Qk
k-1Aj-1Qjj-1Ai ijk
0 i < j o i < k
Ecuacin 20.
2.6.2 Energa cintica del manipulador
Sea Ki la energa cintica del elemento i, expresada en el sistema de coordenadas
de la base, y sea dKi la energa cintica de una partcula de masa diferencial dm
en el elemento i entonces
dKi = traza(ViVit)dm = Tr(ViVi
t)dm
Ecuacin 21.
En esta ecuacin se utiliza la operacin traza10 en lugar del producto escalar de
vectores para poder formar el tensor del cual se puede obtener la matriz de inercia
del elemento i (o matriz de pseudo inercia) Ji. Sustituyendo Vi de la Ecuacin 19, la
energa cintica de la masa diferencial es:
10La traza es la suma de los elementos de la diagonal de la matriz.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
24/76
24
Ecuacin 22.
La matriz Uij es la velocidad de cambio de los puntos (iri) sobre el elemento i
relativo al sistema de coordenadas de la base cuando qi cambia. Es constante
para todos los puntos en el elemento i e independiente de la distribucin de masa
del elemento. Tambin los vi son independientes de la distribucin de masa, as
que integrando respecto ala masa los trminos iri se obtiene:
Ecuacin 23.
El termino integral en el interior del corchete es la inercia (J i) de todos los puntos
en el elemento i. para obtener la energa cintica total del robot sumamos la de
todos sus elementos.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
25/76
25
Ecuacin 24. Energa cintica total del manipulador
K es una cantidad escalar. Ji es dependiente de la distribucin de masa del
elemento i y no de su posicin o velocidad y se expresa en el sistema i-simo. Por
tanto, cada Ji se necesita calcular solo una vez para calcular la energa cintica de
un robot.
2.6.3 Energa potencial de un manipulador
Sea P la energa potencial total del robot y sea Pi la energa potencial del
elemento i:
Ecuacin 25.
Y la energa potencial total del brazo se puede obtener sumando las de cada
elemento:
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
26/76
26
Ecuacin 26. Energa potencial total del manipulador
Donde g = (gx, gy, gz, 0) es un vector fila de gravedad expresado en el sistema de
coordenadas de la base. Para un sistema a nivel, g (0, 0,-|g|,0) y g es la constante
gravitacional (g = 9.8062 m/s2).
2.6.4 Ecuaciones de movimiento de un manipulador
De las ecuaciones Ecuacin 24y Ecuacin 26, la funcin Lagrangiana L = K P
esta dada por
Ecuacin 27.
Aplicando la formulacin de Lagrange-Euler (Ecuacin 7) a esta ecuacin seobtiene la ecuacin del par generalizado i requerido para que el actuador de la
articulacin i nueva el elemento i-simo del manipulador,
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
27/76
27
Ecuacin 28.
para i = 1,2,,n. La ecuacin anterior se puede expresar de modo mas simple en
notacin matricial como
Ecuacin 29.
o en forma matricial como
(t) = D(q(t))a(t) + h(q(t),v(t)) + c(q(t))
Ecuacin 30.
donde
(t) = vector n x 1 que representa el par generalizado en las articulaciones.
q (t) = vector n x 1 de las variables de articulacin del robot.
v (t) = vector n x 1 que contiene las velocidades de las articulaciones.
a (t) = vector nx 1 de las aceleraciones de las articulaciones.
D (q(t)) = matriz simtrica inercial n x n relacionada con la aceleracin.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
28/76
28
Ecuacin 31.
h(q(t),v(t)) = vector n x 1 que representa la fuerza de coriolis y centrfuga no lineal.
h(q(t),v(t)) = (h1,h2,,hn)T
Ecuacin 32.
donde
Ecuacin 33.
y
Ecuacin 34.
c(q(t)) = vector n x1 que representa la fuerza gravitatoria.
c(q(t)) = (c1,c2,,cn)T Ecuacin 35.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
29/76
29
donde
Ecuacin 36.
Los coeficientes ci, Dik, hikm son funciones de las variables de articulacin y los
parmetros inerciales del manipulador y son llamados coeficientes dinmicos. El
significado fsico de estos coeficientes es fcil de observar:
El coeficiente ci representa los trminos de la fuerza gravitatoria en el
elemento i debido a las partes del manipulador superiores en la cadena
cinemtica.
El coeficiente Dik se relaciona con la aceleracin de las variables de
articulacin. En particular, para i = k, D ii esta relacionado con la aceleracin
de la articulacin i donde el par generalizado i acta, para i k, Dik se
relaciona con el par generalizado de reaccin inducido por la aceleracin de
la articulacin k y que acta en la articulacin i o viceversa11.
El coeficiente hikm se relaciona con la velocidad de las variables de
articulacin. Los ltimos ndices, km, estn relacionados con las
velocidades de las articulaciones k y m, de cuya interrelacin dinmica se
induce un par generalizado en la articulacin i. En particular, para k = m, h ikk
est relacionada con la fuerza centrifuga generada por la velocidad angular
11La matriz de inercia es simtrica y Tr(A) = Tr(AT), por eso Dik = Dki.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
30/76
30
de la articulacin k12 y que afecta ala articulacin i, mientras que si k m,
hikm esta relacionada con la fuerza de Coriolis generalizada por las
velocidades de las articulaciones k y m que afectan a la articulacin i. por
razonamientos fsicos resulta obvio que hikm = himk.
Al evaluar estos coeficientes, es conveniente observar que algunos de ellos
pueden ser nulos por las siguientes razones:
Un diseo cinemtico particular del manipulador puede eliminar algn
acoplo dinmico
13
entre los movimientos de las articulaciones. Alguno de los coeficientes dinmicos relacionados con la velocidad tienen
solo una existencia formal en las ecuaciones de hi y hikm; esto es, son
fsicamente inexistentes14.
Debido a variaciones particulares en la configuracin del elemento durante
el movimiento, algunos coeficientes dinmicos se pueden anular en algunos
instantes particulares de tiempo.
12Esta fuerza existe solo si la articulacin K es rotacional.
13Coeficientes Dij, hikm.
14Por ejemplo, la fuerza centrifuga no interaccionara con el movimiento de la articulacin que lo
genere, esto es hiii = 0 siempre; sin embargo, puede interactuar con el movimiento de otrasarticulaciones en la cadena cinemtica, por lo que podemos tener hjii 0.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
31/76
31
3. CALCULO DE LA CINEMTICA.
3.1 Cinemtica directa
El clculo de la cinemtica directa se hace utilizando la formulacin de Denavit-
Hartenberg, el sistema de marcos de referencia mostrados en laIlustracin 1y las
dimensiones generales dadas en la Ilustracin 2. Informacin con la que se
obtienen los parmetros de Denavit-Hartenberg. Parmetros dados en la Tabla 1
(pagina 31). Luego con estos parmetros se forman la matriz de transformacin
homognea de cada articulacin, multiplicando estas matrices se obtiene la matriz
que representa la posicin-orientacin del efector final15 del manipulador.
Articulacin d (mt) a (mt)
1 0 d1 0 -90
2 2 0.183 0 -90
3 3 0 0.324 0
4 4 0 0.22 0
5 5 0 0 -90
6 6 0.08 0 0
Tabla 1. Parmetros de Denavit-Hartenberg
15 Efector final es la herramienta ubicada al final de la cadena cinemtica del brazo del
manipulador, para nuestro caso la posicin-orientacin del efector final esta en el centro de lamano del robot.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
32/76
32
A continuacin se muestran las matrices de transformacin homognea de cada
articulacin y su producto.
0A1= 1A2=
2A3=
3A4=
4A5=5A6=
A =
En la matriz A16 se utilizo para simplificar su escritura la siguiente notacin:
Ci = Cosi
Si = Sin
iLa matriz 5A6 se toma de esta forma y no como debiera ser, porque el movimiento
de la mueca que representa17, no afecta la posicin del centro de la mano del
robot.
16 A = 0A1
1A22A3
i-2Ai-1i-1Ai
n-1An n = 6
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
33/76
33
3.2 Cinemtica Inversa
Para el calculo de la cinemtica inversa se implementaron una serie de decisionesque debe tomar el manipulador para saber como y cuanto debe mover cada una
de sus articulaciones para alcanzar la posicin deseada. Los criterios de toma de
estas decisiones se explicaran a continuacin.
Una vez conocida la posicin deseada de la mano del manipulador18 (X, Y, Z), se
chequea si sus coordenadas en el plano XY19 estn o no en el interior del cuerpo
principal del robot20 o si esta posicin puede causar interferencia entre los
elementos del brazo, para este fin se defini en el plano XY un rea rectangular de
seguridad, si la posicin deseada resulta estar en el interior se genera el caso1, si
no, se genera el caso 2.
17Giro o roll.
18Representada en la Ilustracin 12 como una pequea esfera.
19Respecto al sistema coordenado de la base (X0, Y0, Z0).
20Partes 1 y 2.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
34/76
34
Ilustracin 12. Caso 1 (izquierda) y caso 2 (derecha).
Para explicar los procedimientos, en el caso 1 se usara la posicin (0.2, 0.2, 0.2)
mt, para el caso 2 la posicin (0.2, 0.4, 0.2) mts.
Con estos procedimientos se pretende hallar siempre una solucin nica para la
cinemtica inversa.
3.2.1 Caso 1
3.2.1.1 Parte 1: translacin
En este caso, se debe decidir cuanto y hacia que lado se mover esta parte. La
parte se ubicara a una distancia de 0.312 mt21 de la posicin final deseada, esta
distancia se mide sobre el eje Z0, lo cual nos da dos posibles posiciones sobre
este eje, la posicin seleccionada ser la de menor valor absoluto.
21Esta es la mitad de la longitud til del brazo. Este valor en el software desarrollado es una de las
variables que controlan el comportamiento del manipulador.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
35/76
35
Ilustracin 13. Caso 1 articulacin 1.
Para el caso especfico de la posicin (0.2, 0.2, 0.2) mts, aplicando los criterios de
decisin que acaban de definirse, se obtiene un movimiento de 0.112 mts hacia el
sentido negativo del eje Z0 (d1 = -0.112 mts).
3.2.1.2 Parte 2: rotacin
La misin de esta parte es alinear el brazo del manipulador con el objetivo, para lo
cual debe girar un ngulo determinado (2).
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
36/76
36
Ilustracin 14. Caso 1 articulacin 2.
3.2.1.3 Movimiento del Brazo
La misin de las dos primeras partes (articulaciones 1 y 2) es ubicar el brazo en
una posicin adecuada para que pueda alcanzar el objetivo. Ahora el manipulador
debe decidir cuantas y cuales articulaciones del brazo debe usar para alcanzar la
posicin del objetivo, adems de cuanto y en que sentido mover cada una de
ellas. Inicialmente el manipulador calcula la posicin del objetivo respecto al
sistema coordenado X2Y2Z2 y su distancia al mismo, para usar esta distancia
como parmetro de decisin, lo cual genera cuatro posibles opciones, la opcin en
la que la distancia al objetivo este entre 0.130 y 0.312 mts no es posible debido a
que las decisiones tomadas para las primeras articulaciones descartan la
presencia de la posicin objetivo en esa zona, a pesar de que fsicamente el
manipulador puede llegar a ella.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
37/76
37
Ilustracin 15. Subdivisin del espacio de trabajo para el caso 1
3.2.1.3.1 Distancia al objetivo mayor a 0.624 mts
En este caso el software generara un mensaje de error que indica que el objetivo
esta fuera de alcance, si esto sucede se aborta el calculo y ninguna articulacin se
mueve, porque la aplicacin22 se diseo para enviar los datos nicamente cuando
se haya calculado completamente el vector de articulaciones.
3.2.1.3.2 Distancia al objetivo igual a 0.624 mts
En este caso la tercera articulacin (hombro) se alineara con el objetivo, y las
dems articulaciones tomaran el valor de la posicin inicial, lo cual significa que
4=0, 5=0, 6=0, ver Ilustracin 16.
22Los trminos software, aplicacin, programa se utilizan indistintamente en este trabajo como
sinnimos.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
38/76
38
Ilustracin 16. Distancia al objetivo igual a 0.624 mts
3.2.1.3.3 Distancia al objetivo entre 0.544 y 0.624 mts
En este caso el programa calcula la interseccin de dos circunferencias, la primera
con centro en el origen del sistema coordenado X2Y2Z2 sobre el plano X2Y2 y con
un radio igual a 0.324 mts que es la longitud til de la parte 323 (hombro), la
segunda circunferencia tiene centro en la posicin del objetivo y su radio es igual a
0.3 mts que es la suma de las longitudes tiles de la cuarta y quinta articulacin. Al
alinear la tercera articulacin con estas dos intersecciones se obtienen dos valores
para 3 se escoge el de menor valor absoluto. Tomar este valor para 3 garantiza
que al alinear la cuarta articulacin con el objetivo la posicin del efector final
coincidir con el, y las restantes articulaciones tomaran la posicin inicial.
23Igual a parmetro D-H a3.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
39/76
39
Ilustracin 17. Distancia al objetivo entre 0.544 y 0.624 mts
3.2.1.3.4 Distancia al objetivo entre 0.312 y 0.544 mts
Para este caso el manipulador usara de la tercera a la quinta articulacin para
alcanzar la posicin deseada, para ello calculara primero la interseccin entre dos
circunferencias, la primera con centro en el origen del sistema coordenado X2Y2Z2
sobre el plano X2Y2 y con un radio igual a 0.324 mts y la segunda con centro en la
posicin del objetivo y su radio es igual a 0.22 mts que es la longitud til de la
cuarta articulacin (codo), al alinear la tercera articulacin con estas dos
intersecciones se obtienen dos valores para 3 seleccionando el de menor valor
absoluto. En segunda instancia se calculara la interseccin entre dos
circunferencias, la primera con centro en el origen del sistema coordenado X3Y3Z3
sobre el plano X3Y3 y con un radio igual a 0.22 mts y la segunda con centro en la
posicin del objetivo y su radio es igual a 0.08 mts, al alinear la cuarta articulacin
con estas dos intersecciones se obtienen dos valores para 4 se escoge el de
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
40/76
40
menor valor absoluto; tomar estos valores para 3 y 4 garantiza que al alinear la
quinta articulacin con el objetivo la posicin del efector final coincidir con el.
Ilustracin 18. Distancia al objetivo entre 0.312 y 0.544 mts
Para la posicin (0.2, 0.2, 0.2) mts, aplicando los criterios de decisin que acaban
de definirse, se obtiene 3=32.053957, 4= -75.2323, 5= -100.4756.
3.2.2 Caso 2
3.2.2.1 Parte 1: translacin
En este caso la parte se alineara con la posicin objetivo, esto significa en otras
palabras que la variable de articulacin d1 tomara el valor Z de la coordenada de la
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
41/76
41
posicin objetivo, colocando al manipulador de frente y alineado con la posicin a
alcanzar.
Ilustracin 19. Caso 2 articulacin 1.
3.2.2.2 Parte 2: rotacin
Dado que la alineacin con el objetivo ya se completo con la primera articulacin,
no se requiere que la segunda ejecute algn movimiento. Esto significa que 2 = 0
siempre para el caso 2.
3.2.2.3 Movimiento del Brazo
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
42/76
42
Al igual que el caso 1, lo primero que el manipulador hace es calcular la posicin
del objetivo respecto al sistema coordenado X2Y2Z2 y su distancia al mismo, para
usar esta distancia como parmetro de decisin, lo cual genera cinco posibles
opciones.
Ilustracin 20. Subdivisin del espacio de trabajo para el caso 2
3.2.2.3.1 Distancia al objetivo mayor a 0.624 mts
En este caso el software generara un mensaje de error que indica que el objetivo
esta fuera de alcance, si esto sucede se aborta el calculo y ninguna articulacin se
mueve.
3.2.2.3.2 Distancia al objetivo igual a 0.624 mts
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
43/76
43
En este caso la tercera articulacin se alineara con el objetivo, y las dems
tomaran el valor de la posicin inicial, lo cual significa que 4=0, 5=0, 6=0.
Ilustracin 21. Distancia al objetivo igual a 0.624 mts
3.2.2.3.3 Distancia al objetivo entre 0.544 y 0.624 mts
Este caso se trata igual que el tratado en el numeral 3.2.1.3.3. El programa
calcula la interseccin de dos circunferencias, la primera con centro en el origen
del sistema coordenado X2Y2Z2 sobre el plano X2Y2 y con un radio igual a 0.324
mts que es la longitud til de la parte 3 la segunda circunferencia tiene centro en
la posicin del objetivo y su radio es igual a 0.3 mts que es la suma de las
longitudes tiles de la cuarta y quinta articulacin. Al alinear la tercera articulacin
con estas dos intersecciones se obtienen dos valores para 3 se escoge el de
menor valor absoluto, al alinear la cuarta articulacin con el objetivo la posicin del
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
44/76
44
efector final coincide con el, y las restantes articulaciones tomaran la posicin
inicial.
Ilustracin 22. Distancia al objetivo entre 0.544 y 0.624 mts
3.2.2.3.4 Distancia al objetivo entre 0.240 y 0.544 mts
Para este caso el manipulador utilizara de la tercera a la quinta articulacin para
alcanzar la posicin deseada, para ello calculara primero la interseccin entre dos
circunferencias, la primera con centro en el origen del sistema coordenado X2Y2Z2
sobre el plano X2Y2 y con un radio igual a 0.324 mts y la segunda con centro en la
posicin del objetivo y su radio es igual a 0.22 mts que es la longitud til de lacuarta articulacin, al alinear la tercera articulacin con estas dos intersecciones
se obtienen dos valores para 3 se escoge el de menor valor absoluto. En segunda
instancia se calculara la interseccin entre dos circunferencias, la primera con
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
45/76
45
centro en el origen del sistema coordenado X3Y3Z3 sobre el plano X3Y3 y con un
radio igual a 0.22 mts y la segunda con centro en la posicin del objetivo y su radio
es igual a 0.08 mts, al alinear la cuarta articulacin con estas dos intersecciones
se obtienen dos valores para 4 se escoge el de menor valor absoluto; tomar estos
valores para 3 y 4 garantiza que al alinear la quinta articulacin con el objetivo la
posicin del efector final coincidir con el.
Ilustracin 23. Distancia al objetivo entre 0.240 y 0.544 mts
Para la posicin (0.2, 0.4, 0.2) mts, aplicando los criterios de decisin que acaban
de definirse, se obtiene 3=-6.03, 4= -96.75, 5= -100.47.
3.2.2.3.5 Distancia al objetivo menor a 0.240 mts
En este caso el software generara un mensaje de advertencia que indica que el
objetivo aunque no esta fuera de alcance, esta en una zona de peligro de
interferencia, si esto sucede se aborta el clculo y ninguna articulacin se mueve.
4. Calculo dinmico
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
46/76
46
El calculo de las ecuaciones dinmicas del robot se realizo, mediante el uso de la
formulacin de Lagrange-Euler24, los parmetros D-H y la cinemtica directa
calculada anteriormente, debido a la gran extensin del calculo dinmico, este se
encuentra en forma detallada en el anexo 3.
5. Implementacin
5.1 Enfoque y estructuras de programacin
El enfoque de programacin que se esta utilizando es la programacin orientada a
objetos (OOP, por sus siglas en ingles).
La programacin orientada a objetos hace modelos de los objetos del mundo real
mediante sus contrapartes en software. Aprovecha las relaciones de clase, en
donde objetos de cierto tipo, tienes las mismas caractersticas. Aprovecha adems
las relaciones de herencia, en la que ciertos objetos descienden de otros.
La OOP proporciona una forma ms natural e intuitiva de observar el proceso de
programacin, es decir haciendo manejo de objetos del mundo real, de sus
atributos y comportamientos, OOP tambin hace modelos de comunicacin entre
objetos.
24Vista en la seccin 2.6 de este documento.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
47/76
47
OOP encapsula datos (atributos) y funciones (comportamientos) en paquetes
llamados objetos; los datos y funciones de un objeto estn muy unidos. Los
objetos tienen la propiedad de ocultar la informacin. Esto significa que aunque los
objetos puedan saber como comunicarse unos con otros mediante interfaces bien
definidas, a los objetos no se les esta permitido saber como funcionan otros
objetos, los detalles de la puesta en practica (implementacin) quedan ocultas
dentro de los objetos mismos.
Para la programacin de la aplicacin se selecciono el lenguaje C++, por ser un
lenguaje de programacin orientado a objetos. En C++, la unidad de programacin
es la clase a partir de la cual eventualmente los objetos son creados.
Como plataforma para la aplicacin se selecciono Windows por ser una
plataforma cuya arquitectura es orientada a objetos y proporciona toda la
infraestructura grfica, lo cual permite concentrar los esfuerzos en la creacin de
las estructuras propias de la aplicacin. Adems la arquitectura Windows es
compatible con tecnologas grficas como OpenGL que permite el manejo y
creacin de grficas en 3D.
Como entorno de desarrollo la opcin obvia fue usar Visual C++ 6.0
, por ser
orientado visualmente, diseado especficamente para la programacin de
aplicaciones Windowsen C++. MFC (Microsoft Fundation class) es la principal
forma de escribir aplicaciones Windows en Visual C++. MFC es un conjunto de
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
48/76
48
clases en C++ que comprenden una aplicacin genrica del funcionamiento de
Windows lista para ser personalizada.
La tecnologa seleccionada para la visualizacin 3D fue OpenGL, la cual se ha
convertido en un estndar para las aplicaciones 3D, con esta tecnologa los PCs
disponen de las mismas capacidades grficas 3D que una estacin de trabajo.
En OpenGL los objetos 3D son manejados por matrices de transformacin
homogneas 4x4 iguales alas utilizadas en robtica, con las cuales se maneja el
comportamiento de los objetos, OpenGL utiliza un objeto llamado modelview que
consta de una pila de matrices de 32 niveles, lo cual es muy til en el manejo de la
cinemtica.
La pila de matrices modelview tiene una gran utilidad cuando se trabaja con
modelos que guardan jerarquas entre sus diferentes elementos.
En OpenGL las transformaciones que crean una imagen bidimensional de un
objeto tridimensional se manejan mediante transformaciones matriciales estas
transformaciones incluyen transformaciones de modelo, de visualizacin y de
proyeccin.
5.2 Modelado del problema en objetos.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
49/76
49
Como se menciono en el apartado anterior OOP es una forma de representar en
software el mundo real, por tanto debemos analizar la estructura del robot para
modelarla en objetos.
Un robot industrial (tambin llamado en la literatura tcnica manipulador mecnico,
serial manipulator, etc.) consiste en una secuencia de cuerpos rgidos, llamados
elementos, conectados mediante articulaciones prismticas o de revolucin. Cada
articulacin elemento constituye un grado de libertad.
De aqu que para un robot con n grados de libertad haya n pares articulacin
elemento con una unin (que no se toma como parte del robot) unido a una base
donde se establece un sistema de coordenadas inercial, y el ultimo elemento esta
unido al efector final. Las articulaciones y elementos se enumeran hacia fuera
desde la base; as cada elemento se conecta, a lo ms, a otros dos, evitando de
esta manera la formacin de lazos cerrados.
Como el robot es un arreglo de articulaciones, la forma natural de crearlo es que
este definido en su estructura principal como arreglos de las diferentes
caractersticas de sus articulaciones en cada posicin de tiempo, el objeto robot
se defini con los siguientes campos:
est estado[600]; //matriz 600x29
vectorTH g; //matriz 4x1
matrizTH A,A1,A2,A3,A4,A5,A6; //matrices de transformacin homognea 4x4
matrizTH Q1,Q2; //matrices auxiliares Qi
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
50/76
50
matrizTH I; //matriz auxiliar identidad
derivadaU U; // matriz 600x6x6x4x4 de matrices Uij
seudoinercias J; //matriz 6x4x4 de matrices de seudo inercias
matrizD D[600]; //matriz 600x6x6 de matrices dinmicas
derivadasU u; //matriz 600x6x6x6x4x4 de matrices Uijk
matrizH h[600]; //matriz 600x6x6x6 de trminos hijk
vectorD H[600]; //matriz 600x6 con los componentes centrfugos y de coriolis
vectorD G[600]; //matriz 600x6 con los componentes de la fuerza de gravedad
vectorD Fza[600]; // matriz 600x6 con los componentes dinmicos
El campo estado es una matriz de 600x29 donde se guardan posiciones,
velocidades, aceleraciones y momentos generalizados de todas las articulaciones
para 600 posiciones de tiempo, adems de la posicin, velocidad y aceleracin del
efector final para las mismas 600 posiciones de tiempo. Las dems matrices
contienen las matrices de transformacin y todas las otras utilizadas en el clculo
dinmico para cada posicin de tiempo.
Los mtodos diseados para el objeto robot son los siguientes:
double dot(double a[],double b[],int din);
void matxvecTH(double a[4][4], double b[],double c[]);
void matxvecD(double a[6][6], double b[],double c[]);
void mxmTH(double a[4][4],double b[4][4],double c[4][4]);
void matxmatD(double a[6][6],double b[6][6],double c[6][6]);
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
51/76
51
void mproTH(matrizTH A,matrizTH B,matrizTH C,matrizTH D,matrizTH E,matrizTH F,matrizTH
G,matrizTH H,matrizTH R);
void transpuestaTH(double a[4][4],double b[4][4]);
void transpuestaD(double a[6][6],double b[6][6]);
double trazaTH(double a[4][4]);
double trazaD(double a[6][6]);
void nulaTH(double a[4][4]);
double Dik(int pos,int i,int k);
double hikm(int pos,int i, int k,int m);
void directa(int pos);
void caso2(int pos);
void caso1(int pos);
double angulo(double r1, double h2, double k2, double r2);
bool esta_entre(double h,double k,double inf,double sup,bool z);
bool zona_interna(bool z,int pos);
void dinamica(int pos);
Estos mtodos realizan los clculos matriciales de cinemtica inversa, directa y el
clculo de momentos generalizados.
5.3 Trayectorias.
Ya que obtener todas las soluciones al problema cinemtico inverso para una
posicin orientacin dada del efector final (que pueden ser hasta 16 para un robot
6 DOF), no es de gran ayuda en cuanto al manejo de que de las trayectorias har
el robot. Esta se har de la siguiente manera:
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
52/76
52
Ilustracin 24. Entrada de datos.
El usuario dar entrada de los puntos clave de la trayectoria (posicin,
orientacin, tiempo y tipo de interpolacin25 del efector final). El programa calcula
la cinemtica inversa de los puntos clave como en 3.2, luego se calculan los
puntos intermedios mediante interpolacin entre los puntos clave y luego se
calcula para cada punto obtenido del efector la cinemtica directa, as obtengo
todos los puntos de la trayectoria del efector y los vectores de articulacin para
todas las posiciones.
25Se implementaron 3 tipos de interpolacin: con velocidad constante, uniformemente acelerado y
uniformemente desacelerado.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
53/76
53
Para poder realizar los pasos anteriores se programo toda la matemtica
requerida tanto de geometra vectorial como de lgebra lineal.
Cabe anotar que la aplicacin grfica la trayectoria y el movimiento del robot en
tiempo real y en 3D (hasta donde las capacidades del computador en donde se
instale lo permitan).
Con este procedimiento se asegura la no ocurrencia de singularidades. Una
singularidad ocurre cuando el efector final cae sobre una lnea que intercepta
todos los ejes de articulacin. En este caso el movimiento instantneo a lo largo
de esa lnea es imposible. Esta singularidad genera los limites externos del
espacio de trabajo, a lo largo de una superficie cerrada, es decir que las
singularidades posicinales generan superficies en el espacio tridimensional, que
aparecen en el interior del espacio de trabajo o en sus limites, estas superficies
aparecen en condiciones geomtricas particulares.
Desde el punto de vista de control la ocurrencia de singularidades es un serio
problema, por eso la aplicacin obtiene la cinemtica inversa mediante una
variante26 del mtodo de aproximacin lineal hacia delante (mtodo utilizado por
muchos programas de animacin 3D) ya que las soluciones obtenidas de esta
forma toman en cuenta los limites de articulacin, evitando as las singularidades.
26La variante de este mtodo es la descrita en 3.2.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
54/76
54
La aproximacin lineal en cuestin consiste en mover el efector final utilizando la
primera articulacin de la cadena cinemtica hasta que la distancia entre el efector
y la posicin deseada sea mnima, dentro del rango de la articulacin (las dems
articulaciones quedan estticas), luego esta articulacin permanece esttica y se
mueve la articulacin siguiente repitiendo el proceso de aproximacin, hasta
alcanzar la posicin deseada (esta posicin se debe alcanzar con mximo las 6
articulaciones si se encuentra en el espacio de trabajo). Segn la articulacin sea
Rotacional o prismtica, la trayectoria del efector final ser un segmento de lnea
dirigido o un arco y sobre esta trayectoria se busca el punto que este mas cerca
de la posicin deseada.
El programa no realiza un anlisis de las superficies generadas por las
singularidades ya que no es posible estudiar y sistematizar todos los casos
particulares y los mltiples campos de posturas que se generan en cada paso
particular, dado que las singularidades forman hiper-superficies en el espacio de
articulaciones que para esta caso es 6D. Todo lo anterior hara que para efectos
prcticos, aun en forma simplificada el anlisis de las singularidades disminuira el
rendimiento de la aplicacin a niveles inaceptables.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
55/76
55
5.4 Grafica computacional e interfaz de usuario.
Como se puede observar fcilmente no se halla en el objeto robot definido
anteriormente ningn vestigio de comportamientos grficos del mismo. Bien, esto
se debe ala arquitectura documento/vista de Windows, las aplicaciones en esta
plataforma son por lo general objetos ventana y en su estructura se halla un objeto
especial el cual es el encargado de la visualizacin de la aplicacin y todo el
despliegue de informacin de la misma. Este objeto es la clase27 vista, y es en ella
donde se crean los comportamientos grficos de la aplicacin, especficamente
estos comportamientos se programan o son invocados desde el mtodo OnDraw
que es el encargado de dibujar y mantener actualizada el rea del cliente28.
Aunque Windows posee su propia Interfaz de Dispositivo de Grficos (GDI), esta
interfaz es inadecuada para el desarrollo de software grafico tridimensional, ya que
es un sistema de dibujo bidimensional. Por esta razn se uso como contexto de
dispositivo a OpenGL para lo cual debi reestructurar la clase vista, tanto para
usar el nuevo contexto de dispositivo como para ser una interfaz adecuada entre
el objeto robot y su visualizacin, ya que OpenGL tiene sus propios tipos de
datos numricos, que aunque son homlogos a los de C++ con frecuencia
requieren adecuacin en los mtodos implementados para la visualizacin de los
diferentes tipos de informacin generados por la aplicacin.
27En programacin los trminos clase y Objeto son sinnimos.
28 rea del cliente es el trmino utilizado para denominar la zona principal de despliegue de
informacin.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
56/76
56
La idea principal que hasta aqu debe quedar clara es que Windows es el
encargado de crear y mantener la ventana de la aplicacin, y el programador es el
encargado de crear, modificar y mantener su contenido a travs de los objetos a
visualizar, su modificacin y actualizacin, para lo cual usa la arquitectura
Windows para modificar y actualizar la informacin creando una interfaz de
usuario29,y visualizando esta informacin en el rea de cliente utilizando OpenGL
para la generar lo grficos en 2D y 3D, su animacin30 y modo de visualizacin.
El desarrollo de la interfaz de usuario se realizo usando la arquitectura bsica de
Windows la explicacin de su estructura y uso se encuentra en el anexo 5 de
este documento.
La implementacin de la parte de grafica computacional en OpenGL para el
manejo del rea de cliente se realizo en varias etapas:
Diagramacin del rea de cliente.
Programacin de las sub-divisiones del rea de cliente.
Programacin de las interacciones de los grficos con el objeto Robot y con
el usuario.
29Mens, sub-mens, cajas de dialogo, tool bars, shorcuts y eventos del Mouse entre otros.
30Cambio de estado en el tiempo.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
57/76
57
5.4.1 Diagramacin del rea de cliente.
En el diseo de la diagramacin del rea de cliente se tomo como criterio
primordial la capacidad de mostrar toda la informacin susceptible de ser
visualizada grficamente y que es generada por el objeto robot en cada instante
de tiempo. Se decidi que deberan haber grficos 3D para visualizar los cambios
de posturas del robot en el tiempo y la trayectoria del efector final, se realizaron
pruebas que mostraron la necesidad de visualizar en robot tanto en modo de
malla31 como de modo sombreado. El modo malla es necesario para obtener una
adecuada visualizacin de la interaccin entre las articulaciones, el modo
sombreado se requiere para visualizar en forma mas realista el robot y para que
este tenga un mejor contraste con la grafica de la trayectoria del efector final, para
la correcta visualizacin de la trayectoria se determino que se requera la
capacidad de zoom y Orbit32 en el modo sombreado. Tambin se hallo la
necesidad de poder graficar contra el tiempo y ver como es la variacin de
diversas variables33 de forma simultanea al movimiento del robot en los modos de
malla y sombreado.
El anterior anlisis dio como resultado la necesidad de dividir el rea de cliente en
3 zonas: zona de modelo en malla, zona de modelo sombreado y zona de
graficacin de variables vs. Tiempo.
31Tambin conocido como estructura de alambre.
32Zoom es la capacidad de acercarse y alejarse del modelo, esta capacidad es anloga al zoom de
las cmaras. Orbit es la capacidad de orbitar libremente alrededor del modelo.33Las componentes de los vectores posicin, velocidad y aceleracin del efector final. Adems de
las componentes del vector de articulaciones, sus velocidades, aceleraciones y momentosgeneralizados.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
58/76
58
5.4.2 Programacin de las sub-divisiones del rea de cliente.
Ilustracin 25. Sub-divisiones del rea de cliente
5.4.2.1 Modelo en malla.
La programacin de las graficas de esta zona, al igual que la de las otras dos se
realizo en OpenGL, utilizando para esta zona los objetos tipo malla: cilindro y
caja, el objeto cilindro se crea siempre con el centro de su tapa inferior en el origen
de coordenadas activo, el objeto caja sita su centro geomtrico tambin en el
origen de coordenadas activo, lo cual hace necesario la reubicacin continua del
sistema coordenado para la correcta ubicacin y orientacin de las articulaciones
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
59/76
59
del manipulador. Los pasos para la realizacin de esta grafica se especifican en el
siguiente cdigo:
glBegin(GL_LINES);glColor3f(0,0,1);
glVertex3d(-0.08,-0.116,-1.05);glVertex3d(-0.08,-0.116,1.05);glVertex3d(0.08,-0.116,-1.05);glVertex3d(0.08,-0.116,1.05);//rielesglColor3f(1.0f, 0, 0);glVertex3d(0,0,0);glVertex3d(0.2,0,0);glColor3f(1, 0, 0);glVertex3d(0,0,0);glVertex3d(0,0.2,0);glColor3f(1.0f, 0, 0);glVertex3d(0,0,0);glVertex3d(0,0,0.2);//XoYoZo
glEnd();
glTranslated(0,-1,0);glColor3f(0, 0, 0);glTranslated(0,0,ik.estado[pos][3]);auxWireCylinder(0.0725,0.0885);//translacin
glRotated(ik.estado[pos][4]*57.29577951,0,1,0);glTranslated(0,1.116,0);auxWireBox(0.3,0.232,0.174);//Rotacin
glTranslated(0,0.06716,0);
glRotated(ik.estado[pos][5]*-57.29577951,0,0,1);glTranslated(0.162,0,0);auxWireBox(0.324,0.08,0.083);//Codo
glTranslated(0.162,0,0);glRotated(ik.estado[pos][6]*-57.29577951,0,0,1);glTranslated(0.11,0,0);auxWireBox(0.22,0.08,0.08);//Brazo
glTranslated(0.11,0,0);glRotated(ik.estado[pos][7]*-57.29577951,0,0,1);glTranslated(0.04,0,0);auxWireBox(0.08,0.02,0.02);//Mano
se dibujan los ejes coordenados del sistema cero, luego el sistema se traslada a
una posicin adecuada para colocar el objeto cilindro y luego se traslada el
sistema ala posicin del sistema coordenado de la primera articulacin donde, se
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
60/76
60
lee el valor de desplazamiento de esta articulacin en el objeto robot, luego de lo
cual se realiza el desplazamiento. A continuacin el sistema coordenado se ubica
en la posicin requerida para colocar el siguiente objeto caja, luego el sistema es
trasladado ala posicin del sistema coordenado de la articulacin, se lee el valor
de la variable de esta articulacin y se realiza el desplazamiento correspondiente.
El proceso se repite para las dems articulaciones hasta llegar ala ltima,
obtenindose al final el modelo del robot en la posicin dada por el vector de
articulaciones para un tiempo determinado.
Este procedimiento se repite recorriendo todas las posiciones de tiempo
calculadas, la frecuencia de repeticin de este procedimiento en un computador
con procesador Athlon1800+, 512 MB de memoria RAM y una tarjeta de grficos
NVidia TNT 2 64 de 32 MB de memoria es de aproximadamente 20 veces por
segundo.
5.4.2.2 Modelo sombreado.
Para la programacin grafica de esta zona se utilizo bsicamente el mismo
procedimiento que para la zona de malla, salvo la utilizacin de objetos tipo slido,
la implementacin de iluminacin y de la grafica de la trayectoria en 3D. La
graficacin de la trayectoria del efector final se realizo trazando lneas entre todas
las posiciones consecutivas en el tiempo del efector final tomadas del objeto
robot, accin que se puede interpretar ms fcilmente en el siguiente cdigo
simplificado:
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
61/76
61
For (i=0;i=599;i++){glVertex3d(posicin(i));glVertex3d(posicin(i+1));}
Aunque este no fue el cdigo usado ya que este tipo de automatizacin no fueposible de implementar en el cdigo OpenGL muestra claramente la forma en
que se programo la grafica de la trayectoria. Para ayudar al mejor
aprovechamiento de la grafica 3D de la trayectoria se implementaron
procedimientos de zoom y orbit, que se explican mas adelante junto a la
explicacin de la comunicacin entre el objeto robot el usuario y los mtodos
grficos del rea de cliente.
5.4.2.3 rea de grficos.
Para la programacin grafica de esta zona se utilizo programacin tipo lnea,
introduciendo los vrtices por parejas y trazando lneas entre ellos. Procedimiento
visualizado en el siguiente cdigo:
For (i=0;i=599;i++){glVertex3d(posicin(var,i));glVertex3d(posicin(var,i+1));}
Como se puede ver el procedimiento traza lneas entre posiciones consecutivas de
una variable en el tiempo. Adems se agrego una lnea mvil cuya posicin estadeterminada por la posicin del tiempo. Los grficos de las tres subdivisiones del
rea de cliente estn sincronizados, ejecutndose ala misma frecuencia de 20Hz.
Se implemento adems control de la escala vertical.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
62/76
62
5.4.3 Programacin de interacciones.
La programacin de las interacciones consiste en la definicin de las maneras en
que reaccionan recprocamente los diferentes objetos de la aplicacin entre si y
con el usuario. Para mostrar las interacciones estas se explicaran a medida que
aparezcan en el desarrollo de una ejecucin tpica de la aplicacin.
En esta ejecucin del programa introduciremos una trayectoria cclica con 5
segmentos (6 puntos clave), indicando para cada segmento si las articulaciones se
movern con velocidad constante, aceleracin o desaceleracin constante. La
trayectoria se encuentra tabulada a continuacin.
Punto Clave Posicin del efector Tiempo (Seg.) Tipo de
movimiento/Segmento
1 0.624,0.174,0 0 Desacelerado/1-2
2 0,0,1 15 Acelerado/2-3
3 -0.624,0.174,0 30 Vel. Constante/3-4
4 -0.312,0.3,-0.5 37.5 Desacelerado/4-5
5 0,0.5,-1 45 Acelerado/5-6
6 0.624,0.174,0 60
Para la introduccin de un segmento se debe ir al men Trayectorias IK y
dinmica y seleccionar el tipo de movimiento para el segmento. Cada opcin en
un men posee un identificador el cual genera un mensaje, Windows toma el
mensaje y busca si la aplicacin tiene un manejador para el, este manejador es un
mtodo creado en alguno de los objetos del programa, para este caso los mtodos
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
63/76
63
pertenecen ala clase vista, si el mtodo debe tomar informacin del usuario utiliza
a un objeto tipo caja de dialogo programado especialmente para ese fin, este
objeto caja de dialogo tiene asignado a cada caja de edicin34 una variable, la cual
sirve de intermediaria entre el usuario y el objeto en el cual debe ser depositada la
informacin. Una vez seleccionado el tipo de movimiento debe aparecer la
siguiente caja de dialogo:
Ilustracin 26. Ingreso de segmento de trayectoria.
En esta caja de dialogo se ingresa el primer segmento de la trayectoria, al hacer
click en Aceptar el mtodo en la clase vista guarda los datos ingresados en el
objeto robot y llama a los mtodos de este encargados de calcular la cinemtica
inversa35 para que la calcule para las posiciones extremas del segmento, luego de
lo cual el mtodo en la clase vista interpola y guarda en el objeto robot todas las
posiciones intermedias del vector de articulaciones
36
, una vez hecho esto se llamade nuevo a un mtodo de la clase robot, el mtodo encargado de calcular la
cinemtica directa para calcular y guardar todas las posiciones intermedias del
34Sitio en el que el usuario ingresa informacin.
35Se describen en el anexo 1.
36Se describe en el anexo 2.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
64/76
64
efector en el intervalo. Despus de hacer esto finalmente se llama para cada
posicin del intervalo el mtodo de la clase robot que calcula y guarda la
dinmica.
Despus de ingresar todos los segmentos de la trayectoria el rea de cliente debe
verse as:
Ilustracin 27. rea de cliente.
Donde se pueden apreciar las tres zonas del rea de cliente, en el modelo
sombreado de ve la trayectoria completa del efector final, en la zona de graficas
por defecto aparece la grafica de posicin de la primera articulacin vs. Tiempo.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
65/76
65
Si se desea ver alguna otra grafica se debe ir al men Graficas e ir ala opcin
Graficas vs. Tiempo esto har aparecer la siguiente caja de dialogo:
Ilustracin 28. Seleccin de tipo de grafica.
Aqu se introduce el cdigo de la grafica que se desea visualizar, si se elige lagrafica 24 Momento generalizado 2 veremos lo siguiente.
Ilustracin 29. Grafica de momento generalizado 2.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
66/76
66
Esta grafica no permite visualizar correctamente el comportamiento del momento,
as que se requiere aumentar la escala vertical, esto se hace desde el men
Graficas con la opcin Escala esto llama una caja de dialogo que permite
modificar la escala vertical, si damos a esta escala el valor 10 obtendremos el
siguiente cambio:
Ilustracin 30. Grafico con factor de escala 10.
Si al analizar las graficas deseamos chequear para un tiempo determinado la
posicin o la dinmica debe ir al men Trayectorias IK y dinmica y seleccionar
bien sea Chequear Posicin o Chequear Dinmica y luego de indicar la posicin
de tiempo a revisar aparecern respectivamente las siguientes cajas de dialogo:
Ilustracin 31. Chequeos.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
67/76
67
Todas las anteriores cajas de dialogo son invocadas desde el objeto vista y solo
tienen acceso de lectura a la clase robot, al igual que las cajas de dialogo que son
llamadas desde el men Matrices y Coeficientes. Estas cajas de dialogo son en
su mayora de la siguiente forma:
Ilustracin 32. Visualizacin de la matriz D.
Finalmente puede que la perspectiva que por defecto de coloca en el modo
sombreado no sea muy clara por eso se implementaron las opciones zoom y orbiten el objeto vista como mtodos manejadores del Mouse, el zoom se activa
haciendo click sostenido en el botn derecho mientras se mueve, la opcin orbit se
activa haciendo click sostenido en el botn izquierdo mientras este se mueve, por
defecto el orbit se ejecuta como una rotacin al rededor del eje Y0 ,haciendo un
orbit horizontal de debe ir al men Graficas y en la opcin Orbit activar Vertical.
La combinacin del zoom y el orbit permiten la completa visualizacin en 3D de la
trayectoria y el robot en cualquier instante de tiempo.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
68/76
68
Ilustracin 33. Visualizacin con zoom y orbit.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
69/76
69
6. Validacin de resultados.
7. Conclusiones.
8. Bibliografa.
INSTITUTO COLOMBIANO DE NORMAS TCNICAS Y CERTIFICACIN.
Normas Colombianas para la presentacin de trabajos escritos y tesis de grado.
Santa Fe de Bogot: ICONTEC, 1999.
D. MANOCHA, J.F. CANNY. Real time inverse Kinematics of general 6R
manipulator. In Proceedings of IEEE conference on robotics and automation, pg
383-389 1992.
B. PADEN, S. SASTRY. Optimal kinematic design of 6R manipulator. International
Journal of Robotic Research, 7(2): 43-61, 1988.
W.K. VOISCHEGGER, C. WU. A method for calibrating and compensating robot
kinematic errors. In IEEE conference on robotics and automation, pg 39-43, 1987.
D. MANOCHA, Y. ZHU. A fast algorithm and system for inverse kinematics of
general serial manipulators. In proceedings of IEEE conference on robotics and
automation, 1994.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
70/76
70
K.S. FU, R.C. GONZLEZ, C.S. LEE. Robtica: Control, deteccin, visin e
inteligencia. Mc Graw Hill, 1990.
M. RAGHAVAN, B. ROTH. Kinematics analysis of the 6R manipulator of general
geometry. In international symposium on robotics research, pg 314-320, Tokio,
Japan. 1989.
BUITRAGO J.T. Modelo dinmico del robot CERMA UNIVALLE, proyecto de
investigacin. Maestra en automtica, programa de postgrado en ingeniera
elctrica y electrnica y de la computacin, Santiago de Cali 1998
ELIOT MOTATO ESCOBAR, Planeacin Dinmica de procesos de manufactura
en celdas flexibles, proyecto de investigacin. Maestra en automtica, programa
de postgrado en ingeniera elctrica y electrnica y de la computacin, Santiago
de Cali 1999
PINEDO J, C. R. Metodologa Para el seguimiento de trayectorias predefinidas enel desplazamiento de robots, proyecto de investigacin. Maestra en automtica,
programa de postgrado en ingeniera elctrica y electrnica y de la computacin,
Santiago de Cali 1998.
RON FOSNER. Creating a reusable 3D view class for MFC. Microsoft Press, 1998.
DALE ROGERSON. OpenGl I, OpenGl II, OpenGl III, OpenGl IV, OpenGl V,
OpenGl VI, OpenGl VII. Microsoft Developer Network Technology Group, 1995.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
71/76
71
M. RAGHAVAN, B. ROTH. A general solution for the inverse kinematics of all
serial chains. Proc. Of the 8th CISM-IFTOMM symposium on robots and
manipulators, 1990.
ROBERTO LPEZ. El manejo de la pila de matrices en OpenGL. 3D World, 2(14),
1998.
CHUCK SPHAR. Learn Microsoft Visual C++ 6.0 Now. Mc Graw Hill, 1999.
H.M. DEITEL, P.J. Deitel. C/C++ How to Program. Mc Graw Hill, 1995.
ANDEEN GERRY. Robot Design Handbook. Mc Graw Hill, 1988.
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
72/76
72
9. Anexos.
9.1 Implementacin del clculo de la cinemtica inversa.
void caso1(){ //calculo de d1
d1=Z-0.312;temp1=-0.312;if (fabs(Z-0.312)1.05){
d1= Z-0.312;temp1=-0.312;}if (fabs(d1)>1.05){
if ((Z-0.312)1.05){d1= Z-0.312;temp1=-0.312;}
}//calculo de t2t2=atan2(temp1,X);
//calculo de t3h1=X*cos(t2)+((d1-Z)*sin(t2));k1=0.174-Y;
//if (esta_entre(h1,k1,0.2,0.6245,z)==false) printf("Punto fuera de alcance");
if (esta_entre(h1,k1,0.544,0.624,z)){
t3=angulo(0.324,h1,k1,0.3);//t4h=X*cos(t2)*cos(t3)+pow(cos(t2),2)*(-0.324*pow(cos(t3),2)+(0.174-Y- 0.324*sin(t3))*sin(t3))+sin(t2)*((d1-Z)*cos(t3)-0.324*pow(cos(t3),2)*sin(t2)+sin(t2)*(0.174-Y- 0.324*sin(t3))*sin(t3));
k=cos(t3)*(0.174-Y)-(X*cos(t2)+(d1-Z)*sin(t2))*sin(t3);
t4=atan2(k,h);//t5t5=0;
if (sqrt(pow(h1,2)+pow(k1,2))==0.624){
t3=atan2(k1,h1);//t4t4=0;
//t5t5=0;
}
}if (esta_entre(h1,k1,0.285,0.544,z)){t3=angulo(0.324,h1,k1,0.22);
//calculo de t4h=X*cos(t2)*cos(t3)+pow(cos(t2),2)*(-0.324*pow(cos(t3),2)+(0.174-Y-0.324*sin(t3))*sin(t3))
+sin(t2)*((d1-Z)*cos(t3)-0.324*pow(cos(t3),2)*sin(t2)+sin(t2)*(0.174-Y-0.324*sin(t3))*sin(t3));k=cos(t3)*(0.174-Y)-(X*cos(t2)+(d1-Z)*sin(t2))*sin(t3);
//if (sqrt(pow(h,2)+pow(k,2))!=0.22) k=correccion(h,k,0.22);t4=angulo(0.22,h,k,0.08);
//calculo de t5h=sqrt(pow(-d1+Z+cos(t3)*(0.324+0.22*cos(t4))*sin(t2)-0.22*sin(t2)*sin(t3)*sin(t4),2)
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
73/76
73
+pow(X+cos(t2)*(cos(t3)*(-0.324-0.22*cos(t4))+0.22*sin(t3)*sin(t4)),2));k=Y-(0.174-0.324*sin(t3)-0.22*cos(t4)*sin(t3)-0.22*cos(t3)*sin(t4));t5=atan2(-k,-h)-t4-t3;}
}
void caso2()
{ d1=Z;t2=0;
//calculo de t3h1=X;k1=0.174-Y;if (esta_entre(h1,k1,0.13,0.624,z)==false) printf("Punto fuera de alcance");
if (esta_entre(h1,k1,0.544,0.624,z)){
t3=angulo(0.324,h1,k1,0.3);//t4
/* h=X*cos(t3)-Y*sin(t3)-2*0.324*pow(cos(t3),2)+0.174*sin(t3);k=-Y*cos(t3)-X*sin(t3)+0.185*cos(t3);*/h=sqrt(pow(X-0.324*cos(t2)*cos(t3),2)+pow(d1-Z-0.324*cos(t3)*sin(t2),2));k=Y-(0.174-0.324*sin(t3));
//if (sqrt(pow(h,2)+pow(k,2))!=0.3) k=correccion(h,k,0.3);
t4=atan2(-k,h)-t3;//t5t5=0;
if (sqrt(pow(h1,2)+pow(k1,2))==0.624){
t3=atan2(k1,h1);//t4t4=0;
//t5t5=0;
}}if (esta_entre(h1,k1,0.285,0.544,z)){t3=angulo(0.324,h1,k1,0.22);
//t4h=X*cos(t3)-0.324*pow(cos(t3),2)+(0.174-Y-0.324*sin(t3))*sin(t3);k=-Y*cos(t3)-X*sin(t3)+0.174*cos(t3);//precalculo//if (sqrt(pow(h,2)+pow(k,2))!=0.22) k=correccion(h,k,0.22);t4=angulo(0.22,h,k,0.08);
//calculo de t5k=-Y*cos(t3+t4)+pow(cos(t3),2)*0.324*sin(t4)-0.174*sin(t3)*sin(t4)+0.324*pow(sin(t3),2)*sin(t4)
+cos(t3)*0.174*cos(t4)-X*sin(t3+t4);h= X*cos(t3+t4)+pow(cos(t3),2)*(-0.22-0.324*cos(t4))+cos(t3)*0.174*sin(t4)+sin(t3)*(cos(t4)*(0.174
-0.324*sin(t3))-0.22*pow(cos(t4),2)*sin(t3)-0.22*sin(t3)*pow(sin(t4),2))-Y*sin(t3+t4);t5=atan2(k,h);}
}
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
74/76
74
9.2 Implementacin de los mtodos de interpolacin.
Esta es la implementacin para velocidad constante.
if (subint>=599) subint=0;else subint=int(dlg.m_pos2);
i= int(dlg.m_pos);ik.estado[i][0]=dlg.m_X;ik.estado[i][1]=dlg.m_Y;ik.estado[i][2]=dlg.m_Z;
if (ik.zona_interna(z,i)) ik.caso1(i);else ik.caso2(i);
i= int(dlg.m_pos2);ik.estado[i][0]=dlg.m_X2;ik.estado[i][1]=dlg.m_Y2;ik.estado[i][2]=dlg.m_Z2;
if (ik.zona_interna(z,i)) ik.caso1(i);else ik.caso2(i);
i=int(dlg.m_pos+1);t=1;
while(i=599) subint=0;else subint=int(dlg.m_pos2);
i= int(dlg.m_pos);ik.estado[i][0]=dlg.m_X;ik.estado[i][1]=dlg.m_Y;ik.estado[i][2]=dlg.m_Z;
if (ik.zona_interna(z,i)) ik.caso1(i);else ik.caso2(i);
i= int(dlg.m_pos2);ik.estado[i][0]=dlg.m_X2;ik.estado[i][1]=dlg.m_Y2;ik.estado[i][2]=dlg.m_Z2;
if (ik.zona_interna(z,i)) ik.caso1(i);else ik.caso2(i);
acceld1= 2*((ik.estado[int(dlg.m_pos2)][3]-ik.estado[int(dlg.m_pos)][3]))/(pow((dlg.m_pos2-dlg.m_pos),2));
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
75/76
75
accelt2= 2*((ik.estado[int(dlg.m_pos2)][4]-ik.estado[int(dlg.m_pos)][4]))/(pow((dlg.m_pos2-dlg.m_pos),2));
accelt3= 2*((ik.estado[int(dlg.m_pos2)][5]-ik.estado[int(dlg.m_pos)][5]))/(pow((dlg.m_pos2-dlg.m_pos),2));
accelt4= 2*((ik.estado[int(dlg.m_pos2)][6]-ik.estado[int(dlg.m_pos)][6]))/(pow((dlg.m_pos2-dlg.m_pos),2));
accelt5= 2*((ik.estado[int(dlg.m_pos2)][7]-ik.estado[int(dlg.m_pos)][7]))/(pow((dlg.m_pos2-dlg.m_pos),2));
i=int(dlg.m_pos+1);t=1;
while(i=599) subint=0;else subint=int(dlg.m_pos2);
i= int(dlg.m_pos);ik.estado[i][0]=dlg.m_X;ik.estado[i][1]=dlg.m_Y;ik.estado[i][2]=dlg.m_Z;
if (ik.zona_interna(z,i)) ik.caso1(i);else ik.caso2(i);
i= int(dlg.m_pos2);ik.estado[i][0]=dlg.m_X2;
ik.estado[i][1]=dlg.m_Y2;ik.estado[i][2]=dlg.m_Z2;
if (ik.zona_interna(z,i)) ik.caso1(i);else ik.caso2(i);
acceld1= 2*((ik.estado[int(dlg.m_pos2)][3]-ik.estado[int(dlg.m_pos)][3]))/(pow((dlg.m_pos2-dlg.m_pos),2));
accelt2= 2*((ik.estado[int(dlg.m_pos2)][4]-ik.estado[int(dlg.m_pos)][4]))/(pow((dlg.m_pos2-dlg.m_pos),2));
accelt3= 2*((ik.estado[int(dlg.m_pos2)][5]-ik.estado[int(dlg.m_pos)][5]))/(pow((dlg.m_pos2-dlg.m_pos),2));
accelt4= 2*((ik.estado[int(dlg.m_pos2)][6]-ik.estado[int(dlg.m_pos)][6]))/(pow((dlg.m_pos2-dlg.m_pos),2));
accelt5= 2*((ik.estado[int(dlg.m_pos2)][7]-ik.estado[int(dlg.m_pos)][7]))/(pow((dlg.m_pos2-dlg.m_pos),2));
i=int(dlg.m_pos+1);
t=1;
while(i
8/8/2019 Desarrollo de Un Entorno de Simulacion Para Un Robot Indust
76/76
ik.estado[i][7]=ik.estado[int(dlg.m_pos)][7]+((ik.estado[int(dlg.m_pos2)][7]-ik.estado[int(dlg.m_pos)][7])-(0.5*accelt5*pow((dlg.m_pos2-dlg.m_pos)-t,2)));
ik.directa(i);
i=i+1;t=t+1;}