0% encontró este documento útil (0 votos)
79 vistas91 páginas

Modelo Cinemático KUKA en MATLAB

El resumen captura de manera concisa la información clave del documento. Describe el objetivo de desarrollar un modelo cinemático directo para el robot KUKA KR120-2Pr utilizando cuaterniones de Hamilton en Matlab. También menciona brevemente algunos de los conceptos matemáticos fundamentales abordados en el documento como espacios vectoriales, transformaciones lineales y localización espacial mediante matrices de transformación homogénea.

Cargado por

Jüan Rojas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • transformaciones geométricas,
  • análisis de datos,
  • aprendizaje basado en proyecto…,
  • MATLAB,
  • rotaciones en R3,
  • aplicaciones de cuaternios,
  • especificaciones técnicas,
  • programación de robots,
  • evaluación de proyectos,
  • robot KUKA
0% encontró este documento útil (0 votos)
79 vistas91 páginas

Modelo Cinemático KUKA en MATLAB

El resumen captura de manera concisa la información clave del documento. Describe el objetivo de desarrollar un modelo cinemático directo para el robot KUKA KR120-2Pr utilizando cuaterniones de Hamilton en Matlab. También menciona brevemente algunos de los conceptos matemáticos fundamentales abordados en el documento como espacios vectoriales, transformaciones lineales y localización espacial mediante matrices de transformación homogénea.

Cargado por

Jüan Rojas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • transformaciones geométricas,
  • análisis de datos,
  • aprendizaje basado en proyecto…,
  • MATLAB,
  • rotaciones en R3,
  • aplicaciones de cuaternios,
  • especificaciones técnicas,
  • programación de robots,
  • evaluación de proyectos,
  • robot KUKA

MODELO CINEMÁTICO DIRECTO PARA EL ROBOT KUKA

KR120-2Pr MEDIANTE EL USO DE CUATERNIOS EN UN


AMBIENTE MATLABr.

JOHN JAIRO QUIROGA OROZCO

UNIVERSIDAD INDUSTRIAL DE SANTANDER


FACULTAD DE CIENCIAS
ESCUELA DE MATEMÁTICAS
BUCARAMANGA
2011
MODELO CINEMÁTICO DIRECTO PARA EL ROBOT KUKA
KR120-2Pr MEDIANTE EL USO DE CUATERNIOS EN UN
AMBIENTE MATLABr.

JOHN JAIRO QUIROGA OROZCO

Monografía para optar al título de


Licenciado en Matemáticas

Director
[Link]. JORGE VILLAMIZAR MORALES*

Codirector
[Link]. JOHN FABER ARCHILA DÍAZ**

UNIVERSIDAD INDUSTRIAL DE SANTANDER


FACULTAD DE CIENCIAS
ESCUELA DE MATEMÁTICAS
BUCARAMANGA
2011

*
Profesor Escuela de Matemáticas.
**
Profesor Escuela de Diseño Industrial.
3
de agosto

4
Dedicatoria:

Julieta, tus manos me enseñaron a transformar el mundo con


solo el poder de querer, me hiciste ver más allá de las fronteras
de la realidad, me brindaste el don de la elocuencia y de la
reflexión, me permitiste conocer el cielo y pintar con una ilusión
su esplendoroso azul, te convertiste en el axioma que fundamenta mi
existencia y otorga unicidad al constructo unitario que nos une.
Y, debes tener siempre presente, que un
5 8 40 19 20 · · · ∞ reinará en nuestras vidas.
Canda Munani.

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 mis padres, Susana Orozco, Jairo Quiroga y a mi hermano Giovanni A. Quiroga


Orozco, por ser los constructores del deseo de siempre salir adelante sin importar los
obstáculos, por afrontar los retos siempre unidos sin importar lo inesperado, por disfrutar
la vida con lo justo que se ha ganado y, además, por que son los primeros responsables
de lo que hoy soy yo.

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

3. Robot KUKA KR120-2Pr 45


3.1. Cinemática del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.1. El problema cinemático directo . . . . . . . . . . . . . . . . . . . . 46
3.1.2. El problema cinemático inverso . . . . . . . . . . . . . . . . . . . . 46
3.2. Definición del robot KUKA KR120-2Pr . . . . . . . . . . . . . . . . . . . 47
3.2.1. Especificaciones técnicas . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3. Modelo cinemático directo . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

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

5. Propuesta de innovación en el aula 76

6. Resultados 78

Conclusiones. 80

Referencias. 90

8
ÍNDICE DE FIGURAS

1.1. Rotación del vector ~v con ángulo θ. . . . . . . . . . . . . . . . . . . . . . . . . . 18


1.2. Rotación en el eje x. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3. Rotación en el eje y. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4. Rotación en el eje z. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.1. Componentes vectoriales de ~v . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42


2.2. Componentes del vector rotado ~v. . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.1. Relación entre cinemática directa e inversa. . . . . . . . . . . . . . . . . . . . . . 46


3.2. Robot KUKA KR120-2Pr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3. Dimensiones del robot KUKA KR120-2Pr. . . . . . . . . . . . . . . . . . . . . . 49
3.4. Sistema de referencia del robot KUKA KR120-2Pr. . . . . . . . . . . . . . . . . . 50

4.1. Posición inicial robot KUKA KR120-2Pr en Matlabr. . . . . . . . . . . . . . . . 65


4.2. Mapeos de posiciones 1. del robot KUKA KR120-2Pr. . . . . . . . . . . . . . . . 71
4.3. Mapeos de posiciones 2. del robot KUKA KR120-2Pr. . . . . . . . . . . . . . . . 72
4.4. GUI robot KUKA KR120-2Pr. . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.5. GUI movimiento eje 1 del robot KUKA KR120-2Pr. . . . . . . . . . . . . . . . . 74
4.6. GUI movimientos múltiples eje 1 del robot KUKA KR120-2Pr. . . . . . . . . . . . 74
4.7. GUI movimientos múltiples eje 2 del robot 3 KUKA KR120-2Pr. . . . . . . . . . . 75
4.8. GUI movimientos múltiples de los ejes del robot KUKA KR120-2Pr. . . . . . . . . . 75

9
RESUMEN

Título: MODELO CINEMÁTICO DIRECTO PARA EL ROBOT KUKA


KR120-2Pr MEDIANTE EL USO DE CUATERNIOS EN UN AM-
***
BIENTE MATLABr.

Autor: JOHN JAIRO QUIROGA OROZCO****

Palabras claves: Cuaternios, robótica, cinemática directa, Matlabr, Aprendizaje


Basado en Proyectos.

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

Title: DIRECT KINEMATIC MODEL FOR THE ROBOT KUKA KR120-


2Pr THROUGH THE USE OF QUATERNION IN A MATLABr
ENVIRONMENT.***

Author: JOHN JAIRO QUIROGA OROZCO****

Keywords: Quaternions, robotics, direct kinematics, Matlabr, Project Based Learning.

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.

Ésta monografía se apoya en el campo de la robótica industrial al indagar y dar respuesta


al problema cinemático directo mediante cuaternios de uno de los robots de la casa
matriz alemana KUKA - ROBOTICSr el KR 120-2Pr. Para esto se presenta una
exposición amplia del álgebra de cuaternios, incluyendo una nota histórica. Además se
exponen la cinemática del robot, se define el KR 120-2Pr y luego se desarrolla el modelo
cinemático directo. Para validar el modelo definitivo se aprovechó de las potencialidades
de Matlabr donde se elaboraron simulaciones con las especificaciones técnicas del robot.

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.

Mauricio Tarazona Álvarez en el trabajo de investigación de maestría denominado Apli-


cación software para un brazo robótico usando un modelo geométrico basado en el álgebra
de cuaternios [2] define un modelo cinemático directo por medio de matrices homogéneas
y de cuaterniones para representar geométricamente el robot SMA - V3R:Tr***** .
Además contrasta la eficiencia computacional entre los método de matrices homogéneas
y el método de cuaternios, utiliza para ello ambientes de simulación Q-robot.

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.

1.1.1. Axiomas de campo de R


Se asume la existencia de un conjunto R, con dos operaciones + (suma), · (producto),
que satisfacen los siguientes axiomas:

1. Las operaciones + y · cumplen con la propiedad clausurativa. Es decir, ∀x, y ∈ R:


x + y = z ∈ R y x · y = r ∈ R.

2. Las operaciones + y · cumplen con la propiedad conmutativa. Es decir,∀x, y ∈ R:


x + y = y + x, y x · y = y · x.

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).

4. Existen 0, 1 ∈ R tal que:

∀x ∈ R x + 0 = x.
∀x ∈ R x · 1 = x.

5. Para todo x ∈ R existe −x ∈ R (inverso aditivo) tal que x + (−x) = (−x) + x = 0.

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.

1.1.2. Espacios vectoriales


Un espacio vectorial es un conjunto de elementos de naturaleza cualquiera sobre el que
pueden realizarse dos operaciones llamadas adición y multiplicación por un escalar, donde
cumple de forma análoga las propiedades expuestas en los axiomas de campo de R.

Definición 1.1. Sea V un conjunto, donde V 6= ∅. El conjunto V se llama espacio


lineal si satisface los siguientes axiomas:

Axioma 1 A todo par de elementos x e y corresponde un único elemento de V llamado


suma de x e y, designado por x + y.

Axioma 2 A todo x ∈ V y ∀a ∈ R corresponde un elemento de V llamado producto de


a por x, designado por a · x o ax.

Axioma 3 ∀x, y ∈ V , se tiene que x + y = y + x.

Axioma 4 ∀x, y, z ∈ V , se tiene que (x + y) + z = x + (y + z).

Axioma 5 Existe un elemento en V , designado por 0, tal que x + 0 = x ∀x ∈ R.

Axioma 6 Para todo x de V , el elemento (−1) · x tiene la propiedad que x + (−1) · x = 0.

Axioma 7 ∀x, y ∈ V y ∀a ∈ R, se tiene que a(x + y) = ax + ay.

Axioma 8 ∀x ∈ V y ∀a, b ∈ R, se tiene que a(bx) = (ab)x.

15
Axioma 9 ∀x ∈ V y ∀a, b ∈ R, se tiene que (a + b) · x = a · x + b · x.

Axioma 10 Para todo x de V , tenemos 1 · x = x.

1.2. Transformaciones lineales


Las transformaciones lineales se pueden considerar como mapeos de particular importancia
en el estudio del álgebra lineal y sus aplicaciones. Éstas transformaciones se realizan entre
espacios vectoriales que conservan la suma y la multiplicación vectorial por un escalar.

Definición 1.2. Si V y W son dos espacios lineales, una función T : V → W se llama


transformación lineal de V en W (también es denominado operador lineal), si tiene las
siguientes propiedades:

a) Propiedad aditiva: T (x + y) = T (x) + T (y) para todo x, y ∈ V .

b) Propiedad homogénea: T (cx) = cT (x) para todo x ∈ V y c ∈ R.

Las dos propiedades se pueden combinar para así formar una fórmula que establece que

T (ax + by) = aT (x) + bT (y) ∀x, y ∈ V y a, b ∈ R. (1.1)

Ejemplo 1.1 (Transformación identidad). Sea V un espacio vectorial y u ∈ V . La


función:

T :V → V
u 7→ T (u) = u

es una transformación lineal.

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

D es una transformación lineal.

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.

Proposición 1.1 (Transformación lineal de reflexión respecto al eje y). Sea R2


un espacio vectorial, la función

T µ: R¶2 → Rµ 2
¶ µ ¶
x x −x
7→ T = .
y y y

T es una transformación lineal.

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

Proposición 1.2  (Transformación


 lineal de Rn a Rm ). Sean Rn , Rm espacios vecto-
x
 1 
 x2 
 
riales con ~x =  . , ~x ∈ Rn y A una matriz de m × n. Se define,
 .. 
 
xn

T : Rn → Rm
~x 7→ T (~x) = A~x.

T es una transformación lineal.

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

Se verifica el cumplimiento de la propiedad homogénea, en efecto,


 
αx1
 
 αx2 
 
A(α~x) = A  .  = αA~x.
 .. 
 
αxn
µ ¶
x
A continuación se presenta la construcción de la matriz de rotación. Sea ~v = , donde
µ 0¶ y
x
~v ∈ R2 y v~0 = , vector correspondiente a una rotación de ~v con ángulo θ (ver Figura
y0
1.1).

v’ = ( x’ , y’ ) v=(x,y)
+
r r

x’ x

Figura 1.1: Rotación del vector ~v con ángulo θ.

Es de notar que r es la longitud (norma) de ~v , la cual se tiene que x = r cos α, y = r sen α,


x0 = r cos(θ + α) y y 0 = r sen(θ + α). Aplicando identidades trigonométricas, se obtiene
µ 0¶ µ ¶ µ ¶
x r cos(θ + α) r cos θ cos α − r sen θ sen α
= = ,
y0 r sen(θ + α) r sen θ cos α + r cos θ sen α

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

Proposición 1.3 (Transformación lineal de rotación). Sea R2 un espacio vectorial,


la funció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

Se verifica el cumplimiento de la propiedad homogénea, en efecto,

µ ¶ Ã ! Ã !µ ¶
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).

Para la representación de un objeto en el espacio existen diferentes métodos, tales como:


coordenadas cartesianas, polares, esféricas, cilíndricas, entre otros. Métodos como las ma-
trices de rotación, cuaternios, ángulos de Euler, matrices de transformación homogénea
se usan para la representación de orientaciones únicamente. A continuación se presentan
los métodos de interés para este proyecto.

1.3.1. Matrices de rotación


Las matrices de rotación son el método más versátil para la descripción de orientaciones,
principalmente por la comodidad proporcionada por el uso del álgebra matricial.



Cuando se desea rotar un vector P = (x, y) = xı̂ + y̂, 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 θ

La matriz R(θ) se denomina también matriz de cosenos directores, donde además R es


ortonormal.

Es de importancia asociar un sistema de ejes de referencia fijo al vector P~ , y tam-

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.

De forma análoga, se definen matrices de rotación para espacios vectoriales V de dimensión


3 (R3 ), que tienen la siguiente forma:
 
1 0 0
 
Rotx θ = 
 0 cos θ − sen θ .
 (1.4)
0 sen θ cos θ

De la expresión (1.4), el sistema OZXY respecto al sistema solidario generado al rotar


un vector P~ ∈ R3 , siendo este el sistema OU V W , se obtiene que el eje U coincide con el
eje X, mientras que los ejes V , W se encuentran girados un ángulo θ respecto a los ejes
Y , Z correspondientes (ver Figura 1.2).

W
V
Y

U
X

Figura 1.2: Rotación en el eje x.

 
cos ς 0 sen ς
 
Roty ς = 
 0 0 
1 . (1.5)
− sen ς 0 cos ς

De la expresión (1.5), el sistema OZXY respecto al sistema solidario generado al rotar


un vector P~ ∈ R3 , siendo este el sistema OU V W , se obtiene que el eje V coincide con el
eje Y , mientras que los ejes U , W se encuentran girados un ángulo ς respecto a los ejes
X, Z correspondientes (ver Figura 1.3).

21
Z

W
V Y

U
X

Figura 1.3: Rotación en el eje y.

 
cos σ − sen σ 0
 
Rotz σ = sen σ cos σ 0

. (1.6)
0 0 1

De la expresión (1.6), el sistema OZXY respecto al sistema solidario generado al rotar


un vector P~ ∈ R3 , siendo este el sistema OU V W , se obtiene que el eje W coincide con el
eje Z, mientras que los ejes U , V se encuentran girados un ángulo σ respecto a los ejes
X, Y correspondientes (ver Figura 1.4).

V
W
Y

U
X

Figura 1.4: Rotación en el eje z.

22
Rotaciones en R3 como transformaciones lineales.

Como se definió para R2 en (1.2) una transformación lineal de rotación, se obtiene de


forma análoga transformaciones de rotaciones lineales en el espacio de la forma que sigue:
Consideremos el espacio vectorial R3 . Sean J, S, M , donde ~v = (vx , vy , vz ), w
~ =
~ p~ ∈ R3 , se tiene que J, S, M son transformaciones
(wx , wy , wz ), p~ = (px , py , pz ), ∀~v , w,
lineales, donde dicho operadores tienen la forma:

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 )

Nota: Se deja la verificación al lector de que las funciones J, S y M son trasformaciones


lineales.

1.3.2. Matrices de transformación homogénea


Las matrices de transformación homogénea son de gran interés por permitir representar
conjuntamente la posición y orientación de un sólido en el espacio, logrando de esta forma
ampliar las posibilidades ofrecidas por las matrices de rotación.

Coordenadas homogéneas.

Los puntos en el espacio se pueden representar por medio de coordenadas homogéneas.

Sea el espacio vectorial R3 , donde ∀~v ∈ R3 , tiene la forma ~v = vx ı̂ + vy ̂ + vz k̂. Las


coordenadas homogéneas involucran una cuarta componente, un escalar %, a la expresión
de los vectores en R3 , donde ésta representa un factor de escala.

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
%

Matrices de Transformación Homogéneas.

Luego de definir las coordenadas homogéneas se presenta la definición de las matrices


homogéneas, el cual permiten representar rotaciones y traslaciones en el espacio.

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.

En el caso de sólo describir la posición y orientación de un objeto donde éste no se le


aplique parámetros de escalado y perspectiva (es decir, P1×3 corresponde al vector nulo 0
y E1×1 = 1), la matriz de transformación homogénea se reduce a
à !
R3×3 T3×1
T = . (1.9)
0 1

24
Principales Matrices homogéneas.

Como se observó en el epígrafe capítulo referente a las matrices de rotación, se establecen


matrices de transformación homogéneas para rotaciones en los ejes X, Y y Z:
 
1 0 0 0
 
0 cos θ − sen θ 0
Rotx θ = 
0 sen θ cos θ 0 ,
 (1.10)
 
0 0 0 1

 
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

Para expresar solo las traslación de un vector P~ = Px ı̂ + Py ̂ + Pz k̂ se tiene:


 
1 0 0 Px
 
0 1 0 Py 
T (P~ )(σ) = 
0
. (1.13)
 0 1 Pz 

0 0 0 1

Para realizar rotaciones y traslaciones con matrices de rotación homogénea es necesario


establecer nueve elementos, el cual contrasta con los cuaternios, que se presenta en el
siguiente capítulo, donde solo requiere cuatro elementos.

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].

reales, donde profundizó en la relación geométrica que establecían como rotaciones en


el plano. Con base en lo anterior, Hamilton por varios años busco extender los números
complejos a números de dimensión 3, donde éstos lograran de forma análoga representar
rotaciones en el espacio [14].

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:

(a + bi + cj)(d + f i + gj) = ad + af i + agj + bdi + bf ii + bgij + cdj + cf ji + cgjj,

donde lo anterior tiene validez si se puede expresar como x + yi + zj, donde x, y, z ∈ R


e i y j son unidades imaginarias. Sin embargo, aparecía el inconveniente de reducir
los productos i · i, i · j, j · i y j · j. Hamilton tomó como consideración que tanto i

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.

Lo que resuelve Hamilton es adoptar un cuarto componente, otra unidad imaginaria,


quien la denominó k. De esta forma emplea la expresión a+bi+cj +dk, donde a, b, c, d ∈ R

28
Figura 2.0.2: Placa conmemorativa de Sir William Rowan Hamilton. Puente Brougham,
Dublín, Irlanda. Tomado de Cuaternios de Hamilton [3].

con i, j y k unidades imaginarias linealmente independientes. A esta combinación lineal


lo llamo, cuaternios.

Hamilton al indagar por la interpretación geométrica que se podían desprender de los


cuaternios, descubrió que al hacer que la parte real, a, fuera igual a cero, las unidades
imaginarias i, j y k podían representar puntos en el espacio y además, los cuaternios
permitían realizar rotaciones de estos puntos.

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.

El resto de su vida Hamilton la dedicó a estudiar el álgebra de cuaternios. El pensaba


que los cuaternios serían de gran utilidad en la matemática y en la física. Su trabajo
monumental sobre los cuaternios fue publicado en 1853, Treatise on Quaternions. Después

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.

2.2. Algunos conceptos importantes


Los cuaternios son una extensión de los números reales, que es generada por los vectores
ı̂ = (1, 0, 0), ̂ = (0, 1, 0), k̂ = (0, 0, 1) que forman una base ortonormal [9].

Definición 2.1. Sean q0 , q1 , q2 , q3 ∈ R, un cuaternio es una combinación lineal


Q = q0 + q1 ı̂ + q2 ̂ + q3 k̂, donde ı̂, ̂, k̂ son la base ortonormal estándar en R3
(ı̂ = (1, 0, 0), ̂ = (0, 1, 0), k̂ = (0, 0, 1)).

En los cuaternios se reconocen dos componentes, la parte real (escalar), q0 , y la parte


vectorial, ~q = q1 ı̂ + q2 ̂ + q3 k̂. De esta forma se puede expresar un cuaternio como:

Q = q0 + q1 ı̂ + q2 ̂ + q3 k̂ = q0 + ~q

Ejemplo 2.1. Q = 8 + 5ı̂ + 40̂ + 19k̂ es un cuaternio, donde 8 es la parte real y ~q =


5ı̂ + 40̂ + 19k̂ la parte vectorial.

NOTA: Se denotará al conjunto de cuaternios por H(R) y para cada cuaternio se


utilizará Q = q0 + ı̂q1 + ̂q2 + k̂q3 = q0 + ~q, donde q0 , q1 , q2 , q3 ∈ R y ~q ∈ R3 .

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

Q1 = q0 + ı̂q1 + ̂q2 + k̂q3 y Q2 = p0 + ı̂p1 + ̂p2 + k̂p3 ,

se tiene que,

Q1 = Q2 ⇔ q0 = p0 y q1 = p1 y q2 = p2 y q3 = p3 .

Definición 2.3. Sea el cuaternio Q = q0 + ı̂q1 + ̂q2 + k̂q3 . El cuaternio Q se denomina


nulo cuando q0 = q1 = q2 = q3 = 0.

Definición 2.4. Sea el cuaternio Q = q0 + ı̂q1 + ̂q2 + k̂q3 . El cuaternio conjugado de Q


(denotado por Q̄) es aquel donde la parte vectorial de Q, ~v tiene invertidos los signos, es
decir,
Q̄ = q0 − ı̂q1 − ̂q2 − k̂q3 .

30
Definición 2.5. Dado el cuaternio Q = q0 + q1 ı̂ + q2 ̂ + q3 k̂, su cuaternio opuesto es
−Q = −q0 − q1 ı̂ − q2 ̂ − q3 k̂.

2.3. Álgebra de cuaternios

2.3.1. Suma y resta de cuaternios


Definición 2.6. Sean Q1 , Q2 ∈ H(R), donde Q1 = q0 + ı̂q1 + ̂q2 + k̂q3 y Q2 = p0 + ı̂p1 +
̂p2 + k̂p3 . Se define la suma entre cuaternios, como la suma componente a componente,

Q1 + Q2 = (q0 + p0 ) + (q1 + p1 )ı̂ + (q2 + p2 )̂ + (q3 + p3 )k̂. (2.1)

Ejemplo 2.2. Dados Q1 = −3 + 6ı̂ + 7̂ − 8k̂,Q2 = 1 + 12ı̂ − 7̂ − 11k̂

Q1 + Q2 = (−3 + 1) + (6 + 12)ı̂ + (7 − 7)̂ + (−8 − 11)k̂ = −2 + 18ı̂ − 19k̂.

Definición 2.7. De forma análoga a la suma se define la resta o diferencia, es decir, si


Q1 , Q2 ∈ H(R), donde Q1 = q0 + ı̂q1 + ̂q2 + k̂q3 y Q2 = p0 + ı̂p1 + ̂p2 + k̂p3 , entonces,

Q1 − Q2 = (q0 − p0 ) + (q1 − p1 )ı̂ + (q2 − p2 )̂ + (q3 − p3 )k̂. (2.2)

Ejemplo 2.3. Dados Q1 = −3 + 6ı̂ + 7̂ − 8k̂, Q2 = 1 + 12ı̂ − 7̂ − 11k̂

Q1 − Q2 = (−3 − 1) + (6 − 12)ı̂ + (7 + 7)̂ + (−8 + 11)k̂ = −4 − 6ı̂ + (14)̂ + 3k̂.

La suma de cuaternios cumple con las propiedades conmutativa y asociativa, la cual se


presentan a continuación.

Proposición 2.1. Dados Q1 , Q2 ∈ H(R), donde Q1 = q0 + q1 ı̂ + q2 ̂ + q3 k̂ y Q2 =


p0 + p1 ı̂ + p2 ̂ + p3 k̂, se tiene que Q1 + Q2 = Q2 + Q1 .

Demostración. Sean Q1 , Q2 ∈ H(R), donde Q1 = q0 + q1 ı̂ + q2 ̂ + q3 k̂ y Q2 = p0 + p1 ı̂ +


p2 ̂ + p3 k̂, se tiene que

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 ).

Demostración. Sean 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̂. Utilizando los axiomas de campos de R se tiene que

(Q1 + Q2 ) + Q3 = (q0 + q1 ı̂ + q2 ̂ + q3 k̂ + p0 + p1 ı̂ + p2 ̂ + p3 k̂) + r0 + r1 ı̂ + r2 ̂ + r3 k̂


= (q0 + p0 ) + (q1 + p1 )ı̂ + (q2 + p2 )̂ + (q3 + p3 )k̂ + r0 + r1 ı̂ + r2 ̂ + r3 k̂
= ((q0 + p0 ) + r0 ) + ((q1 + p1 ) + r1 )ı̂ + ((q2 + p2 ) + r2 )̂ + ((q3 + p3 ) + r3 )k̂
= (q0 + (p0 + r0 )) + (q1 + (p1 + r1 ))ı̂ + (q2 + (p2 + r2 ))̂ + (q3 + (p3 + r3 ))k̂
= (p0 + r0 ) + (p1 + r1 )ı̂ + (p2 + r2 )̂ + (p3 + r3 )k̂ + q0 + q1 ı̂ + q2 ̂ + q3 k̂
= Q1 + (Q2 + Q3 )

2.3.2. Producto de cuaternios


Definición 2.8. Si c es un escalar, c ∈ R, y Q ∈ H(R), donde Q = q0 + q1 ı̂ + q2 ̂ + q3 k̂,
entonces el producto de un cuaternio y un escalar está dado por

cQ = cq0 + q1 ı̂ + q2 ̂ + q3 k̂. (2.3)

Ejemplo 2.4. Si Q = 5 + 8ı̂ + 6̂ + 21k̂, entonces 3Q = 15 + 24ı̂ + 18̂ + 63k̂.

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

De esta ecuación se deduce los siguientes productos:

ı̂ · ̂ = k̂, ̂ · ı̂ = −k̂, ̂ · k̂ = ı̂, k̂ · ̂ = −ı̂, k̂ · ı̂ = ̂, ı̂ · k̂ = −̂.

NOTA: De ahora en adelante se obviará · en los productos (es decir, a · b = ab).

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 + q1 ı̂ + q2 ̂ + q3 k̂)(p0 + p1 ı̂ + p2 ̂ + p3 k̂)


= q0 p0 + q0 p1 ı̂ + q0 p2 ̂ + q0 p3 3̂
+ q1 p0 ı̂ + q1 p1 ı̂2 + q1 p2 ı̂̂ + q1 p3 ı̂k̂
+ q2 p0 ̂ + q2 p1 ̂ı̂ + q2 p2 ̂2 + q2 p3 ̂k̂
+ q3 p0 k̂ + q3 p1 k̂ı̂ + q3 p2 k̂̂ + q3 p3 k̂ 2

Al utilizar los productos definidos por Hamilton se tiene que

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

Al reagrupar términos, la expresión anterior se puede expresar de la forma q0 + ~q, donde


q0 ∈ R y q ∈ R3 .

Definición 2.9. Dados Q1 , Q2 ∈ H(R), donde Q1 = q0 + q1 ı̂ + q2 ̂ + q3 k̂ y Q2 =


p0 + p1 ı̂ + p2 ̂ + p3 k̂, se define su producto

Q1 Q2 = (q0 p0 − q1 p1 − q2 p2 − q3 p3 ) + (q0 p1 + q1 p0 + q2 p3 − q3 p2 )ı̂


+ (q0 p2 − q1 p3 + q2 p0 + q3 p1 )̂ + (q0 p3 + q1 p2 − q2 p1 + q3 p0 )k̂ (2.4)

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

q~1 q~2 = (1, −2, 1)(−1, 2,3) = −2,

y el producto cruz entre los vectores

33
¯ ¯
¯ ¯
¯ ı̂ ̂ k̂ ¯
¯ ¯
q~1 × q~2 = ¯¯ 1 −2 1¯¯ = −8ı̂ − 4̂.
¯ ¯
¯−1 2 3¯

De acuerdo a la ecuación (2.5) se tiene

Q1 Q2 = 6 − (−2) + 3(−ı̂ + 2̂ + 3k̂) + 2(ı̂ − 2̂ + k̂) + (−8ı̂ − 4̂)


= 8 − 9ı̂ − 2̂ + 11k̂.

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.

Proposición 2.3. 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 ).

Demostración. Sean 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 = [(q0 p0 − q1 p1 − q2 p2 − q3 p3 ) + (q0 p1 + q1 p0 + q2 p3 − q3 p2 )ı̂ + (q2 p0 − q0 p2 − q3 p1 −


q1 p3 )̂+(q3 p0 −q0 p3 −q2 p1 −q1 p2 )k̂]Q3 = (q0 p0 r0 −r0 q1 p1 −r0 q2 p2 −r0 q3 p3 −p0 q1 r1 −q0 p1 r1 +
q3 p2 r1 −q2 p3 r1 −p1 q2 r2 −q3 p1 r2 −q0 p2 r2 +q1 p3 r2 −p0 q3 r3 +q2 p1 r3 −q1 p2 r3 −q0 p3 r3 )+(p0 r0 q1 +
q0 r0 p1 −r0 q3 p2 +r0 q2 p3 +q0 p0 r1 −q1 p1 r1 −q2 p2 r1 −q3 p3 r1 −p0 q3 r2 +q2 p1 r2 −q1 p2 r2 −q0 p3 r2 +
p0 q2 r3 +q3 p1 r3 +q0 p2 r3 −q1 p3 r3 )ı̂+(p0 r0 q2 +r0 q3 p1 +q0 r0 p2 −r0 q1 p3 +p0 q3 r1 −q2 p1 r1 +q1 p2 r1 +
q0 p3 r1 + q0 p0 r2 − q1 p1 r2 − q2 p2 r2 − q3 p3 r2 − p0 q1 r3 − q0 p1 r3 + q3 p2 r3 − q2 p3 r3 )̂ + (p0 r0 q3 −
r0 q2 p1 +r0 q1 p2 +q0 r0 p3 −p0 q2 r1 −q3 p1 r1 −q0 p2 r1 +q1 p3 r1 +p0 q1 r2 +q0 p1 r2 −q3 p2 r2 +q2 p3 r2 +
q0 p0 r3 −q1 p1 r3 −q2 p2 r3 −q3 p3 r3 )k̂ = (q0 +q1 ı̂+q2 ̂+q3 k̂)[(p0 r0 −p1 r1 −p2 r2 −p3 r3 )+(p1 r0 +
p0 r1 −p3 r2 +p2 r3 ı̂+(p2 r0 +p3 r1 +p0 r2 −p1 r3 )̂+(p3 r0 −p2 r1 +p1 r2 +p0 r3 )k̂] = Q1 (Q2 Q3 )

2.3.3. Norma de un cuaternio


Sea el cuaternio Q = q0 + ı̂q1 + ̂q2 + k̂q3 , se define su norma por

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

2.3.4. Normalización de un cuaternio


Sea Q ∈ H(R) donde kQk 6= 0. Para normalizar Q se define un nuevo cuaternio, Q0 , donde
Q
Q0 = kQk
. La norma de Q0 es uno, es decir kQ0 k = 1.
¯¯ ¯¯
¯¯ Q ¯¯ 0
Proposición 2.4. Para todo Q ∈ H(R), se tiene que kQ k = ¯¯ kQk ¯¯ = 1.
p
Demostración. Sea Q = q0 + ı̂q1 + ̂q2 + k̂q3 , con kQk = q02 + q12 + q22 + q32 .
Tenemos que

¯¯ ¯¯ ¯¯ ¯¯ 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

QQ̄ = q02 + q12 + q22 + q32 (2.7)

Demostración. Con base en la ecuación (2.4), se tiene

QQ = (q02 + q12 + q22 + q32 ) + (−q0 q1 + q1 q0 − q2 q3 + q3 p2 )ı̂


+ (−q0 q2 + q1 q3 + q2 q0 − q3 q1 )̂ + (−q0 q3 − q1 q2 + q2 p1 + q3 p0 )k̂
= q02 + q12 + q22 + q32 . (2.8)

Observació[Link] puede reescribir la norma de un cuaternio teniendo en cuenta (2.8), de


la siguiente forma:
q q
kQk = q02 + q12 + q22 + q32 = QQ (2.9)

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)

Demostración. Sea Q1 , Q2 ∈ H(R), donde Q1 = q0 + q1 ı̂ + q2 ̂ + q3 k̂ y Q2 = p0 + p1 ı̂ +


p2 ̂ + p3 k̂Recuerde que

Q1 Q2 = (q0 p0 − q1 p1 − q2 p2 − q3 p3 ) + (q0 p1 + q1 p0 + q2 p3 − q3 p2 )ı̂


+ (q0 p2 − q1 p3 + q2 p0 + q3 p1 )̂ + (q0 p3 + q1 p2 − q2 p1 + q3 p0 )k̂

Por otro lado

Q1 Q2 = (q0 p0 − q1 p1 − q2 p2 − q3 p3 ) − (q0 p1 + q1 p0 + q2 p3 − q3 p2 )ı̂


− (q0 p2 − q1 p3 + q2 p0 + q3 p1 )̂ − (q0 p3 + q1 p2 − q2 p1 + q3 p0 )k̂
= (q0 p0 − q1 p1 − q2 p2 − q3 p3 ) + (−q0 p1 − q1 p0 − q2 p3 + q3 p2 )ı̂
+ (−q0 p2 + q1 p3 − q2 p0 − q3 p1 )̂ + (−q0 p3 − q1 p2 + q2 p1 − q3 p0 )k̂
= Q2 · Q1 .

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̂.

Observació[Link] una mayor comodidad para el lector, la expresión referida al conjugado


del cuaternio Q será también representado por Q∗ .

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:

kQ1 Q2 k = kQ1 kkQ2 k (2.11)

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.

2.3.5. Inverso de un cuaternio


Aplicando las ideas del conjugado y la norma de cuaternios, se podrá demostrar que todo
cuaternio no nulo tiene inverso multiplicativo, para la cual se desarrollará una fórmula
para esto.

Definición 2.10. Sea Q ∈ H(R). Si se designa el inverso de un cuaternio como Q−1 .


Aplicando la definición general de inverso, se tiene que

Q−1 Q = QQ−1 = 1 + ~0 = 1

Ahora, si se hace el producto a ambos lados de la anterior igualdad por el cuaternio


conjugado Q∗ se obtiene

Q−1 QQ∗ = Q∗ QQ−1 = Q∗ .


p
Dado que QQ∗ = (QQ∗ )2 = kQk2 , se puede reescribir lo anterior como
Q∗
Q−1 = . (2.12)
kQk2

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∗ .

Demostración. La demostración es sencilla y se le deja al lector.

2.4. Consideraciones algebraicas


El interés principal de trabajar con los cuaternios es desarrollar un método para
determinar la orientación de un objeto en el espacio tridimensional [7]. Un objeto en R3

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.

Estos tipos de cuaternios son denominados çuaternios puros". Al considerar Q0 como el


conjunto de todos los cuaternios puros, Q0 ⊂ H(R), se considera a los vectores ~v ∈ R3
como elementos del conjunto Q0 . Por lo anterior se puede definir una correspondencia uno
a uno de la forma

~v ∈ R3 ⇔ v = 0 + ~v ∈ Q0 ⊂ H(R).

El fácil verificar que la adición y multiplicación por un escalar en esta correspondencia


es plausible. Por ejemplo, la suma de cualquier par de vectores en R3 corresponde a la
suma de sus correspondientes cuaternios puros en Q0 .

2.5. Consideraciones geométricas


Sea el cuaternio Q ∈ H(R), donde kQk = 1. Q está expresado por Q = α + ~v donde
α ∈ R y es ~v es la parte vectorial, por el hecho de ser un cuaternio unitario, se tiene que
α2 + kQk2 = 1.
Sin embargo, para cualquier ángulo θ ∈ R se tiene la identidad trigonométrica

cos2 θ + sen2 θ = 1.

En consecuencia del cuaternio unitario y la identidad trigonométrica, se puede establecer


la siguiente relación:

cos2 θ = α2 y sen2 θ = kQk2

38
Para que se cumpla la anterior relación, θ debe satisfacer la restricción: −π < θ < π.

Ahora es conveniente reescribir el cuaternio Q en términos del ángulo θ. Supóngase que


se define un vector unitario ~u, la cual representa la dirección de la parte vectorial del
cuaternio ~v , donde se tiene

~v ~v
~u == .
kvk sen θ
De esta forma se puede escribir Q como:

Q = α + ~v = cos θ + ~u sen θ. (2.13)

Al substituir −θ por θ en un cuaternio expresado por la ecuación (2.13), se obtiene el


cuaternio conjugado de Q, es decir,

cos(−θ) + ~u sen(−θ) = cos θ + ~u sen(−θ) = cos θ − ~u sen θ = Q∗ (2.14)

Usando (2.13) y (2.14) se puede desarrollar interesantes propiedades geométricas para


el producto de cuaternios, las cuales servirán para establecer el operador de rotación en R3 .

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

Q1 = cos α + ~u sen α y Q2 = cos β + ~u sen β

Por el producto de cuaternios definido en (2.4) se obtiene que

Q3 = Q1 Q2 = (cos α + ~u sen α)(cos β + ~u sen β)


= cos α cos β − (~u sen α)(~u sen β) + cos α(~u sen β) + cos β(~u sen α)
+(~u sen α) × (~u sen β) = cos(α + β) + ~u sen(α + β)
= cos γ + ~u sen γ.

Se observa que al multiplicar los cuaternios Q1 y Q2 , se obtiene un tercer cuaternio Q3


con la misma componente vectorial ~u de Q1 y Q2 , además, el ángulo asociado en el
producto corresponde a la suma angular asociado a cada factor, es decir, γ = α + β.

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 (~v ) = QvQ∗ = Q(0 + ~v )Q∗ (2.15)

En esta sección se mostrará dos propiedades algebraicas del operador LQ . La primera de


ellas es que el operador LQ es una transformación lineal y la segunda es que le operador
LQ proporciona rotaciones en R3 .

Proposición 2.8. Sea R3 , el cuaternio Q ∈ H(R), donde Q = q0 + ~q, con kQk = 1 y


v ∈ Q0 , donde v = 0 + ~v con ~v ∈ R3 . La funció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)

Proposición 2.9. Sea Q = q0 + ~q y v = 0 + ~v . El operador LQ se puede reescribir como:

LQ (~v ) = QvQ∗ = (q0 + ~q)(0 + ~v )(q0 − ~q)(q02 − k~qk2 )~v + 2(~q~v )~q + 2q0 (~q × ~v ) (2.17)

Demostración. Multiplicamos los dos primeros cuaternios:

I Qv = (q0 + ~q)(0 + ~v ) = (−~q~v + q0~v + ~q × ~v ) = Q1

Luego se hace el producto de los cuaternios Q1 Q∗

J Q1 Q∗ = (−~q~v + q0~v + ~q × ~v )Q∗ = (−~q~v + q0~v + ~q × ~v )(q0 − ~q) =


(−~q~v q0 + ~q~v q0 + ~q(~q × ~v ) + (~q~v )~q + q02~v + q0 (~q × ~v ) + (q0~v + ~q × ~v ) × (−~q))

40
Se observa del producto anterior que la parte real es cero:

−~q~v q0 + ~q~v q0 + ~q(~q × ~v ) = 0

Utilizando propiedades del producto cruz se obtiene:

(0 + (~q~v )~q + q02~v + q0 (~q × ~v ) + (q0~v + ~q × ~v ) × (−~q)) =


(0 + (~q~v )~q + q02~v + q0 (~q × ~v ) + (q0~v + q0 (~q × ~v ) − k~qk2 )~v + (~q~v )~q =
(q02 − k~qk2 )~v + 2(~q~v )~q + 2q0 (~q × ~v )

La proposición anterior además de establecer una forma alternativa de la expresión


(2.15), también muestra que para cualquier vector en R3 al ser operador por LQ , su
imagen corresponde a otro vector que también pertenece a R3 .

Ahora se prueba que el operador LQ es un operador de rotación espacial.

Proposición 2.10. Para cualquier cuaternio unitario Q = q0 + ~q = cos θ + û sen θ, con


û unitario y cualquier vector ~v ∈ R3 , el operador

LQ (~v ) = QvQ∗ = Q(0 + ~v )Q∗

rota el vector ~v un ángulo 2θ alrededor del vector ~q.

Para realizar la prueba se vale del siguiente razonamiento:

Sea ~q ∈ R3 la parte vectorial de Q. Entonces, dado un vector ~v ∈ R3 , se consideran dos


componentes de ~v , el vector ~a que se encuentra a lo largo del vector ~q, correspondiente a
la proyección ortogonal de ~v sobre ~q y el vector ~n normal a ~q (Ver Figura 2.3).

Entonces, se mostrará que bajo el operador LQ , el vector ~a es invariante (fijo), mientras


que el vector ~n es rotado alrededor de ~q por un ángulo 2θ, donde θ es un ángulo asociado
con el cuaternio Q. Al probar lo anterior se tiene que LQ se puede interpretar como una
rotación en R3 con un ángulo 2θ alrededor de ~q.

Demostración. Sea ~v = ~a + ~n, donde ~a es la proyección ortogonal sobre ~q y el vector ~n es


la componente de ~v la cual es normal a la parte vectorial de Q. Dado que el vector ~a k ~q,

41
q
n

a v

Figura 2.1: Componentes vectoriales de ~v .

entonces ~a es múltiplo de ~q, es decir:

~a = k~q para algún escalar k ∈ R.

Aplicando el operador LQ al vector ~a se obtiene

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.

Lo anterior prueba que ~a es un vector fijo (invariante). Para completar la demostración


hace falta mostrar que el operador LQ rota la componente ~n un ángulo 2θ alrededor de
~q. Para esto se usa la expresión (2.17), la cual se obtiene:

LQ (~n) = (q02 − k~qk2 )~n + 2(~q~n)~q + 2q0 (~q × ~n)


~q
= (q02 − k~qk2 )~n + 2q0 (~q × ~n), Se utiliza le hecho de que û =
k~qk
= (q02 − k~qk2 )~n + 2q0 k~qk(~u × ~n), sea n~⊥ = û × ~n
= (q02 − k~qk2 )~n + 2q0 k~qkn~⊥ . (2.18)

Ahora se probará que n~⊥ y ~n tienen la misma norma (longitud):

kn~⊥ k = k~n × ûk = k~nk · kûksen(θ).

El ángulo que forma los vectores n~⊥ y ~n es π2 , lo cual se tiene que:

¡π¢
k~nk · k ûksen 2
= k~nk.

42
Finalmente, utilizando el hecho de que Q = cos θ + û sen θ, se puede reescribir (2.18) como:

LQ (~n) = cos2 θ − sen2 θ)~n + 2 cos θ sen θn~⊥


= cos(2θ)~n + sen(2θ)n~⊥ .

Lo cual prueba que el operador LQ rota el vector ~n un ángulo 2θ.

En resumen se tiene que LQ (~v ) = LQ (~a)+LQ (~n) = ~a + m


~ donde m = cos(2θ)~n +sen(2θ)n~⊥
(ver Figura 2.4).

n sen 2

2
q n cos 2 n

Figura 2.2: Componentes del vector rotado ~v.

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).

El punto P escrito como cuaternio puro: Qp = (0, 0, 3, 2).

La rotación es efectuada al aplicar el operador Lq (P ), donde se obtiene.

µ√ √ ¶µ ¶µ √ √ ¶ µ ¶
∗ 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

ROBOT KUKA KR120-2Pr

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.

3.1. Cinemática del robot


La cinemática del robot estudia el movimiento de éste respecto a un marco de referencia.
El interés de la cinemática es la descripción analítica del movimiento espacial del
robot como una función del tiempo, y en particular las relaciones entre la posición y
la orientación del extremo final del robot con los valores que toman sus coordenadas
articulares.

Existen dos problemas principales en la resolución de la cinemática de un robot (ver


Figura 4.1): el problema cinemático directo y problema cinemático inverso [4].

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

Figura 3.1: Relación entre cinemática directa e inversa.

3.1.1. El problema cinemático directo


La resolución del problema cinemático directo permite obtener la posición y orientación
que adopta el extremo del robot cuando cada una de las variables que pertenecen a éste
adquieren un valor predeterminado (ver Figura 3.1).

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.

3.1.2. El problema cinemático inverso


El objetivo del problema cinemático inverso consiste en determinar los valores que deben
adoptar las coordenadas articulares del robot para que su extremo se posicione y oriente
según una determinada localización espacial (Ver figura 3.1).

Se han desarrollado algunos procedimiento genéricos que se pueden trabajar de forma


eficiente computacionalmente, de tal forma, que a partir del conocimiento de la cinemática
directa del robot se pueda obtener los valores articulares que posicionan y orientan su
extremo.

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.

Figura 3.2: Robot KUKA KR120-2Pr.

Trayectorias punto a punto (Trayectorias discretas)


Cada articulación cambia su posición inicial a la final sin realizar consideraciones
alguna sobre el estado de las demás articulaciones. Este proceso lo puede realizar por
movimiento eje a eje o movimiento simultáneo de ejes. El movimiento entre los puntos
que se establecen no tiene una trayectoria predeterminada.

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.

3.2.1. Especificaciones técnicas


Las especificaciones técnicas del robot KUKA KR120-2Pr se resumen en la Tabla 1.

Carga útil. 120 kg

Carga adicional brazo. 50 kg

Carga máxima total. 170 kg

Cantidad de ejes. 6

Variante. Foundry

Posición de montaje. Suelo, plataforma de montaje

Repetibilidad. +0,20 mm, -0,20 mm

Unidad de control. KR C2

Peso (sin unidad de control), aprox.. 1465 kg

Datos de los ejes. Campo Software. Velocidad.

Eje 1 (A1). 185º, -185º 102º/s

Eje 2 (A2). +70º /-120º 96º/s

Eje 3 (A3). + 155º /-119º 83º/s

Eje 4 (A4). 350º, -350º 121º/s

Eje 5 (A5). 125º, -125º 124º/s

Eje 6 (A6). 350º, -350º 184º/S

Tabla 1: Especificaciones técnicas robot KUKA KR120-2Pr.

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

Figura 3.3: Dimensiones del robot KUKA KR120-2Pr.

3.3. Modelo cinemático directo


El procedimiento que se seguirá para el desarrollo del modelo cinemático directo del
robot KUKA KR120-2Pr es obtener la expresión que permite conocer las coordenadas
de la posición y orientación del sistema de referencia asociado al extremo del robot S0
con respecto al sistema de referencia asociado a la base S6 (ver Figura 3.4). Ésta relación
será función de las longitudes l1 , l2 , l3 , l4 , l5 , l6 y l7 ( ver Figura 3.3) de los elementos del
robot así como los valores angulares de los ejes θ1 , θ2 , θ3 , θ4 , θ5 y θ6 .

Para obtener la relación entre S0 y S6 se irá convirtiendo sucesivamente S6 ) en S5 ,S5 en


S4 , S4 en S3 , S3 en S2 , S2 en S1 , S1 en S0 , según la siguiente serie de transformaciones:

1. (S6 → S5 ). Desplazamiento de S6 una distancia l7 a lo largo del eje z5 hasta S5 y


rotación con ángulo θ6 alrededor del eje x5 .

2. (S5 → 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 .

49
S 6

S 5

S 4

S 3

S 2

Ejes
S 1
x
y
S 0
z

Figura 3.4: Sistema de referencia del robot KUKA KR120-2Pr.

3. (S4 → S3 ). Desplazamiento de S4 una distancia l5 a lo largo del eje x3 hasta S3 y


rotación con ángulo θ4 alrededor del eje x3 .

4. (S3 → 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 .

5. (S2 → S1 ). Desplazamiento de S2 una distancia l3 a lo largo del eje z1 hasta S1 ,


rotación con ángulo θ2 alrededor del eje y1 .
0
6. (S1 → S0 ). Desplazamiento de S1 una distancia l2 a lo largo del eje z0 , que es el
punto colineal con S1 , desplazamiento l1 a lo largo del eje x1 hasta S0 y rotación
con ángulo θ1 alrededor del eje z0 .

Los desplazamientos quedaran definidos de la siguiente forma D ~ 1 = (l1 , 0, 0), D~2 =


~ 3 = (0, 0, l3 ), D
(0, 0, l2 ), D ~ 4 = (l4 , 0, 0), D
~ 5 = (l5 , 0, 0), D
~ 6 = (l6 , 0, 0) y D
~ 7 = (0, 0, l7 ).
Lo anterior se debe expresar como cuaternios puros para poder efectuar el desarrollo
algebraico: T1 = (0, l1 , 0, 0), T2 = (0, 0, 0, l2 ), T3 = (0, 0, 0, l3 ), T4 = (0, l4 , 0, 0), T5 =
(0, l5 , 0, 0), T6 = (0, l6 , 0, 0) y T7 = (0, 0, 0, l7 ).

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:

sen(α ± β) = sen α cos β ± sen α cos β (3.1)


cos α ± β = cos α cos β ∓ sen α sen β (3.2)

La representación para cos θi y sen θi serán respectivamente Ci , Si , es decir, Ci = cos θi ,


Si = sen θi .

Ciclo 1. Paso del sistema S6 al sistema S5

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 ,

Q6 A1 Q∗6 = (C̈6 , S̈6 , 0, 0)(0, 0, 0, l7 )(C̈6 , −S̈6 , 0, 0)

Nota: El producto de la terna de cuaternios, se realizará primero, la multiplicación de


los dos primeros (contando de izquierda a derecha), dicho producto será identificado por
I. Posteriormente, del resultado anterior, se efectúa la última operación con el cuaternio
restante, donde estará representado el procedimiento por I.

I Q6 A1 = (C̈6 , S̈6 , 0, 0)(0, 0, 0, l7 ) = (0, 0, −l7 S̈6 , l7 C̈6 ) y

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

Q5 A3 Q∗5 = (C̈5 , 0, S̈5 , 0)(0, l6 , −l7 S6 , l7 C6 )(C̈5 , 0, −S̈5 , 0),

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 .

Ciclo 3. Paso del sistema S4 al sistema S3

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 ,

Q4 A5 Q∗4 = (C̈4 , S̈4 , 0, 0)A5 (C̈4 , −S̈4 , 0, 0),

I (C̈4 , S̈4 , 0, 0)A5 = (C̈4 , S̈4 , 0, 0)(0, l7 C6 S5 + l6 C5 + l5 , −l7 S6 , l7 C6 C5 − l6 S5 ) =


(−[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 ) y

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 ,

Q3 A7 Q∗3 = (C̈3 , 0, S̈3 , 0)A7 (C̈3 , 0, −S̈3 , 0),

I Q3 A7 = (C̈3 , 0, S̈3 , 0)A7 =


(−[l7 [−C6 C5 S4 S̈3 − S6 C4 S̈3 ] + l6 S5 S4 S̈3 ], l7 [C6 C5 C4 S̈3 + C6 S5 C̈3 − S6 S4 S̈3 ]
+l6 [C5 C̈3 − S5 C4 S̈3 ] + l5 C̈3 + l4 C̈3 , l7 [−C6 C5 S4 C̈3 − S6 C4 C̈3 ] + l6 S5 S4 C̈3 ,
l7 [C6 C5 C4 C̈3 − C6 S5 S̈3 − S6 S4 C̈3 ] + l6 [−S5 C4 C̈3 − C5 S̈3 ] − l5 S̈3 − l4 S̈3 ) y

J (−[l7 [−C6 C5 S4 S̈3 − S6 C4 S̈3 ] + l6 S5 S4 S̈3 ], l7 [C6 C5 C4 S̈3 + C6 S5 C̈3 − S6 S4 S̈3 ]


+l6 [C5 C̈3 − S5 C4 S̈3 ] + l5 C̈3 + l4 C̈3 , l7 [−C6 C5 S4 C̈3 − S6 C4 C̈3 ] + l6 S5 S4 C̈3 ,
l7 [C6 C5 C4 C̈3 − C6 S5 S̈3 − S6 S4 C̈3 ] + l6 [−S5 C4 C̈3 − C5 S̈3 ] − l5 S̈3 − l4 S̈3 )(C̈3 , 0, −S̈3 , 0) =
(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 ) = A8 .

Ciclo 5. Paso del sistema S2 al sistema S1

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 ,

Q2 A9 Q∗2 = (C̈2 , 0, S̈2 , 0)A9 (C̈2 , 0, −S̈2 , 0),

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

J (−[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 )(C̈2 , 0, −S̈2 , 0) =
(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 , 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 ) = A10 .

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 .

Sean Ψ = 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 .

Sea Ω = l7 [−C6 C5 S4 − S6 C4 ] + l6 S5 S4 .

Sea Φ =7 [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 .

Q1 A11 Q∗1 = (C̈1 , 0, 0, S̈1 )(0, Ψ, Ω, Φ)(C̈1 , 0, 0, −S̈1 ),

I Q1 A11 = (C̈1 , 0, 0, S̈1 )(0, Ψ, Ω, Φ) = (−S̈1 Φ, −S̈1 Ω + C̈1 Ψ, S̈1 Ψ + C̈1 Ω, C̈1 Φ) y

J (−S̈1 Φ, −S̈1 Ω + C̈1 Ψ, S̈1 Ψ + C̈1 Ω, C̈1 Φ)(C̈1 , 0, 0, −S̈1 ) =


(0, C1 Ψ − S1 Ω, C1 Ω + S1 Ψ, Φ) = A12 .

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

Lenguaje de alto nivel.

Entorno para la gestión de códigos, archivos y datos.

Herramienta interactiva para la exploración iterativa, diseño y resolución de proble-


mas.

Funciones matemáticas para álgebra lineal, estadísticas, análisis de Fourier, filtrado,


optimización e integración numérica.

Graficador de funciones en dos y tres dimensiones.

Herramientas para la construcción de interfaces gráficos para el usuario.

Funciones de Matlabr para la integración de algoritmos basados en aplicaciones


externas y otros lenguajes, tales como C, C++, Fortran, Java, COM y Microsoft
Excel.

4.2. Caja de herramientas "Robotics" para Matlabr


Una caja de herramientas (toolbox ) en Matlabr, son archivos de texto con extensión
".M", llamados archivos M-file, que provee funcionalidades que no se encuentran por
defecto en este. Existe una caja de herramientas especializado para robótica llamado
Robotics Toolbox for Matlabr de Peter I. Corke* , que incluye métodos de representación
cinemática y dinámica para manipuladores industriales.

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:

> "quaternion", definición de cuaternios.

> "+", suma de cuaternios.


*
Se puede obtener de forma libre la caja de herramientas en la dirección [Link]

58
> "∗", producto de cuaternios.

> "inv", conjugado de cuaternios.

> "Q.v", parte vectorial del cuaternio.

A continuación se muestra cada comando por medio de un ejemplo.

Ejemplo 4.1 (quaternion, definición de cuaternios). Desde la ventana de comando de


Matlabr, para definir el cuaternio; Q1 = (5, 8, 40, 20):
>> Q1=quaternion([5 8 4020])
Q1 =
5 <8, 40, 20>

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>

Ejemplo 4.3 (*, producto de cuaternios). Desde la ventana de comando de Matlabr,


producto de los cuaternios Q1 = (5, 8, 40, 20) y Q2 = (1, 2, 3, 4):

>> Q4=Q1*Q2
Q4 =
-211 <118, 63, -16>

~ inv. Conjugado de cuaternios:

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

4.3. Código simulación


En esta sección se presenta una explicación completa del código hecho en Matlabr
del modelo cinemático directo del robot KUKA KR120-2PrĖn primera instancia se
establecen las condiciones iniciales para la posición inicial del robot.

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.

% % POSICIÓN INICIAL clear


all
clc
%Vectores unitarios
i = [1, 0, 0]; j = [0, 1, 0]; k = [0, 0, 1]; n = [0, 0, 0]; % RANGOS EJES
% AXIS([XMIN XMAX YMIN YMAX ZMIN ZMAX])
axis([-3800 3800 -3800 3800 0 3700])
plot3(i, n, n,0 m−0 ) hold on

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

> Se establecen los valores angulares en cero.

teta1 = 0; teta2 = 0; teta3 = 0; teta4 = 0; teta5 = 0; teta6 = 0;

> Se hacen las representaciones de las rotaciones.

Q1=quaternion([cos(teta1/2) 0 0 sin(teta1/2)]); CQ1 = inv(Q1);


Q2=quaternion([cos(teta2/2) 0 sin(teta2/2) 0]); CQ2 = inv(Q2);
Q3=quaternion([cos(teta3/2) 0 sin(teta3/2) 0]); CQ3 = inv(Q3);
Q4=quaternion([cos(teta4/2) sin(teta4/2) 0 0 ]); CQ4 = inv(Q4);
Q5=quaternion([cos(teta5/2) 0 sin(teta5/2) 0]); CQ5 = inv(Q54);
Q6=quaternion([cos(teta6/2) sin(teta6/2) 0 0]); CQ6 = inv(Q6);

> Se hacen las representaciones de las 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]);

> A continuación se realiza el modelo desarrollado en el capítulo anterior.

% %CICLO 1. PASO DEL SISTEMA S6 AL SISTEMA S5


A0 = T 7 + T 0;
A1 = Q6 ∗ A0 ∗ CQ6;
% %CICLO 2. PASO DEL SISTEMA S5 AL SISTEMA S4
A2 = A1 + T 6;
A3 = Q5 ∗ A2 ∗ CQ5;

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).

% %ESLABÓN 1 DEL MODELO CINEMÁTICO


B1 = T 2 + T 1;
B2 = Q1 ∗ B1 ∗ CQ1;
% %ESLABÓN 2 DEL MODELO CINEMÁTICO
C1 = Q2 ∗ T 3 ∗ CQ2;
C2 = C1 + T 2 + T 1;
C3 = Q1 ∗ C2 ∗ CQ1;
% %ESLABÓN 3 DEL MODELO CINEMÁTICO
D1 = Q3 ∗ T 4 ∗ CQ3;
D2 = D1 + T 3;
D3 = Q2 ∗ D2 ∗ CQ2;
D4 = D3 + T 2 + T 1;
D5 = Q1 ∗ D4 ∗ CQ1;
% %ESLABÓN 4 DEL MODELO CINEMÁTICO
E1 = Q4 ∗ T 5 ∗ CQ4;
E2 = E1 + T 4;
E3 = Q3 ∗ E2 ∗ CQ3;

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.

V1=B2.v ; V2=C3.v ; V3=D5.v ; V4=E7.v ; V5=F9.v ; V6=A11.v ;

% 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

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])

64
plot3(X4,Y4,Z4,’y-’,’LineWidth’,3)
hold on
axis([-3800 3800 -3800 3800 0 3700])
plot3(X5,Y5,Z5,’k+-’,’LineWidth’,3)

title(’MODELO DE CINEMÁTICA DIRECTA 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

> Al ejecutar esta primera parte del código, se obtiene la Figura 4.1.

MODELO CINEMÁTICO DIRECTO


ROBOT KR 120−2P CUATERNIOS

3000
eje Z

2000

1000

2000
0 2000
0
−2000 −2000
eje Y eje X

Figura 4.1: Posición inicial robot KUKA KR120-2Pr en Matlabr.

> 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(A1 >185 || A1 <-185)


disp(’ Eje 1. El ángulo debe estar entre [-185,185]’)
A1=input(’ Digite el valor del ángulo correspondiente al Eje 1 ’);
A1=round(A1);
if(A1>185 || A1<-185)
disp(’ ’) end end disp(’ ’)

while(A2 > 70 || A2 < −120)


disp(’ Eje 2. El ángulo debe estar entre [-120,70]’)
A2=input(’ Digite el valor del ángulo correspondiente al Eje 2 ’);
A2=round(A2);
if (A2 > 70 || A2 < −120)
disp(’ ’) end end disp(’ ’)

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(’ ’)

while(A4 > 350 || A4 < −350)


disp(’ Eje 4. El ángulo debe estar entre [-350,350]’)
A4=input(’ Digite el valor del ángulo correspondiente al Eje 4 ’);
A4=round(A4);
if (A4 > 350 || A4 < −350)
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(’ ’)

while(A6 > 350 || A6 < −350)


disp(’ Eje 6. El ángulo debe estar entre [-350,350]’)
A6=input(’ Digite el valor del ángulo correspondiente al Eje 6 ’);
A6=round(A6);
if (A6 > 350 || A6 < −350)
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.

Ani=input(’ Simular, presione ENTER ’); % %Orden para iniciar la simulación.

teta1=((A1*pi)/180);
teta2=((A2*pi)/180);
teta3=((A3*pi)/180);
teta4=((A4*pi)/180);
teta5=((A5*pi)/180);
teta6=((A6*pi)/180);

i=[1,0,0]; j=[0,1,0]; k=[0,0,1]; n=[0,0,0]; axis([-3800 3800 -3800 3800 0 3700])

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

Q1=quaternion([cos(teta1/2) 0 0 sin(teta1/2)]); CQ1=inv(Q1);


Q2=quaternion([cos(teta2/2) 0 sin(teta2/2) 0]); CQ2=inv(Q2);
Q3=quaternion([cos(teta3/2) 0 sin(teta3/2) 0]); CQ3=inv(Q3);
Q4=quaternion([cos(teta4/2) sin(teta4/2) 0 0 ]); CQ4=inv(Q4);
Q5=quaternion([cos(teta5/2) 0 sin(teta5/2) 0]); CQ5=inv(Q5);
Q6=quaternion([cos(teta6/2) sin(teta6/2) 0 0]); CQ6=inv(Q6);

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 ;

V1=B2.v ; V2=C3.v ; V3=D5.v ; V4=E7.v ; V5=F9.v ; V6=G11.v ;

X=[0 V1(1)] ; Y=[0 V1(2)] ; Z=[0 V1(3)] ;


X1=[V1(1) V2(1)] ; Y1=[V1(2) V2(2)] ; Z1=[V1(3) V2(3)] ;
X2=[V2(1) V3(1)] ; Y2=[V2(2) V3(2)] ; Z2=[V2(3) V3(3)] ;
X3=[V3(1) V4(1)] ; Y3=[V3(2) V4(2)] ; Z3=[V3(3) V4(3)] ;
X4=[V4(1) V5(1)] ; Y4=[V4(2) V5(2)] ; Z4=[V4(3) V5(3)] ;
X5=[V5(1) V6(1)] ; Y5=[V5(2) V6(2)] ; Z5=[V5(3) V6(3)] ;

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’)

> Al ejecutar el M-file con el código desarrollado, se presenta en la ventana de comandos


de Matlabr lo siguiente:

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

Eje 1. El ángulo debe estar entre [-185,185]


Digite el valor del ángulo correspondiente al Eje 1 |

> 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.

> Mapeo de posición para los ángulos:

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.

3. A1 = 85o , A2 = 65o , A3 = −100o , A4 = 50o ,A5 = 1o , A6 = 280o .

4. A1 = −60o , A2 = −15o , A3 = −45o , A4 = −12o ,A5 = 25o , A6 = 300o .

MODELO CINEMÁTICO DIRECTO


ROBOT KR 120−2P CUATERNIOS

3000
eje z

2000

1000

2000
0 2000
0
−2000 −2000
eje y eje x

Figura 4.2: Mapeos de posiciones 1. del robot KUKA KR120-2Pr.

> Mapeo de posición para los ángulos:

1. A1 = 0o , A2 = 0o , A3 = 0o , A4 = 0o , A5 = 0o , A6 = 0o .

2. A1 = −175o , A2 = 13o , A3 = −47, A4 = −32 ,A5 = −8 , A6 = −1.

3. A1 = 85o , A2 = 70o , A3 = −5o , A4 = 349 ,A5 = 100 , A6 = −15o .

4.5. Interfaz gráfica de usuario


Se estableció una interfaz gráfica del usuario a la programación que se realizó referente
al modelo cinemático directo del robot KUKA KR120-2Pr para lograr un mayor
dinamismo en la interacción del usuario al ejecutar el código. Al correr el código que se
presentó, tiene la desventaja de que se deben manejar tres ventanas individualmente para
realizar las simulaciones, una primera ventana que corresponde al "M-file" que contiene

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

Figura 4.3: Mapeos de posiciones 2. del robot KUKA KR120-2Pr.

el código, la segunda ventana denominada ventana de comandos (Command Windows)


donde se introducen los valores angulares y la última que corresponde a la ventana que
presenta la graficación.

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.

En la Figura 4.3 se muestra la interfaz gráfica de usuario al ser ejecutado.

72
Figura 4.4: GUI robot KUKA KR120-2Pr.

A continuación se presentan la interfaz gráfica de usuario en ejecución con datos ingre-


sados. La Figura 4.5 presenta el movimiento de 100o del eje 1. La Figura 4.6 presenta
el mapeo de movimientos múltiples del eje 1 con valores angulares: 0o , 50o , 100o , 150o ,
185o , −50o , −100o , −150o . En el pantallazo mostrado en la Figura 4.6 se observa en
la parte del ingreso de los valores solamente el último registro realizado. La Figura 4.7
presenta el mapeo de movimientos múltiples del eje 2 con valores angulares: 20o , 40o ,
60o , −20o , −40o , −60o , −80o , −100o . La Figura 4.8 presenta el mapeo de movimientos
múltiples de todos los ejes.

El código de la GUI se presenta en el Anexo 1, página 72.

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.

Además, es de interés el formar profesionales con aptitudes en competencias comunica-


tivas, disciplinares, interpersonales, investigativas y tecnológicas, lo cual incentiva a la
incorporación del trabajo por proyectos en las dinámicas del aula, esto con el propósito
de orientar el aprendizaje de las transformaciones lineales mediante el desarrollo del
modelo cinemático directo del robot KUKA KR120-2Pr.

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.

Una experiencia de este tipo representaría a los participante de los proyectos, un


aprendizaje significativo (Ausubel, 1976).

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.

La presente propuesta de innovación en el aula para la enseñanza y el aprendizaje de


transformaciones lineales en un curso de Álgebra Lineal abre la posibilidad de generar
proyectos de investigación relacionados con la aplicación de la misma.

77
CAPÍTULO 6

RESULTADOS

Se demostró que para el espacio vectorial R3 , los cuaternios Q, Q∗ ∈ H(R) expresado


por (3.9) y ~v ∈ R3 . La función

Lq : R3 → R3
~v → Lq (~v ) = Q(0 + ~v )Q∗

es una transformación lineal y define la rotación del vector ~v un ángulo 2θ alrededor


del vector ~q.

Se desarrolló el modelo cinemático directo del robot KUKA KR120-2Pr utilizando


el operador de transformación de rotación de cuaternios, obteniendo que

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.

Se complementa una propuesta de innovación en el aula para la enseñanza y el


aprendizaje de transformaciones lineales en un curso de álgebra lineal, apoyado en
la ejecución de trabajos por proyectos, en la modelación del robot KUKA KR120-
2Pr empleando cuaternios para luego ser validado utilizando Matlab.r

79
CONCLUSIONES

Los cuaternios se pueden considerar como transformaciones lineales de rotación y


orientación de objetos en el espacio tridimensional.

Los cuaternios es una herramienta alternativa en las representaciones geométricas


de rotaciones de objetos en R3 .

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í.

Los cuaternios permite la representación de rotaciones mediante sólo 4 elementos,


frente a los 9 utilizados por las matrices de transformación homogénea.

Los cuaternios son un campo alterno en el estudio de las transformaciones lineales


que favorece en su conceptualización, dado a su aplicabilidad y la cercanía directa
que posee su álgebra con el álgebra vectorial, puesto que los cuaternios son sus
precursores.

La presente monografía donde esta inmerso la elaboración del modelo cinemático


directo del robot KUKA KR120-2Pr mediante el uso de cuaternios, permite esta-

80
blecerse como prototipo en la ejecución de proyectos de aula en cursos de álgebra
lineal.

La integración de una interfaz gráfica en la validación del modelo cinemático directo


del robot KUKA KR120-2Pr se convierte en una herramienta práctica para la
interacción del usuario con la simulación.

Matlabr es un entorno propicio para la programación del modelo cinemático di-


recto del robot KUKA KR120-2Pr, ya que permite generar archivos ejecutables
(.exe) para ser utilizados en equipos con sistema operativo Microsoft Windows (XP
o superior) y asi convertirse en un software de simulación. Además su arquitectu-
ra posibilita la conversión a otros lenguajes que tienen una estructura similar a
Matlabr como lo son C, C++ y java.

81
ANEXO 1

A continuación se presenta el código completo de la interfaz gráfica presentada en la


sección 5.5.
function varargout = GUIKUKAKR1202P(varargin)

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @GUIKUKAKR1202P_OpeningFcn, ...
'gui_OutputFcn', @GUIKUKAKR1202P_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before GUIKUKAKR1202P is made visible.


function GUIKUKAKR1202P_OpeningFcn(hObject, eventdata, handles, varargin)

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]);

%%%%%%%%OPERADOR ROTACIÓN CUATERNIOS

%%CICLO 1. PASO DEL SISTEMA S6 AL SISTEMA S5%%%


A0=T7+T0;
A1=Q6*A0*CQ6;
%%CICLO 2. PASO DEL SISTEMA S5 AL SISTEMA S4%%%
A2=A1+T6;
A3=Q5*A2*CQ5;
%%CICLO 3. PASO DEL SISTEMA S4 AL SISTEMA S3%%%
A4=A3+T5;
A5=Q4*A4*CQ4;
%%CICLO 4. PASO DEL SISTEMA S3 AL SISTEMA S2%%%
A6=A5+T4;
A7=Q3*A6*CQ3;
%%CICLO 5. PASO DEL SISTEMA S2 AL SISTEMA S1%%%
A8=A7+T3;
A9=Q2*A8*CQ2;
%%CICLO 6. PASO DEL SISTEMA S1 AL SISTEMA S0%%%
A10=A9+T2+T1;
A11=Q1*A10*CQ1;

%%%%%%%%%%%%%%%%%%%%%%%%ESLABONES%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%ESLABON 1 DEL MODELO CINEMATICO


B1=T2+T1;
B2=Q1*B1*CQ1;
%%ESLABON 2 DEL MODELO CINEMATICO
C1=Q2*T3*CQ2;
C2=C1+T2+T1;
C3=Q1*C2*CQ1;
%%ESLABON 3 DEL MODELO CINEMATICO
D1=Q3*T4*CQ3;
D2=D1+T3;
D3=Q2*D2*CQ2;
D4=D3+T2+T1;
D5=Q1*D4*CQ1;
%%ESLABON 4 DEL MODELO CINEMATICO
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;

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;

%%%%%%%%VECTORES DEL GRAFICO


V1=B2.v;
V2=C3.v;
V3=D5.v;
V4=E7.v;
V5=F9.v;
V6=A11.v;

% 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

% Choose default command line output for GUIKUKAKR1202P


[Link] = hObject;

% Update handles structure


guidata(hObject, handles);

% UIWAIT makes GUIKUKAKR1202P wait for user response (see UIRESUME)


% uiwait(handles.figure1);

% --- 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)

% Get default command line output from handles structure


varargout{1} = [Link];

function edit1_Callback(hObject, eventdata, handles)


Val=get(hObject,'String'); %Almacenar valor ingresado
NewVal = str2double(Val); %Transformar a formato double
handles.edit1=NewVal; %Almacenar en identificador
guidata(hObject,handles); %Salvar datos de la aplicación

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

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit2_Callback(hObject, eventdata, handles)

Val=get(hObject,'String'); %Almacenar valor ingresado


NewVal = str2double(Val); %Transformar a formato double
handles.edit2=NewVal; %Almacenar en identificador
guidata(hObject,handles); %Salvar datos de la aplicación

% --- Executes during object creation, after setting all properties.


function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit3_Callback(hObject, eventdata, handles)

Val=get(hObject,'String'); %Almacenar valor ingresado


NewVal = str2double(Val); %Transformar a formato double
handles.edit3=NewVal; %Almacenar en identificador
guidata(hObject,handles); %Salvar datos de la aplicación

% --- Executes during object creation, after setting all properties.


function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

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

% --- Executes during object creation, after setting all properties.


function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit5_Callback(hObject, eventdata, handles)


Val=get(hObject,'String'); %Almacenar valor ingresado
NewVal = str2double(Val); %Transformar a formato double
handles.edit5=NewVal; %Almacenar en identificador
guidata(hObject,handles); %Salvar datos de la aplicación

% --- Executes during object creation, after setting all properties.


function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit6_Callback(hObject, eventdata, handles)


Val=get(hObject,'String'); %Almacenar valor ingresado
NewVal = str2double(Val); %Transformar a formato double
handles.edit6=NewVal; %Almacenar en identificador
guidata(hObject,handles); %Salvar datos de la aplicación

% --- Executes during object creation, after setting all properties.


function edit6_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

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

% --- Executes on button press in borrar.


function borrar_Callback(hObject, eventdata, handles)
% hObject handle to borrar (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

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.

[3] Lozano, E. J. (2002). Cuaternios de Hamilton. 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.

[8] Apostol, T., M. (2002). Calculus. Volumen II. Barcelona: Reverté.

[9] Favieri, A. (2008). Introducción a los cuaterniones.


Obtenida de [Link]

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]

[11] KUKA Robotic. Technical data KR 120-2P.


Obtenida de [Link]

[12] Corke, P. I. (2008). Robotics toolbox for Matlab.


Obtenida de [Link]

[13] González Hernández, J. F. (n.d.) El producto vectorial.


Obtenida de [Link]

[14] Elduque, A. (2004) Otros nùmeros.


Obtenida de [Link]

[15] O’Connor, J. J., Robertson, E. F. (n.d.) Sir William Rowan Hamilton.


Obtenida de [Link]

[16] Williams, K. (2011) BBC british history.


Obtenida de [Link]

[17] Villamizar Morales, J. (2011). Proyecto de innovación pedagógica en el aula para


orientar el aprendizaje de las transformaciones lineales mediante el desarrollo del mo-
delo cinemático directo para el robot kr120-2p°.
R Simposio Internacional de Pedagogía,

Red Colombiana de Pedagogía y Docencia Investigativa. Cartagena, Colombia.

91

Common questions

Con tecnología de IA

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 .

También podría gustarte