Modelo Cinemático KUKA en MATLAB
Temas abordados
Modelo Cinemático KUKA en MATLAB
Temas abordados
Director
[Link]. JORGE VILLAMIZAR MORALES*
Codirector
[Link]. JOHN FABER ARCHILA DÍAZ**
*
Profesor Escuela de Matemáticas.
**
Profesor Escuela de Diseño Industrial.
3
de agosto
4
Dedicatoria:
5
AGRADECIMIENTOS
A Dios por brindarnos las matemáticas como aquel código que encripta la grandeza de
su creación, la cuál nos ofrece la posibilidad de descifrar sus secretos para así admirar su
belleza.
A las familias Sánchez Mora, Vargas Quiroga, Vargas Onatra, Quiroga Abril, Morera
Riveros e Imues Orozco, por creer en mis aspiraciones y sueños, por brindarme su apoyo
incondicional en los más cálidos y oscuros días.
A los directores del proyecto, Jorge Villamizar y John Faber Archila, por sus atenta par-
ticipación, guía y acompañamiento en todas las fases de la elaboración de esta monografía.
A los compañeros de carrera, amigos y profesores, en especial a Luis Angel Pérez, Vladimir
Angulo Castillo y Arnoldo Teherán, que de una u otra forma fueron participes en la
culminación exitosa de mis estudios de pregrado.
6
TABLA DE CONTENIDO
Introducción 12
1. Componente matemático 14
1.1. Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.1. Axiomas de campo de R . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.2. Espacios vectoriales . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2. Transformaciones lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3. Localización espacial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.1. Matrices de rotación . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.2. Matrices de transformación homogénea . . . . . . . . . . . . . . . . 23
2. Cuaternios 26
2.1. Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2. Algunos conceptos importantes . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3. Álgebra de cuaternios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.1. Suma y resta de cuaternios . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.2. Producto de cuaternios . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.3. Norma de un cuaternio . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3.4. Normalización de un cuaternio . . . . . . . . . . . . . . . . . . . . . 35
2.3.5. Inverso de un cuaternio . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.4. Consideraciones algebraicas . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7
2.5. Consideraciones geométricas . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.6. El operador de rotación por cuaternios . . . . . . . . . . . . . . . . . . . . 40
2.6.1. Perspectivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4. Modelamiento computacional 57
4.1. Matlabr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.1.1. Características principales . . . . . . . . . . . . . . . . . . . . . . . 58
4.2. Caja de herramientas "Robotics" para Matlabr . . . . . . . . . . . . . . . 58
4.3. Código simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.4. Validación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.5. Interfaz gráfica de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6. Resultados 78
Conclusiones. 80
Referencias. 90
8
ÍNDICE DE FIGURAS
9
RESUMEN
Descripción:
En este proyecto de monografía se desarrolla un modelo cinemática directo del robot KUKA
KR120-2Pr mediante el uso de los cuaternios de Hamilton (Q = q0 + q1 ı̂ + q2 ̂ + q3 k̂, donde
q0 , q1 , q2 , q3 ∈ R), como método para representar transformaciones de rotaciones y orientaciones
en R3 . En el primer capítulo es referido a los conceptos preliminares, como los espacios vectoria-
les, transformaciones lineales y localización espacial por medio de las matrices de transformación
homogénea, donde se utilizará como método comparativo a las rotaciones realizada con los cau-
ternios. En el segundo capítulo se presentan los cuaternios de Hamilton, donde se incluye una
nota histórica respecto a su aparición, se expone el álgebra de cuaternios y se define el operador
de rotación LQ (~v ) = Q(0 + ~v )Q∗ , el cual Q es un cuaternio, se prueba que es una trasformación
lineal y se verifica que cumple con la rotación de puntos en el espacio. En el tercer capítulo se
hace la presentación del robot KUKA KR120-2Pr. En el cuarto capítulo se desarrolla el modelo
cinemático directo del robot KUKA KR120-2Pr usando cuaternios, donde se valida al realizar
simulaciones con Matlabr. Por último, en el capítulo 5, se propone que esta monografía pue-
de leerse como una propuesta de innovación en el aula para la enseñanza y aprendizaje de las
transformaciones lineales en un curso de Álgebra Lineal.
***
Trabajo de grado.
[Link]. JORGE VILLAMIZAR MORALES, Director.
[Link]. JOHN FABER ARCHILA DÍAZ, Codirector.
****
Licenciatura en Matemáticas, Escuela de Matemáticas, Facultad de Ciencias,
Universidad Industrial de Santander.
ABSTRACT
Description:
The aim of this monograph is to develop a direct kinematic model for the robot KUKA KR120-
2Pr using Hamilton’s quaternions (Q = q0 + q1 ı̂ + q2 ̂ + q3 k̂, where q0 , q1 , q2 , q3 ∈ R) based on
lineal transformations. In the first chapter begins with preliminary concepts, real vector spaces,
linear transformations and spatial locations in R3 using the transformation matrices containing
homogeneous coordinates, which is used as the comparative method to rotations made with
quaternions. The second chapter presents the Hamilton’s quaternions, one historical note is
discusses his appearance and you will see the conceptual development of quaternion emphasizing
on their most important properties, mainly rotation operator LQ (~v ) = Q(0 + ~v )Q∗ , where Q
is a quaternion and Q∗ it’s yours conjugate, is proof to be a linear transformation and verified
to comply with the rotation of point in the spaces. In the third chapter presents the robot
KUKA KR120-2Pr. In the fourth chapter develops the direct kinematic model of the robot
KUKA KR120-2Pr using quaternions and the validity of this model there will be simulations
in Matlabr. Finally, in the fifth chapter, there will be a proposal of innovation in the classroom
for teaching and learning in regards to the lineal transformations based on the direct kinematic
project in an actual course of lineal algebra.
***
Graduation project.
[Link]. JORGE VILLAMIZAR MORALES, Undergraduate Dissertation Director.
[Link]. JOHN FABER ARCHILA DÍAZ, Undergraduate Dissertation Codirector.
****
Bachelor0 s degree in Mathematics, School of Mathematics, Faculty of Science,
Universidad Industrial de Santander.
INTRODUCCIÓN
L
os cuaternios nacen del ingenio de Sir Rowan Hamilton, considerado uno de los
matemáticos más eminentes de los pueblos de habla inglesa, después de Isaac
Newton. Al principio los cuaternios fueron considerados difíciles en su manejo hasta
inútiles, sin embargo hoy en día son ampliamente utilizados en la resolución de problemas
de la mecánica clásica y en disciplinas contemporáneas mediante la elaboración de
software para el control de movimientos de robots. No obstante, los cuaternios son poco
conocidos en las aulas de clase donde se está desaprovechando toda la riqueza matemática
y aplicabilidad que ofrece.
Es preciso tener presente otros trabajos relacionados con la temática central, como es el
caso de los cuaternios y la robótica. Ervvin Javier Lozano Chacón en su trabajo mono-
gráfico Cuaternios de Hamilton [3] presenta una disertación amplia de los cuaterniones,
enfocándolos en el álgebra abstracta. Hace un relato histórico de cuando Sir William
12
Rowan Hamilton logró solucionar el conflicto algebraico de los nacientes cuaternios.
Adicionalmente se dan dos aplicaciones desde un punto de vista algebraico: fractales y
robótica. En cuanto a robótica trabaja alrededor del problema cinemático directo del
robot SCARAr.
John Faber Archila Díaz y Max Suell Dutra, en su articulo Estudio y modelamiento del
robot KUKA KR 6 [1], exponen el modelamiento del robot KUKA KR 6, del laboratorio
de robótica de la Universidad Federal de Río de Janeiro. Presentan el modelo CAD del
robot, la cinemática directa usando matrices de transformación homogénea e inversa por
el método de ecuaciones cuadráticas. También establece un modelo dinámico con base
en las ecuaciones de Euler Lagrange donde focaliza los efectos inerciales por medio del
tensor de inercias y realiza el control cinemático mediante el jacobiano del manipulador.
Este trabajo lo presentan como la primera etapa para el control del robot planteando la
implementación del modelo cinemático inverso en un DSP de la familia Texas Instruments
donde analiza su desempeño.
Por último, ésta monografía puede leerse como una propuesta de innovación en el aula
para la enseñanza y aprendizaje de las transformaciones lineales en un curso de álgebra
lineal, convirtiéndose así en un material de consulta amplio para matemáticos, licenciados
en matemáticas e ingenieros.
*****
Construido por Carlos Gerardo Hernández Capacho, profesor de la Universidad Pontificia Bolivariana
Seccional Bucaramanga 2002.
13
CAPÍTULO 1
COMPONENTE MATEMÁTICO
E
n este primer capítulo se abordará la fundamentación conceptual requerida para la
modelación del robot KUKA KR120-2Pr, donde se muestra la aplicabilidad de
las transformaciones lineales, la cual provee herramientas de interés para la localización
espacial de cualquier objeto.
1.1. Preliminares
Para el desarrollo conceptual que contiene este trabajo, es imprescindible tener presente
los axiomas de campo de R, la cual permitirá dar validez a cada definición y proposición
que se presentan.
14
3. Las operaciones + y · cumplen con la propiedad asociativa. Es decir,∀x, y, z ∈ R:
(x + y) + z = x + (y + z) y (x · y) · z = x · (y · z).
∀x ∈ R x + 0 = x.
∀x ∈ R x · 1 = x.
6. Para todo x ∈ R existe x−1 ∈ R (inverso multiplicativo) tal que x·x−1 = (x−1 )·x = 1.
7. ∀x, y, z ∈ R, (x + y) · z = x · z + y · z.
15
Axioma 9 ∀x ∈ V y ∀a, b ∈ R, se tiene que (a + b) · x = a · x + b · x.
Las dos propiedades se pueden combinar para así formar una fórmula que establece que
T :V → V
u 7→ T (u) = u
Ejemplo 1.2 (El operador derivación). Sea V un espacio lineal de todas las funciones
reales f derivables en un intervalo abierto (a, b). La transformación lineal que aplica cada
función f de V en su derivada f 0 se llama operador derivación y se designa por D. De
esta forma, se tiene que:
D:V → V
f 7→ D(f ) = f 0
16
Ejemplo 1.3 (El operador integración). Sea V el espacio lineal de todas las funciones
reales continuas en un intervalo [a, b]. Si f ∈ V , se define g = T (f ) como la función T
dada por: Z x
g = T (f ) = f (t) dt si a ≤ x ≤ b
a
T es una transformación lineal.
T µ: R¶2 → Rµ 2
¶ µ ¶
x x −x
7→ T = .
y y y
Demostración. Sean −
→
v1 , −
→
v2 ∈ R2 , donde −
→
v1 = (x, y) y −
→
v2 = (j, s) y α ∈ R. Se verifica el
cumplimiento de la propiedad aditiva, en efecto,
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
x+j −x − j −x −j x j
T = = + =T +T .
y+s y+s y s y s
Se verifica el cumplimiento de la propiedad homogénea, en efecto,
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
x αx −αx −x x
Tα =T = =α = αT .
y αy αy y y
T : Rn → Rm
~x 7→ T (~x) = A~x.
17
Demostración. Se verifica el cumplimiento de la propiedad aditiva, en efecto,
x1 + y1 x1 y1
x2 + y2 x2 y2
A(~x + ~y ) = A .. = A .. + A .. = A~x + A~y .
. . .
xn + yn xn yn
v’ = ( x’ , y’ ) v=(x,y)
+
r r
x’ x
18
Como x = r cos α y y = r sen α, se tiene
µ 0¶ Ã ! Ã !µ ¶
x x cos θ −y sen θ cos θ − sen θ x
0
= = .
y x sen θ y cos θ sen θ cos θ y
Con este resultado se presenta la transformación lineal de rotación
T : R2 → R2
µ ¶ µ ¶ Ã !µ ¶
x x cos θ − sen θ x
7→ T = . (1.2)
y y sen θ cos θ y
à !µ ¶
cos θ − sen θ x
Es una transformación lineal de rotación cuando es la rotación en
sen θ cos θ y
µ ¶
x
sentido antihorario de con un ángulo θ .
y
Demostración. Se verifica el cumplimiento de la propiedad aditiva, en efecto,
µ ¶ Ã !
x+r (x + r) cos θ −(y + m) sen θ
T =
y+m (x + r) sen θ (y + m) cos θ
à !µ ¶ à !µ ¶
cos θ − sen θ x cos θ − sen θ r
= +
sen θ cos θ y sen θ cos θ m
µ ¶ µ ¶
x r
= T +T
y m
µ ¶ Ã ! Ã !µ ¶
x (αx) cos θ −(αy) sen θ cos θ − sen θ αx
Tα = =
y (αx) sen θ (αy) cos θ sen θ cos θ αy
à !µ ¶ µ ¶
cos θ − sen θ x αx
= α =T (1.3)
sen θ cos θ y αy
Por lo tanto el operador de rotación T cumple con la propiedad aditiva y homogénea, por
lo que se concluye que T es una transformación lineal.
19
1.3. Localización espacial
Para el cumplimiento de los ejercicios que se establecen en la ejecución de una tarea para
un brazo robótico, es imprescindible identificar la posición y orientación de los elementos
a manipular con respecto a la base del robot [4]. Por lo tanto, es necesario determinar
herramientas matemáticas que permitan realizar la localización espacial de cualquier
objeto (incluyendo las configuraciones propias del robot) con respecto a un punto fijo del
mismo (que por lo general es la base de soporte del robot).
−
→
Cuando se desea rotar un vector P = (x, y) = xı̂ + ŷ, donde ı̂, ̂ son vectores unitarios
correspondientes a los ejes coordenados del sistema OXY (plano XY), un ángulo θ, se
utiliza el operador de rotación mencionado en el epígrafe capítulo anterior, la cual se
presenta de una forma más compacta como
à !
cos θ − sen θ
R(θ) = .
sen θ cos θ
20
bién a éste asociarle ejes solidarios (ejes móviles) según la rotación o traslación que
se haga con respecto al sistema fijo, la cual son de utilidad en el análisis espacial de objetos.
W
V
Y
U
X
cos ς 0 sen ς
Roty ς =
0 0
1 . (1.5)
− sen ς 0 cos ς
21
Z
W
V Y
U
X
cos σ − sen σ 0
Rotz σ = sen σ cos σ 0
. (1.6)
0 0 1
V
W
Y
U
X
22
Rotaciones en R3 como transformaciones lineales.
J : R3 → R3
(vx , vy , vz ) 7→ J((vx , vy , vz )) = (vx0 , vy0 , vz0 ) = (Rotx θ) · (vx , vy , vz )
S : R3 → R3
(wx , wy , wz ) 7→ J((wx , wy , wz )) = (wx0 , wy0 , wz0 ) = (Roty ς) · (wx , wy , wz )
M : R3 → R3
(px , py , pz ) 7→ J((px , py , pz )) = (p0x , p0y , p0z ) = (Rotz σ) · (px , py , pz )
Coordenadas homogéneas.
23
Definición 1.3. Un vector se representa por medio de coordenadas homogénea (para
abreviar c.h.) al introducirle un parámetro % ∈ R, que representa un factor de escala,
donde:
vx
vy
~vc.h. =
v . (1.7)
z
%
Definición 1.4. Una matriz de transformación homogénea se define como una matriz
de dimensión 4 × 4, el cual representa la transformación de un vector de coordenadas
homogéneas de un sistema coordenado a otro. En general, las matrices de transformación
homogénea son representaciones de transformaciones lineales:
à !
R3×3 T3×1
T = , (1.8)
P1×3 E1×1
donde R3×3 corresponde a las matrices de rotación, P1×3 corresponde a un vector fila
que representa la perspectiva, T3×1 corresponde a un vector columna que representa la
traslación y E1×1 corresponde a un escalar que representa el factor de escala.
24
Principales Matrices homogéneas.
cos ς0 sen ς 0
0 1 0 0
Roty ς =
y
(1.11)
− sen ς 0 cos ς
0 0 0 1
cos σ − sen σ 0 0
sen σ cos σ 0 0
Rotz σ =
0
. (1.12)
0 1 0
0 0 0 1
25
CAPÍTULO 2
CUATERNIOS
A
demás de las matrices de transformación homogénea, existen otros métodos, como es
el caso de los cuaternios, el cual es el centro conceptual de este trabajo. A continua-
ción se hace una nota histórica y una exposición del álgebra de cuaternios con algunas
consideraciones geométricas de interés para el proyecto.
2.1. Historia
Sir Rowan Hamilton es considerado, después de Isaac Newton, como el matemático
más eminente de los pueblos de habla inglesa. Nació el 4 de agosto de 1805 en Du-
blín, Irlanda, y murió el 2 de septiembre 1865 en la misma ciudad. A los 5 años ya
demostraba sus grandes capacidades al emplear otros idiomas como el griego, el latín,
el hebreo y dominaba a los diez años otras lenguas orientales. Estudió en el Trinity
College de Dublín. A la edad de 22 años era ya astrónomo real de Irlanda, director
del Observatorio de Dunsink y profesor de Astronomía. Publicó tempranamente un
trabajo sobre rayos en óptica, y estudió otros fenómenos naturales cuya teorización y
validación experimental le dieron enorme prestigio, tanto como para ser elevado a la
nobleza a los 30 años. Además, fue la primera persona que presentó un trabajo ori-
ginal sobre el álgebra de números complejos, siendo el primero en formalizarlo en 1833 [13].
Sir William Rowan Hamilton estudió los números complejos como parejas de números
26
Figura 2.0.1: Sir William Rowan Hamilton. Tomado de BBC British History [16].
Los números complejos tienen la forma a + bi, donde i es la unidad imaginaria. Hamilton
consideró la expresión a + bi + cj, donde a, b, c ∈ R e i y j son unidades imaginarias.
Hamilton intentó definir las operaciones algebraicas con esta expresión. Para lograr lo
anterior, debía asegurar que esta nueva álgebra cumpliera la propiedad clausurativa al
efectuar cualquier operación algebraica. La suma y la resta no poseían dificultad. En la
multiplicación, aparece un gran problema. Al extender las operaciones algebraicas de los
números reales al producto de la expresión definida por Hamilton, se obtiene:
27
y j son unidades imaginarias que cumplen con las mismas propiedades. Por lo tanto,
como el producto i · i = −1, con la unidad imaginaria j sucede lo mismo, por lo tanto
i · i = j · j = −1. No obstante, hacía falta determinar los otros productos, i · j y
j · i. Las unidades i y j son linealmente independientes, por lo cual, si al efectuar el
producto i · j = a, donde a es un número real y se multiplica a ambos lados por i, se
obtiene que i · i · j = i · a, por lo tanto −j = i · a, lo cual es contradictorio. Pero si se
considera a no como un número real sino como un número imaginario de la forma bi,
se tiene que que i · j = bi, es decir, j = b, donde b es un número real y nuevamente
se obtiene otra inconsistencia. Tampoco a puede ser de la forma cj, porque eso im-
plicaría que c = i. Éste problema le tomó a Hamilton varios años sin llegar a una solución.
Unos meses antes de su muerte, Hamilton escribió una carta a su hijo Archibald, donde
le explicaba aquel momento de inspiración que lo condujo a su gran descubrimiento, el
16 de octubre de 1843:
". . . Cada mañana en la primera mitad de ese mes (octubre de 1843), cuando bajaba
a desayunar, tu hermano y tú me solías preguntar:«¿Bueno, Papá, ya sabes multiplicar
ternas?» Y yo tenía que responder, con un movimiento triste de la cabeza: «No, sólo sé
sumarlas y restarlas». Pero el día 16 de ese mes −que era lunes, y día de Consejo en la
Real Academia Irlandesa− estaba paseando hacia allí para asistir y presidir la reunión, y
tu madre caminaba conmigo, a lo largo del Canal Real; y aunque ella me decía cosas aquí
y allá, una línea de pensamiento se iba formando en mi mente, que por fin dio resultado,
del cual inmediatamente comprendí la importancia. Pareció como si un circuito eléctrico
se cerrara y saltara una chispa . . ." [14].
Y continua describiendo:
"No pude reprimir el impulso y grabé con una navaja en el Brougham Bridge (puente
de Brougham), la fórmula fundamental con los símbolos i, j y k, . . . que contiene la
solución del problema". En ese lugar existe una placa recordando el suceso, Ver Figura 3.2.
28
Figura 2.0.2: Placa conmemorativa de Sir William Rowan Hamilton. Puente Brougham,
Dublín, Irlanda. Tomado de Cuaternios de Hamilton [3].
Hamilton después de su descubrimiento envió una carta a John Graves donde le explicaba
el gran suceso. El 26 de octubre de 1843 le responde Graves con elogios y expone una
inquietud que le surge, ¿hasta que punto era posible agregar más unidades imaginarias?
El 26 de diciembre de 1843 Graves le envía una carta a Hamilton explicándole que
había logrado crear un álgebra de dimensión 8, donde extiende los cuaternios, generando
expresiones como a + bi + cj + dk + le + mo + su + f w, donde a, b, c, d, l, m, s, f ∈ R, con
i, j, k, e, o, u y w unidades imaginarias , la cual las llamo octavas. Hamilton encontró
que las octavas perdía la propiedad asociativa del producto, la cual posee los cuaternios.
En 1845, Arthur Cayley independientemente de Hamilton y Grave presentó su traba-
jo sobre los octonios, un trabajo análogo al realizado por Grave, un álgebra de dimensión 8.
29
trabajó una extensión, Elements of Quaternions, la cuál no pudo terminar por su muerte
en 1855, sin embargo su hijo lo publicó en 1866.
Q = q0 + q1 ı̂ + q2 ̂ + q3 k̂ = q0 + ~q
Definición 2.2. Para todo Q1 , Q2 ∈ H(R), se dice que son cuaternios igua-
les si y solo si tienen exactamente los mismos componentes, es decir, si
se tiene que,
Q1 = Q2 ⇔ q0 = p0 y q1 = p1 y q2 = p2 y q3 = p3 .
30
Definición 2.5. Dado el cuaternio Q = q0 + q1 ı̂ + q2 ̂ + q3 k̂, su cuaternio opuesto es
−Q = −q0 − q1 ı̂ − q2 ̂ − q3 k̂.
Q1 + Q2 = (q0 + p0 ) + (q1 + p1 )ı̂ + (q2 + p2 )̂ + (q3 + p3 )k̂, como la operación aditiva en
R es conmutativa (ver axiomas de campo de R) se tiene que q0 , p0 , q1 , p1 , q2 , p2 , q3 , p3 ∈ R,
entonces Q1 + Q2 = (q0 + p0 ) + (q1 + p1 )ı̂ + (q2 + p2 )̂ + (q3 + p3 )k̂ = (p0 + q0 ) + (p1 + q1 )ı̂ +
(p2 + q2 )̂ + (p3 + q3 )k̂ = Q2 + Q1 .
31
Proposición 2.2. Dados Q1 , Q2 , Q3 ∈ H(R), donde Q1 = q0 + q1 ı̂ + q2 ̂ + q3 k̂, Q2 =
p0 +p1 ı̂+p2 ̂+p3 k̂ y Q3 = r0 +r1 ı̂+r2 ̂+r3 k̂, se tiene que (Q1 +Q2 )+Q3 = Q1 +(Q2 +Q3 ).
Antes de abordar el producto de cuaternios se debe tener en cuenta los productos definidos
por Hamilton con las unidades imaginarias ı̂, ̂ y k̂.
ı̂2 = ̂2 = k̂ 2 = ı̂ · ̂ · k̂ = −1
Ahora, utilizando las reglas ordinarias de multiplicación algebraica, junto a los productos
anteriores, se tiene que si Q1 , Q2 ∈ H(R), donde Q1 = q0 + q1 ı̂ + q2 ̂ + q3 k̂ y Q2 =
32
p0 + p1 ı̂ + p2 ̂ + p3 k̂, entonces
Q1 Q2 = q0 p0 + q0 p1 ı̂ + q0 p2 ̂ + q0 p3 k̂ + q1 p0 ı̂ − q1 p1 + q1 p2 k̂ − q1 p3 ̂ + q2 p0 ̂ − q2 p1 k̂
−q2 p2 + q2 p3 ı̂ + q3 p0 k̂ + q3 p1 ̂ − q3 p2 ı̂ − q3 p3
La ecuación (2.4) se puede reescribir de una forma más concisa. Para esto, al considerar
Q1 = q0 + q~1 , Q2 = p0 + q~2 , donde q~1 = q1 ı̂ + q2 ̂ + q3 k̂, q~2 = p1 ı̂ + p2 ̂ + p3 k̂ y al reagrupar
nuevamente los términos se obtiene
Q1 Q2 = p0 q0 − (p1 q1 + p2 q2 + p3 q3 )
+ q0 (p1 ı̂ + p2 ̂ + p3 k̂) + p0 (q1 ı̂ + q2 ̂ + q3 k̂)
+ (q2 p3 − q3 p2 )ı̂ + (q3 p1 − q1 p3 )̂ + (q1 p2 − q2 p1 )k̂
= q0 p0 − v~1 v~2 + q0 v~2 + p0 v~1 + v~1 × v~1 (2.5)
Ejemplo 2.5. Sean Q1 , Q2 ∈ H(R), donde Q1 = 3+ q~1 , Q2 = 2+ q~2 , donde q~1 = ı̂−2̂+ k̂,
q~2 = −ı̂ + 2̂ + 3k̂. Realizando el producto punto entre los vectores
33
¯ ¯
¯ ¯
¯ ı̂ ̂ k̂ ¯
¯ ¯
q~1 × q~2 = ¯¯ 1 −2 1¯¯ = −8ı̂ − 4̂.
¯ ¯
¯−1 2 3¯
Es de notar, que los productos ı̂, ̂, k̂ no son conmutativos, por lo tanto, el producto de
cuaternios tampoco lo es. Sin embargo si cumple con la propiedad asociativa para el
producto.
q
kQk = q02 + q12 + q22 + q32 . (2.6)
34
Ejemplo 2.6. Dado Q = 8 + 5ı̂ + 40̂ + 19k̂
√ √ √
|Qk = 82 + 52 + 402 + 192 = 2050kQk = 5 82
¯¯ ¯¯ ¯¯ ¯¯ s
¯¯ Q ¯¯ ¯¯ q + ı̂q + ̂q + k̂q ¯¯ q02 + q12 + q22 + q32
¯¯ ¯¯ ¯¯ 0 1 2 3 ¯¯
kQ0 k = ¯¯ =
¯¯ ¯¯ p ¯¯ = =1
¯¯ kQk ¯¯ ¯¯ q02 + q12 + q22 + q32 ¯¯ q02 + q12 + q22 + q32
Ejemplo 2.7. Dado Q = 8 + 5ı̂ + 40̂ + 19k̂ el cuaternio unitario asociado a este es
Q Q 1 8 ı̂ 8̂ 19k̂
Q0 = = √ = √ (8 + 5ı̂ + 40̂ + 19k̂) = √ + √ + √ + √
kQk 5 82 5 82 5 82 82 82 5 82
Proposición 2.5. Sea Q, Q̄ ∈ H(R), donde Q = q0 +q1 ı̂+q2 ̂+q3 k̂ y Q̄ = q0 −q1 ı̂−q2 ̂−q3 k̂,
el producto
35
Proposición 2.6. Sea Q1 , Q2 ∈ H(R), se tiene que el conjugado de un producto de
cuaternios es igual al producto de los conjugados en sentido opuesto, es decir
Q1 Q2 = Q2 · Q1 (2.10)
Ejemplo 2.8. Dados Q1 = 5 + 8ı̂ + 40̂ − 19k̂ y Q2 = 6 + 21ı̂ − 15̂ + 17k̂, donde
Q1 = 5 − 8ı̂ − 40̂ + 19k̂ y Q2 = 6 − 21ı̂ + 15̂ − 17k̂ se tiene que
Q1 Q2 = Q2 · Q1
= (30 − 168 + 600 + 323) + (105 + 48 − 680 + 285)ı̂
+ (−75 + 136 + 240 + 399)̂ + (85 + 120 + 840 − 114)k̂
= 785 − 242ı̂ + 700̂ + 931k̂.
Proposición 2.7. Sean Q1 , Q2 ∈ H(R), se tiene que la norma del producto de dos cua-
ternios es el producto de la norma individual de cada cuaternio, es decir:
36
Demostración. De las ecuaciones (2.9) y (2.10) se tiene que
p
kQ1 Q2 k = (Q1 Q2 )(Q1 Q2 )∗
p
= Q1 Q2 Q∗2 Q∗1 asociando cuaternios,
p
= (Q1 Q∗1 )(Q2 Q∗2 ) como los productos Q1 Q∗1 > 0, Q2 Q∗2 = j > 0,
p p
= Q1 Q∗1 Q2 Q∗2
= kQ1 kkQ2 k.
Q−1 Q = QQ−1 = 1 + ~0 = 1
Corolario 2.1. Sea Q ∈ H(R), donde kQk = 1, se tiene que el inverso de Q es simple-
mente el cuaternio conjugado, esto es Q−1 = Q∗ .
37
puede ser considerado como un conjunto de puntos en R3 . Se puede identificar de forma
sencilla esos puntos como vectores en R3 . La orientación del objeto puede ser estudiada
por medio de las operaciones vectoriales. Si se desea obtener lo anterior utilizando un
operador definido en términos de cuaternios, aparece la sensación de incongruencia
por el hecho de que los cuaternios están inmersos en R4 . Afortunadamente, hay una
relación directa, la cual permite establecer una correspondencia entre los cuaternios y los
vectores, por el hecho de que Un vector ~v ∈ R3 se puede considerar simplemente como
un cuaternio Q ∈ R4 donde la parte escalar es cero.
~v ∈ R3 ⇔ v = 0 + ~v ∈ Q0 ⊂ H(R).
cos2 θ + sen2 θ = 1.
38
Para que se cumpla la anterior relación, θ debe satisfacer la restricción: −π < θ < π.
~v ~v
~u == .
kvk sen θ
De esta forma se puede escribir Q como:
Ahora supóngase que se tienen dos cuaternios, Q1 , Q2 ∈ H(R), donde la parte vectorial
de cada cuaternio es el mismo vector ~u. Se asocia el ángulo α para el cuaternio Q1 y el
ángulo β para el cuaternio Q2 . Se tiene que
39
2.6. El operador de rotación por cuaternios
Se define el operador de rotación por cuaternios, LQ , asociado con el cuaternio unitario
Q, el cual se aplica un vector ~v ∈ R3 por la ecuación
Lq : R3 → R3
~v → Lq (~v ) = Q(0 + ~v )Q∗ es una transformación lineal. (2.16)
Demostración. Para realizar la prueba basta probar que el producto de cuaternios estable-
cido en LQ cumple con la propiedad homogénea y aditiva de la definición 2.2. Utilizando
la propiedad distributiva del producto de cuaternios, la función LQ se puede escribir como
¡ ¢
LQ α~a + ~b = Q(α~a + ~b)Q∗ = (αQ~a + Q~b)Q∗
= αQ~aQ∗ + Q~bQ∗ = αLQ (~a) + LQ (~b)
LQ (~v ) = QvQ∗ = (q0 + ~q)(0 + ~v )(q0 − ~q)(q02 − k~qk2 )~v + 2(~q~v )~q + 2q0 (~q × ~v ) (2.17)
40
Se observa del producto anterior que la parte real es cero:
41
q
n
a v
LQ (~a) = Q(0 + k~q)Q∗ = (q02 − k~qk2 )k~q + 2(~qk~q)~q + 2q0 (~q × k~q)
= (q02 − k~qk2 )k~q + 2(~qk~q)~q) = kq02 ~q − kk~qk2 ~q + 2kk~qk2 ~q
= kq0 ~q + kk~qk2 ~q = k(q02 + k~qk2 )~q, como Q = cos θ + û sen θ
= k(cos2 θ + sen2 θ)~q = k~q = ~a.
¡π¢
k~nk · k ûksen 2
= k~nk.
42
Finalmente, utilizando el hecho de que Q = cos θ + û sen θ, se puede reescribir (2.18) como:
n sen 2
2
q n cos 2 n
Ejemplo 2.9 (Rotación del punto (0,3,2) alrededor del eje x con un ángulo de 90o .). El
θ
valor angular que se empleará en el cuaternio es 2
= 45o junto al vector unitario ı̂, el cual
representa el eje x.
√ √
2 2
Sea Q = cos 45o + ı̂ sen 45o = 2
+ 2
ı̂ y P = (0, 3, 2).
µ√ √ ¶µ ¶µ √ √ ¶ µ ¶
∗ 2 2 2 2
Lq (P ) = QQp Q = + ı̂ 0, 0, 3, 2 − ı̂ = 0, 0, −2, 3
2 2 2 2
43
De esta forma, el punto al ser rotado con un ángulo 90o en torno al eje x es el punto
R = (0, −2, 3).
2.6.1. Perspectivas
Al realizar rotaciones con cuaterniones pueden adoptarse dos perspectivas distintas. Una
considerando fijos los ejes del marco de referencia, y otra considerando fijo el punto a
rotar. Al considerar el marco de referencia, el operador LQ representa una rotación del
punto en sentido antihorario. Al definir un nuevo operador Jq como Jq (~v ) = Q∗ (0 + ~v )Q,
donde los cuaternios Q, Q∗ ∈ H(R) están expresado por la Definición 3.9 y ~v ∈ R3 ,
representa una rotación del punto en sentido horario. Este tipo de perspectiva se
denomina rotación con perspectiva central.
De esta forma, se cuenta con el marco conceptual suficiente para poder desarrollar el
modelo cinemático directo de robot KUKA KR120-2Pr por medio del operador trans-
formación de rotación con cuaternios [9].
44
CAPÍTULO 3
E
n el presente capítulo se define la cinemática del robot que incluye los problemas
de interés de esta campo de la robótica, que corresponde a la cinemática directa
e inversa. Luego se hace la resolución del modelo cinemático directo del robot KUKA
KR120-2Pr por medio de los cuaternios, donde se fundamenta con la base conceptual
expuesta en los apartados anteriores.
45
Cinemática directa
Valor de las Posición y
coordenadas orientación del
articulares extremo del robot
(x, y, z, , , )
(q1, q2, q3, ...,qn)
Cinemática inversa
La obtención del modelo cinemático directo puede ser estructurado bajo dos enfoques
diferentes, los métodos geométricos y los métodos basados en cambio de sistema de refe-
rencia. El método geométrico tiene fundamento en estructuras robóticas sencillas, como
en el caso de manipuladores industriales de tres movimientos espaciales independientes
entre sí. Mientras que los métodos basados en cambio de sistema de referencias utilizan
referentes como las matrices de transformación homogénea y cuaternios, donde éste último
es el objeto en estudio de este trabajo.
46
3.2. Definición del robot KUKA KR120-2Pr
El robot KR120-2Pr (ver Figura 3.2) es un manipulador industrial con seis grados*
de libertad con articulaciones cinemáticas para tareas de control con trayectorias punto
a punto y trayectorias continuas, perteneciente a la casa matriz alemana KUKA-
ROBOTICSr.
Trayectorias continuas
Realiza movimientos siguiendo una serie de puntos preestablecidos de forma continua y
*
Los manipuladores son robots industriales que se asemejan al brazo humano. El brazo robótico se
compone de articulaciones y eslabones, la cual determinan una característica propia del robot. El número
de movimientos espaciales que el manipulador ejecuta en cada articulación de forma independiente entre
sí se denomina grados de libertad.
47
controlada en su totalidad por el operario.
Cantidad de ejes. 6
Variante. Foundry
Unidad de control. KR C2
Servicios
El robot KUKA KR120-2Pr es ideal para carga y descarga en concatenaciones de prensa,
incluso de piezas de gran tamaño gracias a los enormes alcances que posee (ver Figura
48
3.3). También ofrece servicios como manipulación, embalado y expedición de productos.
DIMENSIONES
ÁREA VOLUMEN
DE A B C D E F G
TRABAJO
3,450 mm 5,425 mm 3,5 mm 2,108 mm 1,392 mm 1,376 mm 1,500 mm 145.0 mm
49
S 6
S 5
S 4
S 3
S 2
Ejes
S 1
x
y
S 0
z
50
La representación de los giros estarán dados por los cuaternios Q1 = (C̈1 , 0, 0, S̈1 ),
Q2 = (C̈2 , 0, S̈2 , 0), Q3 = (C̈3 , Ã
0, S̈3!, 0), Q4 = Ã(C̈4!, S̈4 , 0, 0), Q5 = (C̈5 , 0, S̈5 , 0) y
θi θi
Q6 = (C̈6 , S̈6 , 0, 0), donde C̈i = cos 2
y S̈i = sen 2
.
Observación:
Se deben tener presente las identidades trigonométricas básicas durante el desarrollo del
modelo:
Desplazamiento de S6 una distancia l7 a lo largo del eje z5 hasta S5 y rotación con ángulo
θ6 alrededor del eje x5 .
Para iniciar el proceso, partimos del vector ~v0 = (0, 0, 0) asociado al sistema S6, el cual
expresado como cuaternio puro es T0 = (0, 0, 0, 0). De esta forma se tiene que S6
T0 + T7 = (0, 0, 0, l7 ) = A1 ,
J (0, 0, −l7 S̈6 , l7 C̈6 )Q∗6 = (0, 0, −l7 S̈6 , l7 C̈6 )(C̈6 , −S̈6 , 0, 0) = (0, 0, −l7 S6 , l7 C6 ) = A2 .
51
Ciclo 2. Paso del sistema S5 al sistema (S4 )
Desplazamiento de S5 una distancia l6 a lo largo del eje x4 hasta S4 y rotación con ángulo
θ5 alrededor del eje y4 .
A2 + T6 = (0, l6 , −l7 S6 , l7 C6 ) = A3
I (C̈5 , 0, S̈5 , 0)(0, l6 , −l7 S6 , l7 C6 ) = (l7 S6 S̈5 , l7 C6 S̈5 + l6 C̈5 , −l7 S6 C̈5 , l7 C6 C̈5 − l6 S̈5 ) y
J (l7 S6 S̈5 , l7 C6 S̈5 + l6 C̈5 , −l7 S6 C̈5 , l7 C6 C̈5 − l6 S̈5 )(C̈5 , 0, −S̈5 , 0) = (0, l7 C6 S5 + l6 C5 ,
−l7 S6 , l7 C6 C5 − l6 S5 ) = A4 .
Desplazamiento de S4 una distancia l5 a lo largo del eje x3 hasta S3 y rotación con ángulo
θ4 alrededor del eje x3 .
A4 + T5 = (0, l7 C6 S5 + l6 C5 + l5 , −l7 S6 , l7 C6 C5 − l6 S5 ) = A5 ,
J (−[l7 C6 S5 S̈4 + l6 C5 S̈4 + l5 S̈4 ], l7 C6 S5 C̈4 + l6 C5 C̈4 + l5 C̈4 , −l7 [C6 C5 S̈4 + S6 C̈4 ] + l6 S5 S̈4 ,
l7 [C6 C5 C̈4 − S6 S̈4 ] − l6 S5 C̈4 )(C̈4 , −S̈4 , 0, 0) = (0, l7 C6 S5 +
l6 C5 + l5 , l7 [−C6 C5 S4 − S6 C4 ] + l6 S5 S4 , l7 [C6 C5 C4 − S6 S4 ] − l6 S5 C4 ) = A6 .
52
Ciclo 4. Paso del sistema S3 al sistema S2
Desplazamiento de S3 una distancia l4 a lo largo del eje x2 hasta S2 y rotación con ángulo
θ3 alrededor del eje y2 .
A6 + T4 =
(0, l7 C6 S5 + l6 C5 + l5 + l4 , l7 [−C6 C5 S4 − S6 C4 ] + l6 S5 S4 , l7 [C6 C5 C4 − S6 S4 ] − l6 S5 C4 ) = A7 ,
Desplazamiento de S2 una distancia l3 a lo largo del eje z1 hasta S1 , rotación con ángulo
θ2 alrededor del eje y1 .
A8 + T3 =
(0, l7 [C6 C5 C4 S3 + C6 S5 C3 − S6 S4 S3 ] + l6 [C5 C3 − S5 C4 S3 ] + l5 C3 + l4 C3 , l7 [−C6 C5 S4 −
S6 C4 ] + l6 S5 S4 , l7 [C6 C5 C4 C3 − C6 S5 S3 − S6 S4 C3 ] + l6 [−C5 S3 − S5 C4 C3 ] − l5 S3 −
l4 S3 + l3 ) = A9 ,
53
I Q2 A9 = (C̈2 , 0, S̈2 , 0)A9 =
(−[l7 [−C6 C5 S4 S̈2 − S6 C4 S̈2 ] + l6 S5 S4 S̈2 ],
l7 [C6 C5 C4 C3 S̈2 − C6 S5 S3 S̈2 − S6 S4 C3 S̈2 ] + l6 [−C5 S3 S̈2 − S5 C4 C3 S̈2 ]
−l5 S3 S̈2 − l4 S3 S̈2 + l3 S̈2 + l7 [C6 C5 C4 S3 C̈2 + C6 S5 C3 C̈2 − S6 S4 S3 C̈2 ] + l6 [C5 C3 C̈2
−S5 C4 S3 C̈2 ] + l5 C3 C̈2 + l4 C3 C̈2 , l7 [−C6 C5 S4 C̈2 − S6 C4 C̈2 ] + l6 S5 S4 C̈2
l7 [−C6 C5 C4 S3 S̈2 − C6 S5 C3 S̈2 + S6 S4 S3 S̈2 ] + l6 [−C5 C3 S̈2 + S5 C4 S3 S̈2 ] − l5 C3 S̈2 −
l4 C3 S̈2 + l7 [C6 C5 C4 C3 C̈2 − C6 S5 S3 C̈2 − S6 S4 C3 C̈2 ] + l6 [−C5 S3 C̈2 − S5 C4 C3 C̈2 ] −
l5 S3 C̈2 − l4 S3 C̈2 + l3 C̈2 ) y
54
Ciclo 6. Paso del sistema S1 al sistema S0
0
Desplazamiento de S1 una distancia l2 a lo largo del eje z0 , desplazamiento l1 a lo largo
del eje x1 hasta S0 y rotación con ángulo θ1 alrededor del eje z0 .
A10 + T2 + T1 =
(0, l7 [C6 C5 C4 S3 C2 + C6 S5 C3 C2 − S6 S4 S3 C2 ] + l6 [C5 C3 C2 − S5 C4 S3 C2 ] + l5 C3 C2 +
l4 C3 C2 + l7 [C6 C5 C4 C3 S2 − C6 S5 S3 S2 − S6 S4 C3S2 ] + l6 [−C5 S3 S2 − S5 C4 C3 S2 ] −
l5 S3 S2 − l4 S3 S2 + l3 S2 + l1 , l7 [−C6 C5 S4 − S6 C4 ] + l6 S5 S4 , l7 [C6 C5 C4 C3 C2 − C6 S5 S3 C2 −
S6 S4 C3 C2 ] + l6 [−C5 S3 C2 − S5 C4 C3 C2 ] − l5 S3 C2 − l4 S3 C2 + l3 C2 + l7 [−C6 C5 C4 S3 S2 −
C6 S5 C3 S2 + S6 S4 S3 S2 ] + l6 [−C5 C3 S2 + S5 C4 S3 S2 ] − l5 C3 S2 − l4 C3 S2 + l2 ) = A11 .
Sea Ω = l7 [−C6 C5 S4 − S6 C4 ] + l6 S5 S4 .
I Q1 A11 = (C̈1 , 0, 0, S̈1 )(0, Ψ, Ω, Φ) = (−S̈1 Φ, −S̈1 Ω + C̈1 Ψ, S̈1 Ψ + C̈1 Ω, C̈1 Φ) y
55
La parte vectorial del cuaternio puro A12 indica que el extremo del robot referido al
sistema de su base S0 , está posicionado en
x = C1 Ψ − S1 Ω =
l7 [C6 C5 C4 S3 C2 C1 + C6 S5 C3 C2 C1 − S6 S4 S3 C2 C1 + C6 C5 S4 S1 + S6 C4 S1 +
C6 C5 C4 C3 S2 C1 − C6 S5 S3 S2 C1 − S6 S4 C3 S2 C1 ] + l6 [C5 C3 C2 C1 − S5 C4 S3 C2 C1 −
S5 S4 S1 − C5 S3 S2 C1 − S5 C4 C3 S2 C1 ] + l5 [C3 C2 C1 − S3 S2 C1 ] + l4 [C3 C2 C1 − S3 S2 C1 ] +
l3 S2 C1 + l1 C1 , (3.3)
y = C 1 Ω + S1 Ψ =
l7 [C6 C5 C4 S3 C2 S1 + C6 S5 C3 C2 S1 − S6 S4 S3 C2 S1 − C6 C5 S4 C1 − S6 C4 C1 +
C6 C5 C4 C3 S2 S1 − C6 S5 S3 S2 S1 − S6 S4 C3 S2 S1 ] + l6 [C5 C3 C2 S1 − S5 C4 S3 C2 S1
+S5 S4 C1 − C5 S3 S2 S1 − S5 C4 C3 S2 S1 ] + l5 [C3 C2 S1 − S3 S2 S1 ] + l4 [C3 C2 S1 − S3 S2 S1 ] +
l3 S2 S1 + l1 S1 y (3.4)
z=Φ=
l7 [C6 C5 C4 C3 C2 − C6 S5 S3 C2 − S6 S4 C3 C2 − C6 C5 C4 S3 C2 − C6 S5 C3 C2 + S6 S4 S3 C2 ] +
l6 [−C5 S3 C2 − S5 C4 C3 C2 − C5 C3 S2 + S5 C4 S3 S2 ] + l5 [−S3 C2 − C3 S2 ] +
l4 [−S3 C2 − C3 S2 ] + l3 C2 + l2 . (3.5)
Por lo cual, las expresiones (3.3), (3.4) y (3.5) permiten conocer la localización del extremo
del robot referidas al sistema de la base en función de los valores angulares de los ejes
(θ1 , θ2 , θ3 , θ4 , θ5 , θ6 ) y las dimensiones del robot, correspondientes, por tanto, a la solución
del problema cinemático directo.
56
CAPÍTULO 4
MODELAMIENTO
COMPUTACIONAL
E
l potencial que ofrece los cuaternios frente al modelado de robots industriales esta
dado por su eficiencia computacional[2] en comparación con otros métodos, como en
el caso de las matrices de transformación homogénea. El modelo que se desarrolló en el
caoítulo anterior, ahora se validará simulándolo en un lenguaje de programación de alto
nivel, como es Matlabr. Para lo anterior se presentan dos códigos elaborados: el primero
para el desarrollo de la simulación y el segundo para la interacción inmediata del usuario
por medio de una interfaz gráfica.
4.1. Matlabr
Matlabr es un lenguaje de alto nivel y un entorno interactivo para el desarrollo de
algoritmos, visualización de datos, análisis de datos y cálculo numérico. Es este el entorno
en el cuál se desarrolla y simula el modelo cinemático directo del robot KUKA KR120-
2Pr.
La versión que se utilizó para la ejecución operacional del modelo es Matlab R2009ar
[Link] 32-bit(win32).
57
4.1.1. Características principales
A continuación se enumeran las características principales de este software
Se utilizó este toolbox dado su facilidad de manejo y completo campo conceptual que
enmarca los cuaternios. Los comandos utilizados de esta caja de herramientas son:
58
> "∗", producto de cuaternios.
Ejemplo 4.2 (+, suma de cuaternios). Desde la ventana de comando de Matlabr, suma
de los cuaternios Q1 = (5, 8, 40, 20) y Q2 = (1, 2, 3, 4):
>> Q1=quaternion([5 8 40 20])
Q1 =
5 <8, 40, 20>
>> Q2=quaternion([1 2 3 4])
Q2 =
1 <2, 3, 4>
>> Q3=Q1+Q2
Q3 =
6 <10, 43, 24>
>> Q4=Q1*Q2
Q4 =
-211 <118, 63, -16>
59
Ejemplo 4.4. Desde la ventana de comando de Matlabr, conjugado del cuaternio Q1 =
(5, 8, 40, 20)
>> Q5=inv(Q1)
Q5 =
5 <-8, -40, -20>
Ejemplo 4.5 (Q.v, parte vectorial del cuaternio). Desde la ventana de comando de
Matlabr, parte vectorial del cuaternio Q1 = (5, 8, 40, 20)
>> v1=q1.v
v1 =
8 40 20
Observación: El texto que aparezca en cursiva representa el código extraído del archivo
M-file de Matlabr donde se escribió el código. Los comentarios que no pertenecen al
código en Matlabr estarán precedidos por >.
> Es necesario establecer los limites donde se presentará los movimientos del robot, para
esto se definen los rangos por medio del comando axis para luego graficar los vectores
unitarios correspondientes a cada eje.
60
axis([-3800 3800 -3800 3800 0 3700])
plot3(n, j, n,0 g−0 ) hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(n, n, k,0 B 0 ) hold on
61
% % CICLO 3. PASO DEL SISTEMA S4 AL SISTEMA S3
A4 = A3 + T 5;
A5 = Q4 ∗ A4 ∗ CQ4;
% % CICLO 4. PASO DEL SISTEMA S3 AL SISTEMA S2
A6 = A5 + T 4;
A7 = Q3 ∗ A6 ∗ CQ3;
% % CICLO 5. PASO DEL SISTEMA S2 AL SISTEMA S1
A8 = A7 + T 3;
A9 = Q2 ∗ A8 ∗ CQ2;
% % CICLO 6. PASO DEL SISTEMA S1 AL SISTEMA S0
A10 = A9 + T 2 + T 1;
A11 = Q1 ∗ A10 ∗ CQ1;
> Ahora se definen las posiciones de cada sistema referido a la base del robot S0 (ver
Figura 3.3).
62
E4 = E3 + T 3;
E5 = Q2 ∗ E4 ∗ CQ2;
E6 = E5 + T 2 + T 1;
E7 = Q1 ∗ E6 ∗ CQ1;
% %ESLABÓN 5 DEL MODELO CINEMÁTICO
F 1 = Q5 ∗ T 6 ∗ CQ5;
F 2 = F 1 + T 5;
F 3 = Q4 ∗ F 2 ∗ CQ4;
F 4 = F 3 + T 4;
F 5 = Q3 ∗ F 4 ∗ CQ3;
F 6 = F 5 + T 3;
F 7 = Q2 ∗ F 6 ∗ CQ2;
F 8 = F 7 + T 2 + T 1;
F 9 = Q1 ∗ F 8 ∗ CQ1;
% %ESLABÓN 6 DEL MODELO CINEMÁTICO
A1 = Q6 ∗ T 7 ∗ CQ6;
A2 = A1 + T 6;
A3 = Q5 ∗ A2 ∗ CQ5;
A4 = A3 + T 5;
A5 = Q4 ∗ A4 ∗ CQ4;
A6 = A5 + T 4;
A7 = Q3 ∗ A6 ∗ CQ3;
A8 = A7 + T 3;
A9 = Q2 ∗ A8 ∗ CQ2;
A10 = A9 + T 2 + T 1;
A11 = Q1 ∗ A10 ∗ CQ1;
> Se definen los vectores correspondientes a cada eje, para luego graficarlos.
% Primer vector
X=[0 V1(1)] ; Y=[0 V1(2)] ; Z=[0 V1(3)] ;
63
% Segundo Vector
X1=[V1(1) V2(1)] ; Y1=[V1(2) V2(2)] ; Z1=[V1(3) V2(3)] ;
% Tercer vector
X2=[V2(1) V3(1)] ; Y2=[V2(2) V3(2)] ; Z2=[V2(3) V3(3)] ;
% Cuarto vector
X3=[V3(1) V4(1)] ; Y3=[V3(2) V4(2)] ; Z3=[V3(3) V4(3)] ;
% Quinto vector
X4=[V4(1) V5(1)] ; Y4=[V4(2) V5(2)] ; Z4=[V4(3) V5(3)] ;
% Sexto vector
X5=[V5(1) V6(1)] ;
Y5=[V5(2) V6(2)] ; Z5=[V5(3) V6(3)] ;
> Con los vectores definidos, se establecen los parámetros para la graficación.
hold on
64
plot3(X4,Y4,Z4,’y-’,’LineWidth’,3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(X5,Y5,Z5,’k+-’,’LineWidth’,3)
> Al ejecutar esta primera parte del código, se obtiene la Figura 4.1.
3000
eje Z
2000
1000
2000
0 2000
0
−2000 −2000
eje Y eje X
> En la ejecución del modelo se deben definir los valores angulares de cada eje para
efectuar el movimiento de las articulaciones desde la posición inicial hasta la deseada.
Sin embargo, se debe tener en cuenta los límites angulares de cada eje que se encuentran
65
establecidos en la referencias técnicas del robot (ver Tabla 1.). A continuación se presenta
el código que efectúa la recolección de datos, condicionándolos a los valores angulares
definidos para cada articulación.
while(A3 > 65 || A3 < −209) disp(’ Eje 3. El ángulo debe estar entre [-209,65]’)
A3=input(’ Digite el valor del ángulo correspondiente al Eje 3 ’);
A3=round(A3);
if (A3 > 65 || A3 < −209)
disp(’ ’) end end disp(’ ’)
66
while(A5 > 125 || A5 < −125)
disp(’ Eje 5. El ángulo debe estar entre [-125,125]’)
A5=input(’ Digite el valor del ángulo correspondiente al Eje 5 ’);
A5=round(A5);
if (A5 > 125 || A5 < −125)
disp(’ ’)
end end disp(’ ’)
> Ahora se efectúa de nuevo el modelo que se encontrará condicionado a los valores que
fueron ingresados por el usuario. Se debe tener presente que Matlabr trabaja los valores
angulares en radianes, lo cual, para facilitar el uso del simulador, se efectúa el código de
conversión de grados a radianes y se continua con el modelo.
teta1=((A1*pi)/180);
teta2=((A2*pi)/180);
teta3=((A3*pi)/180);
teta4=((A4*pi)/180);
teta5=((A5*pi)/180);
teta6=((A6*pi)/180);
67
plot3(i,n,n,’m-’) hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(n,j,n,’g-’) hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(n,n,k,’B’) hold on
T0=quaternion([0 0 0 0]);
T1=quaternion([0 750 0 0]);
T2=quaternion([0 0 0 700]);
T3=quaternion([0 0 0 1250]);
T4=quaternion([0 1000 0 0]);
T5=quaternion([0 500 0 0]);
T6=quaternion([0 230 0 0]);
T7=quaternion([0 0 0 200]);
B1=T2+T1 ; B2=Q1*B1*CQ1 ;
C1=Q2*T3*CQ2 ; C2=C1+T2+T1 ;
C3=Q1*C2*CQ1 ;
D1=Q3*T4*CQ3 ; D2=D1+T3 ;
D3=Q2*D2*CQ2 ; D4=D3+T2+T1 ;
D5=Q1*D4*CQ1 ;
E1=Q4*T5*CQ4 ; E2=E1+T4 ;
E3=Q3*E2*CQ3 ; E4=E3+T3 ;
E5=Q2*E4*CQ2 ; E6=E5+T2+T1 ;
E7=Q1*E6*CQ1 ;
F1=Q5*T6*CQ5 ; F2=F1+T5 ;
68
F3=Q4*F2*CQ4 ; F4=F3+T4 ;
F5=Q3*F4*CQ3 ; F6=F5+T3 ;
F7=Q2*F6*CQ2 ; F8=F7+T2+T1 ;
F9=Q1*F8*CQ1 ;
G1=Q6*T7*CQ6 ; G2=G1+T6 ;
G3=Q5*G2*CQ5 ; G4=G3+T5 ;
G5=Q4*G4*CQ4 ; G6=G5+T4 ;
G7=Q3*G6*CQ3 ; G8=G7+T3 ;
G9=Q2*G8*CQ2 ; G10=G9+T2+T1 ;
G11=Q1*G10*CQ1 ;
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(X,Y,Z,’ro-’,’LineWidth’,3) hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(X1,Y1,Z1,’bo-’,’LineWidth’,3) hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(X2,Y2,Z2,’go-’,’LineWidth’,3) hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(X3,Y3,Z3,’mo-’,’LineWidth’,3) hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(X4,Y4,Z4,’y-’,’LineWidth’,3) hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(X5,Y5,Z5,’k+-’,’LineWidth’,3)
69
title(’MODELO CINEMÁTICO DIRECTO DEL’;’ROBOT KR 120-2P CUATER-
NIOS’,’FontSize’,14,’Color’,’k’,’EdgeColor’,’k’)
xlabel(’eje x’,’FontSize’,16,’Color’,’B’)
ylabel(’eje y’,’FontSize’,16,’Color’,’B’)
zlabel(’eje z’,’FontSize’,16,’Color’,’B’)
grid on
box on
disp(’Fin’)
Robot KR 120-2P.
Ingrese los valores angulares de cada eje
para hacer su simulación, se verifica gráficamente.
Modelo Cinemático Directo Cuaternios robot KR 120-2P
> De esta forma, se tiene el código completo del modelo computacional utilizando
Matlabr del robot KUKA KR120-2Pr por medio de cuaternios, por lo cual se encuentra
listo para su ejecución.
4.4. Validación
Después de hacer la programación en Matlabr del modelo cinemático directo del robot
KUKA KR120-2Pr se efectúa la validación del modelo elaborado y expuesto en el
capítulo anterior, por medio del ingreso de datos de posiciones angulares para cada
articulación y así obtener las posiciones del elemento terminal del robot.
1. A1 = 0o , A2 = 0o , A3 = 0o , A4 = 0o , A5 = 0o , A6 = 0o .
70
2. A1 = 20o , A2 = −25o , A3 = 64o , A4 = 210 ,A5 = 2 , A6 = 45.
3000
eje z
2000
1000
2000
0 2000
0
−2000 −2000
eje y eje x
1. A1 = 0o , A2 = 0o , A3 = 0o , A4 = 0o , A5 = 0o , A6 = 0o .
71
MODELO CINEMÁTICO DIRECTO
ROBOT KR 120−2P CUATERNIOS
3000
eje z
2000
1000
2000
0 2000
0
−2000 −2000
eje y eje x
Para solucionar lo anterior se realizó una integración del código que se desarrolló en
una interfaz gráfica de usuario (GUI en sus siglas en inglés: graphical user interface),
donde en una sola ventana se ingresan los valores angulares y se observa directamente los
movimiento que se realizan en las simulaciones. Además, la interfaz gráfica de usuario
tiene la posibilidad aplicar varias simulaciones a la vez y restaurar su valores a los
parámetros iniciales.
72
Figura 4.4: GUI robot KUKA KR120-2Pr.
73
Figura 4.5: GUI movimiento eje 1 del robot KUKA KR120-2Pr.
Figura 4.6: GUI movimientos múltiples eje 1 del robot KUKA KR120-2Pr.
74
Figura 4.7: GUI movimientos múltiples eje 2 del robot 3 KUKA KR120-2Pr.
Figura 4.8: GUI movimientos múltiples de los ejes del robot KUKA KR120-2Pr.
75
CAPÍTULO 5
PROPUESTA DE INNOVACIÓN EN
EL AULA
E
l trabajo de grado que se ha expuesto se centró en el desarrollo de un modelo
cinemático directo del robot KUKA KR120-2Pr mediante el uso de cuaternios,
donde luego se validó el modelo al programarlo en Matlabr. Todo este proceso elabora-
do abre las posibilidades de establecer una propuesta de innovación en el aula para la
enseñanza y el aprendizaje de transformaciones lineales en un curso de Álgebra Lineal[17].
Históricamente los cursos de Álgebra Lineal, que son impartidos por lo general en el
segundo nivel de estudios, han presentado altos niveles de desaprobación, por lo cual se
establece la necesidad de proponer y desarrollar estrategias pedagógicas que optimicen
el aprendizaje en ésta área. Es de interés el Álgebra Lineal ya que es un componente de
gran importancia para la formación de profesionales en ciencias e ingenierías.
76
La propuesta consiste en que los estudiantes elaboren un proyecto donde presenten
y validen el modelo cinemático directo del robot en cuestión. Para el desarrollo del
proyecto se realizara de forma cooperativa, donde cada grupo de estudiantes desarrollará
el modelo usando geometrías de transformación lineal, los cuaternios como representación
de transformaciones lineales y la herramienta computacional Matlabr. Durante la
elaboración del proyecto, los estudiantes planifican, ejecutan y evalúan el desarrollo del
modelo del robot, donde les permite encontrar relación directa entre las matemáticas y
la robótica (se hace una traspolación de la tradicional matemática abstracta teórica a
la matemática aplicada), entre los conceptos y la realidad en que ellos son empleados,
además de utilizar de forma conjunta los conocimientos previos. Al finalizar el proyecto,
los estudiantes deben presentar los resultados obtenidos y sustentarlos, utilizando como
soporte los medios electrónicos y elaborando un poster de trabajo realizado. El desarrollo
del proyecto se puede considerar como una situación adidáctica en la conceptualización
de las transformaciones lineales.
Otro propósito del trabajo por proyectos en el aula, es el de integrar otras áreas del
conocimiento para el estudio del Álgebra Lineal, teniendo como referente las tendencias
mundiales en el desarrollo científico, tecnológico e industrial alrededor de un tema de
gran interés para los estudiantes, la robótica.
77
CAPÍTULO 6
RESULTADOS
Lq : R3 → R3
~v → Lq (~v ) = Q(0 + ~v )Q∗
x = C1 Ψ − S1 Ω =
l7 [C6 C5 C4 S3 C2 C1 + C6 S5 C3 C2 C1 − S6 S4 S3 C2 C1 + C6 C5 S4 S1 + S6 C4 S1 +
C6 C5 C4 C3 S2 C1 − C6 S5 S3 S2 C1 − S6 S4 C3 S2 C1 ] + l6 [C5 C3 C2 C1 − S5 C4 S3 C2 C1 −
S5 S4 S1 − C5 S3 S2 C1 − S5 C4 C3 S2 C1 ] + l5 [C3 C2 C1 − S3 S2 C1 ] + l4 [C3 C2 C1 − +
S3 S2 C1 ]l3 S2 C1 + l1 C1 .
78
y = C 1 Ω + S1 Ψ =
l7 [C6 C5 C4 S3 C2 S1 + C6 S5 C3 C2 S1 − S6 S4 S3 C2 S1 − C6 C5 S4 C1 − S6 C4 C1 +
C6 C5 C4 C3 S2 S1 − C6 S5 S3 S2 S1 − S6 S4 C3 S2 S1 ] + l6 [C5 C3 C2 S1 − S5 C4 S3 C2 S1
+S5 S4 C1 − C5 S3 S2 S1 − S5 C4 C3 S2 S1 ] + l5 [C3 C2 S1 − S3 S2 S1 ] + l4 [C3 C2 S1 −
S3 S2 S1 ] + l3 S2 S1 + l1 S1 .
z=Φ=
l7 [C6 C5 C4 C3 C2 − C6 S5 S3 C2 − S6 S4 C3 C2 − C6 C5 C4 S3 C2 − C6 S5 C3 C2 +
S6 S4 S3 C2 ] + l6 [−C5 S3 C2 − S5 C4 C3 C2 − C5 C3 S2 + S5 C4 S3 S2 ] + l5 [−S3 C2 −
C3 S2 ] + l4 [−S3 C2 − C3 S2 ] + l3 C2 + l2 .
donde (x, y, z) son las coordenadas del extremo del robot referidas a la base del
robot (S0 )
En los gráficos 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7 y 4.8 se evidencia la validación del
modelo cinemático directo realizado al robot en cuestión, al ser mapeados distintos
valores angulares para cada articulación.
Se desarrolló una interfaz gráfica que integra la programación hecha sobre el modelo
cinemático directo del robot KUKA KR120-2Pr, que se muestra en las Figuras
4.4, 4.5, 4.6, 4.7 y 4.8 donde permite de una forma más práctica desarrollar las
simulaciones de los movimientos de cada articulación del robot.
79
CONCLUSIONES
Los cuaternios pueden ser usados para resolver el problema cinemático directo de
robots industriales.
El desarrollo del modelo cinemático directo del robot KUKA KR120-2Pr, consiste
en la composición de rotaciones lo que resulta computacionalmente muy práctico,
ya que son multiplicaciones de cuaternios entre sí.
80
blecerse como prototipo en la ejecución de proyectos de aula en cursos de álgebra
lineal.
81
ANEXO 1
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
handle.i=[1,0,0];
handle.j=[0,1,0];
handle.k=[0,0,1];
handle.n=[0,0,0];
% CAJA GRAFICA
% AXIS([XMIN XMAX YMIN YMAX ZMIN ZMAX])
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.i,handle.n,handle.n,'m-')
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.n,handle.j,handle.n,'g-') %Representación de Rotaciones
hold on Q1=quaternion([cos(teta1/2) 0 0 sin(teta1/2)]);
axis([-3800 3800 -3800 3800 0 3700]) CQ1=inv(Q1);%%%%Conjugado de Q1
plot3(handle.n,handle.n,handle.k,'B') Q2=quaternion([cos(teta2/2) 0 sin(teta2/2) 0]);
hold on CQ2=inv(Q2);
Q3=quaternion([cos(teta3/2) 0 sin(teta3/2) 0]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
teta1=0; CQ3=inv(Q3);
teta2=0; Q4=quaternion([cos(teta4/2) sin(teta4/2) 0 0 ]);
teta3=0; CQ4=inv(Q4);
teta4=0; Q5=quaternion([cos(teta5/2) 0 sin(teta5/2) 0]);
teta5=0; CQ5=inv(Q5);
teta6=0; Q6=quaternion([cos(teta6/2) sin(teta6/2) 0 0]);
CQ6=inv(Q6);
82
%Representación de Traslaciones
T0=quaternion([0 0 0 0]);
T1=quaternion([0 750 0 0]);
T2=quaternion([0 0 0 700]);
T3=quaternion([0 0 0 1250]);
T4=quaternion([0 1000 0 0]);
T5=quaternion([0 500 0 0]);
T6=quaternion([0 230 0 0]);
T7=quaternion([0 0 0 200]);
%%%%%%%%%%%%%%%%%%%%%%%%ESLABONES%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
83
%%ESLABON L5 DEL MODELO CINEMATICO
F1=Q5*T6*CQ5;
F2=F1+T5;
F3=Q4*F2*CQ4;
F4=F3+T4;
F5=Q3*F4*CQ3;
F6=F5+T3;
F7=Q2*F6*CQ2;
F8=F7+T2+T1;
F9=Q1*F8*CQ1;
%%ESLABON L6 DEL MODELO CINEMATICO
A1=Q6*T7*CQ6;
A2=A1+T6;
A3=Q5*A2*CQ5;
A4=A3+T5;
A5=Q4*A4*CQ4;
A6=A5+T4;
A7=Q3*A6*CQ3;
A8=A7+T3;
A9=Q2*A8*CQ2;
A10=A9+T2+T1;
A11=Q1*A10*CQ1;
% 1° Vector
handle.X=[0 V1(1)];
handle.Y=[0 V1(2)];
handle.Z=[0 V1(3)];
% 2° Vector
handle.X1=[V1(1) V2(1)];
handle.Y1=[V1(2) V2(2)];
handle.Z1=[V1(3) V2(3)];
% 3° Vector
handle.X2=[V2(1) V3(1)];
handle.Y2=[V2(2) V3(2)];
handle.Z2=[V2(3) V3(3)];
% 4° Vector
handle.X3=[V3(1) V4(1)];
handle.Y3=[V3(2) V4(2)];
handle.Z3=[V3(3) V4(3)];
% 5° Vector
handle.X4=[V4(1) V5(1)];
handle.Y4=[V4(2) V5(2)];
handle.Z4=[V4(3) V5(3)];
% 6° Vector
handle.X5=[V5(1) V6(1)];
handle.Y5=[V5(2) V6(2)];
handle.Z5=[V5(3) V6(3)];
84
% Grafico Modelo cinematico
hold on
% AXIS([XMIN XMAX YMIN YMAX ZMIN ZMAX])
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X,handle.Y,handle.Z,'ro-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X1,handle.Y1,handle.Z1,'bo-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X2,handle.Y2,handle.Z2,'go-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X3,handle.Y3,handle.Z3,'mo-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X4,handle.Y4,handle.Z4,'y-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X5,handle.Y5,handle.Z5,'k+-','LineWidth',3)
% Texto Gráfica
% title({'MODELO DE CINEMÁTICA DIRECTA DEL';'ROBOT KR 120-
2P'},'FontSize',12,'Color','k','EdgeColor','k')
xlabel('eje X','FontSize',10,'Color','B')
ylabel('eje Y','FontSize',10,'Color','B')
zlabel('eje Z','FontSize',10,'Color','B')
grid on
box on
% --- Outputs from this function are returned to the command line.
function varargout = GUIKUKAKR1202P_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
85
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
86
function edit4_Callback(hObject, eventdata, handles)
Val=get(hObject,'String'); %Almacenar valor ingresado
NewVal = str2double(Val); %Transformar a formato double
handles.edit4=NewVal; %Almacenar en identificador
guidata(hObject,handles); %Salvar datos de la aplicación
87
% --- Executes on button press in sim.
function sim_Callback(hObject, eventdata, handles)
% hObject handle to sim (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
A1=handles.edit1;
A2=handles.edit2;
A3=handles.edit3;
A4=handles.edit4; B1=T2+T1;
A5=handles.edit5; B2=Q1*B1*CQ1;
A6=handles.edit6;
C1=Q2*T3*CQ2;
handle.i=[1,0,0]; C2=C1+T2+T1;
handle.j=[0,1,0];
handle.k=[0,0,1]; C3=Q1*C2*CQ1;
handle.n=[0,0,0];
axis([-3800 3800 -3800 3800 0 3700]) D1=Q3*T4*CQ3;
plot3(handle.i,handle.n,handle.n,'m-') D2=D1+T3;
hold on D3=Q2*D2*CQ2;
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.n,handle.j,handle.n,'g-') D4=D3+T2+T1;
hold on D5=Q1*D4*CQ1;
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.n,handle.n,handle.k,'B') E1=Q4*T5*CQ4;
hold on E2=E1+T4;
E3=Q3*E2*CQ3;
teta1=((A1*pi)/180);
teta2=((A2*pi)/180); E4=E3+T3;
teta3=((A3*pi)/180); E5=Q2*E4*CQ2;
teta4=((A4*pi)/180); E6=E5+T2+T1;
teta5=((A5*pi)/180); E7=Q1*E6*CQ1;
teta6=((A6*pi)/180);
F1=Q5*T6*CQ5;
F2=F1+T5;
F3=Q4*F2*CQ4;
Q1=quaternion([cos(teta1/2) 0 0 sin(teta1/2)]);
CQ1=inv(Q1); F4=F3+T4;
Q2=quaternion([cos(teta2/2) 0 sin(teta2/2) 0]); F5=Q3*F4*CQ3;
CQ2=inv(Q2); F6=F5+T3;
Q3=quaternion([cos(teta3/2) 0 sin(teta3/2) 0]); F7=Q2*F6*CQ2;
CQ3=inv(Q3); F8=F7+T2+T1;
Q4=quaternion([cos(teta4/2) sin(teta4/2) 0 0 ]);
CQ4=inv(Q4); F9=Q1*F8*CQ1;
Q5=quaternion([cos(teta5/2) 0 sin(teta5/2) 0]);
CQ5=inv(Q5); G1=Q6*T7*CQ6;
Q6=quaternion([cos(teta6/2) sin(teta6/2) 0 0]); G2=G1+T6;
CQ6=inv(Q6); G3=Q5*G2*CQ5;
G4=G3+T5;
G5=Q4*G4*CQ4;
%Representación de Traslaciones
T0=quaternion([0 0 0 0]); G6=G5+T4;
T1=quaternion([0 750 0 0]); G7=Q3*G6*CQ3;
T2=quaternion([0 0 0 700]); G8=G7+T3;
T3=quaternion([0 0 0 1250]); G9=Q2*G8*CQ2;
T4=quaternion([0 1000 0 0]); G10=G9+T2+T1;
T5=quaternion([0 500 0 0]);
T6=quaternion([0 230 0 0]); G11=Q1*G10*CQ1;
T7=quaternion([0 0 0 200]);
88
V1=B2.v;
V2=C3.v;
V3=D5.v;
V4=E7.v;
V5=F9.v;
V6=G11.v;
handle.X=[0 V1(1)];
handle.Y=[0 V1(2)];
handle.Z=[0 V1(3)];
handle.X1=[V1(1) V2(1)];
handle.Y1=[V1(2) V2(2)];
handle.Z1=[V1(3) V2(3)];
handle.X2=[V2(1) V3(1)];
handle.Y2=[V2(2) V3(2)];
handle.Z2=[V2(3) V3(3)];
handle.X3=[V3(1) V4(1)];
handle.Y3=[V3(2) V4(2)];
handle.Z3=[V3(3) V4(3)];
handle.X4=[V4(1) V5(1)];
handle.Y4=[V4(2) V5(2)];
handle.Z4=[V4(3) V5(3)];
handle.X5=[V5(1) V6(1)];
handle.Y5=[V5(2) V6(2)];
handle.Z5=[V5(3) V6(3)];
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X,handle.Y,handle.Z,'ro-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X1,handle.Y1,handle.Z1,'bo-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X2,handle.Y2,handle.Z2,'go-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X3,handle.Y3,handle.Z3,'mo-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X4,handle.Y4,handle.Z4,'y-','LineWidth',3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(handle.X5,handle.Y5,handle.Z5,'k+-','LineWidth',3)
% Texto Gráfica
% title({'MODELO DE CINEMÁTICA DIRECTA DEL';'ROBOT KR 120-2P
JJQO'},'FontSize',16,'Color','k','EdgeColor','k')
xlabel('eje x','FontSize',16,'Color','B')
ylabel('eje y','FontSize',16,'Color','B')
zlabel('eje z','FontSize',16,'Color','B')
grid on
box on
cla(handles.axes1,'reset')
guidata(hObject, handles);
89
BIBLIOGRAFÍA
[1] Archila Díaz, J. F., Dutra, M. S. (2008). Estudio y modelamiento del robot KUKAr
KR 6. Revista Facultad de Ingeneria Universidad de Antioquia, 46(1), 132-144.
[2] Tarazona, M. (2002). Aplicación software para un brazo robótico usando un modelo
geométrico basado en el álgebra de cuaterniones. Bucaramanga: Universidad Industrial
de Santander.
[4] Barrientos, A., Peñín, L. F., Balaguer C. and Aracil, R. (2007) Fundamentos de Ro-
bótica. Madrid: Mc Graw Hill.
[5] Grossman, S. I. (2004). Álgebra lineal. Quinta edición. Belmont: Mc Graw Hill.
[6] Nakos, G., Joyner, D. (1999). Álgebra lineal con aplicaciones. Madrid: Thomson.
[7] Kuipers, J. B. (1999). Quaternios and rotation sequences: A primer with aplications
to orbits, aerospace, and virtual reality. Princenton: Princenton University Press.
90
[10] Sahul, S., Biswall, B. B. and Subudhi, B. (n.d). A novel method for representing
robot kinematics using Quaternion Theory.
Obtenida de [Link]
91
The quaternion model serves as an effective prototype by integrating theoretical concepts with practical applications, encouraging students to apply algebraic principles in designing and analyzing real-world robotic systems. This approach promotes active learning and critical thinking, allowing students to visualize and manipulate complex algebraic transformations, thus bridging the gap between theory and practice in linear algebra courses .
MATLAB facilitates the development by providing a robust environment for implementing quaternion-based computations through its advanced mathematical libraries. It allows for the seamless coding of transformations and easy visualization of robotic movements. The platform's ability to generate executable files and support multi-language integration further enhances simulation's flexibility and applicability, allowing users to validate models effectively across different computing platforms .
The GUI developed for the KUKA KR120-2P enhances user interaction by providing an intuitive interface for controlling and visualizing the robot's movements. It allows users to adjust input parameters such as joint angles easily and observe real-time changes in the model's behavior. Educationally, this interactivity supports experiential learning by enabling students to experiment with and understand the impact of different variables in robotics kinematics .
The quaternion approach to direct kinematics offers superior accuracy by mitigating cumulative errors typical in matrix operations, particularly for sequences of rotations. It simplifies computations by reducing the need for trigonometric and matrix inversion operations, delivering faster and more stable results. Traditional methods like Denavit-Hartenberg parameters are complex and prone to inaccuracies from floating-point precision errors, making quaternions a preferred choice in environments requiring high precision and efficiency .
The quaternion-based kinematic model enhances educational understanding by providing a tangible and practical application of linear transformations. It involves students actively in Project Based Learning, thereby linking abstract algebraic concepts to real-world scenarios, which fosters deeper comprehension. The model's use of MATLAB for simulation further aids understanding by visually demonstrating the impact of transformations .
The conversion from degrees to radians in the KUKA KR120-2P robot simulation is done by multiplying each angle in degrees by π/180. This conversion is necessary because MATLAB functions that involve trigonometric computations, inherent to the quaternion model, require inputs in radians. Ensuring the angles are in radians prevents errors in the simulation outcomes due to incorrect input formats .
The angular limits for the KUKA KR120-2P robot joints are: Axis 1: [-185, 185], Axis 2: [-120, 70], Axis 3: [-209, 65], Axis 4: [-350, 350], Axis 5: [-125, 125], Axis 6: [-350, 350]. Respecting these limits is crucial to prevent potential overextensions that could result in mechanical damage, ensure the realistic simulation of operations, and maintain the integrity of the results within defined operational constraints .
The use of quaternions improves computational efficiency in simulating the KUKA KR120-2P robot by simplifying the mathematical representation of 3D rotations. Quaternions avoid the gimbal lock problem and require fewer arithmetic operations than matrix multiplication, which can speed up simulations. The quaternion-based model allows for smoother and more stable rotations due to the avoidance of singularities and the reduction in computational load .
Hamilton's quaternions were a breakthrough in algebra, offering a way to extend complex numbers and address algebraic challenges, specifically the representation of spatial rotations in three dimensions. This algebraic innovation allows for compact and reversible computations of rotational transformations, making it highly relevant in robotics for tasks like modeling direct kinematics, as their versatility surpasses traditional vector representations .
Quaternions provide a more efficient representation of rotations compared to homogeneous transformation matrices because they use only 4 elements instead of 9 and reduce computational complexity by allowing direct multiplication, which avoids the singularities and computational overhead associated with matrix operations. Moreover, quaternions help in avoiding the inaccuracies that can occur from floating-point precision errors inherent in matrix operations with small rotations .