0% encontró este documento útil (0 votos)
6 vistas265 páginas

Control de Robots Manipuladores: Notas de Clase

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
0% encontró este documento útil (0 votos)
6 vistas265 páginas

Control de Robots Manipuladores: Notas de Clase

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

Universidad de Sonora

División de Ciencias Exactas y Naturales

Departamento de Investigación en Física

CONTROL DE ROBOTS
MANIPULADORES

Notas de Clase
por
Dr. Luis Arturo García Delgado

12 de febrero de 2025
Índice general

1. Introducción 1
1.1. Modelado Matemático de Robots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1. Representación Simbólica de Robots Manipuladores . . . . . . . . . . . . . . 4
1.1.2. El Espacio de Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3. El Espacio de Estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.4. El Espacio de Trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Robots como Dispositivos Mecánicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1. Clasificación de Manipuladores Robóticos . . . . . . . . . . . . . . . . . . . . 6
1.2.2. Sistemas Robóticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3. Precisión y Repetibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.4. Muñecas y Efectores Finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3. Arreglos Cinemáticos Comunes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.1. Manipulador Articulado (RRR) . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.2. Manipulador Esférico (RRP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.3. Manipulador SCARA (RRP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.4. Manipulador Cilíndrico (RPP) . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.5. Manipulador Caetesiano (PPP) . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.6. Manipulador Paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4. Bosquejo del Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.1. Brazos Manipuladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5. Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2. Movimientos Rígidos 19
2.1. Representación de posiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2. Representación de Rotaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.1. Rotación en el Plano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2. Rotaciones en Tres Dimensiones . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3. Transformaciones Rotacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.1. Transformaciones de Semejanza . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4. Composición de Rotaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.1. Rotación con Respecto al Marco Actual . . . . . . . . . . . . . . . . . . . . . 28
2.4.2. Rotación con Respecto al Marco Fijo . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.3. Reglas para la Composición de Transformaciones Rotacionales . . . . . . . . 31
2.5. Prametrización de Rotaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.1. Ángulos de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.2. Ángulos Roll, Pitch, Yaw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.3. Representación Eje/Ángulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5.4. Cordenadas Exponenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.6. Movimientos Rígidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3
2.6.1. Transformaciones Homogéneas . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.6.2. Coordenadas Exponenciales para Movimientos Rígidos en General . . . . . . 41
2.7. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3. Cinemática Directa 47
3.1. Cadenas Cinemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.2. La Convención de Denavit-Hartenberg . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.1. Aspectos de Existencia y Unicidad . . . . . . . . . . . . . . . . . . . . . . . . 50
3.2.2. Asignación de los Marcos de Coordenadas . . . . . . . . . . . . . . . . . . . . 52
3.3. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.1. Manipulador Codo Plano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.2. Robot cilíndrico de tres eslabones . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3.3. Muñeca Esférica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.4. Manipulador Cilíndrico con Muñeca Esférica . . . . . . . . . . . . . . . . . . 58
3.3.5. Manipulador Stanford . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.6. Manipulador SCARA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4. Cinemática de Velocidad 67
4.1. Velocidad Angular: El Caso de Eje Fijo . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2. Matrices Antisimétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2.1. Propiedades de las Matrices Antisimétricas . . . . . . . . . . . . . . . . . . . 69
4.2.2. La Derivada de la Matriz de Rotación . . . . . . . . . . . . . . . . . . . . . . 70
4.3. Velocidad Angular: El Caso General . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.4. Suma de Velocidades Angulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.5. Velocidad Lineal de un Punto Unido a un Marco Móvil . . . . . . . . . . . . . . . . . 73
4.6. Obtención del Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.6.1. Velocidad Angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.6.2. Velocidad Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.6.3. Combinación de los Jacobianos Lineal y Angular . . . . . . . . . . . . . . . . 76
4.7. La velocidad de la Herramienta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.8. Jacobiano Analítico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.9. Singularida-des . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.9.1. Desacoplamiento de Singularidades . . . . . . . . . . . . . . . . . . . . . . . . 83
4.9.2. Singularidades de la Muñeca . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.9.3. Singularidades en el brazo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.10. Fuerza Estática / Relaciones de Torque . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.11. Inversa de Velocidad y Aceleración . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.12. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

5. Cinemática Inversa 93
5.1. El Problema General de Cinemática Inversa . . . . . . . . . . . . . . . . . . . . . . . 93
5.2. Desacoplamiento Cinemático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.3. Inversa de Posición: un Enfoque Geométrico . . . . . . . . . . . . . . . . . . . . . . . 96
5.3.1. Configuración Esférica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.3.2. Configuración Articulada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.4. Inversa de Orientación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.5. Cinemática Inversa Numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.6. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6. Dinámica 109
6.1. Ecuaciones Euler-Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.1.2. Restricciones Holonómicas y Trabajo Virtual . . . . . . . . . . . . . . . . . . 112
6.1.3. Principio de D’Alembert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.2. Energía Cinética y Potencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.2.1. El Tensor de Inercia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.2.2. Energía Cinética para un Robot de n-Eslabones . . . . . . . . . . . . . . . . . 120
6.2.3. Energía Potencial para un Robot de n-Eslabones . . . . . . . . . . . . . . . . 120
6.3. Ecuaciones de Movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
6.4. Algunas Configuraciones Comunes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
6.5. Propiedades de las Ecuaciones Dinámicas de Robots . . . . . . . . . . . . . . . . . . 130
6.5.1. Antisimetría y Pasividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.5.2. Cotas de la Matriz de Inercia . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.5.3. Linealidad en los Parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.6. Formulación Newton-Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
6.6.1. Linealidad en los Parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.7. Resumen del Capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.8. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

7. Planificación de Rutas y Trayectorias 145


7.1. El Espacio de Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
7.1.1. Representación del Espacio de Configuración . . . . . . . . . . . . . . . . . . 146
7.1.2. Obstáculos en el Espacio de Configuración . . . . . . . . . . . . . . . . . . . . 147
7.1.3. Rutas en el Espacio de Configuración . . . . . . . . . . . . . . . . . . . . . . 149
7.2. Planificación de rutas para Q = R2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
7.2.1. El Grafo de Visibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
7.2.2. El Diagrama Generalizado de Voronoi . . . . . . . . . . . . . . . . . . . . . . 151
7.2.3. Descomposiciones Trapezoidales . . . . . . . . . . . . . . . . . . . . . . . . . 153
7.3. Campos Potenciales Artificiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.3.1. Campos Potenciales Artificiales para Q = Rn . . . . . . . . . . . . . . . . . . 156
7.3.2. Campos Potenciales para Q = ̸ Rn . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.4. Métodos Basados en Muestreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
7.4.1. Mapas de Rutas Probabilísticos (PRM) . . . . . . . . . . . . . . . . . . . . . 167
7.4.2. Árboles Aleatorios de Exploración Rápida (RRTs) . . . . . . . . . . . . . . . 170
7.5. Planificación de Trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
7.5.1. Trayectorias para Movimiento Punto a Punto . . . . . . . . . . . . . . . . . . 172
7.5.2. Trayectorias para Rutas Especificadas mediante Puntos Vía . . . . . . . . . . 179
7.5.3. Resumen del Capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
7.6. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

A. Fundamentos Matemáticos 183


A.1. Trigonometría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
A.1.1. Relaciones trigonométricas básicas . . . . . . . . . . . . . . . . . . . . . . . . 183
A.1.2. Otras relaciones trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . 184
A.1.3. Funciones recíprocas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
A.1.4. Reducción de fórmulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
A.1.5. Identidades trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
A.2. Álgebra Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
A.2.1. Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
6

A.2.2. Diferenciación de vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187


A.2.3. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
A.3. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

B. Prácticas 191
B.1. Práctica 1. Realidad Virtual en MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 191
B.2. Práctica 2: Operaciones con Vectores y Matrices . . . . . . . . . . . . . . . . . . . . 200
B.2.1. Variables Simbólicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
B.2.2. Vectores y Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
B.2.3. Operaciones con Vectores y Matrices . . . . . . . . . . . . . . . . . . . . . . . 201
B.3. Práctica 3. Graficación de Marcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
B.3.1. Matrices de Rotación Básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
B.3.2. Gráfica de Marcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
B.4. Práctica 4. Parametrización de rotaciones . . . . . . . . . . . . . . . . . . . . . . . . 208
B.4.1. Matriz de Rotación mediante Ángulos de Euler . . . . . . . . . . . . . . . . . 208
B.4.2. Matriz de Rotación mediante ángulos Roll-Pitch-Yaw . . . . . . . . . . . . . 210
B.4.3. Matriz de Rotación mediante Representación Eje/Ángulo . . . . . . . . . . . 210
B.4.4. Trabajo para el alumno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
B.5. Práctica 5. Matrices de Transformación Homogéneas . . . . . . . . . . . . . . . . . . 213
B.5.1. Trabajo para el alumno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
B.6. Práctica 6. Cinemática Directa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
B.7. Práctica 7. El Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
B.7.1. Programas para calcular el Jacobiano . . . . . . . . . . . . . . . . . . . . . . 224
B.8. Práctica 8. Cinemática Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
B.9. Práctica 9. Ecuación de Movimiento de Euler-Lagrange . . . . . . . . . . . . . . . . 233
B.9.1. Programas para calcular matriz de inercia . . . . . . . . . . . . . . . . . . . . 234
B.9.2. Programas para calcular la energía potencial . . . . . . . . . . . . . . . . . . 236
B.9.3. Trabajo para el alumno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
[Link]áctica 10. Planificación de Ruta Mediante Campos Potenciales Artificiales . . . . . 239
[Link]áctica 11. Control de Posición de Manipuladores en Modo Par . . . . . . . . . . . 248
B.11.1. Modelo dinámico de un Manipulador Codo Plano . . . . . . . . . . . . . . . . 248
B.11.2. Parámetros físicos del modelo dinámico de un Manipulador Codo Plano . . . 249
B.11.3. Control PD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
B.11.4. Control PD con compensación de gravedad . . . . . . . . . . . . . . . . . . . 249
B.11.5. Programas para simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
B.11.6. Trabajo del alumno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

C. Referencias 259

Luis Arturo García Delgado Control de Robots UNISON, MCE


Capítulo 1

Introducción

La robótica es un campo relativamente joven de la tecnología moderna que cruza los límites de la
ingeniería tradicional. El entendimiento de la complejidad de los robots y sus aplicaciones requiere
conocimiento de ingeniería eléctrica, ingeniería mecánica, ingeniería industrial y de sistemas, ciencia
computacional, economía, y matemáticas. Las nuevas disciplinas de la ingeniería, como ingeniería
en manufactura, ingeniería de aplicaciones, e ingeniería del conocimiento han surgido para enfrentar
la complejidad del campo de la robótica y automatización en la fábricas. Más recientemente, los
robots móviles son incrementalmente importantes para aplicaciones como vehículos autónomos y
exploración planetaria.
Este libro trata sobre los fundamentos de la robótica, incluyendo cinemática, dinámica, pla-
nificación de movimiento, visión por computadora y control. Nuestro objetivo es dar una
introducción a los conceptos más importantes en esos temas como son aplicados a los robots mani-
puladores industriales, robots móviles y otros sistemas mecánicos.
El término robot fue introducido por primera vez por el dramaturgo Checo Karel Čapek en
su obra de 1920 Los Robots Universales de Rossum, la palabra robota es la palabra checa pa-
ra trabajador. Desde entonces el término ha sido ampliamente aplicado a una gran variedad de
aparatos mecánicos, como teleoperadores, vehículos subacuáticos, carros autónomos, drones, etc.
Virtualmente todo lo que opere con cierto grado de autonomía bajo control computacional ha sido
llamado en cierto punto un robot. En este texto nos enfocaremos en dos tipos de robots, a saber
manipuladores industriales y robots móviles.

Manipuladores Industriales
Un manipulador industrial del tipo mostrado en la Figura 1.1 es esencialmente un brazo mecánico
que opera bajo control computacional. Tales aparatos, muy alejados de los robots de ciencia ficción,
son sin embargo sistemas electromecánicos extremadamente complejos cuya descripción analítica
requiere métodos avanzados, presentando muchos retos e interesantes problemas de investigación.
Una definición oficial de tal robot viene del Instituto de Robots de América (RIA):
Un robot es un manipulador multifuncional, reprogramable diseñado para mover material, partes,
herramientas, o aparatos especializados mediante movimientos variables programados para desem-
peñar una variedad de tareas.
El elemento clave en la definición de arriba es la reprogramabilidad, lo cual da a un robot su
utilidad y adaptabilidad. La llamada revolución robótica es, de hecho, parte de la gran revolución
computacional.
Incluso esta definición restringida de un robot tiene varias características que lo hacen atractivo
en un entorno industrial. Entre las ventajas frecuentemente citadas a favor de la introducción de
robots están la disminución de costos laborales, incremento en la precisión y productividad, incre-
mento en la flexibilidad comparado con máquinas especializadas, y más condiciones de trabajo más

1
2

Figura 1.1: Un manipulador industrial de seis-ejes, EL ROBOT KUKA 500 FORTEC. (Foto cortesía
de KUKA Robotics.)

humanas donde los trabajos tediosos, repetitivos o peligrosos son llevados a cabo por robots.
Los manipuladores industriales nacieron del matrimonio de dos tecnologías anteriores: teleope-
radores y máquinas de taladrado de control numérico. Los teleoperadores, o dispositivos maestro-
esclavo, fueron desarrollados durante la segunda guerra mundial para manejar materiales radioac-
tivos. El control numérico por computadora (CNC) fue desarrollado debido a la alta precisión que
se requería en el maquinado de ciertas piezas, tal como componentes de aparatos aereos de alto
desempeño. Los primeros robots industriales combinaban esencialmente los vínculos mecánicos del
teleoperador con la autonomía y programabilidad de las máquinas CNC.
Las primeras aplicaciones exitosas de robots manipuladores generalmente involucraban alguna
clase de transferencia de material, como el moldeo por inyección o el estampado, en los que el robot
simplemente asistía a una prensa para descargar y transferir o apilar las piezas terminadas. Estos
primeros robots podían ser programados para ejecutar una secuencia de movimientos, como moverse
a un lugar A, cerrar una pinza, moverse a un lugar B, etc., pero no tenían capacidades de sensores
externos. Aplicaciones más complejas, tales como soldadura, rectificado, desbarbado y montaje, no
sólo requieren un movimiento más complejo sino también cierta forma de sensado externo como
sensado por visión, táctil, o de fuerza, debido a la creciente interacción del robot con su entorno.
La Figura 1.2 muestra el número estimado de robots industriales en todo el mundo entre 2014
y 2020. En el futuro el mercado para robots médicos y de servicio será posiblemente incluso mayor
que el mercado de robots industriales. Los robots de servicio se definen como robots fuera del
sector de manufactura, tales como robots aspiradora, cortacéspedes, limpiadores de ventanas, robots
repartidores, etc. Tan sólo en 2018, se vendieron más de 30 millones de robots de servicio en todo el
mundo. El mercado futuro para robots asistentes para cuidado de ancianos y otros robots médicos
también será fuerte conforme la población continúe envejeciendo.

Robots Móviles
Los robots móviles abarcan robots accionados por ruedas y orugas, robots caminantes, escala-
dores, acuáticos, que se arrastran y robots voladores. En la Figura 1.3 se muestra un típico robot
móvil rodante. Los robots móviles son usados como robots de tareas domésticas por robots as-
piradoras y cortacéspedes, como robots de campo para vigilancia, búsqueda y rescate, monitoreo
ambiental, forestación y agricultura, y otras aplicaciones. Los vehículos autónomos, por ejemplo
carros y camionetas que se autoconducen, son un área emergente de la robótica con gran interés y
prometedora.
Hay muchas otras aplicaciones de la robótica en áreas donde el uso de humanos es impráctico

Luis Arturo García Delgado Control de Robots UNISON, MCE


3

Figura 1.2: Número estimado de robots industriales en todo el mundo 2014-2020. El mercado de
robots industriales ha ido creciendo alrededor de 14 % anual. (Fuente: Federación Internacional de
Robótica 2018.)

Figura 1.3: Ejemplo de un típico robot móvil, el Fetch series. La figura a la derecha muestra el la
base del robot móvil con un brazo manipulador unido. (Foto cortesía de Fetch Robotics.)

o indeseable. Entre ellas está la exploración submarina y planetaria, recuperación y reparación de


satélites, la desactivación de aparatos explosivos, y el trabajo en ambientes radiactivos. Finalmente,
prótesis, como extremidades artificiales, son en sí mismas aparatos robóticos que requieren métodos
de diseño y análisis similares a aquellos de los manipuladores industriales.

La ciencia de la robótica ha crecido enormemente a lo largo de los últimos veinte años, alimentada
por los rápidos avances en tecnología computacional y de sensores así como los avances teóricos en
control y visión por computadora. Además de los temas listados arriba, la robótica abarca muchas
áreas no cubiertas en este texto como robots caminantes, robots nadadores y voladores, agarre,
inteligencia artificial, arquitecturas computacionales, lenguajes de programación, y diseño asistido
por computadora. De hecho, el nuevo tema de mecatrónica ha surgido a lo largo de las pasadas
cuatro décadas y, en cierto sentido, incluye a la robótica como subdisciplina.

La mecatrónica ha sido definida como la integración sinérgica de la mecánica, electrónica, ciencia


computacional, y control, y no sólo incluye la robótica, sino muchas otras áreas como control de
sistemas automotrices.

UNISON, MCE Control de Robots Luis Arturo García Delgado


4

1.1. Modelado Matemático de Robots


En este texto nos ocuparemos primeramente del desarrollo y análisis de modelos matemáticos pa-
ra robots. En particular, desarrollaremos métodos para representar aspectos geométricos básicos de
la manipulación y locomoción de robots. Equipados con esos modelos matemáticos, desarrollaremos
métodos para planificación y control de movimientos de robots para desarrollar tareas especificadas.
Comenzamos aquí describiendo un poco de la notación básica y la terminología que usaremos en
posteriores capítulos para desarrollar los modelos matemáticos para robots manipuladores y robots
móviles.

1.1.1. Representación Simbólica de Robots Manipuladores


Los robots manipuladores están compuestos por eslabones conectados mediante articulacio-
nes para formar una cadena cinemática. Las articulaciones son típicamente rotatorias (de revolu-
ción) o lineales (prismáticas). Una articulación rotatoria es como una bisagra y permite rotaciones
relativas entre dos eslabones. Una articulación prismática permite un movimiento lineal relativo
entre dos eslabones. Denotamos las articulaciones rotatorias mediante R y las prismáticas mediante
P , y las dibujamos como se muestra en la Figura 1.4. Por ejemplo, un brazo de tres-eslabones con
tres articulaciones rotatorias será referido como un brazo RRR.

Figura 1.4: Representación simbólica de articulaciones de robots. Cada articulación permite un


movimiento de un solo grado de libertad entre eslabones contiguos del manipulador. La articulación
rotatoria (mostrada en 2D y 3D a la izquierda) produce una rotación relativa entre eslabones
contiguos. La articulación prismática (mostrada en 2D y 3D a la derecha) produce un movimiento
lineal o telescópico entre eslabones contiguos.

Cada articulación representa la interconexión entre dos eslabones. Denotamos el eje de rotación
de una articulación rotatoria, o el eje a lo largo del cual se traslada una articulación prismática
mediante zi si la articulación es la interconexión de los eslabones i e i+1. Las variables articulares,
denotadas mediante θ para una articulación rotatoria y d para la articulación prismática, representa
el desplazamiento relativo entre eslabones adyacentes. Haremos esta precisión en el Capítulo 3.

1.1.2. El Espacio de Configuración


Una configuración de un manipulador es una especificación completa de la localización de
cada punto del manipulador. El conjunto de todas las configuraciones es llamado el espacio de
configuración. En el caso de un brazo manipulador, si conocemos los valores de las variables
articulares (i. e., el ángulo de la articulación para articulaciones rotatorias, o el desplazamiento
articular para articulaciones prismáticas), entonces es sencillo inferir la posición de cualquier punto

Luis Arturo García Delgado Control de Robots UNISON, MCE


5

en el manipulador, dado que se supone que los eslabones individuales del manipulador son rígidos
y la base del manipulador se supone fija. Por lo tanto, representaremos una configuración mediante
un conjunto de valores de las variables articulares. Denotaremos este vector de valores mediante q,
y se dice que el robot está en la configuración q cuando las variables articulares toman los valores
q1 , · · · , qn , con qi = θi para una articulación rotatoria y qi = di para una articulación prismática.
Se dice que un objeto tiene n grados de libertad (GDL o DOF) si si configuración puede
ser mínimamente especificada mediante n parámetros. Entonces, el número de GDL es igual a la
dimensión del espacio de configuración. Para un robot manipulador, el número de articulaciones
determina el número de GDL. Un objeto rígido en el espacio tri-dimensional tiene seis GDL: tres
para posicionamiento y tres para orientación. Por lo tanto, un manipulador debería poseer
típicamente al menos seis GDL independientes. Con menos de seis GDL el brazo no puede alcanzar
cada punto en su espacio de trabajo con orientación arbitraria. Ciertas aplicaciones tales como
alcanzar alrededor o detrás de obstáculos pueden requerir más de seis GDL. Un manipulador que
tiene más de seis GDL es referido como un manipulador cinemáticamente redundante.

Figura 1.5: El ligero brazo Kinova Gen3 Ultra, un manipulador redundante de 7-grados-de-libertad.
(Foto cortesía de Kinova, Inc.)

1.1.3. El Espacio de Estado


Una configuración da una descripción instantánea de la geometría de un manipulador, pero no
dice nada acerca de su respuesta dinámica. En contraste, el estado del manipulador es un conjunto
de variables que, junto con una descripción de la dinámica del manipulador y las entradas futuras,
es suficiente para determinar la respuesta del manipulador en tiempo futuro. El espacio de estado
es el conjunto de todos los estados posibles. En el caso de un brazo manipulador, las dinámicas son
Newtonianas, y se pueden especificar mediante la conocida ecuación generalizada F = ma. Entonces,
un estado del manipulador se puede especificar dando los valores de las variables articulares q y
de las velocidades q̇ (la aceleración se relaciona con la derivada de las velocidades articulares). La
dimensión del espacio de estado es entonces 2n si el sistema tiene n GDL.

1.1.4. El Espacio de Trabajo


El espacio de trabajo de un manipulador es el volumen total barrido por el efector final cuando
el manipulador ejecuta todos los posibles movimientos. El espacio de trabajo está restringido por
la geometría del manipulador así como por las restricciones mecánicas de sus articulaciones. Por
ejemplo, una articulación rotatoria puede estar limitada a un movimiento menor que los 360◦ com-
pletos. El espacio de trabajo con frecuencia es desglosado en un espacio de trabajo accesible y
un espacio de trabajo diestro. El espacio de trabajo accesible es el conjunto completo de puntos
alcanzables por el manipulador, mientras que el espacio de trabajo diestro consta de aquellos puntos

UNISON, MCE Control de Robots Luis Arturo García Delgado


6

que el manipulador puede alcanzar con una orientación arbitraria del efector final. Obviamente el
espacio de trabajo diestro es un subconjunto del espacio de trabajo accesible. Los espacios de trabajo
de varios robots se muestran más adelante en este capítulo.

1.2. Robots como Dispositivos Mecánicos


Hay numerosos aspectos físicos de los manipuladores robóticos que no consideraremos necesa-
riamente cuando desarrollemos nuestros modelos matemáticos. Éstos incluyen aspectos mecánicos
(e. g., cómo están las articulaciones realmente construídas), la precisión y repetibilidad, y las he-
rramientas montadas en el efector final. En esta sección, describimos brevemente algunos de éstos.

1.2.1. Clasificación de Manipuladores Robóticos


Los robots manipuladores se pueden clasificar por varios criterios, tal como su fuente de potencia,
refiriéndose a la forma en que son actuadas las articulaciones; su geometría o estructura cinemática;
su método de control; y su área de aplicación prevista. Tal clasificación es útil primariamente para
poder determinar cuál robot es adecuado para una tarea dada. Por ejemplo, un robot hidráulico
no será adecuado para aplicaciones de manejo de comida o limpiar una habitación mientras que un
robot SCARA no es adecuado para pintado de un automóvil. Explicamos esto a mayor detalle más
abajo.

Fuente de energía
La mayoría de los robots son accionados ya sea eléctricamente, hidráulicamente, o neumática-
mente. Los actuadores hidráulicos no tienen rival en su capacidad de velocidad de respuesta y torque
producido. Por lo tanto los robots hidráulicos se usan principalmente para levantar cargas pesadas.
Las desventajas de los robots hidráulicos es que tienden a filtrar líquido hidráulico, requieren mucho
más equipamiento periférico (como bombas, que requieren más mantenimiento), y son ruidosos. Los
robots manejados por motores DC o AC son cada vez más populares ya que son más baratos, limpios
y silenciosos. Los robots neumáticos no son caros y son sencillos pero no se pueden controlar de
manera precisa. Como resultado, los robots neumáticos están limitados en su rango de aplicaciones
y popularidad.

Método de Control
Los robots se clasifican por su método de control en servo y no-servo robots. Los primeros robots
fueron no-servo robots. Estos robots son esencialmente aparatos en lazo abierto cuyos movimientos
están limitados a predeterminados topes mecánicos, y son útiles principalmente para transferencia
de materiales. De hecho, de acuerdo con la definición dada arriba, los robots de tope fijo difícilmente
califican como robots. Los servo robots usan un control computacional en lazo cerrado para determi-
nar su movimiento y son capaces de ser verdaderamente aparatos reprogramables, multifuncionales.
Los robots servo controlados se clasifican además de acuerdo al método que usa el controlador
par guiar el efector final. El tipo de robot más simple en esta categoría es el robot punto-a-punto.
A un robot punto-a-punto se le puede enseñar un conjunto discreto de puntos pero no hay control
de la ruta del efector final entre los puntos enseñados. A dichos robots usualmente se les enseña una
serie de puntos con un teach pendant. Los puntos son entonces almacenados y se reproducen. Los
robots punto-a-punto están limitados en su rango de aplicaciones. Con los robots de trayectorias
continuas, por otro lado, la ruta completa del efector final se puede controlar. Por ejemplo, se le
puede enseñar al efector final del robot para que siga una línea recta entre dos puntos o incluso seguir
un contorno como en un cordón de soldadura. Además, a menudo se puede controlar la velocidad

Luis Arturo García Delgado Control de Robots UNISON, MCE


7

y/o aceleración del efector final. Éstos son los robots más avanzados y requieren el desarrollo del
software y los controladores computacionales más sofisticados.

Área de aplicación

Los robots manipuladores son con frecuencia clasificados por su área de aplicación en robots de
ensamblaje y robots que no son para ensamblaje. Los robots de ensamblaje tienden a ser pequeños y
accionados eléctricamente, con geometrías de revolución o SCARA (descritas más abajo). Las áreas
de aplicación típicas de los de no ensamblaje son en soldadura, pintura en aerosol, manipulación de
materiales y carga y descarga de máquinas.
Una de las principales diferencias entre las aplicaciones de ensamblaje y de no-ensamblaje es el
creciente nivel de precisión requerido en ensamblaje debido a la interacción significativa con objetos
en el espacio de trabajo. Por ejemplo una tarea de ensamblaje puede requerir inserción de piezas
(el llamado problema clava en el agujero) o endentado de engranajes. Un ligero desajuste entre las
partes puede resultar en acuñamiento y atasco, lo que puede causar grandes fuerzas de interacción
y fallas en la tarea. Como resultado, las tareas de ensamblaje so difíciles de lograr sin accesorios y
plantillas especiales, o sin control de las fuerzas de interacción.

Geometría

La mayoría de los manipuladores en el tiempo presente tienen seis o menos GDL. Estos mani-
puladores usualmente se clasifican cinemáticamente en base a las primeras tres articulaciones del
brazo, donde la muñeca es descrita separadamente. La mayoría de estos manipuladores caen dentro
de una de cinco geometrías típicas: articulado (RRR), esférico (RRP), SCARA (RRP), cilíndrico
(RPP), o Cartesiano (PPP). Discutimos cada uno de ellos más abajo en la Sección 1.3.
Cada uno de estos cinco brazos manipuladores es un robot de eslabones seriales. Una sexta
clase distinta de manipuladores consiste en el llamado robot paralelo. En un manipulador paralelo
los eslabones están dispuestos en una cadena cinemática cerrada en lugar de abierta. Aunque en
este capítulo incluimos una breve discusión de los robots paralelos, su cinemática y dinámica son
más difíciles de obtener que aquellas de robots de eslabones seriales y por lo tanto son usualmente
tratados sólo en textos más avanzados.

Figura 1.6: La integración de un brazo mecánico, sensado, computación, interfaz de usuario y herra-
mienta forma un complejo sistema robótico. Muchos sistemas robóticos modernos tienen integradas
características de visión por computadora, sensado de fuerza/torque, y avanzada programación e
interfaz de usuario.

UNISON, MCE Control de Robots Luis Arturo García Delgado


8

1.2.2. Sistemas Robóticos

Un robot manipulador debería ser visto como más que sólo una serie de eslabones mecánicos.
El brazo mecánico es sólo un componente en el sistema robótico en conjunto, ilustrado en la Fi-
gura 1.6, que consta del brazo, fuente de alimentación externa, herramientas del final del brazo,
sensores internos y externos, interfaz computacional, y control por computadora. Incluso el soft-
ware programado debería considerarse como una parte integral del sistema en su conjunto, debido
a que la manera en la cual se programa y controla el robot puede tener un mayor impacto en su
funcionamiento y subsecuente rango de aplicaciones.

1.2.3. Precisión y Repetibilidad

La precisión de un manipulador es una medida de qué tan cerca puede venir el manipulador a un
punto dado dentro a un punto dada dentro de su espacio de trabajo. La repetibilidad es una medida
de qué tan cerca puede un manipulador regresar a un punto enseñado previamente. El principal
método de sensar el error de posición es con encoders de posición localizados en las articulaciones,
ya sea en la flecha del motor que actúa la articulación o en la misma articulación. Típicamente
no hay medición directa de la posición y orientación del efector final. En su lugar uno confía en la
geometría supuesta del manipulador y su rigidez para calcular la posición del efector final a partir de
las posiciones articulares medidas. La precisión es afectada entonces por errores computacionales,
precisión en el maquinado de la construcción del manipulador, efectos de flexibilidad tales como
el doblamiento de los eslabones bajo cargas gravitacionales y otras cargas, juego en los engranes,
y una gran cantidad de otros efectos estáticos y dinámicos. Por esta razón es primordial que los
robots se diseñen con una rigidez extremadamente alta. Sin alta rigidez, la precisión sólo puede
ser mejorada mediante cierta clase de sensado directo de la posición del efector final, tal como con
visión computacional.
Sin embargo, una vez que se le enseña un punto al manipulador, digamos con un teach pendant,
los efectos anteriores se tienen en cuenta y la computadora de control almacena los apropiados
valores del encoder necesarios para volver al punto dado. La repetibilidad por lo tanto es afectada
principalmente por la resolución del controlador. La resolución del controlador significa el incremento
de movimiento más pequeño que el controlador puede sensar. La resolución se calcula como la
distancia total recorrida dividida por 2n, donde n es el número de bits de precisión del encoder. En
este contexto, los ejes lineales, es decir, articulaciones prismáticas, típicamente tienen una resolución
más alta que las articulaciones rotatorias, dado que la distancia recorrida en línea recta por el
extremo de un eje lineal entre dos puntos es menor que la correspondiente longitud en arco trazada
por el extremo de un eslabón rotacional.
Además, como veremos en posteriores capítulos, los ejes rotacionales usualmente resultan en
una gran cantidad de acoplamientos cinemáticos y dinámicos entre los eslabones, con una resultante
acumulación de errores y un problema de control más difícil. Uno se puede preguntar entonces qué
ventajas tienen las articulaciones rotatorias en el diseño de un manipulador. La respuesta reside
principalmente en la creciente destreza y lo compacto de los diseños de articulaciones rotatorias.
Por ejemplo, la Figura 1.7 muestra que para el mismo rango de movimiento, un eslabón rotacional
puede hacerse mucho más pequeño que un eslabón con movimiento lineal.
Entonces, los manipuladores construidos a partir de articulaciones rotatorias ocupan un me-
nor volumen de trabajo que los manipuladores con ejes lineales. Esto incrementa la habilidad del
manipulador para trabajar en el mismo espacio con otros robots, máquinas, y gente. Al mismo
tiempo, los manipuladores con articulaciones rotatorias son más hábiles para maniobrar alrededor
de obstáculos y tienen un rango más amplio de posibles articulaciones.

Luis Arturo García Delgado Control de Robots UNISON, MCE


9

Figura 1.7: El movimiento de eslabón lineal vs. rotacional muestra que una articulación rotatoria
más pequeña puede cubrir la misma distancia d que una articulación prismática más grande. El
extremo de un eslabón prismático puede cubrir una distancia igual a la longitud del eslabón. El
extremo de un eslabón rotacional de longitud a, en contraste, puede cubrir una distancia de 2a al
rotar 180 grados.

1.2.4. Muñecas y Efectores Finales


Las articulaciones de la cadena cinemática entre el brazo y el efector final son conocidas como
la muñeca. Las articulaciones de la muñeca son casi siempre rotatorias. Cada vez es más común
diseñar manipuladores con muñecas esféricas, con lo cual nos referimos a muñecas cuyos tres ejes se
intersecan en un punto común, conocido como el punto central de la muñeca. Dicha muñeca esférica
se muestra en la Figura 1.8.

Figura 1.8: La muñeca esférica. Los ejes de rotación de la muñeca esférica son típicamente denotados
como roll, pitch, y yaw y se intersecan en un punto llamado el punto central de la muñeca.

La muñeca esférica simplifica en gran medida el análisis cinemática, permitiendo efectivamente


desacoplar la posición y orientación del efector final. Típicamente el manipulador poseerá tres GDL
para la posición, que se producen mediante tres o más articulaciones en el brazo. El número de GDL
para la orientación dependerá del número de GDL de la muñeca. Es común encontrar muñecas que
tienen uno, dos, o tres GDL dependiendo de la aplicación . Por ejemplo, el robot SCARA que se
muestra en la Figura 1.14 tiene cuatro GDL: tres para el brazo, y uno para la muñeca, que tiene
sólo rotación sobre el eje-z final.
Los ensambles de brazo y muñeca de un robot se usan principalmente para posicionar la mano,
efector final, y cualquier herramienta que pueda llevar. Es el efector final o herramienta la que
prácticamente realiza la tarea. El tipo de efector final más sencillo es una pinza, como la que
se muestra en la Figura 1.9, la cual usualmente es capaz de sólo dos acciones, abrir y cerrar.
Mientras que esto es adecuado para transferencia de materiales, manejo de ciertas piezas, o sujetar
herramientas sencillas, no es adecuada para otras tareas tales como soldadura, ensamble, rectificado,
etc.
Por lo tanto, se dedica una gran cantidad de investigación al diseño de efectores finales de
propósito especial, así como a herramientas que se pueden cambiar rápidamente según lo dicte la
tarea. Debido a que nos ocupamos del análisis y control del manipulador en sí mismo y no de
las aplicaciones particulares o del efector final, no discutiremos el diseño de efectores finales o del

UNISON, MCE Control de Robots Luis Arturo García Delgado


10

Figura 1.9: Una pinza de dos dedos. (Foto cortesía de Robotiq, Inc.)

estudio de agarre y manipulación. También hay mucha investigación en el desarrollo de manos


antropomórficas como la que se muestra en la Figura 1.10.

Figura 1.10: Mano antropomórfica desarrollada por Barrett Technologies. Dichas pinzas permiten
más destreza y la habilidad de manipular objetos de distintos tamaños y geometrías. (Foto cortesía
de Barrett Technologies.)

1.3. Arreglos Cinemáticos Comunes


Hay muchas formas posibles de construir cadenas cinemáticas usando articulaciones prismáticas
y rotatorias. Sin embargo, en la práctica, sólo se usan comúnmente pocos diseños cinemáticos. Aquí
describimos brevemente los arreglos más típicos.

1.3.1. Manipulador Articulado (RRR)


El manipulador articulado es también llamado un manipulador codo, rotatorio o antropo-
mórfico. El brazo articulado KUKA 500 se muestra en la Figura 1.11. En el diseño antropomórfico
los tres eslabones se designan como el cuerpo, parte superior del brazo y antebrazo, respectivamen-
te, como se muestra en la Figura 1.11. Los ejes articulares se designan como la cintura (z0 ), el
hombro (z1 ), y la muñeca (z2 ). Típicamente, el eje articular z2 es paralelo a z1 y ambos, z1 y z2
son perpendiculares a z0 . El espacio de trabajo del manipulador codo se muestra en la Figura 1.12.

1.3.2. Manipulador Esférico (RRP)


Al reemplazar la tercera articulación, o articulación del codo, en el manipulador rotatorio por
una articulación prismática, se obtiene el manipulador esférico que se muestra en la Figura 1.13.
El término manipulador esférico proviene del hecho de que las coordenadas articulares coincidan
con las coordenadas esféricas del efector final relativas a las coordenadas del marco localizado en la

Luis Arturo García Delgado Control de Robots UNISON, MCE


11

Figura 1.11: Representación simbólica de un manipulador RRR (a la izquierda), y el brazo KUKA


500 (a la derecha), el cual es un ejemplo típico de un manipulador RRR. Los eslabones y las
articulaciones de la configuración RRR son análogos a las articulaciones y extremidades humanas.
(Foto cortesía de KUKA Robotics.)

Figura 1.12: Espacio de trabajo del manipulador codo. El manipulador codo proporciona un espacio
de trabajo más amplo que otros diseños cinemáticos relativos a su tamaño.

articulación del hombro. La Figura 1.13 muestra el Brazo Stanford, uno de los robots esféricos más
bien conocidos.

Figura 1.13: Representación esquemática de un manipulador RRP, referido como un robot esférico
(a la izquierda), y el Brazo Stanford (a la derecha), un ejemplo tempran de brazo esférico. (Foto
cortesía del Coordinated Science Laboratory, University of Illinois at Urbana-Champaign.)

UNISON, MCE Control de Robots Luis Arturo García Delgado


12

1.3.3. Manipulador SCARA (RRP)


El brazo SCARA (de Selective Compliant Articulated Robot for Assembly) mostrado en la Figura
1.14 es un manipulador popular, que, como su nombre lo sugiere, está diseñado para operaciones
de tomar-colocar y ensamble. Aunque el SCARA tiene una estructura RRP, es muy diferente del
manipulador esférico tanto en apariencia como en su rango de aplicaciones. A diferencia del diseño
esférico, que tiene z0 perpendicular a z1 , y z1 perpendicular a z2 , el SCARA tiene z0 , z1 y z2
mutuamente paralelos. La Figura 1.14 muestra la representación simbólica de un brazo SCARA y
del manipulador Yamaha YK-XC.

Figura 1.14: Representación simbólica del manipulador SCARA mostrando una porción de su espacio
de trabajo ( a la izquierda) y el robot SCARA ABB IRB910SC (a la derecha). (Foto cortesía de
ABB.)

1.3.4. Manipulador Cilíndrico (RPP)


El manipulador cilíndrico se muestra en la Figura 1.15. La primera articulación es rotatoria y
produce una rotación alrededor de la basa, mientras que la segunda y tercera articulaciones son
prismáticas. Como su nombre lo sugiere, las variables articulares son las coordenadas cilíndricas del
efector final con respecto a la base.

Figura 1.15: El robot cilíndrico ST Robotics R19 (a la izquierda) y la representación simbólica


mostrando una porción de su espacio de trabajo (a la derecha). Los robots cilíndricos a menudo se
utilizan en tareas de transferencia de materiales. (Foto cortesía de ST Robotics.)

Luis Arturo García Delgado Control de Robots UNISON, MCE


13

1.3.5. Manipulador Caetesiano (PPP)


Un manipulador cuyas tres primeras articulaciones son prismáticas se conoce como manipulador
Cartesiano. Las variables articulares del manipulador Cartesiano son las coordenadas Cartesianas
del efector final con respecto a la base. Como es de esperarse, la descripción cinemática de este
manipulador es la más simple de todos los manipuladores. Los manipuladores cartesianos son útiles
para aplicaciones de ensamblaje de sobremesa y, como robots grúa, para transferencia de material
o carga. La representación simbólica de un robot Cartesiano se muestra en la Figura 1.16.

Figura 1.16: El robot Cartesiano Yamaha YK-XC (a la izquierda) y la representación simbólica


mostrando una porción de su espacio de trabajo (a la derecha). Los robots Cartesianos a menudo
se usan en operaciones de recoger y colocar. (Foto cortesía de Yamaha Robotics.)

1.3.6. Manipulador Paralelo


Un manipulador paralelo es aquel en el cual algún subconjunto de los eslabones forman una
cadena cerrada. Más específicamente, un manipulador paralelo tiene dos o más cadenas cinemáticas
que conectan la base con efector final. La Figura 1.17 muestra el robot ABB IRB360, el cual es
un manipulador paralelo. La cinemática en cadena-cerrada del robot paralelo puede resultar en
una mayor rigidez estructural, y por lo tanto mayor precisión, que los robots de cadena abierta.
La descripción cinemática de los robots paralelos es fundamentalmente diferente de aquella de los
robots de eslabones seriales y por lo tanto requiere métodos de análisis diferentes.

Figura 1.17: El robot paralelo ABB IRB360. Los robots paralelos generalmente tienen mayor rigidez
estructural que los robots de eslabones seriales. (Foto cortesía de ABB.)

1.4. Bosquejo del Texto


El presente libro de texto se divide en cuatro partes. Las primeras tres partes están dedicadas
al estudio de brazos manipuladores. La parte final trata el control de robots subactuados y móviles.

UNISON, MCE Control de Robots Luis Arturo García Delgado


14

1.4.1. Brazos Manipuladores


Podemos usar el simple ejemplo de abajo para ilustrar algunos de los principales problemas
involucrados en el estudio de brazos manipuladores y para dar un vistazo previo de los temas que
se tratan. Una aplicación típica que involucra un manipulador industrial se muestra en la Figura
1.18. El manipulador se muestra con un una herramienta abrasiva que éste debe usar para remover
cierta cantidad de metal de una superficie. Suponga que queremos mover el manipulador desde su
posición home a la posición A, punto desde el cual el robot seguirá el contorno de la superficie S
hasta el punto B, con velocidad constante, mientras mantiene una fuerza prescrita F normal a la
superficie. Al hacer eso el robot cortará o desbastará la superficie de acuerdo con la especificación
predeterminada. Para lograr esto e incluso tareas más generales, debemos resolver cierto número
de problemas. Más abajo damos ejemplos de estos problemas, los cuales serán tratados con mayor
detalle en el texto.

Figura 1.18: Ejemplo de robot plano de dos-eslabones. Cada capítulo del texto discute un concepto
fundamental aplicable a la tarea mostrada.

Capítulo 2: Movimientos Rígidos


El primer problema encontrado es describir tanto la posición de la herramienta y las ubicaciones
A y B (y muy probablemente toda la superficie S) con respecto a un sistema de coordenadas común.
En el Capítulo 2 describimos representaciones de sistemas de coordenadas y transformaciones entre
varios sistemas. Describimos varias formas de representar rotaciones y transformaciones rotaciona-
les e introducimos las llamadas transformaciones homogéneas, las cuales combinan la posición y
orientación en una sola representación matricial.

Capítulo 3: Cinemática directa


Típicamente, el manipulador será capaz de sensar su propia posición de cierta manera utilizando
sensores internos (encoders de posición ubicados en las articulaciones 1 y 2) que ue pueden medir
directamente los ángulos articulares θ1 y θ2 . Por lo tanto también necesitamos expresar las posicio-
nes A y B en términos de estos ángulos articulares. Esto lleva al problema de cinemática directa
estudiado en el Capítulo 3, que consiste en determinar la posición y orientación del efector final o
herramienta en términos de las variables articulares.
Es costumbre establecer un sistema de coordenadas fijo, llamado marco base o del mundo al cual
se referncían todos los objetos incluyendo al manipulador. En este caso establecemos el marco base
de coordenadas o0 x0 y0 en la base del robot, como se muestra en la Figura 1.19. Las coordenadas

Luis Arturo García Delgado Control de Robots UNISON, MCE


15

Figura 1.19: Marcos de coordenadas unidos a los eslabones del robot plano de dos-eslabones. Cada
marco de coordenadas se mueve en conforme su correspondiente eslabón se mueve. La descripción
matemática del movimiento del robot es entonces reducida a una descripción matemática del mo-
vimiento de marcos de coordenadas.

(x, y) de la herramienta están expresadas en este marco de coordenadas como

x = a1 cos θ1 + a2 cos(θ1 + θ2 ) (1.1)


y = a1 sin θ1 + a2 sin(θ1 + θ2 ) (1.2)

en lo cual a1 y a2 son las longitudes de los dos eslabones, respectivamente. También la orientación
del marco de la herramienta relativa al marco base está dada por los cosenos directores de x2 y y2
relativos a los ejes x0 y y0 , es decir,

x2 · x0 = cos(θ1 + θ2 ); x2 · y0 = − sin(θ1 + θ2 )
(1.3)
y2 · x0 = sin(θ1 + θ2 ); y2 · y0 = cos(θ1 + θ2 )

lo cual se puede agrupar en una matriz de rotación


" # " #
x2 · x0 x2 · y0 cos(θ1 + θ2 ) − sin(θ1 + θ2 )
= (1.4)
y2 · x0 y2 · y0 sin(θ1 + θ2 ) cos(θ1 + θ2 )

Las Ecuaciones (1.1), (1.2), y (1.4) son llamadas las ecuaciones de cinemática directa para
este brazo. Para un robot de seis-GDL estas ecuaciones son bastante complicadas y no pueden
escribirse tan fácilmente como las del manipulador de dos-eslabones. El procedimiento general que
discutimos en el Capítulo 3 establecen marcos de coordenadas en cada articulación y le permiten a
uno hacer transformaciones sistemáticamente entre estos marcos usando matrices de transformación.
El procedimiento que usamos es referido como la convención de Denavit−Hartenberg. Enseguida
usamos las coordenadas homogéneas y transformaciones homogéneas, desarrolladas en el
Capítulo 2, para simplificar las transformaciones entre marcos de coordenadas.

Capítulo 4: Cinemática de Velocidad


Para seguir un contorno a una velocidad constante, o a alguna velocidad prescrita, debemos
conocer la relación entre la velocidad de la herramienta y las velocidades articulares. En este caso,
podemos diferenciar las Ecuaciones (1.1) y (1.2) para obtener

ẋ = −a1 sin θ1 · θ̇1 − a2 sin(θ1 + θ2 )(θ̇1 + θ̇2 )


(1.5)
ẏ = a1 cos θ1 · θ̇1 + a2 cos(θ1 + θ2 )(θ̇1 + θ̇2 )

UNISON, MCE Control de Robots Luis Arturo García Delgado


16
" # " #
x θ
Usando la notación vectorial x = y θ = 1 , podemos escribir estas ecuaciones como
y θ2
" #
−a1 sin θ1 − a2 sin(θ1 + θ2 ) −a2 sin(θ1 + θ2 )
x = θ̇ (1.6)
a1 cos θ1 + a2 cos(θ1 + θ2 ) a2 cos(θ1 + θ2 )
= J θ̇
La matriz J definida por la Ecuación (1.6) es llamada el Jacobiano del manipulador y es un objeto
fundamental determinarla para cualquier manipulador. En el Capítulo 4 presentamos un procedi-
miento sistemático para desarrollar el Jacobiano del manipulador.
La determinación de las velocidades articulares a partir de las velocidadades del efector-final es
conceptialmente simple debido a que la relación de velocidad es lineal. Entonces, las velocidades
articulares se encuentran a partir de las velocidades del efector-final vía el la inversa del Jacobiano
θ̇ = J −1 ẋ (1.7)
donde J −1 está dada mediante
" #
−1 1 a2 cos(θ1 + θ2 ) a2 sin(θ1 + θ2 )
J =
a1 a2 sin θ2 −a1 cos θ1 + a2 cos(θ1 + θ2 ) −a1 sin θ1 − a2 sin(θ1 + θ2 )
El determinante del Jacobiano en la Ecuación (1.6) es igual a a1 a2 sin θ2 . Por lo tanto, este Jacobiano
no tiene una inversa cuando θ2 = 0 o θ2 = π , en cuyo caso se dice que el manipulador está en una
configuración singular, como la que se muestra en la Figura 1.20 para θ2 = 0. El determinante de
dichas configuraciones singulares es importante por varias razones. En las configuraciones singulares
hay movimientos infinitesimales que no son realizables; es decir, el efector-final del manipulador no
se puede mover en ciertas direcciones. En el ejemplo de arriba el efector-final no se puede mover en
la dirección x2 positiva cuando θ2 = 0. Las configuraciones singulares también están relacionadas
con la no unicidad de soluciones de la cinemática inversa. Por ejemplo, para una posición dada del
efector-final del manipulador plano de dos-eslabones, hay en general dos posibles soluciones a la
cinemática inversa. Note que una configuración singular separa estas dos soluciones en el sentido
de que el manipulador no puede ir de una a la otra sin pasar por una singularidad. Para muchas
aplicaciones es importante planificar los movimientos del manipulador de tal forma que evada las
configuraciones singulares.

Figura 1.20: Una configuración singular resulta cuando el codo está estirado. En esta configuración
el robot de dos-eslabones tiene sólo un GDL.

Capítulo 5: Cinemática Inversa


Ahora, dados los ángulos articulares θ1 , θ2 podemos determinar las coordenadas del efector-final
x e y a partir de las Ecuaciones (1.1) y (1.2). Para controlar que el robot se mueva a la posición

Luis Arturo García Delgado Control de Robots UNISON, MCE


17

A necesitamos lo inverso; esto es, necesitamos resolver las variables articulares θ1 , θ2 en términos
de las coordenadas x e y de A. Éste es el problema de la cinemática inversa. Debido a que las
ecuaciones de cinemática directa son no lineales, puede que no sea sencillo encontrar una solución, ni
que haya una única solución en general. Podemos ver en el caso del mecanismo plano de dos-eslabones
que puede no haber solución, por ejemplo si las coordenadas (x, y) dadas están fuera del alcance
del manipulador. Si las coordenadas (x, y) dadas están dentro del alcance del manipulador pueden
haber dos soluciones como se muestra en la Figura 1.21, las llamadas configuraciones codo arriba y
codo abajo, o pudiera haber exactamente una solución si el manipulador estuviera completamente
extendido para alcanzar el punto. Pudiera incluso haber un número infinito de soluciones en algunos
casos (Problema 1−19).

Figura 1.21: El robot codo de dos-eslabones tiene dos soluciones a la cinemática inversa, excepto en
las configuraciones singulares, la solución codo arriba y la solución codo abajo.

Figura 1.22: Resolviendo los ángulos articulares de un brazo plano de dos-eslabones.

Considere el diagrama de la Figura 1.22. Usando la ley de los cosenos1 vemos que el ángulo
θ2 está dado por
x2 + y 2 − a21 − a22
cos θ2 = := D (1.8)
2a1 a2
Podemos ahora determinar θ2 como θ2 = cos−1 (D). No obstante, una mejor manera de encontrar
θ2 es notar que si cos(θ2 ) is dada por la Ecuación (1.8), entonces sin(θ2 ) es dado como
p
sin θ2 = ± 1 − D2 (1.9)
1
Ver el Apéndice A.

UNISON, MCE Control de Robots Luis Arturo García Delgado


18

y, por lo tanto, θ2 se puede encontrar mediante



−1 ± 1 − D2
θ2 = tan (1.10)
D
La ventaja de este último enfoque es que las dos soluciones del codo-arriba y codo-abajo son recu-
peradas seleccionando los signos negativo y positivo en la Ecuación (1.10), respectivamente.
Se deja como ejercicio (Problema 1-17) mostrar que θ1 es ahora dado mediante

a2 sin θ2
 
θ1 = tan−1 (y/x) − tan−1 (1.11)
a1 + a2 cos θ2
Note que el ángulo θ1 depende de θ2 . Esto tiene sentido físicamente dado que esperaríamos
requerir un valor diferente de θ1 , dependiendo de qué solución se seleccione par θ2 .

Capítulo 6: Dinámica
En el Capítulo 6 desarrollamos técnicas basadas en la dinámica Lagrangiana para desarrollar
sistemáticamente las ecuaciones de movimiento para robots manipuladores de eslabones seriales. La
obtención de las ecuaciones dinámicas de movimiento para robots no es una tarea sencilla debido al
gran número de grados de libertad y las no linealidades presentes en el sistema. También discutimos
el llamado método recursivo de Newton-Euler para obtener las ecuaciones de movimiento del robot.
La formulación de Newton-Euler es adecuada para computación en tiempo real tanto en simulación
como en aplicaciones de control.

Capítulo 7: Planificación de Rutas y Trayectorias


El problema de control de robots se descompone típicamente de manera jerárquica en tres tareas:
planificación de ruta, generación de trayectoria, y seguimiento de trayectoria. El problema
de planificación de ruta, considerado en el Capítulo 7, consiste en determinar una ruta en el espacio
de tarea (o espacio de configuración) para mover al robot hacia una posición meta mientras evade
colisiones con objetos en su espacio de trabajo. Estas rutas codifican información de posición y
orientación sin consideraciones de tiempo, es decir, sin considerar las velocidades y aceleraciones a
lo largo de las rutas planificadas. El problema de generación de trayectoria, también considerado en
el Capítulo 7, consiste en generar trayectorias de referencia que determinen el historial de tiempo del
manipulador a lo largo de la ruta dada o entre las configuraciones inicial y final. Éstas típicamente
son dadas en el espacio articular como funciones polinomiales del tiempo. Discutimos los esquemas
de interpolación polinomial más comunes utilizados para generar estas trayectorias.

1.5. Problems

Notas y Referencias

Luis Arturo García Delgado Control de Robots UNISON, MCE


Capítulo 2

Movimientos Rígidos

Una gran parte de la cinemática de los robots se basa en el establecimiento de varios marcos
de coordenadas para representar las posiciones y orientaciones de objetos rígidos, y con transfor-
maciones entre dichos marcos de coordenadas. En efecto, la geometría del espacio tridimensional
y de movimientos rígidos juega un rol central en todos los aspectos de la manipulación de robots.
En este capítulo se estudian las operaciones de rotación y traslación, e introduce la noción de
transformaciones homogéneas.
Las transformaciones homogéneas combinan las operaciones de rotación y traslación en una
simple multiplicación matricial, y se usan en el Capítulo 3 para obtener las llamadas ecuaciones
de cinemática ditecta de manipuladores rígidos. Dado que hacemos un extenso uso de la teoría
matricial elemental, el lector pudiera desear revisar el Apéndice B antes de comenzar este capítulo.
Comenzamos por examinar representaciones de puntos y vectores en un espacio Euclideano equi-
pado con múltiples marcos de coordenadas. Siguiendo esto, introducimos el concepto de una matriz
de rotación para representar orientaciones relativas entre marcos de coordenadas. Luego combina-
mos estos dos conceptos para construir matrices de transformación homogéneas, que se pueden usar
para representar simultáneamente la posición y orientación de un marco de coordenadas relativo a
otro. Más aún, las matrices de transformación homogéneas se pueden usar para realizar transfor-
maciones de coordenadas. Dichas transformaciones nos permiten representar varias cantidades en
diferentes marcos de coordenadas, una facilidad que explotaremos frecuentemente en los capítulos
subsecuentes.

2.1. Representación de posiciones


Antes de desarrollar los esquemas de representación para puntos y vectores, es instructivo dis-
tinguir entre dos enfoques fundamentales para el razonamiento geométrico: el enfoque sintético y
el enfoque analítico. En el primero, uno razona directamente acerca de las entidades geométricas
(e.g., puntos o líneas), mientras que en el último, uno representa las entidades usando coordenadas o
ecuaciones, y el razonamiento se realiza mediante manipulaciones algebráicas. El último enfoque re-
quiere la elección de un marco de coordenadas de referencia. Un marco de coordenadas se conforma
mediante un origen (un simple punto en el espacio), y dos o tres ejes de coordenadas ortogonales,
para espacios de dos y tres dimensiones, respectivamente.
Considere la Figura 2.1, la cual muestra dos marcos de coordenadas que difieren en orientación
un ángulo de 45◦ . Usando el enfoque sintético, sin siquiera asignar coordenadas a los puntos o
vectores, uno puede decir que x0 es perpendicular a y0 , o que v1 × v2 define un vector que es
perpendicular al plano que contiene v1 y v2 , en este caso apuntando fuera de la página.
En robótica, uno usa típicamente el razonamiento analítico, dado que las tareas del robot se
definen a menudo usando coordenadas Cartesianas. Por supuesto, para asignar coordenadas es

19
20

Figura 2.1: Dos marcos de coordenadas, un punto p y dos vectores v1 y v2

necesario especificar un marco de coordenadas de referencia. Considere nuevamente la Figura 2.1.


Podemos especificar las coordenadas del punto p ya sea con respecto al marco o0 x0 y0 o al marco
o1 x1 y1 . En el primer caso debemos asignarle a p el vector de coordenadas (5, 6) y en el último caso
(−3, 3). Debido a que el marco de referencia siempre debe ser claro, adoptaremos una notación en
la cual se usa un superíndice para denotar el marco de referencia. Entonces, escribimos
" # " #
5
0 1 −3
p = p =
6 3

Geométricamente, un punto corresponde a un lugar específico en el espacio. Hacemos hincapié


aquí que p es una entidad geométrica, un punto en el espacio, mientras que p0 y p1 son vectores
de coordenadas que representan la ubicación de este punto en el espacio con respecto a los marcos
de coordenadas o0 x0 y0 y o1 x1 y1 , respectivamente. Cuando no pueda surgir confusión, podemos
simplemente referirnos a estos marcos de coordenadas como marco 0 y marco 1, respectivamente.
Dado que el origen de un sistema de coordenadas es sólo un punto en el espacio, podemos asignar
coordenadas que representen la posición del origen de un sistema de coordenadas con respecto a
otro. El la Figura 2.1, por ejemplo, se tiene
" # " #
12 −16
o01 = , o10 =
8 3

Entonces, o01 especifica las coordenadas del punto o1 relativas al marco 0 y o10 especifica las
coordenadas del punto o0 relativas al marco 1. En los casos en donde hay sólo un marco de coorde-
nadas, o el marco de referencia es obvio, se puede omitir el superíndice. Este es un pequeño abuso
de notación, y el lector está advertido de tener en mente la diferencia entre la entidad geométrica
llamada p y algún vector particular de coordenadas particular que se adsigne para representar p. El
primero es independiente de la elección del marcos de coordenadas, mientras el último obviamente
depende de la elección de marcos de coordenadas.
Mientras que un punto corresponde a un lugar específico en el espacio, un vector especifica una
dirección o una magnitud. Los vectores se pueden usar, por ejemplo, para representar desplazamien-
tos o fuerzas. Por lo tanto, mientras que el punto p no es equivalente al vector v1 , el desplazamiento
desde el origen o0 hasta el punto p está dado por el vector v1 . En este texto, usaremos el término
vector para referirnos a lo que algunas veces son llamados vectores libres, es decir, vectores que
no están restringidos a estar localizados en un punto particular del espacio. Bajo esta convención,
está claro que puntos y vectores no son equivalentes, dado que los puntos se refiere a localizaciones
específicas en el espacio, pero un vector libre puede ser movido a alguna localización en el espacio.
Así, dos vectores son iguales si tienen la misma dirección y la misma dirección y la misma magnitud.
Cuando asignamos coordenadas a los vectores, utilizamos la misma convención de notación uti-
lizada para asignar coordenadas a puntos en el espacio. Entonces, v1 y v2 son entidades geométricas

Luis Arturo García Delgado Control de Robots UNISON, MCE


21

que son invariantes con respecto a la elección del marco de coordenadas, pero la representación de
estos vectores por medio de coordenadas depende de la elección del marco de coordenadas. En el
ejemplo de la Figura 2.1, se obtiene
" # " # " # " #
5 8 −6 −3
v10 = , v11 = , v20 = , v21 =
6 2 2 3

Para poder realizar manipulaciones algebráicas utilizando coordenadas, es esencial que todos los
vectores de coordenadas estén definidos con respecto al mismo marco de coordenadas. En el caso de
vectores libres, es suficiente que estén definidos con respecto a marcos de coordenadas “paralelos”,
es decir, marcos cuyos respectivos ejes de coordenadas sean paralelos, dado que sólo se especifica la
magnitud y la dirección y no su posición absoluta en el espacio.
Bajo esta convención, una expresión de la forma v10 + v21 , donde v10 y v21 son los vectores de
la Figura 2.1, no está definida ya que los marcos o0 x0 y0 y o1 x1 y1 no son paralelos. De esta forma,
observamos que no sólo se necesita un sistema de representación que permita a los puntos ser referen-
ciados con respecto a distintos marcos de coordenadas, sino también un mecanismo que nos permita
transformar las coordenadas de puntos de un marco de referencia a otro. Dichas transformaciones
de coordenadas serán el tema en gran parte del resto de este capítulo.

2.2. Representación de Rotaciones


Para poder representar posiciones y orientaciones relativas de un cuerpo rígido con respecto a
otro, asignaremos un marco de coordenadas a cada cuerpo, y entronces especificaremos las relaciones
geométricas entre estos marcos de coordenadas.

2.2.1. Rotación en el Plano


La Figura 2.2 muestra dos marcos de coordenadas, donde el marco o1 x1 y1 es obtenido al rotar
el marco o0 x0 y0 en un ángulo θ. Quizás la forma más obvia de representar la orientación relativa de
estos dos marcos es sólo especificar el ángulo de rotación θ. Hay dos desventajas inmediatas en dicha
representación. Primero, hay una discontinuidad en el mapeo de la orientación relativa del valor de
θ en una vecindad de θ = 0, en particular, para θ = 2π − ϵ, pequeños cambios en la orientación
pueden producir grandes cambios del valor de θ, por ejemplo, una rotación ϵ causa que θ “envuelva”
al cero. Segundo, esta opción de representación no se escala bien en el caso de tres dimensiones.

Figura 2.2: El marco de coordenadas o1 x1 y1 , está orientado un ángulo θ con respecto a o0 x0 y0 .

UNISON, MCE Control de Robots Luis Arturo García Delgado


22

Una forma un poco menos obvia de especificar la orientación es especificar los vectores de
coordenadas de los ejes del marco o1 x1 y1 con respecto al marco de coordenadas o0 x0 y0 :
h i
R10 = x01 |y10

en el cual x01 y y10 son las coordenadas en el marco o0 x0 y0 de los vectores unitarios x1 y y1 , respec-
tivamente. Una matriz en esta forma es llamada matriz de rotación.
En el caso de dos dimensiones, es sencillo calcular los elementos de esta matriz. Como se ilustra
en la Figura 2.2, " # " #
0 cos θ 0 − sin θ
x1 = , y1 =
sin θ cos θ
lo cual da " #
cos θ − sin θ
R10 = (2.1)
sin θ cos θ
Note que hemos continuado usando la convención notacional de que el superíndice denota el
marco de referencia. Así, R10 es una matriz cuyos vectores columna son las coordenadas de los
vectores unitarios sobre los ejes del marco o1 x1 y1 expresados en relación al marco o0 x0 y0 .
Aunque hemos obtenido los elementos de R10 en términos del ángulo θ, no es necesario hacer
esto. Un enfoque alternativo, y uno que escala adecuadamente al caso tridimensional, es construir la
matriz de rotación proyectando los ejes del marco o1 x1 y1 a los ejes coordenados del marco o0 x0 y0 .
Recordando que el producto punto de dos vectores unitarios da la proyección de uno en otro,
podemos obtener " # " #
0 x1 · x0 0 y1 · x0
x1 = , y1 =
x1 · y0 y1 · y0
que pueden ser combinados para obtener la matriz de rotación
" #
x ·x y ·x
R10 = 1 0 1 0
x1 · y0 y1 · y0

De este modo, las columnas de R10 especifican los cosenos direcores de los ejes coordenados de
o1 x1 y1 relativos a los ejes coordenados de o0 x0 y0 . Por ejemplo, la primera columna [x1 · x0 , x1 · y0 ]T
de R10 especifica la dirección de x1 relativa al marco o0 x0 y0 . Note que los términos del lado derecho
de estas ecuaciones están definidos en términos de entidades geométricas, y no en términos de sus
coordenadas. Examinando la Figura 2.2 se puede ver que este método de definición de matrices de
rotación por proyección da los mismos resultados que se habían obtenido en la Ecuación (2.1).
Si se desea describir la orientación del marco o0 x0 y0 con respecto al marco o1 x1 y1 (es decir, que
deseamos ahora usar al marco o1 x1 y1 como marco de referencia), se construye la matriz de la forma
" #
x ·x y ·x
R01 = 0 1 0 1
x0 · y1 y0 · y1

Dado que el producto punto es conmutativo (o sea, xi · yj = yj · xi ), vemos que

R01 = (R10 )T

En un sentido geométrico, la orientación de o0 x0 y0 con respecto al marco o1 x1 y1 es la inversa


de la orientación de o1 x1 y1 con respecto a o0 x0 y0 . Algebráicamente, basándonos en el hecho de que
los ejes de coordenadas siempre son ortogonales, se puede ver fácilmente que

(R10 )T = (R10 )−1

Luis Arturo García Delgado Control de Robots UNISON, MCE


23

Las relaciones de arriba implican que (R10 )T R10 = I y se muestra fácilmente que los vectores
columna de R10 son de longitud unitaria y son mutuamente ortogonales. Entonces R10 es una matriz
ortogonal. También sigue de lo de arriba que det R10 = ±1. Si restringimos los marcos de coordenadas
solamente a los que cumplan la regla de la mano derecha, entonces det(R10 ) = +1.
De manera más general, estas propiedades se extienden a dimensiones más altas, que se pueden
formalizar como el llamado grupo especial ortogonal de orden n.
Definición 2.1. El grupo especial ortogonal de orden n, denotado por SO(n), es el conjunto
de matrices de valores reales de n × n

SO(n) = {R ∈ Rn×n |RT R = RRT = I and det R = +1} (2.2)

Entonces, para cualquier R ∈ SO(n) se mantienen


RT = R−1 ∈ SO(n)

Las columnas (y por lo tanto los renglones) de R son mutuamente ortogonales

Cada columna (y por lo tanto cada renglón) de R es un vector unitario

det(R) = 1
El caso especial, SO(2), respectivamente SO(3), es llamado el grupo de rotación de orden 2,
respectivamente 3.
Para dar mayor intuición geométrica de la noción de la inversa de una matriz de rotación, note
que en el caso bidimensional, la inversa de la matriz de rotación correspondiente a una rotación en
un ángulo θ puede ser calculada simplemente construyendo la matriz de rotación para el ángulo −θ:
" # " # " #T
cos(−θ) − sin(−θ) cos(θ) sin(θ) cos(θ) − sin(θ)
= =
sin(−θ) cos(−θ) − sin(θ) cos(θ) sin(θ) cos(θ)

2.2.2. Rotaciones en Tres Dimensiones


En tres dimensiones, cada eje del marco o1 x1 y1 z1 es proyectado en el marco de coordenadas
o0 x0 y0 z0 . La matriz de rotación resultante R ∈ SO(3) está dada por
 
x1 · x0 y1 · x0 z1 · x0
0
R1 =  x1 · y0 y1 · y0 z1 · y0 
 
x1 · z0 y1 · z0 z1 · z0

Como era el caso para matrices de rotación en dos dimensiones, las matrices en esta forma son
ortogonales, con determinante igual a 1. En este caso, matrices de rotación de 3 × 3 pertenecientes
al grupo SO(3).
Ejemplo 2.1. Suponga que el marco o1 x1 y1 z1 es rotado un ángulo θ sobre el eje z0 , y queremos
encontrar la matriz de transformación resultante R10 . Por convención, la regla de la mano derecha
define el sentido positivo para el ángulo θ para que sea tal que una rotación θ sobre el eje z avance
en sentido de roscado de la mano derecha sobre el eje z positivo. De la Figura 2.3 vemos que

x1 · x0 = cos(θ), y1 · x0 = − sin(θ)
x1 · y0 = sin(θ), y1 · y0 = cos(θ)

y
z0 · z1 = 1

UNISON, MCE Control de Robots Luis Arturo García Delgado


24

Figura 2.3: Rotación sobre z0 un ángulo θ.

mientras que todos los demás productos punto son cero. Entonces, la matriz de rotación R10 tiene
una forma simple, a saber  
cos(θ) − sin(θ) 0
R10 =  sin(θ) cos(θ) 0 (2.3)
 
0 0 1

La matriz de rotación dada en la Ecuación (2.3) es llamada matriz de rotación básica (sobre
el eje z). En este caso es útil usar una notación más descriptiva Rz,θ en vez de R10 para denotar la
matriz. Es sencillo verificar que la matriz de rotación básica Rz,θ tiene las propiedades

Rz,0 = I (2.4)
Rz,θ Rz,ϕ = Rz,θ+ϕ (2.5)

que juntas implican


(Rz,θ )−1 = Rz,−θ (2.6)

Similarmente, las matrices de rotación básicas que representan rotaciones sobre los ejes x y y
están dadas por
 
1 0 0
Rx,θ = 0 cos(θ) − sin(θ) (2.7)
 
0 sin(θ) cos(θ)
 
cos(θ) 0 sin(θ)
Ry,θ =  0 1 0  (2.8)
 
− sin(θ) 0 cos(θ)

las cuales también satisfacen propiedades análogas a las Ecuaciones (2.4)-(2.6).

Ejemplo 2.2. Considere los marcos o0 x0 y0 z0 y o1 x1 y1 z1 que se muestran en la Figura 2.4. Al


proyectar los vectores unitarios x1 , y1 y z1 en x0 , y0 y z0 da las coordenadas de x1 , y1 en el marco
o0 x0 y0 z0 . Vemos que las coordenadas de x1 , y1 y z1 están dadas por
 1   1   
√ √ 0
 2  2
x1 =  0  , y1 =  0  , z1 = 1
 
√1 −1
2

2
0

Luis Arturo García Delgado Control de Robots UNISON, MCE


25

Figura 2.4: Definición de la orientación relativa de dos marcos

La rotación de la matriz R10 que especifica la orientación de o1 x1 y1 z1 relativa a o0 x0 y0 z0 tiene


los anteriores vectores columna, así que
 1
√1

√ 0
0  2 2
R1 =  0 0 1

√1 −1
2

2
0

2.3. Transformaciones rotacionales

Figura 2.5: Marco de coordenadas unido al cuerpo rígido

La Figura 2.5 muestra un objeto rígido S el cual está fijo a un marco o1 x1 y1 z1 . Dadas las
coordenadas p1 del punto p (en otras palabras, dadas las coordenadas de p con respecto al marco
o1 x1 y1 z1 ), se desea determinar las coordenadas de p relativas al marco fijo de referencia o0 x0 y0 z0 .
Las coordenadas p1 = [u, v, w]T satisfacen la ecuación
p = ux1 + vy1 + wz1
De manera similar, se puede obtener una expresión para las coordenadas p0 proyectando el punto
p en los ejes de coordenadas del marco o0 x0 y0 z0 , lo que da
 
p · x0
0
p =  p · y0 
 
p · z0

UNISON, MCE Control de Robots Luis Arturo García Delgado


26

Combinando estas dos ecuaciones se obtiene


 
(ux1 + vy1 + wz1 ) · x0
p0 =  (ux1 + vy1 + wz1 ) · y0 
 
(ux1 + vy1 + wz1 ) · z0
 
ux1 · x0 + vy1 · x0 + wz1 · x0
=  ux1 · y0 + vy1 · y0 + wz1 · y0 
 
ux1 · z0 + vy1 · z0 + wz1 · z0
  
x1 · x0 y1 · x0 z1 · x0 u
=  x1 · y0 y1 · y0 z1 · y0   v 
  
x1 · z0 y1 · z0 z1 · z0 w

Pero la matriz en estas ecuaciones finales es justamente la matriz de rotación R10 , lo cual nos
lleva a
p0 = R10 p1 (2.9)
Entonces, la matriz de rotación R10 no sólo se puede utilizar para representar la orientación de
un marco de coordenadas o1 x1 y1 z1 con respecto al marco o0 x0 y0 z0 , sino también para transformar
las coordenadas de un punto de un marca a otro. Si un punto dado se expresa relativo a o1 x1 y1 z1
por medio de coordenadas p1 , entonces R10 p1 representa el mismo punto expresado en relación al
marco o0 x0 y0 z0 .

Figura 2.6: El bloque en (b) se obtiene rotando el bloque en (a) en π sobre z0

También podemos usar las matrices de rotación para representar movimientos rígidos que co-
rresponden a pura rotación. Considere la Figura 2.6. Una esquina del bloque en la Figura 2.6(a) se
localiza en el punto pa en el espacio. La Figura 2.6(b) muestra el mismo bloque después que ha sido
rotado sobre z0 un ángulo π. En la Figura 2.6(b), la misma esquina del bloque se localiza ahora en el
punto pb en el espacio. Es posible obtener las coordenadas de pb teniendo sólo las coordenadas de pa
y la matriz de rotación que cooresponde a la rotación sobre z0 . Para ver cómo se puede lograr esto,
imagine que un marco de coordenadas está rígidamente unido al bloque de la Figura 2.6(a), de tal
forma que coincide con el marco o0 x0 y0 z0 . Después de rotar un ángulo π, el marco de coordenadas
del bloque, que está rígidamente unido a él, también ha rotado un ángulo π. Si denotamos este
marco ya rotado como o1 x1 y1 z1 , obtenemos
 
−1 0 0
R10 = Rz,π =  0 −1 0
 
0 0 1

En el marco de coordenadas local o1 x1 y1 z1 , el punto pb tiene la representación de coordenadas


p1b . Para obtener sus coordenadas con respecto al marco o0 x0 y0 z0 , debemos aplicar la transformación

Luis Arturo García Delgado Control de Robots UNISON, MCE


27

de coordenadas de la Ecuación (2.9), que da

p0b = Rz,π p1b

Es importante notar que las coordenadas locales p1b de la esquina del bloque no cambian cuando
el bloque rota, dado que están definidas en términos del marco de coordenadas del mismo bloque.
Por lo tanto, cuando el marco del bloque está alineado con el marco de referencia o0 x0 y0 z0 (es decir,
antes de que se realice la rotación), las coordenadas p1b es igual a p0a , ya que antes de realizar la
rotación, el punto pa coincide con la esquina del bloque. Por lo tanto, podemos sustituir p0a en la
ecuación previa para obtener
p0b = Rz,π p0a
Esta ecuación muestra cómo usar la matriz de rotación para representar un movimiento de
rotación. En particular, si el punto pb se obtiene al rotar el punto pa como se ha definido por la
matriz de rotación R, entonces las coordenadas de pb con respecto al marco de referencia están
dadas por
p0b = Rpa
Este mismo enfoque se puede usar para rotar vectores con respecto a un marco de coordenadas,
como se ilustra en el siguiente ejemplo.

Figura 2.7: Rotación de un vector sobre el eje y0

Ejemplo 2.3. El vector v con coordenadas v 0 = [0, 1, 1]T es rotado sobre el eje y0 un ángulo de
π/2, como se muestra en la Figura 2.7. El vector resultante v1 tiene coordenadas expresadas por

v10 = Ry, π2 v 0 (2.10)


    
0 0 1 0 1
=  0 1 0 1 = 1 (2.11)
    
−1 0 0 1 0

Por lo tanto, una tercera interpretación de la matriz de rotación R es como un operador que
actúa sobre vectores en un marco fijo. En otras palabras, en lugar de relacionar las coordenadas
de un vector fijo con respecto a dos marcos de coordenadas diferentes, la Ecuación (2.10) puede
representar las coordenadas en o0 x0 y0 z0 de un vector v1 que se obtiene de un vector v con una
rotación dada.

Como hemos visto, las matrices de rotación pueden jugar diferentes roles. Una matriz de rotación,
ya sea R ∈ SO(3) o R ∈ SO(2), puede ser interpretada de tres maneras distintas:

UNISON, MCE Control de Robots Luis Arturo García Delgado


28

1. Representa una transformación de coordenadas relacionando las coordenadas de un punto p


en dos marcos diferentes.

2. Proporciona la orientación de un marco de coordenadas transformado con respecto a un marco


de coordenadas fijo.

3. Es un operador al tomar un vector y rotarlo para dar un nuevo vector en el mismo sistema de
coordenadas.

2.3.1. Transformaciones de Semejanza


Un marco de coordenadas se define mediante un conjunto de vectores base, por ejemplo,
vectores unitarios sobre los tres ejes de coordenadas. Esto significa que una matriz de rotación,
como una transformación de coordenadas, también pueden ser vista como la definición de un cambio
de base de un marco a otro. La representación matricial de una transformación lineal general es
transformada de un marco a otro utilizando la llamada transformación de semejanza. Por
ejemplo, si A es la representación de la matriz de cierta transformación lineal en o0 x0 y0 z0 y B
es la representación de la misma transformación lineal en o1 x1 y1 z1 , entonces A y B se relacionan
mediante
B = (R10 )−1 AR10 (2.12)
donde R10 es la transformación de coordenadas entre los marcos o1 x1 y1 z1 y o0 x0 y0 z0 . En particular,
si A por sí misma es una rotación, entonces también lo es B, y así el uso de transformaciones de
semejanza permite expresar la misma rotación fácilmente con respecto a otros marcos.

Ejemplo 2.4. De aquí en adelante, cuando sea conveniente utilizaremos la notación abreviada
cθ = cos(θ), sθ = sin(θ) para funciones trigonométricas. Suponga que los marcos o0 x0 y0 z0 y o1 x1 y1 z1
están relacionados por la rotación  
0 0 1
R10 =  0 1 0
 
−1 0 0
Si A = Rz,θ relativo al marco o0 x0 y0 z0 , entonces, relativo al marco o1 x1 y1 z1 tenemos
 
1 0 0
0 −1 0
B = (R1 ) AR1 = 0 cθ sθ 
 
0 −sθ cθ

En otras palabras, B es una matriz de rotación sobre el eje-z0 pero expresada relativa al marco
o1 x1 y1 z1 .

2.4. Composición de rotaciones


En esta sección se estudia la composición de rotaciones. Es importante para los siguientes capí-
tulos que el lector entienda el contenido de esta sección a profundidad antes de seguir avanzando.

2.4.1. Rotación con Respecto al Marco Actual


Recuerde que la matriz R10 de la Ecuación (2.9) representa una transformación rotacional entre
los marcos o0 x0 y0 z0 y o1 x1 y1 z1 . Suponga que ahora queremos añadir un tercer marco de coordenadas
o2 x2 y2 z2 relacionado con los marcos o0 x0 y0 z0 y o1 x1 y1 z1 mediante transformaciones rotacionales.

Luis Arturo García Delgado Control de Robots UNISON, MCE


29

Un punto dado p puede entonces ser representado por medio de coordenadas especificadas con
respecto a uno de los tres marcos: p0 , p1 o p2 . La relación de p entre estas relaciones es

p0 = R10 p1 (2.13)
1
p = R21 p2 (2.14)
0
p = R20 p2 (2.15)

donde cada Rji es una matriz de rotación. Sustituyendo la Ecuación (2.14) en la Ecuación (2.13)
nos da
p0 = R10 R21 p2 (2.16)
Note que R10 y R20 representan rotaciones relativas al marco o0 x0 y0 z0 mientras que R21 representa
una rotación relativa al marco o1 x1 y1 z1 . Comparando las Ecuaciones (2.15) y (2.16) podemos inferir
inmediatamente que
R20 = R10 R21 (2.17)
La Ecuación (2.17) es la ley de composición para transformaciones rotacionales. Establece que,
para transformar las coordenadas de un punto p de su representación p2 en el marco o2 x2 y2 z2 a su
representación p0 en el marco o0 x0 y0 z0 , debemos transformar primero a sus coordenadas p1 en el
marco o1 x1 y1 z1 usando R21 y entonces transformar p1 a p0 usando R10 .
También podemos interpretar la Ecuación (2.17) de la siguiente manera. Suponga que inicialmen-
te los tres marcos de coordenadas coinciden. Primero rotamos el marco o1 x1 y1 z1 relativo a o0 x0 y0 z0
de acuerdo con la transformación R10 . Entonces, con los marcos o1 x1 y1 z1 y o2 x2 y2 z2 coincidentes,
rotamos o2 x2 y2 z2 relativo a o1 x1 y1 z1 de acuerdo con la transformación R21 . El marco resultante,
o2 x2 y2 z2 tiene orientación con respecto a o0 x0 y0 z0 dada por R10 R21 . Llamamos al marco en relación
al cual ocurre la rotación el marco actual.

Figura 2.8: Composición de rotaciones sobre los ejes actuales.

Ejemplo 2.5. Suponga que una matriz de rotación R representa una rotación de ángulo ϕ sobre el
eje-y actual seguida por una rotación de ángulo θ sobre el eje-z actual como se muestra en la Figura
2.8. Entonces, la matriz R está dada por

R = Ry,ϕ Rz,θ (2.18)


  
cϕ 0 sϕ cθ −sθ 0
=  0 1 0  sθ cθ 0
  
−sϕ 0 cϕ 0 0 1
 
cϕ cθ −cϕ sθ sϕ
=  sθ cθ 0
 
−sϕ cθ sϕ sθ cϕ

UNISON, MCE Control de Robots Luis Arturo García Delgado


30

Es importante recordar que el orden en el cual se realiza una secuencia de rotaciones, y conse-
cuentemente el orden en el cual se multiplican las matrices de rotación, es crucial. La razón es que la
rotación, sin importar la posición, no es una cantidad vectorial y por lo tanto las transformaciones
rotacionales por lo general no se conmutan.
Ejemplo 2.6. Suponga que las rotaciones anteriores se realizan en orden opuesto, es decir, primero
una rotación sobre el eje-z actual seguida por una rotación sobre el eje-y actual. Entonces la matriz
de rotación resultante está dada por

R′ = Rz,θ Ry,ϕ (2.19)


  
cθ −sθ 0 cϕ 0 sϕ
= sθ cθ 0  0 1 0
  
0 0 1 −sϕ 0 cϕ
 
cθ cϕ −sθ cθ sϕ
= sθ cϕ cθ sθ sϕ 
 
−sϕ 0 cϕ

Comparando las Ecuaciones (2.18) y (2.19) se puede ver que R ̸= R′ .


2.4.2. Rotación con Respecto al Marco Fijo


Muchas veces se desea realizar una secuencia de rotaciones, cada una sobre un marco fijo de
coordenadas, más que sobre marcos actuales sucesivos. Por ejemplo pudiéramos querer realizar una
rotación sobre x0 seguida por una rotación sobre y0 (y no y1 ). Nos referiremos a o0 x0 y0 z0 como el
marco fijo. En este caso la ley de composición dada en la Ecuación (2.17) no es válida. Resulta
que la ley de composición correcta en este caso es simplemente multiplicar las matrices de rotación
sucesivas en el orden inverso del que se presenta en la Ecuación (2.17). Note que las rotaciones en
sí mismas no se están realizando en sentido opuesto. Más bien se están realizando sobre el marco
fijo en lugar de hacerlo sobre el marco actual.
Para visualizar esto, suponga que tenemos dos marcos o0 x0 y0 z0 y o1 x1 y1 z1 relacionados por
la transformación rotacional R10 . Si R ∈ SO(3) representa una rotación relativa a o0 x0 y0 z0 , sabe-
mos por la Sección 2.3.1 que la representación de R en el marco actual o1 x1 y1 z1 está dada por
(R10 )−1 RR10 . Por lo tanto, aplicando la ley de composición para rotaciones sobre los ejes actuales da

R20 = R10 [(R10 )−1 RR10 ] = RR10 (2.20)

De esta manera, cuando se realiza una rotación R con respecto al marco de coordenadas del
mundo, la matriz de rotación actual es premultiplicada por R para obtener la matriz de rotación
deseada.
Ejemplo 2.7. Rotación sobre ejes fijos
Refiriéndose a la Figura 2.9, suponga que una matriz de rotación R representa una rotación
de ángulo ϕ sobre y0 seguida de una rotación de ángulo θ sobre el eje fijo z0 . La segunda rotación
sobre el eje fijo está dada por Ry,−ϕ Rz,θ Ry,ϕ la cual es la rotación básica sobre el eje-z expresado
relativo al marco o1 x1 y1 z1 utilizando una transformación de semejanza. Por lo tanto, la regla de
composición para transformaciones rotacionales nos da

R = Ry,ϕ [Ry,−ϕ Rz,θ Ry,ϕ ] = Rz,θ Ry,ϕ (2.21)

Note que al compararar la Ecuación (2.21) con la (2.18) obtenemos las mismas matrices de
rotación básicas, pero en orden inverso.

Luis Arturo García Delgado Control de Robots UNISON, MCE


31

Figura 2.9: Composición de rotaciones sobre ejes fijos.

2.4.3. Reglas para la Composición de Transformaciones Rotacionales


Podemos resumir la regla de composición de transformaciones rotacionales mediante la siguiente
receta. Dado un marco fijo o0 x0 y0 z0 y un marco actual o1 x1 y1 z1 , junto con la matriz de rotación R10
que los relaciona, si se obtiene un tercer marco o2 x2 y2 z2 mediante una rotación R realizada relativa
al marco actual entonces postmultiplicamos R10 por R = R12 para obtener

R20 = R10 R21 (2.22)

Si la segunda rotación se va a realizar relativa al marco fijo entonces es tanto confuso como
inapropiado usar la notación R12 para representar esta rotación. Por lo tanto, si representamos la
rotación mediante R, premultiplicamos R10 por R para obtener

R20 = RR10 (2.23)

En cada caso R20 representa la transformación entre los marcos o0 x0 y0 z0 y o2 x2 y2 z2 . El marco


o2 x2 y2 z2 que resulta de la Ecuación (2.22) será diferente de aquel que resulte de la Ecuación (2.23).
Usando la regla anterior para composición de rotaciones, es cosa fácil determinar el resultado
de múltiples transformaciones rotacionales secuenciales.

Ejemplo 2.8. Suponga que R está definida por la siguiente secuencia de rotaciones básicas de orden
especificado:

1. Una rotación de θ sobre el eje-x actual

2. Una rotación de ϕ sobre el eje-z actual

3. Una rotación de α sobre el eje-z fijo

4. Una rotación de β sobre el eje-y actual

5. Una rotación de δ sobre el eje-x fijo

Para determinar el efecto acumulativo de estas rotaciones simplemente empezamos con la pri-
mera rotación Rx,θ y pre- o postmultiplicamos según sea el caso para obtener

R = Rx,δ Rz,α Rx,θ Rz,ϕ Ry,β (2.24)

UNISON, MCE Control de Robots Luis Arturo García Delgado


32

2.5. Prametrización de Rotaciones

En una matriz de transformación rotacional R ∈ SO(3), los nueve elementos rij no son cantidades
independientes. En realidad un cuerpo rígido posee a lo mucho tres grados de libertad rotacionales,
y por consiguiente se requieren al máximo tres cantidades para especificar su orientación. Esto se
puede ver fácilmente examinando las restricciones que gobiernan las matrices de rotación en SO(3):

X
2
rij = 1, j ∈ {1, 2, 3} (2.25)
i
r1i r1j + r2i r2j + r3i r3j = 0, i ̸= j (2.26)

La Ecuación (2.25) es consecuencia del hecho de que las columnas de una matriz de rotación son
vectores unitarios y la Ecuación (2.26) resulta del hecho de que las columnas de una matriz de rota-
ción son mutuamente ortogonales. Estas restricciones juntas definen seis ecuaciones independientes
con nueve incógnitas, lo que implica que hay 3 variables libres.
En esta sección se estudiarán tres formas de representar una rotación arbitraria usando sólo tres
cantidades independientes: la representación de ángulos de Euler, la representación balanceo,
cabeceo, guiñada o (roll, pitch, yaw), y la representación ejes-ángulo.

2.5.1. Ángulos de Euler

Considere el marco fijo de coordenadas o0 x0 y0 z0 y el marco rotado o1 x1 y1 z1 que se muestran


en la Figura 2.10. Se puede especificar la orientación del marco o1 x1 y1 z1 relativa al marco o0 x0 y0 z0
por medio de tres ángulos (ϕ, θ, ψ), conocidos como ángulos de Euler, y obtenidos mediante tres
rotaciones sucesivas de la siguiente manera: primero rotar sobre el eje-z un ángulo ϕ. Después rotar
sobre el eje y actual un ángulo θ. Finalmente rotar sobre el eje-z actual en un ángulo ψ. En la
Figura 2.10, el marco oa xa ya za representa el nuevo marco de coordenadas después de la rotación ϕ,
el marco ob xb yb zb representa el nuevo marco de coordenadas después de la rotación θ, y el marco
o1 x1 y1 z1 representa la rotación final, después de la rotación ψ. Los marcos oa xa ya za y ob xb yb zb se
muestran en la figura sólo para ayudar a visualizar las rotaciones.

Figura 2.10: Representación de ángulos de Euler

En términos de matrices de rotaciones básicas la transformación rotacional resultante se puede

Luis Arturo García Delgado Control de Robots UNISON, MCE


33

generar mediante el producto

RZY Z = Rz,ϕ Ry,θ Rz,ψ


   
cϕ −sϕ 0 cθ 0 sθ cψ −sψ 0
= sϕ cϕ 0  0 1 0  sψ cψ 0
   
0 0 1 −sθ 0 cθ 0 0 1
 
cϕ cθ cψ − sϕ sψ −cϕ cθ sψ − sϕ cψ cϕ sθ
= sϕ cθ cψ + cϕ sψ −sϕ cθ sψ + cϕ cψ sϕ sθ  (2.27)
 
−sθ cψ sθ sψ cθ

La matriz RZY Z de la Ecuación (B.1) es llamada la Transformación de Ángulos de Euler-


ZY Z.
El problema más importante y más difícil es el siguiente: Dada una matriz R ∈ SO(3)
 
r11 r12 r13
R = r21 r22 r23 
 
r31 r32 r33

determinar el conjunto de ángulos de Euler ϕ, θ y ψ tal que satisfagan


 
cϕ cθ cψ − sϕ sψ −cϕ cθ sψ − sϕ cψ cϕ sθ
R = sϕ cθ cψ + cϕ sψ −sϕ cθ sψ + cϕ cψ sϕ sθ  (2.28)
 
−sθ cψ sθ sψ cθ

Este problema será importante cuando se aborde el problema de cinemática inversa para mani-
puladores.
Para encontrar una solución a este problema lo separamos en 2 casos. Primero, suponga que
r13 y r23 no son ambos cero. Entonces de la Ecuación (2.28) deducimos que sθ ̸= 0, y por lo tanto
q ambos cero. Si r13 y r23 no son ambos cero, entonces r33 ̸= ±1, y se tiene
tampoco r31 ni r32 son
2 , de modo que
que cθ = r33 , sθ = ± 1 − r33
q
2 ,r )
θ = atan2( 1 − r33 (2.29)
33

o q
2 ,r )
θ = atan2(− 1 − r33 (2.30)
33

Si seleccionamos para θ la Ecuación (2.29), entonces sθ > 0, y

ϕ = atan2(r23 , r13 ) (2.31)


ψ = atan2(r32 , −r31 ) (2.32)

Si seleccionamos para θ la Ecuación (2.30), entonces sθ < 0, y

ϕ = atan2(−r23 , −r13 ) (2.33)


ψ = atan2(−r32 , −r31 ) (2.34)

Por lo tanto, hay dos soluciones dependiendo del signo seleccionado para θ.
Segundo, si r13 = r23 = 0, entonces r33 = ±1, y también r31 = r32 = 0. Entonces R tiene la
forma  
r11 r12 0
R = r21 r22 0  (2.35)
 
0 0 ±1

UNISON, MCE Control de Robots Luis Arturo García Delgado


34

Si r33 = 1, entonces cθ = 1 y sθ = 0, tal que θ = 0. En este caso, la Ecuación (2.28) se convierte


en
   
cϕ cψ − sϕ sψ −cϕ sψ − sϕ cψ 0 cϕ+ψ −sϕ+ψ 0
sϕ cψ + cϕ sψ −sϕ sψ + cϕ cψ 0 = sϕ+ψ cϕ+ψ 0
   
0 0 1 0 0 1

Entonces la suma ϕ + ψ se puede determinar como

ϕ + ψ = atan2(r21 , r11 ) = atan2(−r12 , r22 ) (2.36)

Dado que en este caso sólo se puede determinar la suma ϕ + ψ, existen infinitas soluciones. En
este caso, podemos tomar ϕ = 0 por convención.
Si r33 = −1, entonces cθ = −1 y sθ = 0, tal que θ = π. En este caso, la Ecuación (2.28) se
convierte en
   
−cϕ−ψ −sϕ−ψ 0 r11 r12 0
−sϕ−ψ cϕ−ψ 0  = r21 r22 0  (2.37)
   
0 0 −1 0 0 −1

La solución es entonces
ϕ − ψ = atan2(−r21 , −r11 ) (2.38)

Como en el caso anteror existen infinitas soluciones.

2.5.2. Ángulos Roll, Pitch, Yaw

Una matriz de rotación R también puede ser descrita como el producto de rotaciones sucesivas
sobre los ejes de coordenadas principales x0 , y0 , y z0 tomados en un orden específico. Estas rotaciones
definen los ángulos roll, pitch, y yaw, los cules se denotan también por ϕ, θ, ψ, como se observa
en la Figura 2.11.

Figura 2.11: Representación de ángulos de Roll, Pitch, Yaw

Especificamos el orden de la rotación como x − y − z, es decir, primero un giro roll sobre x0 en


un ángulo ϕ, enseguida un giro pitch sobre y0 un ángulo θ, y finalmente yaw sobre z0 un ángulo ψ.
Dado que las rotaciones sucesivas están relacionadas con el marco fijo, la matriz de transformación
resultante está dada por

Luis Arturo García Delgado Control de Robots UNISON, MCE


35

R = Rz,ψ Ry,θ Rx,ϕ


   
cψ −sψ 0 cθ 0 sθ 1 0 0
= sψ cψ 0  0 1 0  0 cϕ −sϕ 
   
0 0 1 −sθ 0 cθ 0 sϕ cϕ
 
cψ cθ cψ sθ sϕ − sψ cϕ cψ sθ cϕ + sψ sϕ
= sψ cθ sψ sθ sϕ + cψ cϕ sψ sθ cϕ − cψ sϕ  (2.39)
 
−sθ cθ sϕ cθ cϕ
En lugar de roll-pitch-yaw relativos a los marcos fijos, también se puede interpretar la trans-
formación como yaw-pitch-roll, en ese orden, cada uno tomado con respecto al marco actual. El
resultado final es la misma matriz que en la Ecuación (2.39).
Los tres ángulos ϕ, θ y ψ se pueden obtener a partir de una matriz de rotación utilizando un
método similar al utilizado para los ángulos de Euler.

2.5.3. Representación Eje/Ángulo


Las rotaciones no siempre se realizan sobre los ejes de coordenadas principales. A menudo nos
interesa una rotación sobre un eje arbitrario en el espacio. Esto nos proporciona tanto una forma
conveniente de describir rotaciones, como una parametrización alternativa para las matrices de
rotación. Sea k = [kx , ky , kz ]T , expresado en el marco o0 x0 y0 z0 , un vector unitario que define un eje.
Se desea encontrar la matriz de rotación Rk,θ que representa una rotación sobre este eje.
Hay muchas formas en las cuales se puede determinar la matriz Rk,θ . Una de ellas es notar que
las transformación rotacional R = Rz,α Ry,β alineará el eje-z del mundo con el vector k. Por lo tanto,
una rotación sobre el eje k se puede calcular usando la transformación de semejanza como

Rk,θ = RRz,θ R−1 (2.40)


= Rz,α Ry,β Rz,θ Ry,−β Rz,−α (2.41)

Figura 2.12: Rotación sobre un eje arbitrario

De la Figura 2.12 vemos que


ky kx
sin α = q cos α = q (2.42)
kx2 + ky2 kx2 + ky2
q
sin β = kx2 + ky2 cos β = kz (2.43)

UNISON, MCE Control de Robots Luis Arturo García Delgado


36

Note que las dos ecuaciones finales resultan del hecho de que k es un vector unitario. Sustituyendo
las Ecuaciones (2.42) y (2.43) en la Ecuación (2.41), obtenemos tras hacer algunos cálculos
 
kx2 vθ + cθ kx ky vθ − kz sθ kx kz vθ + ky sθ
Rk,θ = kx ky vθ + kz sθ ky2 vθ + cθ ky kz vθ − kx sθ  (2.44)
 
kx kz vθ − ky sθ ky kz vθ + kx sθ 2
kz vθ + cθ

donde vθ = vers θ = 1 − cθ .
De hecho, una matriz de rotación R ∈ SO(3) puede ser representada por una simple rotación
respecto a un eje indicado en el espacio en un cierto ángulo,

R = Rk,θ (2.45)

donde k es un vector unitario que define el eje de rotación, y θ es el ángulo de rotación respecto
del eje k. El par (k, θ) es llamado representación eje/ángulo de R. Dada una matriz de rotación
arbitraria R con componentes rij , el ángulo θ equivalente y el eje k equivalente son dados por las
expresiones
Tr(R) − 1
 
θ = cos−1
2
r + r22 + r33 − 1
 
11
= cos−1
2
donde Tr(R) es la traza de la matriz R, y
 
r − r23
1  32
k= r13 − r31  (2.46)

2sθ
r21 − r12

Estas ecuaciones se obtuvieron por manipulación directa de los elementos de la matriz de la


Ecuación (2.44). La representación eje/ángulo no es única, dado que una rotación de −θ respecto a
−k es la misma rotación que θ respecto a k, es decir

Rk,θ = R−k,−θ (2.47)

Si θ = 0, entonces R es la matriz identidad y el eje de rotación está indefinido.


Ejemplo 2.9. Suponga que R es generada por una rotación de 90◦ respecto z0 seguido de una
rotación de 30◦ respecto y0 seguido por una rotación de 60◦ respecto x0 . Entonces

R = Rx,60 Ry,30 Rz,90 (2.48)


 √ 
0 − √23 1
2
 
=  1
 √2 − 43 − 3
√4 
3 1 3
2 4 4

Se observa que Tr(R) = 0, entonces el ángulo θ está dado por


−1
 
θ = cos−1 = 120 ◦ (2.49)
2
El eje equivalente viene dado por la Ecuación (2.46) como
T
1 1 1 1 1

k= √ , √ − , √ + (2.50)
3 2 3 2 2 3 2

Luis Arturo García Delgado Control de Robots UNISON, MCE


37

La representación eje/ángulo de arriba caracteriza una rotación dada mediante cuatro cantida-
des, a saber, 3 componentes del eje k equivalente y el ángulo θ equivalente. Sin embargo, puesto
que el eje k equivalente es dado como un vector unitario, sólo 2 de sus componentes son indepen-
dientes. El tercero es restringido por la condición de que k es de magnitud unitaria. Por lo tanto,
sólo se requieren tres cantidades independientes en esta representación de una rotación R. Podemos
representar el eje/ángulo equivalente mediante un simple vector r como

r = [rx , ry , rz ]T = [θkx , θky , θkz ]T (2.51)

Note que, ya que k es un vector unitario, la longitud del vector r es el ángulo θ equivalente y la
dirección de r es el eje k equivalente.
Hay que ser muy cuidadosos en notar que la representación en la Ecuación (2.51) no significa que
dos representaciones eje/ángulo se puedan combinar usando las reglas estándar de álgebra vectorial,
ya que si lo hiciéramos esto implicarís que las rotaciones son conmutativas, lo cual hemos visto que
por lo general no es cierto.

2.5.4. Cordenadas Exponenciales


En esta sección presentamos las llamadas coordenadas exponenciales y se da una descripción
alternativa de la transformación eje-ángulo (2.46). Mostramos arriba en la Sección 2.5.3 que cual-
quier matriz de rotación R ∈ SO(3) se puede expresar como una matriz eje-ángulo Rk,θ utilizando
la Ecuación (2.46). Los componentes del vector kθ ∈ R3 se llaman coordenadas exponenciales
de R.
Para por qué se usa esta terminología, primero recordamos del Apéndice B la definición de SO(3)
como el conjunto de todas las matrices skew-simétricas de 3 × 3 S que satisfacen

ST + S = 0 (2.52)

Para k = (kx , ky , kz ) ∈ RE 3 sea S(k) la matriz skew-simétrica


 
0 −kz ky
S(k) =  kz 0 −kx  (2.53)
 
−ky kx 0

y sea eS(k)θ la matriz exponencial como la definida en el Apéndice B


1 1
eS(k)θ = I + S(k)θ + S 2 (k)θ2 + S 3 (k)θ3 + · · · (2.54)
2 3!
Entonces tenemos la siguiente proposición, que da una importante relación entre SO(3) y so(3).

Proposición 2.1. La matriz eS(k)θ es un elemento de SO(3) para cualquier S(k) ∈ so(3) y, por el
contrario, cada elemento de SO(3) se puede expresar como la exponencial de un elemento de so(3).

Demostración: Para mostrar que la matriz eS(k)θ está en SO(3) necesitamos mostrar que eS(k)θ
es una matriz ortogonal con determinante igual a +1. Para mostrar esto dependemos de que las
siguientes propiedades se mantengan para cualesquier matrices A y B de n × n
T
1. eA = (eA )T

2. Si las matrices A y B de n × n son conmutativas, es decir, AB = BA, entonces eA eB = e(A+B)

3. El determinante det(eA ) = etr(A) , donde tr(A) es la traza de A.

UNISON, MCE Control de Robots Luis Arturo García Delgado


38

Las dos primeras propiedades de arriba se pueden mostrar por cálculos directos usando la ex-
pansión en serie (2.54) para eA . La tercera propiedad se deriva de la Identidad de Jacobi. Ahora,
dado que S T = −S, si S es skew-simétrica, entonces S y S T claramente son conmutables. Por lo
tanto, con S = S(kθ) ∈ so(3), tenemos
T T
eS (eS )T = eS eS = eS+S = e0 = I (2.55)

lo cual muestra que eS(kθ) es una matriz ortogonal. También

det(eS ) = etr(S) = 1 (2.56)

dado que la traza de una matriz skew-simétrica es cero. Entonces eS(kθ) ∈ SO(3) para S(kθ) ∈ so(3).
Lo opuesto, a saber, que cada elmento de SO(3) es el exponencial de un elemento de so(3),
se deriva de la representación eje-ángulo de R y la fórmula de Rodrigues que obtendremos a
continuación.

Fórmula de Rodrigues
Dada la matriz skew-simétrica S(k) es fácil mostrar que S 3 (k) = −S(k), de lo cual sigue que
S 4 (k)= −S 2 (k), etc. Por lo tanto la expansión en serie para eS(k)θ se reduce a
1 1
eS(k)θ = I + S(k)θ + S 2 (k)θ2 + S 3 (k)θ3 + · · ·
2 3!
1 3 1 1
= I + S(k)(θ − θ + · · · ) + S 2 (k)( θ2 − θ4 + · · · )
3! 2 4!
= I + sin(θ)S(k) + (1 − cos(θ))S 2 (k)

la última igualdad se deriva de la expansión en serie de las funciones seno y coseno. La expresión

eS(k)θ = I + sin(θ)S(k) + (1 − cos(θ))S 2 (k) (2.57)

se conoce como fórmula de Rodrigues. Se puede ver mediante cálculos directos que la represen-
tación eje-ángulo para Rk,θ dada por la Ecuación (2.46) y la fórmula de Rodrigues en la Ecuación
(2.57) son idénticas.
Observación 2.1. Los resultados anteriores muestran que la función exponencial define un mapeo
uno-a-uno de so(3) a SO(3). Matemáticamente, so(3) es un álgebra de Lie y SO(3) es un grupo
de Lie.

2.6. Movimientos Rígidos


Ya hemos visto como representar posiciones y a su vez orientaciones. Ahora combinaremos estos
dos conceptos para definir un movimiento rígido.
Definición 2.2 (Movimientos rígidos). Un movimiento rígido es un par ordenado (d, R) donde
d ∈ R3 y R ∈ SO(3). El grupo de todos los movimientos rígidos se conoce como Grupo Especial
Euclideano y es denotado por SE(3). Entonces SE(3) = R3 × SO(3).
Un movimiento rígido es un movimiento de traslación junto con un movimiento de rotación. Sea
R10 la matriz de rotación que especifica la orientación del marco o1 x1 y1 z1 al marco o0 x0 y0 z0 y d el
vector desde el origen del marco o0 x0 y0 z0 al del marco o1 x1 y1 z1 . Suponga que el punto p está unido
rígidamente al marco o1 x1 y1 z1 , con coordenadas locales p1 . Para expresar las cordenadas de p con
respecto a o0 x0 y0 z0 se utiliza
p0 = R10 p1 + d0 (2.58)

Luis Arturo García Delgado Control de Robots UNISON, MCE


39

Ahora considere tres marcos de coordenadas o0 x0 y0 z0 , o1 x1 y1 z1 y o2 x2 y2 z2 . Sea d1 el vector


desde el origen de o0 x0 y0 z0 al origen de o1 x1 y1 z1 y d2 el vector desde el origen de o1 x1 y1 z1 al
origen de o2 x2 y2 z2 . Si el punto p está unido al marco o2 x2 y2 z2 con coordenadas locales p2 , podemos
calcular sus coordenadas relativas al marco o0 x0 y0 z0 usando

p1 = R21 p2 + d12 (2.59)

y
p0 = R10 p1 + d01 (2.60)
La composición de estas dos ecuaciones define un tercer movimiento rígido, que podemos des-
cribir sustituyendo las expresiones para p1 de la Ecuación (2.59) en la Ecuación (2.60)

p0 = R10 R21 p2 + R10 d12 + d01 (2.61)

Dado que la relación entre p0 y p2 también es un movimiento rígido, podemos igualmente des-
cribirlo como
p0 = R20 p2 + d02 (2.62)
Comparando las Ecuaciones (2.61) y (2.62) tenemos las relaciones

R20 = R10 R21 (2.63)


d02 = d01 + R10 d12 (2.64)

La Ecuación (2.63) muestra que las transformaciones de orientación pueden simplemente multi-
plicarse juntas y la Ecuación (2.64) muestra que los vectores del origen o0 al origen o2 tiene coor-
denadas dadas por la suma de d01 (el vector desde o0 hasta o1 expresado con respecto a o0 x0 y0 z0 ) y
R10 d12 (el vector desde o1 hasta o2 , expresado en la orientación del marco de coordenadas o0 x0 y0 z0 ).

2.6.1. Transformaciones Homogéneas


Uno puede ver fácilmente que las operaciones que nos llevaron a la Ecuación (2.61) se puede
complicar bastante si se considerara una gran cantidad de movimientos rígidos. Ahora veremos cómo
se pueden representar movimientos rígidos en forma de matricial de tal forma que la composición
de movimientos rígidos pueda ser reducida a multiplicaciones de matrices.
De hecho, una comparación de las Ecuaciones (2.63) y (2.64) con la matriz identidad
" #" # " #
R10 d01 R21 d21 R10 R21 R10 d21 + d01
= (2.65)
0 1 0 1 0 1

donde 0 denota el vector renglón (0, 0, 0), muestra que los movimientos rígidos se pueden representar
por un conjunto de matrices de la forma
" #
R d
H= ; R ∈ SO(3), d ∈ R3 (2.66)
0 1

Las matrices de transformación de la forma dada en la Ecuación (2.66) son llamadas transfor-
maciones homogéneas. Una transformación homogénea por lo tanto no es más que una represen-
tación en matriz de un movimiento rígido, usaremos SE(3) indistintamente para representar ambos
conjuntos: el de movimientos rígidos y el de matrices H de 4 × 4 de la forma dada en la Ecuación
(2.66).
Usando el hecho de que la matriz R es ortogonal, la matriz de transformación inversa H −1 es
dada mediante " #
−1 RT −RT d
H = ; R ∈ SO(3), d ∈ R3 (2.67)
0 1

UNISON, MCE Control de Robots Luis Arturo García Delgado


40

Para poder representar la transformación dada en la Ecuación (2.58) mediante una multiplicación
matricial, debemos aumentar los vectores p0 y p1 añadiéndo un cuarto componente igual a 1 como
se muestra
" #
0p0
P = (2.68)
1
" #
1 p1
P = (2.69)
1

Los vectores P 0 y P 1 se conocen como representaciones homogéneas de los puntos p0 y p1 ,


respectivamente. Ahora se puede apreciar directamente que la transformación dada en la Ecuación
(2.58) es equivalente a la ecuación matricial (homogénea)

P 0 = H10 P 1 (2.70)

A continuación se presenta un conjunto de transformaciones homogéneas básicas de gene-


ración SE(3)    
1 0 0 a 1 0 0 0
α −sα
0 1 0 0 0 c 0
T ransx,a =  ; Rotx,α = (2.71)
   
0 0 1 0 0 sα cα 0

0 0 0 1 0 0 0 1
   
1 0 0 0 cβ 0 sβ 0
0 1 0 b  0 1 0 0
T ransy,b = ; Roty,β = (2.72)
   
0 0 1 0 −sβ 0 cβ 0

0 0 0 1 0 0 0 1
   
1 0 0 0 cγ −sγ 0 0
0 1 0 0 s cγ 0 0
T ransz,c = ; Rotz,γ = γ (2.73)
   
0 0 1 c 0 0 1 0

0 0 0 1 0 0 0 1
La transformación homogénea más general que se considerará puede escribirse como
 
nx sx ax dx " #
n
y sy ay dy  n s a d

0
H1 =  = (2.74)

nz sz az dz  0 0 0 1
0 0 0 1

En la ecuación anterior n = [nx , ny , nz ]T es un vector que representa la dirección de x1 en el


sistema o0 x0 y0 z0 , s = [sx , sy , sz ]T representa la dirección de y1 , y a = [ax , ay , az ]T representa la
dirección de z1 . El vector d = [dx , dy , dz ]T representa el vector desde el origen o0 hasta el origen o1
expresado en el marco o0 x0 y0 z0 .
La misma interpretación referente a la composición y ordenamiento de rotaciones de 3 × 3 se
mantiene para las transformaciones homogéneas de 4 × 4. Dada una transformación homogénea H10
que relaciona dos marcos, si se realiza un segundo movimiento rígido, representado por H ∈ SE(3)
relativo al marco actual, entonces
H20 = H10 H
mientras que si el segundo movimiento rígido se realiza relativo al marco fijo, entonces

H20 = HH10

Luis Arturo García Delgado Control de Robots UNISON, MCE


41

Ejemplo 2.10. La matriz de transformación homegénea H que representa una rotación de un


ángulo α con respecto al eje-x actual seguida de una traslación de b unidades a lo largo del eje-x
actual, seguida de una traslación de d unidades a lo largo del eje-z actual, seguida de una rotación
de un ángulo θ sobre el eje-z actual, está dada por

H = Rotx,α T ransx,b T ransz,d Rotz,θ


 
cθ −sθ 0 b
c s c c −s −ds 
=  α θ α θ α α

sα sθ sα cθ cα dcα 

0 0 0 1

La representación homogénea dada en la Ecuación (2.66) es un caso especial de las coordenadas
homogéneas, las cuales han sido extensamente usadas en el campo de computación gráfica. Ahí,
uno se interesa también en transformaciones de escala y/o perspectiva además de la traslación y
rotación. La transformación homogénea más general toma la forma
" # " #
R3×3 d3×1 Rotación Traslación
H= = (2.75)
f1×3 s1×1 perspectiva factor de escala

Para nuestro propósito siempre tomaremos el último renglón de H como [0, 0, 0, 1], aunque la
forma más general dada por (2.75) pudiera ser útil, por ejemplo, para interfacear un sistema de
visión en el sistema robótico o para simulación gráfica.

2.6.2. Coordenadas Exponenciales para Movimientos Rígidos en General


Justo como representamos las matrices de rotación como exponenciales de matrices skew-simétricas,
también podemos representar transformaciones homogéneas como exponenciales usando los llama-
dos torcimientos.
Definición 2.3. Sean v y k vectores en R3 con k como vector unitario. Un torcimiento ξ definido
mediante k y v es la matriz de 4 × 4 " #
S(k) v
(2.76)
0 0
Definimos se(3) como
se(3) = {(v, S(k))|v ∈ R3 , S(k) ∈ SO(3)} (2.77)
se(3) es el vector de espacio de torcimientos, y un argumento similar al de antes en la Sección
2.5.4 se puede usar para mostrar que, dado cualquier torcimiento ξ ∈ se(3) y ángulo θ ∈ R, la
matriz exponencial de ξθ es un elemento de SE(3), y, por el contario, cada matriz de transformación
homogenea (movimiento rígido) en SE(3) se puede expresar como la exponencial de un torcimiento.
Omitimos los detalles aquí.

2.7. Problemas
2.1 Utilizando el hecho de que v1 · v2 = v1T v2 , muestre que el producto punto de dos vectores libres
no depende de la elección de los marcos en los cuales se definan sus coordenadas.

2.2 Muestre que la longitud de un vector libre no cambia con la rotación, es decir, que ∥v∥ = ∥Rv∥.

2.3 Muestre que la distancia entre puntos no cambia por rotación, es decir, ∥p1 −p2 ∥ = ∥Rp1 −Rp2 ∥.

UNISON, MCE Control de Robots Luis Arturo García Delgado


42

2.4 Si una matriz R satisface RT R = I, muestre que los vectores columna de R son de longitud
unitaria y son mutuamente perpendiculares.

2.5 Si una matriz R satisface RT R = I, entonces


(a) Muestre que det(R) = ±1
(b) Muestre que det(R) = +1 si nos restringimos a los marcos de coordenadas de la mano derecha

2.6 Verifique las Ecuaciones (??)-(??).

2.7 Un grupo es un conjunto X junto con una operación ∗ definida en ese conjunto, tal que

x1 ∗ x2 ∈ X para toda x1 , x2 ∈ X
(x1 ∗ X2 ) ∗ x3 = x1 ∗ (x2 ∗ x3 )
Existe un elemento I ∈ X tal que I ∗ x = x ∗ I = x para toda x ∈ X
Para toda x ∈ X, existe algún elemento y ∈ X tal que x ∗ y = y ∗ x = I

Muestre que SO(n) con la operación de multiplicación de matriz es un grupo.

2.8 Desarrolle las Ecuaciones (2.7) y (2.8).

2.9 Suponga que A es una matriz de rotación de 2 × 2. En otras palabras AT A = I y det(A) = 1.


Muestre que existe una θ única tal que A es de la forma
" #
cos θ − sin θ
A=
sin θ cos θ

2.10 Considere la siguiente secuencia de rotaciones:

1. Rotar un ángulo ϕ respecto al eje-x del mundo


2. Rotar un ángulo θ respecto al eje-z actual
3. Rotar un ángulo ψ respecto al eje-y del mundo

Escriba el producto matricial que expresará la matriz de rotación resultante (no realice la multipli-
cación de matrices).

2.11 Considere la siguiente secuencia de rotaciones:

1. Rotar un ángulo ϕ respecto al eje-x del mundo


2. Rotar un ángulo θ respecto al eje-z del mundo
3. Rotar un ángulo ψ respecto al eje-x actual

Escriba el producto matricial que expresará la matriz de rotación resultante (no realice la multipli-
cación de matrices).

2.12 Considere la siguiente secuencia de rotaciones:

1. Rotar un ángulo ϕ respecto al eje-x del mundo


2. Rotar un ángulo θ respecto al eje-z actual
3. Rotar un ángulo ψ respecto al eje-x actual
4. Rotar un ángulo α respecto al eje-z del mundo

Luis Arturo García Delgado Control de Robots UNISON, MCE


43

Escriba el producto matricial que expresará la matriz de rotación resultante (no realice la multipli-
cación de matrices).

2.13 Considere la siguiente secuencia de rotaciones:

1. Rotar un ángulo ϕ respecto al eje-x del mundo


2. Rotar un ángulo θ respecto al eje-z del mundo
3. Rotar un ángulo ψ respecto al eje-x actual
4. Rotar un ángulo α respecto al eje-z del mundo

Escriba el producto matricial que expresará la matriz de rotación resultante (no realice la multipli-
cación de matrices).

2.14 Si se obtiene el marco de coordenadas o1 x1 y1 z1 del marco de coordenadas o0 x0 y0 z0 mediante


una rotación de π/2 respecto al eje-x seguida de una rotación de π/2 respecto al eje y actual,
encuentre la matriz de rotación que representa la transformación compuesta. Bosqueje los marcos
inicial y final.

2.15 Suponga que tres marcos de coordenadas o1 x1 y1 z1 , o2 x2 y2 z2 y o3 x3 y3 z3 son dados, y suponga


que    
1 0 0√ 0 0 −1
1 1 3 1
R2 = 0 √2 − 2  , R3 = 0 1 0
  
3 1 1 0 0
0 2 2

Encuentre la matriz R23 .

2.16 Desarrolle las ecuaciones para los ángulos de roll (balanceo), pitch (cabeceo) y yaw (guiñada)
correspondientes a la matriz de rotación R = (rij ).

2.17 Verifique la Ecuación (2.44).

2.18 Verifique la Ecuación (2.46).

2.19 Si R es una matriz de rotación muestre que +1 es un eigenvalor de R. Sea k un eigenvector


unitario correspondiente al eigenvalor +1. Dé una interpretación física de k.

2.20 Sea k = √1 [1, 1, 1]T ,


3
θ = 90◦ . Encuentre Rk,θ .

2.21 Muestre mediante cálculos directos que Rk,θ dada en la Ecuación (2.44) es igual a R dada en
la Ecuación (2.48) si θ y k están dadas en la Ecuación (2.49) y (2.50) respectivamente.

2.22 Calcule la matriz de rotación dada por el producto

Rx,θ Ry,ϕ Rz,π Ry,−ϕ Rx,−θ

2.23 Suponga que R representa una rotación de 90◦ respecto y0 seguida por una rotación de 45
◦ respecto z . Encuentre la representación eje/ángulo equivalente para representar R. Bosqueje los
1
marcos inicia y final y el vector de eje-k equivalente.

2.24 Encuentre la matriz de rotación correspondiente a los ángulos de Euler ϕ = π2 , θ = 0 y ψ = π4 .


¿Cuál es la dirección del eje x1 relativa al marco base?

2.25 La Sección 2.5.1 describó sólo los ángulos de Euler Z − Y − Z. Liste todos los conjuntos
posibles de ángulos de Euler. ¿Es posible tener ángulos de Euler Z − Z − Y ? ¿Porqué o porqué no?

UNISON, MCE Control de Robots Luis Arturo García Delgado


44

2.26 Lo números complejos de magnitud unitaria a + ib con a2 + b2 = 1 pueden ser utilizados para
representar la orientación en el plano. En particular, para el número complejo a+ib, podemos definir
el ángulo θ = atan2(a, b). Muestre que la multiplicación de dos números complejos corresponde a la
suma de los ángulos correspondientes.
2.27 Muestre que los números complejos junto con la operación de multiplicación compleja definen
un grupo. ¿Cuál es la identidad para el grupo? ¿Cuál es la inversa de a + ib?
2.28 Los números complejos se pueden generalizar definiendo tres raíces cuadradas independientes
para −1 que obedecen a las reglas de multiplicación
−1 = i2 = j 2 = k 2 ,
i = jk = −kj,
j = ki = −ik,
k = ij = −ji
Usando estas, definimos un cuaternión mediante Q = q0 + iq1 + jq2 + kq3 , lo cual se representa típi-
camente por el cuádruple (q0 , q1 , q2 , q3 ). Una rotación θ respecto al vector unitario n = [nx , ny , nz ]T
se puede representar por el cuaternión unitario Q = (cos 2θ , nx sin 2θ , ny sin 2θ , nz sin 2θ ). Muestre que
tal cuaternión tiene norma unitaria, es decir, q02 + q12 + q22 + q32 = 1.
2.29 Usando Q = (cos 2θ , nx sin 2θ , ny sin 2θ , nz sin 2θ ), y los resultados de la Sección 2.5.3, determine
la matriz de rotación R que corresponda a la rotación reprsentada por el cuaternión (q0 , q1 , q2 , q3 ).
2.30 Determine el cuaternión Q que representa la misma rotación como la que da la matriz de
rotación R.
2.31 El cuaternión Q = (q0 , q1 , q2 , q3 ) puede ser pensado como si se tiene un escalar q0 y un
componente vectorial [q1 , q2 , q3 ]T . Muestre que el producto de dos cuaterniones, Z = XY es dado
por
z0 = x0 y0 − xT y,
z = x0 y + y0 x + x × y,
Pista: Realice la multiplicación (x0 + ix1 + jx2 + kx3 )(y0 + iy1 + jy2 + ky3 ) y simplifique el resultado.
2.32 Muestre que QI = (1, 0, 0, 0) es el elemento identidad para la multiplicación de un cuaternión
unitario, esto es, QQI = QI Q = Q para cualquier cuaternión unitario Q.
2.33 El conjugado Q∗ del cuaternión Q se define como
Q∗ = (q0 , q1 , q2 , q3 )
Muestre que Q∗ es la inversa de Q, esto es, Q∗ Q = QQ∗ = (1, 0, 0, 0).
2.34 Sea v un vector cuyas coordenadas están dadas por [vx , vy , vz ]T . Si el cuaternión Q representa
una rotación, muestre que las nuevas coordenadas rotadas de v están dadas por Q(0, vx , vy , vz )Q∗ ,
en el cual (0, vx , vy , vz ) es un cuaternion donde su componente real es cero.
2.35 Sea el punto p rígidamente unido al marco de coordenadas del efecctor final con coordenadas
locales (x, y, z). Si Q especifica la orientación del marco del efector final con respecto al marco base,
y T es el vector del marco base al origen del marco del efector final, muestre que las coordenadas
de p con respecto al marco base están dadas por
Q(0, x, y, z)Q∗ + T
donde (0, x, y, z) es un cuaternión con componente real cero.

Luis Arturo García Delgado Control de Robots UNISON, MCE


45

2.36 Verifique la Ecuación (2.67).

2.37 Calcule la transformación homogénea que representa una traslación de 3 unidades respecto al
eje-x seguida por una rotación de π2 respecto al eje-z actual seguida de una traslación de 1 unidad
sobre el eje-y fijo. Bosqueje el marco. ¿Cuáles son las coordenadas del origen o1 con respecto al
marco original en cada caso?

2.38 Considere el diagrama de la Figura 2.13. Encuentre las transformaciones homogéneas H10 , H20 ,
H21 que representan las transformaciones entre los marcos mostrados. Muestre que H20 = H10 H21 .

Figura 2.13: Diagrama del Problema 2.38

2.39 Considere el diagrama de la Figura B.19. Un robot es colocado a 1 metro de una mesa. La
parte superior de la mesa tiene 1 metro de altura y es un cuadrado de 1 metro por lado. Un marco
o1 x1 y1 z1 está fijo a una esquina de la mesa como se muestra. Un cubo que mide 20 cm por lado es
colocado en el centro de la mesa con un marco o2 x2 y2 z2 establecido en el centro del cubo como se
muestra. Una cámara se sitúa diréctamente encima del centro del cubo 2 m encima de la superficie
de la mesa y tiene asignado un marco o3 x3 y3 z3 como se muestra. Encuentre las transformaciones
homogéneas que relacionan cada uno de estos marcos con el marco base o0 x0 y0 z0 . Encuentre la
transformación homogénea que relaciona el marco o2 x2 y2 z2 con el marco de la cámara o3 x3 y3 z3 .

2.40 En el Problema B.5.1, suponga que, después de que la cámara es calibrada, se rota 90◦ respecto
z3 . Recalcule las transformaciones de coordenadas de arriba.

2.41 Si el bloque de la mesa es rotado 90◦ respecto z2 y desplazado de tal forma que su centro
tiene coordenadas [0, 0.8, 0.1]T relativas al marco o1 x1 y1 z1 , calcule la transformación homogénea
que relaciona el marco del bloque con el marco de la cámara; el marco del bloque con el marco de
la base.

2.42 Consulte un libro de astronomía para aprender los detalles básicos de la rotación de la Tierra
con respecto al sol y con respecto a su propio eje. Defina para la Tierra un marco de coordenadas
local cuyo eje-z sea el eje de rotación de la Tierra. Defina t = 0 como el momento exacto del solsticio
de verano, y el marco de referencia global debe coincidir con el marco de la Tierra en el tiempo
t = 0. Dé una expresión R(t) para la matriz de rotación que representa la orientación instantánea
de la Tierra en el tiempo t. Determine como función del tiempo la transformación homogénea que
especifica el marco de la Tierra con respecto al marco de referencia global.

2.43 En general, la multiplicación de matrices de transformación homogéneas no es conmutativa.


Considere el producto matricial

H = Rotx,α Transx,b Transz,d Rotz,θ

UNISON, MCE Control de Robots Luis Arturo García Delgado


46

Figura 2.14: Diagrama del Problema B.5.1

Determine cuáles pares de las cuatro matrices se pueden conmutar. Explique porqué estos pares se
conmutan. Encuentre todas las permutaciones de estas cuatro matrices que den la misma matriz de
transformación homogénea, H.

Luis Arturo García Delgado Control de Robots UNISON, MCE


Capítulo 3

Cinemática Directa

El problema de la cinemática del manipulador es describir el movimiento de un manipulador sin


consideración de las fuerzas y torques que causan el movimiento. La descripción cinemática es por
lo tanto geométrica. En este capítulo consideramos el problema de cinemática directa para mani-
puladores de eslabones seriales, que es determinar la posición y orientación del efector final dados
los valores de las variables articulares del robot. Este problema se resuelve fácilmente vinculando
marcos de coordenadas a cada eslabón del robot y expresando las relaciones entre estos marcos
como transformaciones homogéneas. Utilizamos un procedimiento sistemático, conocido como con-
vención Denavit-Hartenberg, para adjuntar estos marcos de coordenadas al robot. La posición y
orientación del efector final del robot se reduce entonces a una multiplicación de matrices de trans-
formación homogéneas. Damos ejemplos de este procedimiento para varias de las configuraciones
estándar que presentamos en el Capítulo 1.

3.1. Cadenas Cinemáticas


Un robot manipulador está compuesto por una serie de eslabones unidos entre sí por medio de
articulaciones. Las articulaciones pueden ser simples como articulaciones rotatorias o prismáticas,
o pueden ser más complejas, como la articulación esférica (recuerde que una articulación rotatoria
es como una bisagra que permite una rotación relativa con respecto a un eje simple, y una articu-
lación prismática permite un movimiento lineal con respecto a un eje simple, es decir, extensión o
retracción). La diferencia entre las dos situaciones es que en el primer caso la articulación tiene sólo
un grado de libertad (GDL) de movimiento: el ángulo de rotación en el caso de articulación rotato-
ria, y la cantidad de desplazamiento lineal en el caso de articulación prismática. En contraste, una
articulación esférica tiene tres grados de libertad. En este curso se supondrá de ahora en adelante
que todas las articulaciones poseen un solo grado de libertad. Esta suposición no conlleva pérdida
de generalidad, ya que las articulaciones como la esférica (3 GDL), se pueden ver como como una
sucesión de articulaciones de un solo GDL con eslabones de longitud cero entre ellas.
Bajo esta suposición, la acción de cada articulación se puede describir por un simple número
real: el ángulo de rotación en el caso de una articulación rotativa o el desplazamiento en el caso de
una articulación prismática.
Un manipulador robótico con n articulaciones tendrá n + 1 eslabones, ya que cada articulación
conecta dos eslabones. Las articulaciones se numeran de 1 a n, y los eslabones se numeran de 0 a n,
comenzando desde la base. Mediante esta convención, la articulación i conecta al eslabón i − 1 con
el eslabón i. Cuando la articulación i está actuada, el eslabón i se mueve. Por lo tanto, el eslabón
0 (el primer eslabón o base) está fijo, y no se mueve cuando las articulaciones están actuadas. Por
supuesto, el manipulador por sí mismo puede ser móvil (por ejemplo, puede estar montado en una
plataforma móvil o en un vehículo), pero no consideraremos este caso en este capítulo, debido a que
esto se puede manejar extendiendo ligeramente las técnicas presentadas aquí.

47
48

Con la i-ésima articulación, asociamos una variable articular, denotada mediante qi . En el caso
de articulaciones rotatorias, qi es el ángulo de rotación, y en el caso de articulaciones prismáticas,
qi es el desplazamiento articular:
(
θi si la articulación i es rotatoria
qi = (3.1)
di si la articulación i es prismática

Para realizar el análisis cinemático, asignamos un marco de coordenadas a cada eslabón. En


particular, asignamos oi xi yi zi al eslabón i. Esto significa que, sin importar el movimiento que ejecute
el robot, las coordenadas de cada punto en el eslabón i son constantes cuando se expresan en el
i-ésimo marco de coordenadas. Más aún, cuando la articulación i está actuada, el eslabón i y su
marco unido, oi xi yi zi , experimentan un movimiento resultante. El marco o0 x0 y0 z0 que está unido
a la base del robot, es referido como el marco base, marco inercial o marco del mundo. La
Figura 3.1 ilustra la idea de los marcos unidos rígidamente a los eslabones.

Figura 3.1: Marcos de coordenadas unidos al manipulador.

Ahora, suponga que Ai es la matriz de transformación homogénea que expresa la posición y


orientación de oi xi yi zi con respecto a oi−1 xi−1 yi−1 zi−1 . La matriz Ai no es constante, pero varía
conforme cambia la configuración del robot. Sin embargo, la suposición de que todas las articulacio-
nes pueden ser rotatorias o prismáticas significa que Ai es una función que depende de una simple
variable, a saber qi . En otras palabras
Ai = Ai (qi ) (3.2)

La matriz de tranformación homogénea que expresa la posición y orientación de oj xj yj zj con


respecto a oi xi yi zi es llamada una matriz de transformación, y es denotada por Tji . Del Capítulo
2 vemos que

Ai+1 Ai+2 · · · Aj−1 Aj , si i < j


Tji = I si i = j (3.3)

(T i )−1 ,

si i > j
j

Por la manera en la cual se han fijado los distintos marcos a sus correspondientes eslabones,
se deduce que la posición de algún punto en el efector final, cuando es expresado en el marco n,
es una constante independiente de la configuración del robot. Denotamos la posición y orientación
del efector final con respecto al marco inercial o base por medio de un vector o0n ∈ R3 (el cual
expresa las coordenadas del origen del marco del efector final con respecto al marco base) y la

Luis Arturo García Delgado Control de Robots UNISON, MCE


49

matriz Rn0 ∈ R3×3 , y definimos la matriz de transformación homogénea


" #
Rn0 o0n
H= (3.4)
0 1

Entonces la posición y orientación del efector final en el marco inercial están dadas por

H = Tn0 = A1 (q1 ) · · · An (qn ) (3.5)

Cada transformación homogénea Ai es de la forma


" #
Rii−1 oii−1
Ai = (3.6)
0 1

Por lo tanto, para i < j


" #
Rji oij
Tji = Ai+1 . . . Aj = (3.7)
0 1

La matriz Rji expresa la orientación de oj xj yj zj relativa a oi xi yi zi y está dada por las partes
rotacionales de las matrices-A como

Rji = Ri+1
i
· · · Rjj−1 (3.8)

Los vectore de coordenadas oij están dados recursivamente por la fórmula

oij = oij−1 + Rj−1


i
oj−1
j (3.9)

Estas expresiones serán útiles más adelante cuando estudiemos las matrices Jacobianas.
En principio, esto es todo lo que hay para cinemática directa; determinar las funciones Ai (qi ),
y multiplicarlas entre sí como se necesite. No obstante, es posible lograr una cantidad considerable
de coordinación y simplificación cuando se introduzcan más adelante convenciones, como la repre-
sentación de Denavit-Hartenberg de una articulación, y este es el objetivo de la siguiente sección.

3.2. La Convención de Denavit-Hartenberg


En esta sección desarrollaremos la cinemática directa o configuración cinemática para
robots rígidos. El problema de cinemática directa tiene que ver con la relación entre las articulaciones
individuales del robot manipulador y la posición y orientación de la herramienta o efector final. Las
variables articulares son los ángulos entre los eslabones en el caso de articulaciones rotatorias, y la
extensión del eslabón en el caso de articulaciones prismáticas o deslizantes.
Desarrollaremos un conjunto de convensiones que proveen un procedimiento sistemático para
realizar este análisis. Es posible llevar a cabo análisis de cinemática directa aun sin respetar estas
convenciones. Sin embargo, el análisis cinemático de un manipulador de n eslabones puede ser extre-
madamente complejo y las convenciones que presentaremos en seguida simplifican considerablemente
el análisis.
Una convención comúnmente usada para seleccionar marcos de referencia en aplicaciones de
robótica es la convención de Denavit-Hartenberg, o convención DH. En esta convención, cada trans-

UNISON, MCE Control de Robots Luis Arturo García Delgado


50

formación homogénea Ai es representada como un producto de cuatro transformaciones básicas


Ai = Rotz,θi T ransz,di T ransx,ai Rotx,αi (3.10)
    
cθi −sθi 0 0 1 0 0 0 1 0 0 ai 1 0 0 0
s
 θi cθi 0  0
0  1 0 0  0
  1 0 0 0 cαi
 −sαi 0
=

0 0 1 0 0 0 1 di  0 0 1 0  0 sαi cαi 0
    

0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
 
cθi −sθi cαi sθi sαi ai cθi
s cθi cαi −cθi sαi ai sθi 
=  θi
 
0 s αi cαi di 

0 0 0 1
donde las cuatro cantidades θi , ai , di y αi son parámetros asociados con el eslabón i y la articulación
i. Estos cuatro parámetros ai , αi , di y θi de la Ecuación (3.10) reciben los nombres de longitud del
eslabón, torcimiento del eslabón, offset del eslabón y ángulo articular, respectivamente.
Estos nombres se derivan de aspectos específicos de la relación geométrica entre dos marcos coorde-
nados. Debido a que la matriz Ai es función de una simple variable, tres de las cantidades anteriores
son constantes para un eslabón dado, mientras que el cuarto parámetro, θi (para una articulación
rotatoria) o di (para una articulación prismática), es la variable articular.
Del Capítulo 2 se había visto que una matriz de transformación homogénea arbitraria se puede
caracterizar por 6 parámetros: 3 para expresar el vector de posición y 3 ángulos para expresar la
rotación. En la representación DH, sólo se necesitan conocer 4 parámetros, debido al hecho de que
se considera que el eslabón i está rígidamente unido a la articulación i y se puede escoger libremente
el origen y los ejes de coordenadas del marco. Por ejemplo, no es necesario que el origen, oi , del
marco i se ubique al final físico del eslabón i. De hecho, no es necesario que el marco i se sitúe
dentro del eslabón físico. El marco i puede estar en el espaci libre siempre y cuando el marco i
esté unido rígidamente a la articulación i. Mediante una elección inteligente del origen y los ejes
de coordenadas, es posible reducir el número de parámetros necesarios de seis a cuatro (o incluso
menos en algunos casos). En la Sección 3.2.1 mostraremos porqué, y bajo qué condiciones, se puede
hacer esto, y en la Sección 3.2.2 mostraremos exactamente cómo realizar la asignación de los marcos
de coordenadas.

3.2.1. Aspectos de Existencia y Unicidad


Claramente no es posible representar cualquier transformación homogénea arbitraria usando sólo
cuatro parámetros. Por lo tanto, comenzaremos determinando cuáles transformaciones homogéneas
se pueden expresar en la forma dada por la Ecuación (3.10). Suponga que se tienen dos marcos,
denotados por los marcos 0 y 1, respectivamente. Entonces existe una única matriz de transformación
A que lleva las coordenadas del marco 1 con respecto al marco 0. Ahora suponga que los dos marcos
tienen las siguientes dos características adicionales:
(DH1) El eje x1 es perpendicular al eje z0 .
(DH2) El eje x1 interseca al eje z0 .
Estas dos propiedades se ilustran en la Figura 3.2. Bajo estas condiciones, afirmamos que existen
números únicos a, d, θ, α tales que
A = Rotz,θ T ransz,di T ransx,ai Rotx,αi (3.11)
Por supuesto, debido a que θ y α son ángulos, nos referimos a que son únicos dentro de múltiplos
de 2π. Para mostrar que la matriz A puede ser escrita en esta forma, escribimos A como
" #
R10 o01
A= (3.12)
0 1

Luis Arturo García Delgado Control de Robots UNISON, MCE


51

Figura 3.2: Marcos de coordenadas que satisfacen las suposiciones DH1 y DH2.

Si se satisface (DH1), entonces x1 es perpendicular a z0 y se tiene x1 · z0 = 0. Expresando


esta restricción con respecto a o0 x0 y0 z0 , usando el hecho de que la primera columna de R10 es la
representación del vector unitario x1 con respecto al marco 0, obtenemos

0 = x01 · z00
 
h i 0
= r11 r21 r31 0 = r31
 
1

Dado que r31 = 0, sólo resta mostrar que existen ángulos únicos θ y α tales que
 
cθ −sθ cα sθ sα
R10 = Rz,θ Rx,α = sθ cθ cα −cθ sα  (3.13)
 
0 sα cα

La única información que se tiene es que r31 = 0, pero esto no es suficiente. Primero, dado que
cada renglón y coumna de R10 deben tener longitud unitaria, r31 = 0 implica que

2 2
r11 + r21 = 1,
2 2
r32 + r33 =1

Entonces, existen ángulos θ y α únicos tales que

(r11 , r21 ) = (cθ , sθ ), (r33 , r32 ) = (cα , sα )

Una vez que se han encontrado θ y α, es rutina mostrar que los elementos restantes de R10 deben
tener la forma de la Ecuación (3.13), usando el hecho de que R10 es una matriz de rotación.
La suposición (DH2) significa que el desplazamiento entre o0 y o1 puede ser expresado como
una combinación lineal de los vectores z0 y x1 . Esto se puede escribir como o1 = o0 + dz0 + ax1 .

UNISON, MCE Control de Robots Luis Arturo García Delgado


52

Nuevamente, se puede expresar esta relación en las coordenadas de o0 x0 y0 z0 , y se obtiene

o01 = o00 + dz00 + ax01


     
0 0 cθ
= 0 + d 0 + a sθ 
     
0 1 0
 
acθ
= asθ 
 
d

Combinando los resultados anteriores, se obtiene la Ecuación (3.10). Por lo tanto, se comprueba
que cuatro parámetros son suficientes para especificar cualquier transformación homogénea que
satisfaga las restriscciones (DH1) y (DH2).
La interpretación física de cada una de las cuatro cantidades mencionadas es la siguiente: El
parámetro a es la distancia entre los ejes z0 y z1 , y es medida sobre el eje x1 . El ángulo α es el
ángulo entre los ejes z0 y z1 , medido en un plano normal a x1 . El sentido positivo de α se determina
desde z0 a z1 mediante la regla de la mano derecha, como se muestra en la Figura 3.3. El parámetro
d es la distancia desde el origen o0 hasta la intersección del eje x1 con z0 , medida a lo largo del eje
z0 . Finalmente, θ es el ángulo de x0 a x1 medido en un plano normal a z0 .

Figura 3.3: Sentido positivo para αi y θi .

Estas interpretaciones físicas probarán su utilidad al desarrollar un procedimiento para asignar


marcos de coordenadas que satisfagan las restricciones (DH1) y (DH2).

3.2.2. Asignación de los Marcos de Coordenadas


Para un robot manipulador dado, uno siempre puede seleccionar los marcos 0, . . . , n de tal forma
que las condiciones (DH1) y (DH2) sean satisfechas. En ciertas circunstancias, se requerirá poner el
origen oi del marco i en un lugar que no sea intuitivo, aunque típicamente no se presente este caso.
Es importante tener en mente que la selección de los distintos marcos de coordenadas no es única,
aún cuando cumplan con las restricciones requeridas. Por lo tanto, es posible que diferentes personas
asignen diferentes, pero igualmente correctos, marcos de coordenadas para los eslabones del robot.
Sin embargo, el resultado final (o sea, la matriz Tn0 ) será el mismo, sin importar la asignación de los
marcos de los eslabones intermedios del robot (suponiendo que los marcos de coordenadas para el
eslabón n coincidan).
Para empezar, note que la elección de zi es arbitraria. En particular, de la Ecuación (3.13), se
observa que seleccionando αi y θi apropiadamente, se puede obtener una dirección arbitraria para
zi . Por lo tanto, el primer paso es asignar los ejes z0 , . . . , zn−1 en una adecuada forma intuitiva.
Específicamente, asignamos zi para que sea eje de actuación de la articulación i + 1. Entonces, z0
es el eje de actuación de la articulación 1, z1 es el eje de actuación de la articulación 2, etc. Hay
dos casos a considerar: (i) si la articulación i + 1 es rotatoria, zi es el eje de giro de la articulación

Luis Arturo García Delgado Control de Robots UNISON, MCE


53

i + 1; (ii) si la articulación i + 1 es prismática, zi es el eje de traslación de la articulación i + 1. Al


principio puede parecer confuso asociar zi con la articulación i + 1, pero recuerde que esto satisface
la convención que se estableció previamente, es decor que la articulación i se fija con respecto al
marco i, y que cuando la articulación i está actuada, el eslabón i y su marco asignado, oi xi yi zi ,
experimentan el movimiento resultante.
Una vez que hemos establecido los ejes-z para los eslabones, establecemos el marco base. La
elección de un marco base es casi arbitraria. Debemos seleccionar el origen o0 del marco base que
sea algún punto sobre z0 . Entonces seleccionamos x0 , y0 de alguna manera conveniente siempre y
cuando el marco resultante cumpla con la regla de la mano derecha. Así se establece el marco 0.
Ya que esté establecido el marco 0, comenzamos un proceso iterativo en el cual definimos el marco
i usando el marco i − 1, comenzando con el marco 1. La Figura 3.4 es útil para la comprensión del
proceso descrito.

Figura 3.4: Asignación de marcos de Denavit-Hartenberg.

Con el fin de establecer el marco i es necesario considerar tres casos: (i) los ejes zi−1 , zi no son
coplanares, (ii) los ejes zi−1 , zi son paralelos, (iii) los ejes zi−1 , zi se intersecan. Note que en los casos
(ii) y (iii) los ejes zi−1 y zi son coplanares. Esta situación es de hecho bastante común.

(i) zi−1 y zi no son coplanares: Si zi−1 y zi no son coplanares, entonces existe un segmento
de línea único perpendicular a ambos zi−1 y zi tal que conecta ambas líneas y tiene longitud
mínima. La línea que contiene esta normal común a zi−1 y zi define xi , y el punto donde esta
línea interseca zi es el origen oi . Por construcción, ambas condiciones (DH1) y (DH2) son
satisfechas y el vector de oi−1 a oi es una combinación lineal de zi−1 y xi . La especificación
del marco i se completa seleccionando el eje yi para formar el marco de acuerdo a la regla
de la mano derecha. Dado que se cumplen las suposiciones (DH1) y (DH2), la matriz de
transformación homogénea Ai es de la forma (3.10).

(ii) zi−1 es paralelo a zi : Si los ejes zi−1 y zi son paralelos, entonces existen infinitas normales
comunes entre ellas y la condición (DH1) no especifica xi completamente. En este caso podemos
seleccionar libremente el origen oi en cualquier lugar a lo largo de zi . Generalmente uno
selecciona oi para simplificar las ecuaciones resultantes. El eje xi es entonces seleccionado
para ser dirigido de oi hacia zi−1 , a lo largo de la normal común, o como el opuesto de este
vector. Un método común para seleccionar oi es seleccionar la normal que pasa a través de
oi−1 como el eje xi ; oi es entonces el punto en el cual esta normal interseca a zi . En este caso,
di debería ser igual a cero. Una vez que se fija xi , se determina yi , por la regla de la mano
derecha. Dado que los ejes zi−1 y zi son paralelos, αi será cero en este caso.

(iii) zi−1 interseca zi : En este caso xi se selecciona normal al plano formado por zi y zi−1 . La
dirección positiva de xi es arbitraria. La opción más natural para el origen oi en este caso es

UNISON, MCE Control de Robots Luis Arturo García Delgado


54

en el punto de intersección de zi y zi−1 . Sin embargo, cualquier punto a lo largo del eje zi
basta. Note que en este caso el parámetro ai es igual a 0.

Este procedimiento constructivo funciona para los marcos 0, . . . , n−1 en un robot de n-eslabones.
Para completar la construcción, es necesario especificar el marco n. El sistema de coordenadas final
on xn yn zn es comúnmente referido como el marco del efector final o de la herramienta (ver
Figura 3.5). El origen on se sitúa casi siempre simétricamente en medio de los dedos de la pinza.
Los vectores unitarios sobre los ejes xn , yn y zn son conocidos como n, s y a respectivamente. La
terminología surge del hecho de que la dirección a es la dirección de aproximación (approach direc-
tion), en el sentido de que la pinza típicamente se aproxima a un objeto a través de esta dirección.
Similarmente, la dirección s es la dirección de deslizamiento (sliding direction), la dirección sobre
la cual los dedos de la pinza se deslizan para abrir y cerrar, y n es la dirección normal al plano
formado por a y s.

Figura 3.5: Asignación del marco de la herramienta.

En la mayoría de los robots contemporáneos el movimiento de la articulación final es una rotación


del efector final en θn y los ejes de las dos articulaciones finales, zn−1 y zn coinciden. En este caso,
la transformación entre los dos marcos de coordenadas finales es una traslación sobre zn−1 en una
distancia dn seguida (o precedida) por una rotación de θn sobre zn−1 . Esta es una observación
importante que simplificará el cálculo de la cinemática inversa en la siguiente sección.
Finalmente, note el siguiente hecho importante. En todos los casos, si la articulación en cuestión
es rotatoria o prismática, las cantidades ai y αi son siempre constantes para toda i y son caracterís-
ticas del manipulador. Si la articulación i es prismática, entonces θi también es constante, mientras
que di es la i-ésima articulación variable. Similarmente, si la articulación i es rotatoria, entonces di
es constante y θi es la i-ésima articulación variable.

Resumen del Procedimiento DH


Podemos resumir el procedimiento basado en la convención DH en el siguiente algoritmo para
obtener la cinemática directa para cualquier manipulador.

Paso 1: Localice y etiquete los ejes articulares z0 , . . . , zn−1 .

Paso 2: Establezca el marco base. Ponga el origen en cualquier parte sobre el eje z0 .
Los ejes x0 y y0 se seleccionan convenientemente para formar un marco de mano derecha.
Para i = 1, . . . , n − 1 realice los Pasos 3 al 5.

Paso 3: Localice el origen oi donde la normal común a zi y zi−1 interseca a zi . Si zi interseca zi−1 localice
oi en esta intersección. Si zi y zi−1 son paralelas, localice oi en alguna posición conveniente a
lo largo de zi .

Paso 4: Establezca xi a lo largo de la normal común entre zi−1 y zi a través de oi , o en la dirección


normal al plano zi−1 − zi si zi−1 y zi se intersecan.

Luis Arturo García Delgado Control de Robots UNISON, MCE


55

Paso 5: Establezca yi para completar un marco de mano derecha.

Paso 6: Establezca el marco del efector final on xn yn zn . Suponiendo que la n-ésima articulación es
rotoatoria, ponga zn = a paralelo a zn−1 . Establezca el origen on convenientemente a lo largo
del eje zn , preferentemente en el centro de la pinza o en la punta de alguna herramienta que
porte el manipulador. Ponga yn = s en la dirección de cierre de la pinza y ponga xn = n como
x × a. Si la herramienta no es una pinza simple ponga xn e yn convenientemente para formar
un marco de mano derecha.

Paso 7: Cree una tabla de parámetros DH ai , di , αi ,θi .


ai = distancia a lo largo de xi desde la intersección de los ejes xi y zi−1 hasta oi .
di = distancia a lo largo de zi−1 desde oi−1 hasta la intersección de los ejes xi y zi−1 . Si la
articulación i es prismática, di es variable.
αi = el ángulo desde zi−1 hasta zi medido alrededor de xi .
θi = el ángulo desde xi−1 hasta xi medido alrededor de zi−1 . Si la articulación i es rotatoria,
θi es variable.

Paso 8: Forme las matrices de transformación homogénea Ai sustituyendo los parámetros anteriores
en la Ecuación (??).

Paso 9: Forme Tn0 = A1 · · · An . Esto entonces da la posición y orientación del marco de la herramienta
expresado en coordenadas de la base.

3.3. Ejemplos
En la convención DH el único ángulo variable es θ, así que simplificaremos la notación escribiendo
ci para cos θi , etc. También denotaremos θ1 + θ2 mediante θ12 , y cos(θ1 + θ2 ) por medio de c12 , y
así. En los siguientes ejemplos hay que recordar que la convención DH, aunque es sistemática,
aún permite considerable libertad en la elección de algunos de los parámetros del manipulador.
Esto es particularmente cierto en el caso de articulaciones paralelas o cuando están involucradas
articulaciones prismáticas.

3.3.1. Manipulador Codo Plano


Considere el brazo planar de dos eslabones de la Figura 3.6. Los ejes articulares z0 y z1 son
normales a la página. Establecemos el marco base o0 x0 y0 z0 como se muestra seleccionando el origen
en el punto de intersección del eje z0 con la página y seleccionando el eje x0 en dirección horizontal.
Note que la dirección de x0 es arbitraria. Una vez que el marco base es establecido, se fija el marco
o1 x1 y1 z1 como se muestra mediante de la convención DH, donde el origen o1 se ha ubicado en la
intersección de z1 y la página. El marco final o2 x2 y2 z2 se fija seleccionando el origen o2 al final del
eslabón 2 tal como se muestra. Los parámetros DH se muestran en la Tabla 3.1.
Las matrices A se determinan de (3.10) como
   
c1 −s1 0 a1 c1 c2 −s2 0 a2 c2
s
 1 c1 0 a1 s1  s
 2 c2 0 a2 s2 
A1 =  A2 = 
 
0 0 1 0  0 0 1 0 
 

0 0 0 1 0 0 0 1

UNISON, MCE Control de Robots Luis Arturo García Delgado


56

Figura 3.6: Manipulador plano de dos eslabones. Todos los ejes z apuntan hacia afuera de la página,
y no se muestran en la figura.

Tabla 3.1: Parámetros para un manipulador plano de 2 eslabones.

Eslabón ai αi di θi
1 a1 0 0 θ1∗
2 a2 0 0 θ2∗
∗ variable

Las matrices T están entonces dadas por

T10 = A1
 
c12 −s12 0 a1 c1 + a2 c12
s c12 0 a1 s1 + a2 s12 
T20 = A1 A2 =  12
 
 0 0 1 0


0 0 0 1

Note que las primeras dos entradas de la última columna de T20 son los componentes x y y del
origen o2 en el marco base; esto es,

x = a1 c1 + a2 c12 ,
y = a1 s1 + a2 s12

son las coordenadas del efector final en el marco base. La parte rotacional de T20 da la orientación
del marco o2 x2 y2 z2 relativa al marco base.

3.3.2. Robot cilíndrico de tres eslabones


Considere ahora el robot cilíndrico de tres eslabones representado simbólicamente mediante la
Figura 3.7. Establecemos o0 como se muestra en la articulación 1. Note que la ubicación del origen
o0 sobre z0 así como la dirección del eje x0 son arbitrarias. Nuestra elección de o0 es la más natural,
sin embargo o0 pudiera también situarse en la articulación 2. El eje x0 se seleccionó normal a la
página. Luego, dado que z0 y z1 coinciden, el origen o1 se selecciona en la articulación 2 como se
muestra. El eje x1 es normal a la página cuando θ1 = 0 pero, por supuesto su dirección puede
cambiar debido a que θ1 es variable. Dado que z2 y z1 se intersecan, el origen o2 se ubica en esta

Luis Arturo García Delgado Control de Robots UNISON, MCE


57

Figura 3.7: Manipulador cilíndrico de tres eslabones.

Tabla 3.2: Parámetros para un manipulador cilíndrico de tres eslabones.

Eslabón ai αi di θi
1 0 0 d1 θ1∗
2 0 -90 d∗2 0
3 0 0 d∗3 0
∗ variable

intersección. La dirección de x2 se selecciona paralela a x1 así que θ2 es cero. Finalmente, el tercer


marco se selecciona al final del eslabón 3 como se muestra.
Los parámetros DH se muestran en la Tabla 3.2. Las correspondientes matrices A y T son
     
c1 −s1 0 0 1 0 0 0 1 0 0 0
s
 1 c1 0 0 0 0 1 0  0 1 0 0
A1 =  , A2 =  , A3 = 
    
0 0 1 d1  0 −1 0 d2  0 0 1 d3 

0 0 0 1 0 0 0 1 0 0 0 1

 
c1 0 −s1 −s1 d3
s 0 c1 c1 d3 
T30 = A1 A2 A3 =  1 (3.14)
 
 0 −1 0 d1 + d2 

0 0 0 1

3.3.3. Muñeca Esférica

La Figura 3.8 muestra la muñeca esférica, un mecanismo de muñeca de tres eslabones para el
cual los ejes articulares z3 , z4 , z5 se intersecan en o. El punto o es llamado centro de la muñeca.
El manipulador Stanford es un ejemplo de un manipulador que posee una muñeca de este tipo.
Ahora mostraremos que las tres variables finales, θ4 , θ5 , θ6 son los ángulos de Euler ϕ, θ, ψ,
respectivamente, con respecto a el marco de coordenadas o3 x3 y3 z3 . Para ver esto sólo necesitamos

UNISON, MCE Control de Robots Luis Arturo García Delgado


58

Figura 3.8: Asignación de marcos en la Muñeca Esférica.

Tabla 3.3: Parámetros DH para una muñeca esférica.

Eslabón ai αi di θi
4 0 -90 0 θ4∗
5 0 90 0 θ5∗
6 0 0 d6 θ6∗
∗ variable

calcular las matrices A4 , A5 , y A6 , usando la Tabla 3.3 y la Ecuación (3.10). Esto da


     
c4 0 −s4 0 c5 0 s5 0 c6 −s6 0 0
s
 4 0 c4 0 s
 5 0 −c5 0 s
 6 c6 0 0
A4 =  , A5 =  , A6 = 
  
 0 −1 0 0 0 1 0 0 0 0 1 d6 

0 0 0 1 0 0 0 1 0 0 0 1

Multiplicándolas entre ellas da

T63 = A4 A5 A6 ,
" #
R63 o36
= ,
0 1
 
c4 c5 c6 − s4 s6 −c4 c5 s6 − s4 c6 c4 s5 c4 s5 d6
s c c + c s −s c s + c c s s s s d 
=  4 5 6 4 6 4 5 6 4 6 4 5 4 5 6
(3.15)

−s5 c6 s5 s6 c5 c5 d6 


0 0 0 1

Comparando la parte rotacional R63 de T63 con la transformación de ángulos de Euler de la


Ecuación (B.1) se observa que θ4 , θ5 , θ6 pueden en efecto ser identificados como los ángulos de
Euler ϕ, θ y ψ con respecto al marco de coordenadas o3 x3 y3 z3 .

3.3.4. Manipulador Cilíndrico con Muñeca Esférica


Suponga que ahora juntamos la muñeca esférica al manipulador cilíndrico del Ejemplo 3.3.2,
como se muestra en la Figura 3.9. Note que el eje de rotación de la articulación 4 es paralelo a
z2 y por lo tanto coincide con el eje z3 del Ejemplo 3.3.4. La implicación de esto es que podemos
combinar inmediatamente las dos expresiones previas (3.14) y (3.15) para obtener las ecuaciones de
cinemática directa como
T60 = T30 T63 (3.16)

Luis Arturo García Delgado Control de Robots UNISON, MCE


59

Figura 3.9: Robot cilíndrico con muñeca esférica.

con T30 dada por (3.14) y T63 dada por (3.15). Por lo tanto la cinemática directa de este manipulador
es descrita por  
r11 r12 r13 dx
r r r d 
T60 =  21 22 23 y  (3.17)
 
r31 r32 r33 dz 
0 0 0 1
en la cual
r11 = c1 c4 c5 c6 − c1 s4 s6 + s1 s5 c6
r21 = s1 c4 c5 c6 − s1 s4 s6 − c1 s5 c6
r31 = −s4 c5 c6 − c4 s6
r12 = −c1 c4 c5 s6 − c1 s4 c6 − s1 s5 c6
r22 = −s1 c4 c5 s6 − s1 s4 s6 + c1 s5 c6
r32 = s4 c5 c6 − c4 c6
r13 = c1 c4 s5 − s1 c5
r23 = s1 c4 s5 + c1 c5
r33 = −s4 s5
dx = c1 c4 s5 d6 − s1 c5 d6 − s1 d3
dy = s1 c4 s5 d6 + c1 c5 d6 + c1 d3
dz = −s4 s5 d6 + d1 + d2
Note cómo la mayor parte de la complejidad de la cinemática directa para este manipulador
resulta de la orientación del efector finl mientras que la expresión para la posición del brazo de la
Ecuación (3.14) es muy simple. La suposición de la muñeca esférica no solo simplifica la obtención de
la cinemática directa, sino que también simplificará grandemente el problema de cinemática inversa
en el Capítulo 5.

3.3.5. Manipulador Stanford


Considere ahora el manipulador Stanford que se muestra en la Figura 3.10. Este manipulador es
un ejemplo de un manipulador esférico (RRP) con una muñeca esférica. Este manipulador tiene un
desplazamiento en la articulación del hombro que complica ligeramente los problemas de cinemática
directa e inversa.

UNISON, MCE Control de Robots Luis Arturo García Delgado


60

Figura 3.10: Asignación de marcos de coordenadas DH para el manipulador Stanford.

Tabla 3.4: Parámetros DH para el manipulador Stanford.

Eslabón ai αi di θi
1 0 -90 0 θ1∗
2 0 90 d2 θ2∗
3 0 0 d∗3 0
4 0 -90 0 θ4∗
5 0 90 0 θ5∗
6 0 0 d6 θ6∗
∗ articulación variable

Primero establecemos los marcos de coordenadas articulares usando la convención DH como se


muestra. Los parámetros DH se muestran en la Tabla ??.
Es sencillo calcular las matrices Ai como

   
c1 0 −s1 0 c2 0 s2 0
s 0 c1 0 s 0 −c2 0 
A1 =  1 , A2 =  2 , (3.18)
   
 0 −1 0 0 0 1 0 d2 
0 0 0 1 0 0 0 1
   
1 0 0 0 c4 0 −s4 0
0 1 0 0 s 0 c4 0
A3 =  A4 =  4 , (3.19)
   
0 0 1 d3   0 −1 0 0

0 0 0 1 0 0 0 1
   
c5 0 s5 0 c6 −s6 0 0
s 0 −c 0 s c6 0 0
A5 =  5 5
, A6 =  6 (3.20)
   
 0 −1 0 0 0 0 1 d6 

0 0 0 1 0 0 0 1

Luis Arturo García Delgado Control de Robots UNISON, MCE


61

La matriz T60 está dada por


 
r11 r12 r13 dx
r r r d 
T60 = A1 · · · A6 =  21 22 23 y  (3.21)
 
r31 r32 r33 dz 
0 0 0 1

donde

r11 = c1 [c2 (c4 c5 c6 − s4 s6 ) − s2 s5 c6 ] − s1 (s4 c5 c6 + c4 s6 )


r21 = s1 [c2 (c4 c5 c6 − s4 s6 ) − s2 s5 c6 ] + c1 (s4 c5 c6 + c4 s6 )
r31 = −s2 (c4 c5 c6 − s4 s6 ) − c2 s5 c6
r12 = c1 [−c2 (c4 c5 s6 + s4 c6 ) + s2 s5 s6 ] − s1 (−s4 c5 s6 + c4 c6 )
r22 = −s1 [−c2 (c4 c5 s6 + s4 c6 ) + s2 s5 s6 ] + c1 (−s4 c5 s6 + c4 c6 )
r32 = s2 (c4 c5 s6 + s4 c6 ) + c2 s5 s6
r13 = c1 (c2 c4 s5 + s2 c5 ) − s1 s4 s5
r23 = s1 (c2 c4 s5 + s2 c5 ) + c1 s4 s5
r33 = −s2 c4 s5 + c2 c5
dx = c1 s2 d3 − s1 d2 + d6 (c1 c2 c4 s5 + c1 c5 s2 − s1 s4 s5 )
dy = s1 s2 d3 + c1 d2 + d6 (c1 s4 s5 + c2 c4 s1 s5 + c5 s1 s2 )
dz = c2 d3 + d6 (c2 c5 − c4 s2 s5 )

3.3.6. Manipulador SCARA

Figura 3.11: Asignación de marcos de coordenadas DH para el manipulador SCARA.

Como otro ejemplo del procedimiento general, considere el manipulador SCARA de la Figura
3.11. Este manipulador consiste de un brazo RRP y una muñeca de un grado de libertad, cuyo
movimiento es un giro sobre el eje vertical. El primer paso es localizar y nombrar los ejes articulares
como se muestra. Debido a que todos los ejes articulares son paralelos, tenemos cierta libertad en la
colocación de los orígenes. Los orígenes se colocan por conveniencia como se muestra en la imagen.
Establecemos el eje x0 en el plano de la página como se muestra. Esta opción es completamente
arbitraria, pero ésta determina la posición home del manipulador, que es definida relativa a

UNISON, MCE Control de Robots Luis Arturo García Delgado


62

Tabla 3.5: Parámetros articulares para el manipulador SCARA.

Eslabón ai αi di θi
1 a1 0 0 θ1∗
2 a2 180 0 θ2∗
3 0 0 d∗3 0
4 0 0 d4 θ4∗
∗ articulación variable

la configuración cero del manipulador, es decir, la posición del manipulador cuando las variables
articulares son iguales a cero. Los parámetros articulares se muestran en la Tabla ??.
Las matrices A se muestran a continuación
   
c1 −s1 0 a1 c1 c2 s2 0 a2 c2
s s −c
 1 c1 0 a1 s1   2 2 0 a2 s2 
A1 =  , A2 =  , (3.22)
 
0 0 1 0  0 0 −1 0 
0 0 0 1 0 0 0 1
   
1 0 0 0 c4 −s4 0 0
0 1 0 0 s c4 0 0
A3 =  , A4 =  4 (3.23)
   
0 0 1 d3  0 0 1 d4 

0 0 0 1 0 0 0 1

Las ecuaciones de cinemática directa están entonces dadas por

T40 = A1 · · · A4 ,
 
c12 c4 + s12 s4 −c12 s4 + s12 c4 0 a1 c1 + a2 c12
s c − c s −s s − c c 0 a1 s1 + a2 s12 
=  12 4 12 4 12 4 12 4
(3.24)
 
0 0 −1 −d3 − d4 


0 0 0 1

Luis Arturo García Delgado Control de Robots UNISON, MCE


63

3.4. Problemas

3.1 Considere el manipulador plano de tres eslabones que se muestra en la Figura 3.12. Desarrolle
las ecuaciones de cinemática directa usando la convención DH

Figura 3.12: Brazo plano de tres eslabones

3.2 Considere el manipulador cartesiano de dos eslabones que se muestra en la Figura 3.13. Desa-
rrolle las ecuaciones de cinemática directa usando la convención DH

Figura 3.13: Robot cartesiano de dos eslabones

3.3 Considere el manipulador de dos eslabones que se muestra en la Figura 3.14, el cual tiene
su primera articulación rotatoria y la segunda prismática. Desarrolle las ecuaciones de cinemática
directa usando la convención DH

Figura 3.14: Brazo plano de dos eslabones

3.4 Considere el manipulador plano de tres eslabones que se muestra en la Figura 3.15. Desarrolle
las ecuaciones de cinemática directa usando la convención DH

UNISON, MCE Control de Robots Luis Arturo García Delgado


64

Figura 3.15: Brazo plano de tres eslabones

3.5 Considere el robot articulado de tres eslabones de la Figura 3.17. Desarrolle las ecuaciones de
cinemática directa usando la convención DH

Figura 3.16: Robot articulado de tres eslabones

3.6 Considere el manipulador Cartesiano de tres eslabones de la Figura ??. Desarrolle las ecuaciones
de cinemática directa usando la convención DH

Figura 3.17: Robot Cartesiano de tres eslabones

3.7 Agregue una muñeca esférica al manipulador codo de tres eslabones del Problema 3.5, como se
muestra en la Figura 3.18. Desarrolle las ecuaciones de cinemática directa para este manipulador

3.8 Agregue una muñeca esférica al manipulador Cartesiano de tres eslabones del Problema 3.6,
como se muestra en la Figura 3.19. Desarrolle las ecuaciones de cinemática directa para este mani-
pulador

Luis Arturo García Delgado Control de Robots UNISON, MCE


65

Figura 3.18: Manipulador codo con muñeca esférica

Figura 3.19: Manipulador cartesiano con muñeca esférica

3.9 Considere el manipulador PUMA 260 que se muestra en la Figura 3.20. Desarrolle todo el
conjunto de ecuaciones de cinemática directa estableciendo marcos de coordenadas DH apropiados,
construya una tabla de parámetros de DH, forme las matrices A, etc.

UNISON, MCE Control de Robots Luis Arturo García Delgado


66

Figura 3.20: Manipulador PUMA 260

Luis Arturo García Delgado Control de Robots UNISON, MCE


Capítulo 4

Cinemática de Velocidad

En el capítulo previo obtuvimos las ecuaciones de cinemática directa relacionando posiciones


articulares a posiciones y orientaciones del efector-final. En este capítulo obtenemos las relaciones
de velocidad, relacionando las velocidades lineal y angular del efector final con las velocidades
articulares.
Matemáticamente, las ecuaciones de cinemática directa definen una función entre el espacio de
configuración de posiciones articulares al espacio de posiciones y orientaciones Cartesianas. Las re-
laciones de velocidad son entonces determinadas por el Jacobiano de dicha función. El Jacobiano
es una matriz que generaliza la noción de la derivada ordinaria de una función escalar. El Jaco-
biano es una de las cantidades más importantes en el análisis y control de movimiento de robots.
Virtualmente surge en cada aspecto de manipulación robótica: en la planificación y ejecusión de
trayectorias suaves, en la determinación de configuraciones singulares, en la ejecusión de movimien-
to antropomórfico coordinado, en la derivación de las ecuaciones dinámicas de movimiento, y en la
transformación de fuerzas y torques del efector final a articulaciones del manipulador.
Comenzamos este capítulo con una investigación de velocidades y cómo representarlas. Primero
consideramos la velocidad angular alrededor de un eje fijo y entonces generalizamos esta rotación
alrededor de un eje arbitrario, posiblemente moviendo el eje con la ayuda de matrices antisimétricas.
Equipados con esta representación general de velocidades angulares, somos capaces de obtener las
ecuaciones tanto para velocidad angular como para la velocidad lineal del origen de un marco
en movimiento. Entonces procedemos a la obtención del Jacobiano. Para un manipulador de n-
eslabones primero obtenemos el Jacobiano representando la transformación instantánea entre el
n-vector de velocidades articulares y el vector de seis dimensiones que consiste en las velocidades
lineal y angular del efector final. El Jacobiano es entnces una matriz de 6 × n. Se usa el mismo
enfoque para determinar la transformación entre las velocidades articulares y la velocidad linear y
angular de algún punto en el manipulador.

4.1. Velocidad Angular: El Caso de Eje Fijo


Cuando un cuerpo rígido se mueve únicamente en rotación sobre un eje fijo, cada punto del cuerpo
se mueve en círculo. Los centros de estos círculos se encuentran en el eje de rotación. Cuando el
cuerpo rota, una perpendicular desde cualquier punto del cuerpo al eje se barre un ángulo θ, y este
ángulo es el mismo para cada punto del cuerpo. Si k es un vector unitario en la dirección del eje de
rotación, entonces la velocidad angular está dada por

ω = θ̇k (4.1)

en la cual θ̇ es la derivada temporal de θ.

67
68

Dada la velocidad angular del cuerpo, la velocidad lineal de cualquier punto del cuerpo es dada
por la ecuación
v =ω×r (4.2)

en la cual r es un vector desde el origen (en este caso se supone que es el eje de rotación) al punto.
En este curso nos interesa describir el movimiento de marcos móviles, incluyendo el movimiento del
origen del marco a través del espacio y también el movimiento rotacional de los ejes de los marcos.
Por lo tanto, para nuestros propósitos, la velocidad angular mantendrá el mismo estatus que la
velocidad lineal.
Como en los capítulos previos, para especificar la orientación de un objeto rígido, agregamos
rígidamente un marco de coordenadas al objeto, y entonces especificamos la orientación del marco
unido. Dado que cada punto sobre el objeto experimenta la misma velocidad angular (cada punto se
desplaza el mismo ángulo θ en un intervalo de tiempo dado), y ya que cada punto del cuerpo tiene
una relación geométrica fija con el marco fijo del cuerpo, vemos que la velocidad angular es una
propiedad del marco de coordenadas fijo en sí mismo. La velocidad angular no es una propiedad
de puntos individuales. Los puntos individuales pueden experimentar una velocidad lineal que
se induce mediante la velocidad angular, pero no tiene sentido hablar de un punto rotando por sí
mismo. Entonces, en la Ecuación (4.2) v corresponde a la velocidad lineal de un punto, mientras
que ω corresponde a la velocidad angular asociada con un marco de coordenadas rotante.

4.2. Matrices Antisimétricas


Definición 4.1. Se dice que una matriz S de n × n es Antisimétrica si y sólo si

ST + S = 0 (4.3)

Denotamos el conjunto de todas las matrices antisimétricas de 3 × 3 por so(3). Si S ∈ so(3) tiene
elementos sij , donde i, j = 1, 2, 3, entonces la Ecuación (4.3) es equivalente a las nueve ecuaciones

sij + sji = 0 i, j = 1, 2, 3 (4.4)

De la Ecuación (4.4) vemos que sii = 0; esto es, los términos diagonales de S son cero y
los términos no diagonales sij , i ̸= j satisfacen sij = −sji . Entonces S contiene sólo 3 entradas
independientes y toda matriz antisimétrica de 3 × 3 es de la forma
 
0 −s3 s2
S =  s3 0 −s1  (4.5)
 
−s2 s1 0

Si a = (ax , ay , az )T es un vector de 3 elementos, definimos la matriz antisimétrica S(a) como


 
0 −az ay
S(a) =  az 0 −ax 
 
−ay ax 0

Ejemplo 4.1. Denotemos por i, j y k a las tres bases de vectores unitarios de coordenadas
     
1 0 0
i = 0 j = 1 k = 0
     
0 0 1

Luis Arturo García Delgado Control de Robots UNISON, MCE


69

Las matrices antisimétricas S(i), S(j) y S(k) están dadas por


   
0 0 0 0 0 1
S(i) = 0 0 −1 S(j) =  0 0 0
   
0 1 0 −1 0 0
 
0 −1 0
S(k) = 1 0 0
 
0 0 0

4.2.1. Propiedades de las Matrices Antisimétricas


Las matrices antisimétricas poseen varias propiedades que serán útiles en los desarrollos subse-
cuentes. Entre estas propiedades están

1. El operador S es lineal, esto es,

S(αa + βb) = αS(a) + βS(b) (4.6)

para cualesquier vectores a y b que pertenecen a R3 y α y β escalares.

2. Para cualesquier vectores a y p pertenecientes a R3 ,

S(a)p = a × p (4.7)

donde a × p denota el vector de producto cruz.

3. Para R ∈ SO(3) y a ∈ R3
RS(a)RT = S(Ra) (4.8)
Para mostrar esto, usamos el hecho de que si R ∈ SO(3) y a, b son vectores en R3

R(a × b) = Ra × Rb (4.9)

Esto se puede mostrar por cálculos directos. La Ecuación (4.9) no es cierta en general a
menos que R sea ortogonal. Ésta dice que si primero rotamos los vectores a y b usando la
transformación R y luego formamos el producto cruz de los vectores rotados Ra y Rb, el
resultado es el mismo que el obtenido al formar el producto cruz a × b y luego rotarlos para
obtener R(a × b). La Ecuación (4.8) ahora se deduce fácilmente de las Ecuaciones (4.7) y (4.9)
como sigue. Sea b ∈ R3 un vector arbitrario. Entonces

RS(a)RT b = R(a × RT b)
= (Ra) × (RRT b)
= (Ra) × b
= S(Ra)b

y el resultado se deduce. El lado izquierdo de la Ecuación (4.8) representa una transformación


de semejanza de la matriz S(a). La ecuación dice, por lo tanto, que la representación matricial
de S(a) en un marco de coordenadas rotado mediante R es lo mismo que la matriz antisimétrica
S(Ra) correspondiente al vector a rotado mediante R.

UNISON, MCE Control de Robots Luis Arturo García Delgado


70

4.2.2. La Derivada de la Matriz de Rotación


Suponga que la matriz de rotación R es una función de la variable θ. Entonces R = R(θ) ∈ SO(3)
para toda θ. Dado que R es ortogonal para toda θ se sigue que
R(θ)R(θ)T = I (4.10)
Diferenciando ambos lados de la Ecuación (4.10) con respecto a θ obtenemos
dR dRT
R(θ)T + R(θ) =0 (4.11)
dθ dθ
Definamos la matriz S como
dR
S := R(θ)T (4.12)

Entonces, la transpuesta de S es
T
dR dRT

T
S = R(θ)T = R(θ) (4.13)
dθ dθ
La Ecuación (4.11) dice por lo tanto que
S + ST = 0 (4.14)
En otras palabras, la matriz S definida por la Ecuación (4.12) es antisimétrica. Multiplicando
ambos lados de la Ecuación (4.12) en su lado derecho por R y usando el hecho de que RT R = I da
dR
= SR(θ) (4.15)

La Ecuación (4.15) es muy importante. Dice que el cálculo de la derivada de la matriz de rotación
R equivale a una multiplicación matricial por una matriz antisimétrica S. La situación encontrada
más comúnmente es el caso donde R es una matriz de rotación básica o un producto de matrices
de rotación básicas.
Ejemplo 4.2. Si R = Rx,θ , es una matriz de rotación básica dada por la Ecuación (2.7), entonces
el cálculo directo muestra que
  
0 0 0 1 0 0
dR T 
S = R = 0 −sθ −cθ  0 cθ −sθ 
 

0 cθ −sθ 0 sθ cθ
 
0 0 0
= 0 0 −1 = S(i)
 
0 1 0
Así hemos mostramos que
dRx,θ
= S(i)Rx,θ

Con cálculos similares concluimos que
dRy,θ dRz,θ
= S(j)Ry,θ = S(k)Rz,θ (4.16)
dθ dθ

Ejemplo 4.3. Sea Rk,θ una rotación alrededor del eje definido por k = (k1 , k2 , k3 ) como en la
Ecuación (2.44). Es fácil verificar que S(k)3 = −S(k). Usando este hecho sigue que
d
Rk,θ = S(k)Rk,θ (4.17)

Luis Arturo García Delgado Control de Robots UNISON, MCE


71

4.3. Velocidad Angular: El Caso General


Ahora considere el caso general de velocidad angular sobre un eje arbitrario, posiblemente móvil.
Suponga que la matriz de rotación R es variante en el tiempo, de forma que R = R(t) ∈ SO(3).
Suponiendo que R(t) es continuamente diferenciable como función de t, un argumento idéntico al
de la sección previa muestra que la derivada temporal Ṙ(t) de R(t) está dada mediante

Ṙ(t) = S(ω(t))R(t) (4.18)

donde la matriz S(ω(t)) es antisimétrica. El vector ω(t) es la velocidad angular del marco rotante
con respecto al marco fijo en un tiempo t. Para ver que ω es el vector de velocidad angular, considere
un punto p rígidamente unido a un marco móvil. Las coordenadas de p relativas al marco fijo están
dadas por p0 = R10 p1 . Diferenciando esta expresión obtenemos

d 0
p = Ṙ10 p1
dt
= S(ω)R10 p1
= ω × R10 p1
= ω × p0

lo que muestra que ω es en efecto el tradicional vector de velocidad angular.


La Ecuación (4.18) muestra la relación entre la velocidad angular y la derivada de una matriz de
rotación. En particular, si la orientación instantánea de un marco o1 x1 y1 z1 con respecto a un marco
o0 x0 y0 z0 está dada mediante R10 , entonces la velocidad angular del marco o1 x1 y1 z1 está realcionada
directamente con la derivada de R10 mediante la Ecuación (4.18). Cuando hay una posibilidad
de ambigüedad, usaremos la notación ωi,j para denotar la velocidad angular que corresponde a la
derivada de la matriz de rotación Ri,j . Ya que ω es un vector libre, puede ser expresado con respecto
acualquier sistema de coordenadas de nuestra elección. Como es usual usaremos un superíndice para
denotar el marco de referencia. Por ejemplo, ω1,2 0 daría la velocidad angular que corresponde a la
1
derivada de R2 , expresada en coordenadas relativas al marco o0 x0 y0 z0 . En los casos en que las
velocidades angulares especifiquen una rotación relativa al marco base, simplificaremos el subíndice,
por ejemplo, usaremos ω2 para representar la velocidad angular que corresponde a la derivada de
R20 .

Ejemplo 4.4. Suponga que R(t) = Rx,θ(t) . Entonces Ṙ(t) se calcula usando la regla de la cadena
como
dR dR dθ
Ṙ = = = θ̇S(i)R(t) = S(ω(t))R(t) (4.19)
dt dθ dt
en el cual ω = iθ̇ es la velocidad angular, y en este caso i = (1, 0, 0)T .

4.4. Suma de Velocidades Angulares


Frecuentemente nos interesa encontrar la velocidad angular resultante debida a la rotación re-
lativa de varios marcos de coordenadas. Ahora desarrollaremos las expresiones para la composición
de velocidades angulares de dos marcos en movimiento o1 x1 y1 z1 y o2 x2 y2 z2 relativos al marco fijo
o0 x0 y0 z0 . Por ahora, supondremos que los tres marcos comparten un origen común. Las orientacio-
nes relativas de los marcos o1 x1 y1 z1 y o2 x2 y2 z2 están dadas por las matrices de rotación R10 (t) y
R21 (t). Entonces
R20 (t) = R10 (t)R21 (t) (4.20)

UNISON, MCE Control de Robots Luis Arturo García Delgado


72

Tomando las derivadas de ambos lados de la Ecuación (4.20) con respecto al tiempo da

Ṙ20 = Ṙ10 R21 + R10 Ṙ21 (4.21)

Utilizando la Ecuación (??), el término Ṙ20 se puede escribir como

Ṙ20 = S(ω0,2
0
)R20 (4.22)

0 denota la velocidad angular total experimentada por el marco o x y z .


En esta expresión ω0,2 2 2 2 2
Esta velocidad angular resulta de las rotaciones combinadas expresadas mediante R10 y R21 .
El primer término del lado derecho de la Ecuación (4.21) es

Ṙ10 R21 = S(ω0,1


0
)R10 R21 = S(ω0,1
0
)R20 (4.23)
0 denota la velocidad angular del marco o x y z que resulta del
Note que en esta ecuación ω0,1 1 1 1 1
0
cambio R1 , y este vector de velocidad angular se expresa con relación al marco de coordenadas
o0 x0 y0 z0 .
Examinemos el segundo término de la Ecuación (4.21). Usando la Ecuación (??) tenemos

R10 Ṙ21 = R10 S(ω1,2


1
)R21
= R10 S(ω1,2
1
)(R10 )T R10 R21 = S(R10 ω1,2
1
)R10 R21 (4.24)
= S(R10 ω1,2
1
)R20

Note que en esta ecuación ω1,21 denota la velocidad angular del marco o x y z correspondiente al
2 2 2 2
cambio de R21 , expresada relativa al marco de coordenadas o1 x1 y1 z1 . Así, el producto R10 ω1,2
1 expresa
0 1
la velocidad angular relativa al marco de coordenadas o0 x0 y0 z0 , es decir, R1 ω1,2 da las coordenadas
del vector libre ω1,2 con respecto al marco 0.
Al combinar las expresiones anteriores obtenemos

S(ω20 )R20 = {S(ω0,1


0
) + S(R10 ω1,2
1
)}R20 (4.25)

Dado que S(a) + S(b) = S(a + b). Vemos que

ω20 = ω0,1
0
+ R10 ω1,2
1
(4.26)

En otras palabras, las velocidades angulares se pueden sumar una vez que están expresadas en
el mismo marco de coordenadas, en este caso o0 x0 y0 z0 .
Los razonamientos anteriores se pueden extender a cualquier número de sistemas de coordenadas.
En particular, suponga que se tiene dado

Rn0 = R10 R21 · · · Rnn−1 (4.27)

Aunque es un ligero abuso de notación, expresemos mediante ωii−1 la velocidad angular de-
bida a la rotación dada por Rii−1 , expresada relativa al marco oi−1 xi−1 yi−1 zi−1 . Extendiendo el
razonamiento anterior obtenemos
Ṙn0 = S(ω0,n
0
)Rn0 (4.28)
en la cual
0 0 n−1
ω0,n = ω0,1 + R10 ω1,2
1
+ R20 ω2,3
2
+ R30 ω3,4
3 0
+ · · · + Rn−1 ωn−1,n (4.29)
0 0 0 0 0
= ω0,1 + ω1,2 + ω2,3 + ω3,4 + · · · + ωn−1,n (4.30)

Luis Arturo García Delgado Control de Robots UNISON, MCE


73

4.5. Velocidad Lineal de un Punto Unido a un Marco Móvil


Consideremos la velocidad lineal de un punto que está rigidamente unido a un marco móvil.
Suponga que el punto p está rígidamente unido al marco o1 x1 y1 z1 , y que o1 x1 y1 z1 está rotando en
relación al marco o0 x0 y0 z0 . Entonces, las coordenadas de p con respecto al marco o0 x0 y0 z0 están
dadas por
p0 = R10 (t)p1 (4.31)
La velocidad ṗ0 está dada por

ṗ0 = Ṙ10 (t)p1 + R10 (t)ṗ1


= S(ω 0 )R10 (t)p1 (4.32)
0 0 0 0
= S(ω )p = ω × p

la cual es la expresión para la velocidad en términos del vector del producto cruz. Note que la
Ecuación (??) sigue del hecho de que p está rígidamente unida al marco o1 x1 y1 z1 , y por lo tanto,
sus coordenadas relativas al marco o1 x1 y1 z1 no cambian, dando p1 = 0.
Ahora suponga que el movimiento del marco o1 x1 y1 z1 relativo a o0 x0 y0 z0 es más general. Su-
ponga que la transformación homogénea que relaciona los dos marcos es dependiente del tiempo,
de manera que " #
R 0 (t) o0 (t)
H10 (t) = 1 1
(4.33)
0 1

Por simplicidad omitiremos el argumento t y los subíndices y superíndices en R10 y o01 , y escri-
bimos
p0 = Rp1 + o (4.34)
Diferenciando la expresión de arriba se tiene

ṗ0 = Ṙp1 + ȯ (4.35)


1
= S(ω)Rp + ȯ
= ω×r+v

donde r = Rp1 es el vector desde o1 a p en la orientación del marco o0 x0 y0 z0 , y v es la velocidad a


la cual se mueve el origen o1 .
Si el punto p se mueve relativo al marco o1 x1 y1 z1 , entonces debemos sumar al término v el
término R(t)ṗ1 , el cual es la taza de cambio de las coordenadas p1 expresadas en el marco o0 x0 y0 z0 .

4.6. Obtención del Jacobiano


Considere un manipulador de n eslabones con variables articulares q1 , q2 , . . . , qn . Sea
" #
Rn0 (q) o0n (q)
Tn0 (q) = (4.36)
0 1

la transformación del marco del efector final al marco base, donde q = (q1 , q2 , . . . , qn )T es el vector
de variables articulares. Cuando el robot se mueve, tanto las variables articulares qi como la posición
y orientación del efector final son funciones del tiempo. El objetivo ahora es relacionar la velocidad
lineal y angular del efector final con el vector de velocidades q̇(t). Sea

S(ωn0 ) = Ṙn0 (Rn0 )T (4.37)

UNISON, MCE Control de Robots Luis Arturo García Delgado


74

el término que define el vector de velocidad angular ωn0 del efector final, y sea

vn0 = ȯ0n (4.38)

la velocidad lineal del efector final. Buscamos expresiones de la forma

vn0 = Jv q̇ (4.39)
ωn0 = Jω q̇ (4.40)

donde Jv y Jω son matrices de 3 × 3. Podemos escribir las Ecuaciones (B.9) y (B.9) juntas como

ξ = J q̇ (4.41)

donde ξ y J están dadas por " # " #


v0 J
ξ = n0 J= v (4.42)
ωn Jω
El vector ξ es llamado velocidad del cuerpo. Note que este vector de velocidad no es la derivada
de una posición variable, ya que el vector de velocidad angular no es la derivada de una cantidad
variante en el tiempo en particular. La matriz J es llamada Jacobiano del manipulador o
simplemente Jacobiano. Note que J es una matriz de 6 × n, donde n es el número de eslabones.

4.6.1. Velocidad Angular


Recordando de la Ecuación (4.29) que las velocidades angulares se pueden sumar como vectores
libres, una vez que estén expresadas en relación a un marco de coordenadas común. Entonces pode-
mos determinar la velocidad angular del efector final relativa al marco base sumando la velocidad
angular aportada por cada articulación en la orientación del marco base.
Si la articulación i es rotatoria, entonces la i-ésima variable articuar qi es igual a θi y el eje de
rotación es zi−1 . Siguiendo la convención que introdujimos, ωii−1 representa la velocidad angular
del eslabón i que es impartida por la rotación de la articulación i, expresada relativa al marco
oi−1 xi−1 yi−1 zi−1 . Esta velocidad angular está expresada en el marco i − 1 mediante
i−1
ωii−1 = q̇i zi−1 = q̇i k (4.43)

donde k es el vector de coordenadas unitario (0, 0, 1)T .


Si la i-ésima articuación es prismática, entonces el movimiento del marco i relativo al marco
i − 1 es una traslación y
ωii−1 = 0 (4.44)
Así, si la articulación i es prismática, la velocidad angular del efector final no depende de qi , que en
este caso es di .
Por lo tanto, la velocidad angular total del efector final, ωn0 , en el marco base es determinada
por la Ecuación (4.29) como

ωn0 = ρ1 q̇1 k + ρ2 q̇2 R10 k + · · · + ρn q̇n Rn0 k (4.45)


n
X
0
= ρi q̇i zi−1
i−1

en la cual ρi es igual a 1 si la articulación i es rotatoria, y 0 si la articulación i es prismática, ya que


0 0
zi−1 = Ri−1 k (4.46)

Por supuesto z00 = k = (0, 0, 1)T .

Luis Arturo García Delgado Control de Robots UNISON, MCE


75

La mitad inferior del Jacobiano Jω , en la Ecuación (4.42) está entonces dada por
Jω = [ρ1 z0 · · · ρn zn−1 ] (4.47)
Note que en esta ecuación, hemos omitido los subíndices en les vectores unitarios a lo largo del
eje z, debido a que éstos están todos referenciados al marco del mundo. En lo sucesivo del capítulo
seguiremos ocasionalmente esta convención cuando no haya ambigüedad concerniente al marco de
referencia.

4.6.2. Velocidad Lineal


La velocidad lineal del efector final es ȯ0n . La derivada es
n
X ∂o0n
ȯ0n = (4.48)
i=1
∂qi

Así la i-ésima columna de Jv , la cual denotamos por Jvi está dada por
∂o0n
Jvi = (4.49)
∂qi
Más aún esta expresión es sólo para la velocidad lineal del efector final que resultaría si q̇i fuera
igual a uno y la otra q̇j fuera cero. En otras palabras, la i-ésima columna del Jacobiano puede ser
generada sosteniendo fijas todas las articulaciones menos la i-ésima y actuando la iésima a velocidad
unitaria. Ahora consideremos los dos casos (articulaciones prismáticas y rotatorias) por separado.

Caso 1: Articulaciones prismáticas

Figura 4.1: Movimiento del efector final debido a la articulación prismática i.

La Figura 4.1 ilustra el caso en que todas las articulaciones están fijas excepto una sola articu-
lación prismática. Dado que la articulación i es prismática, sólo imparte traslación al efector final.
La dirección de traslación es paralela al eje zi−1 y la magnitud de la traslación es d˙i , donde di es la
articulación variable de DH. Así, en la orientación del marco base tenemos
 
0
ȯ0n = di Ri−1 0 = d˙i zi−1
˙ 0   0
(4.50)
1

UNISON, MCE Control de Robots Luis Arturo García Delgado


76

donde di es la variable articular para la articulación prismática i. Entonces, para el caso de articu-
laciones prismáticas tenemos
Jvi = zi−1 (4.51)

Caso 2: Articulaciones rotatorias

Figura 4.2: Movimiento del efector final debido a la articulación rotatoria i

La Figura 4.2 ilustra el caso en que todas las articulaciones están fijas excepto una sola articu-
lación rotatoria. Debido a que la articulación i es rotatoria, tenemos que qi = θi , así que en este
caso, la velocidad lineal del efector final es de la forma ω × r, donde

ω = θ̇i zi−1 (4.52)

y
r = on − o : i − 1 (4.53)
Entonces, para una articulación rotatoria obtenemos

Jvi = zi−1 × (on + oi−1 ) (4.54)

donde se han omitido los superíndices 0 por simplicidad.

4.6.3. Combinación de los Jacobianos Lineal y Angular


Como se vió en la sección anterior, la mitad superior del Jacobiano Jv está dado por

Jv = [Jv1 · · · Jvn ] (4.55)

donde la i-ésima columna Jvi es


(
0 × (o0 − o0 ) para articulación rotatoria i
zi−1 n i−1
Jvi = 0
(4.56)
zi−1 para articulación prismática i

La mitad inferior del Jacobiano está dado por

Jω = [Jω1 · · · Jωn ] (4.57)

Luis Arturo García Delgado Control de Robots UNISON, MCE


77

donde la i-ésima columna Jωi es


(
0
zi−1 para articulación rotatoria i
Jωi = (4.58)
0 para articulación prismática i

Las fórmulas anteriores determinan el Jacobiano de cualquier manipulador simple debido a que
todas las cantidadesdecesarias se encuentran disponibles una vez que se haya obtenido la cinemática
directa. Así que las únicas cantidades necesarias para calcular el Jacobiano son los vectores unitarios
zi y las coordenadas de los orígenes o1 , . . . , on . Refleccionando un momento se observa que las
cordenadas para zi con respecto al marco base están dadas por los primeros tres elementos en la
tercera columna de Ti0 , mientras que oi está dado por los primeros tres elementos de la cuarta
columna de Ti0 . Por lo tanto, sólo se necesitan la tercera y la cuarta columna para evaluar el
Jacobiano de acuerdo con las fórmulas de arriba.
El procedimiento anteror no sólo funciona para calcular la velocidad del efector final, sino tam-
bién para calcular la velocidad de cualquier punto del manipulador.
A continuación se dan algunos ejemplos para ilustrar la obtención del Jacobiano de un manipu-
lador.

Ejemplo 4.5 (Manipulador planar de dos eslabones). Considere un manipulador planar de 2 esla-
bones del Ejemplo ??. Dado que ambas articulaciones son rotatorias, la matriz Jacobiana, que en
este caso es de 6 × 2, es de la forma
" #
z × (o2 − o0 ) z1 × (o2 − o1 )
J(q) = 0 (4.59)
z0 z1

Las cantidades de arriba fácilmente se puede ver que son


     
0 a1 c1 a1 c1 + a2 c12
o0 = 0 o1 = a1 s1  o2 = a1 s1 + a2 s12  (4.60)
     
0 0 0
 
0
z0 = z1 = 0 (4.61)
 
1
Al realizar los cálculos requeridos se obtiene

−a1 s1 − a2 s12 −a2 s12


 
 a1 c1 + a2 c12 a2 c12 
 
 0 0 
J = (4.62)
 
0 0 


 
 0 0 
1 1

Es fácil ver cómo el Jacobiano de arriba se compara con la Ecuación (1.1) obtenida en el Capítulo
1. Los primeros dos renglones de la Ecuación (4.62) son exactamente el Jacobiano de 2 × 2 del
Capítulo 1 y dan la velocidad lineal del origen o2 relativa a la base. El tercer renglón de la Ecuación
(4.62) es la velocidad lineal en la dirección de z0 , que por supuesto siempre es cero en este caso. Los
últimos tres renglones representan la velocidad angular del marco final, la cual es simplemente una
rotación alrededor del eje vertical a una razón θ̇1 + θ˙2 .

UNISON, MCE Control de Robots Luis Arturo García Delgado


78

Figura 4.3: Determinación de la velocidad del eslabón 2 de un robot planar de 3 eslabones.

Ejemplo 4.6 (Jacobiano para un punto arbitrario). Considere el manipulador planar de tres-
eslabonesde la Figura 4.3. Suponga que queremos calcular la velocidad lineal v y la velocidad angular
ω del centro del eslabón 2, como se muestra. En este caso tenemos que
" #
z × (oc − o0 ) z1 × (oc − o1 ) 0
J(q) = 0 (4.63)
z0 z1 0

el cual es justamente el Jacobiano con oc en lugar de on . Note que la tercer columna del Jacobiano
es cero, dado que la velocidad del segundo eslabón no se afecta por el movimiento del tercer eslabón.
Note que en este caso el vector oc debe ser calculado ya que no es dado directamente por la matrices
T.

Ejemplo 4.7 (Manipulador Stanford). Considere el manipulador Stanford visto en el Ejemplo ??


con sus marcos coordenados Denavit-Hartenberg asociados. Note que la articulación 3 es prismática
y que o3 = o4 = o5 como consecuencia de la asignación de marcos de la muñeca esférica. Si le
llamamos a este origen común o vemos que las columnas del Jacobiano tienen la forma
" #
zi−1 × (o6 − oi−1 )
Ji = i = 1, 2
zi−1
" #
z2
J3 =
0
" #
zi−1 × (o6 − o)
Ji = i = 4, 5, 6
zi−1

Ahora, usando las matrices A dadas por las Ecuaciones (??)-(??) y las matrices T formadas
como producto de las matrices A, estas cantidades se pueden calcular de la siguiente forma. Primero,
oj es dado por las primeras 3 entradas de la última columna de Tj0 = A1 · · · Aj , con o0 = (0, 0, 0)T =
o1 . El vector zj es dado como zj = Rj0 k donde Rj0 es la parte rotacional de Tj0 . De esta manera
sólo se necesitan obtener las matrices Tj0 para calcular el Jacobiano. Realizando estos cálculos, se
obtienen la siguientes expresiones para el manipulador Stanford:
 
c1 s2 d3 − s1 d2 + d6 (c1 c2 c4 s5 + c1 c5 s2 − s1 s4 s5 )
o6 = s1 s2 d3 − c1 d2 + d6 (c1 s4 s5 + c2 c4 s1 s5 + c5 s1 s2 ) (4.64)
 
c2 d3 + d6 (c2 c5 − c4 s2 s5 )
 
c1 s2 d3 − s1 d2
o3 = s1 s2 d3 + c1 d2  (4.65)
 
c2 d3

Luis Arturo García Delgado Control de Robots UNISON, MCE


79

Los términos zi están dados por


   
0 −s1
z0 = 0 z1 =  c1  (4.66)
   
1 0
   
c1 s2 c1 s2
z2 = s1 s2  z3 = s1 s2  (4.67)
   
c2 c2
 
−c1 c2 s4 − s1 c4
z4 = −s1 c2 s4 + c1 c4  (4.68)
 
s2 s4
 
c1 c2 c4 s5 − s1 s4 s5 + c1 s2 c5
z5 = s1 c2 c4 s5 + c1 s4 s5 + s1 s2 c5  (4.69)
 
−s2 c4 s5 + c2 c5

El Jacobiano del manipulador Stanford se obtiene al combinar estos elementos de acuerdo con
las fórmulas dadas.

Ejemplo 4.8 (Manipulador SCARA). Ahora obtendremos el Jacobiano del manipulador SCARA
del Ejemplo ??. este Jacobiano es una matriz de 6 × 4 ya que el manipulador SCARA tiene 4 grados
de libertad. Entonces necesitamos conocer las matrices Tj0 = A1 · · · Aj , donde las matrices A están
dadas por las Ecuaciones (3.22) y (3.23).
Dado que las articulaciones 1, 2 y 4 son rotatorias y la articulación 3 es prismática, y dado que
o4 − o3 es paralelo a z3 (y por lo tanto z3 × (o4 − o3 ) = 0), el Jacobiano es de la forma
" #
z × (o4 − o0 ) z1 × (o4 − o1 ) z2 0
J= 0 (4.70)
z0 z1 0 z3

Para realizar los cálculos tenemos que


   
a1 c1 a1 c1 + a2 c12
o1 = a1 s1  o2 = a1 s1 + a2 s12  (4.71)
   
0 0
 
a1 c1 + a2 c12
o4 = a1 s1 + a2 s12  (4.72)
 
d3 − d4

Similarmente z0 = z1 = k, y z2 = z3 = −k. Por lo tanto, el Jacobiano del Manipulador SCARA


es
−a1 s1 − a2 s12 −a2 s12 0
 
0
 a1 c1 + a2 c12 a2 c12 0 0
 
 0 0 −1 0 
J = (4.73)
 
0 0 0 0


 
 0 0 0 0
1 1 0 −1

UNISON, MCE Control de Robots Luis Arturo García Delgado


80

4.7. La velocidad de la Herramienta


Muchas tareas requieren que se adiera una herramienta al efector final. En tales casos, es necesa-
rio relacionar la velaocidad del marco de la herramienta con la velocidad del marco del efector final.
Suponga que la herramienta está rígidamente unida al efector final, y la relación espacial fija entre
el efecector final y el marco de la herramienta está dado por la matriz constante de transformación
homogénea " #
6 R d
Ttool = (4.74)
0 1
Supondremos que la velocidad del efector final está dada y expresada en coordenadas relativas al
marco del efector final, es decir, tenemos dada ξ66 . En esta sección obtendremos la velocidad de la
herramienta expresada en coordenadas relativas al marco de la herramienta, esto es, obtendremos
tool .
ξtool
Debido a que los dos marcos están rígidamente unidos, la velocidad angular del marco de la
herramienta es la misma que la velocidad angular del marco del efector final. Para ver esto, sim-
plemente calcule las velocidades angulares de cada marco tomando las derivadas de las matrices de
rotación apropiadas. Dado que R es constante y Rtool 0 = R60 R, tenemos
0
Ṙtool = Ṙ60 R
0 0
⇒ S(ωtool )Rtool = S(ω60 )R60 R
0
⇒ S(ωtool ) = S(ω60 )

Entonces, ωtool = ω6 , y para obtener la velocidad angular de la herramienta relativa al marco de la


herramienta aplicamos la transformación rotacional
tool
ωtool = ω6tool = RT ω66 (4.75)

Si el efector final se mueve con velocidas del cuerpo ξ = (v6 , ω6 ), entonces la velocidad lineal
del origen del marco de la herramienta, que está rígidamente unido al marco del efector-final, está
dado por
vtool = v6 + ω6 × r (4.76)
donde r es el vector desde el origen del marco del efector-final al origen del marco de la herramienta.
A partir de la Ecuación (4.74), vemos que d da las coordenadas del origen del marco del marco
de la herramienta con respecto al marco del efector-final, y por lo tanto podemos expresar r en
coordenadas relativas al marco de la herramienta como rtool = RT d. Entonces, escribimos ω6 × r en
coordenadas con respecto al marco de la herramienta como

ω6tool × rtool = RT ω66 × (RT d)


= −RT d × RT ω66
= −S(RT d)RT ω66
= −RT S(d)RRT ω66
= −RT S(d)ω66 (4.77)

Para expresar el vector libre v66 en coordenadas relativas al marco de la herramienta, aplicamos la
transformación rotacional
v6tool = RT v66 (4.78)
Combinando las Ecuaciones (4.76), (4.77), y (4.78) para obtener la velocidad lineal del marco de
la herramienta y usando la Ecuación (4.75) para la velocidad angular del marco de la herramienta,

Luis Arturo García Delgado Control de Robots UNISON, MCE


81

tenemos
tool
vtool = RT v66 − RT S(d)ω66
tool
ωtool = RT ω66
que puede ser escrita como la ecuación matricial
" #
tool RT −RT S(d) 6
ξtool = ξ6 (4.79)
03×3 RT
En muchos casos, es útil resolver el problema inverso: calcular la velocidad requerida en el efector
final para producir una velocidad deseada en la herramienta. Dado que
" # " #−1
R S(d)R RT −RT S(d)
= (4.80)
03×3 R 03×3 RT

podemos resolver la Ecuación (4.79) para ω66 , obteniendo


" #
R S(d)R tool
ξ66 = ξtool
03×3 R
Esto da la expresión general para transformar velocidades entre dos marcos móviles rígidamente
unidos " #
R A S(d A )RA
A B B B ξB
ξA = A B (4.81)
03×3 RB

4.8. El Jacobiano Analítico


La matriz Jacobiana obtenida anteriormente se llama Jacobiano geométrico. En esta sección
obtendremos el Jacobiano analítico, denotado por Ja (q), el cual está basado en una representación
mínima de la orientación del efector final. Sea
" #
d(q)
X= (4.82)
α(q)

la postura del efector final, donde d(q) es el vector desde el origen del marco base al origen del
marco del efector final y α(q) denota la representación mínima de orientación del marco del efector
final relativo al marco base. Por ejemplo, sea α = [ϕ, θ, ψ] un vector de ángulos de Euler. Entonces
buscamos una expresión de la forma
" #

Ẋ = = Ja (q)q̇ (4.83)
α̇
para definir el Jacobiano analítico.
Se puede mostrar que, si R = Rz,ψ Ry,θ Rzϕ es la transformación de ángulos de Euler, entonces

Ṙ = S(ω)R (4.84)
en la cual ω, que es la velocidad angular está dada por
 
cψ sθ ϕ̇ − sψ θ̇
ω = sψ sθ ϕ̇ + cψ θ̇ (4.85)
 
cθ ϕ̇ + ψ̇
  
cψ sθ −sψ 0 ϕ̇
= sψ sθ cψ 0  θ̇  = B(α)α̇ (4.86)
  
cθ 0 1 ψ̇

UNISON, MCE Control de Robots Luis Arturo García Delgado


82

Los componentes de ω son llamados nutación, rotación y precesión, respectivamente. Com-


binando las relaciones anteriores con la definición previa de Jacobiano
" # " #
v d˙
= = J(q)q̇ (4.87)
ω ω

obtenemos " # " # " #" # " #


v d˙ I 0 d˙ I 0
J(q)q̇ = = = = Ja (q)q̇
ω B(α)α̇ 0 B(α) α̇ 0 B(α)

Así el Jacobiano analítico Ja (q) se puede calcular del Jacobiano geométrico como
" #
I 0
Ja (q) = J(q) (4.88)
0 B(α)−1

siempre y cuando det B(α) ̸= 0.

4.9. Singularidades
El Jacobiano J(q) de 6 × n define un mapeo

ξ = J(q)q̇ (4.89)

entre el vector q̇ de velocidades articulares y el vector ξ = (v, ω) de velocidades del efector final. Esto
implica que todas las posible velocidades del efector final son combiaciones lineales de las columnas
de la matriz Jacobiana
ξ = J1 q̇1 + J2 q̇2 + · · · + Jn q̇n
Por ejemplo, para el brazo plano de dos eslabones, la matriz Jacobiana dada en la Ecuación (??)
tiene dos columnas. Es fácil ver que la velocidad lineal del efector final debe estar en el plano xy, ya
que ninguna columna tiene un elemento diferente de cero en el tercer renglón. Dado que ξ ∈ R6 , es
necesario que J tenga seis columnas linealmente independientes para que el efector final sea capaz
de alcanzar cualquier velocidad arbitraria.
El rango de una matriz es el número de columnas linealmente independientes (o renglones) en la
matriz. Entonces, cuando el rango J = 6, el efector final puede ejecutar cualquier velocidad arbitra-
ria. Para una matriz J ∈ R6×n , el rango de J será ≤ min(6, n). Por ejemplo, para el manipulador
planar de dos eslabones, tenemos que rango J ≤ 2, mientras que para un brazo antropomórfico con
muñeca esférica se tiene un rango J ≤ 6.
El rango de una matriz no es necesariamente constante. En efecto, el rango de la matriz Jaco-
biana del manipulador dependerá de la configuración q. Las configuraciones para las cuales el rango
de la matriz J(q) es menor que su máximo valor se llaman singularigades o configuraciones
singulares.
Es importante identificar las configuraciones singulares por varias razones:

Las singularidades representan configuraciones a partir de las cuales ciertas direcciones de


movimiento pueden ser inalcanzables.

En las singularidades, velocidades acotadas del efector final pueden corresponder a velocidades
articulares desacotadas.

En las singularidades, torques acotados en las articulaciones pueden corresponder a fuerzas y


torques desacotados del efector final.

Luis Arturo García Delgado Control de Robots UNISON, MCE


83

Las singularidades usualmente corresponden a puntos en los límites del espacio de trabajo del
manipulador, es decir, a puntos de máximo alcance del manipulador.

Las singularidades corresponden a puntos en el espacio de trabajo del manipulador que pueden
ser inalcanzables bajo pequeñas perturbaciones de los parámetros de los eslabones, como
longitud, offset, etc.

Hay un número de métodos que se pueden usar para determinar las singularidades del Jaco-
biano. En este capítulo, explotaremos el hecho de que una matriz cuadrada es singular cuando su
determinante es igual a cero. En general, es difícil resolver la ecuación no lineal J(q) = 0. Por
lo tanto, introducimos ahora el método de desacoplamiento de singularidades, el cual es aplicable
cuando,por ejemplo, el manipulador está equipado con una muñeca esférica.

4.9.1. Desacoplamiento de Singularidades


En el Capítulo ?? vimos que se puede obtener un conjunto de ecuaciones de cinemática directa
para cualquier manipulador uniendo rígidamente un marco de coordenadas a cada eslabón de la
manera que los seleccionemos, calculando un conjunto de transformaciones homogéneas relacionadas
con los marcos de coordenadas, y multiplicándolos entre sí según se necesite. La convención DH
es un modo sistemático de hacerlo. Aunque las ecuaciones resultantes dependen de los marcos
de coordenadasseleccionados, las configuraciones del manipulador por sí mismas son cantidades
geométricas, independientes de los marcos geométricos que usemos para describirlas. Reconocer
este hecho nos permite desacoplar la determinación de configuraciones singulares para aquellos
manipuladores con muñeca esférica, en dos problemas más simples: el primero es determinar las
llamadas singularidades del brazo, es decir, singularidades que resultan del movimiento de los
tres primeros eslabones; el segundo es determinar las singularidades de la muñeca, que resultan
del movimiento de la muñeca esférica.
Considere el caso en que n = 6, es decir, el manipulador consiste de un brazo de 3-GDL y una
muñeca esférica de 3-GDL. En este caso, el Jacobiano es una matriz de 6 × 6 y una configuración q
es singular si y sólo si
det J(q) = 0 (4.90)
Si particionamos el Jacobiano en bloques de 3 × 3 como
 
J11 J12
J = [JP |JO ] =  −− −−  (4.91)
 
J21 J22

entonces, dado que las tres articulaciones finales siempre son rotatorias,
" #
z × (o6 − o3 ) z4 × (o6 − o4 ) z5 × (o6 − o5 )
JO = 3 (4.92)
z3 z4 z5

Ya que los ejes de la muñeca se intersecan en un punto en común o, si seleccionamos los marcos
de coordenadas de tal forma que o3 = o4 = o5 = o6 = o, entonces JO se vuelve
" #
0 0 0
JO = (4.93)
z3 z4 z 5

En este caso la matriz Jacobiana tiene la forma de bloque triangular


" #
J 0
J = 11 (4.94)
J21 J22

UNISON, MCE Control de Robots Luis Arturo García Delgado


84

con determinante
det J = det J11 det J22 (4.95)
donde J11 y J22 son cada una matrices de 3 × 3. J11 tendrá la i-ésima columna zi−1 × (o − oi−1 ) si
la articulación i es rotatoria, y zi−1 si la articulación i es prismática, mientras que

J22 = [z3 z4 z5 ] (4.96)

Por lo tanto, el conjunto de configuraciones singulares del robot es la unión del conjunto de
configuraciones del brazo que satisfacen det J11 = 0 y el conjunto de configuraciones de la muñeca
satisfacen det J22 = 0. Note que esta forma de Jacobiano no proporciona necesariamente la rela-
ción correcta entre la velocidad del efector final y las velocidades articulares. Sólo se utiliza para
simplificar la determinación de singularidades.

4.9.2. Singularidades de la Muñeca


De la Ecuación (4.96) podemos ver que la muñeca esférica está en una configuración singular
cuando los vectores z3 , z4 y z5 son linealmente dependientes. La Figura 4.4 muestra que esto pasa
cuando los ejes articulares z3 y z5 son colineales, es decir, cuando θ4 = 0 o π. Éstas son las únicas
singularidad para la muñeca esférica, y son inevitables si no se imponen límites mecánicos en el
diseño de la muñeca para restringir su movimiento de manera que se evite que z4 y z5 se alinien. De
hecho, cuando cualquiera de los dos ejes de las articulaciones rotatorias son colineales, resulta una
singularidad, ya que una rotación igual y opuesta sobre los ejes resulta en que no haya movimiento
neto en el efector final.

Figura 4.4: Singularidad de la muñeca esférica.

4.9.3. Singularidades en el brazo


Para conocer las singularidades se necesita calcular det(J11 ), el cual se obtiene utilizando la
Ecuación (4.56), pero con el centro de la muñeca o en lugar de on . En el resto de esta sección
determinaremos las singularidades para tres brazos comunes, el manipulador codo, el manipulador
esférico y el manipulador SCARA.

Ejemplo 4.9 (Singularidades del Manipulador Codo). Considere el manipulador articulado de tres
eslabones, cuyos marcos de coordenadas se ubican según se observa en la Figura 4.5.
La submatriz Jacobian J11 es
 
−a2 c1 s2 − a3 s1 c23 −a2 s2 c1 − a3 s23 c1 −a3 c1 s23
J11 =  a2 c1 c2 + a3 c1 c23 −a2 s1 s2 − a3 s1 s23 a3 s1 s23  (4.97)
 
0 a2 c2 + a3 c23 a3 c23

y el determinante de J11 es
det J11 = a2 a3 s3 (a2 c2 + a3 c23 ). (4.98)

Luis Arturo García Delgado Control de Robots UNISON, MCE


85

Figura 4.5: Manipulador Codo.

Vemos de la Ecuación (4.98) que el manipulador codo está en una configuración singular cuando

s3 = 0, esto es, θ3 = 0 o π (4.99)

y cuando
a2 c2 + a3 c23 = 0 (4.100)
La situación de la Ecuación (4.99) se muestra en la Figura 4.6 y surge cuando el codo está
completamente extendido o completamente contraido.

Figura 4.6: Singularidades del Manipulador Codo.

La segunda situación de la Ecuación (4.100) se muestra en la Figura 4.7. Esta configuración


ocurre cuando el centro de la muñeca interseca el eje de la base de rotación z0 . Hay un número
infinito de configuraciones singulares y un número infinito de soluciones a la cinemática inversa de
posición cuando el centro de la muñeca está a lo largo de este eje.
Para un manipulador codo con offset, como el que se muestra en la Figura 4.8, el centro de
la muñeca no puede intersecar z0 , lo que corrobora nuestra afirmación previa de que los puntos
alcanzables en configuraciones singulares pueden no ser alcanzables bajo pequeñas perturbaciones
arbitrarias de los parámetros del manipulador, en este caso un offset ya sea en el codo o el hombro

Ejemplo 4.10 (Singularidades del Manipulador Esférico). Considere el brazo esférico de la Figura
4.9. Este manipulador está en una configuración singular cuando el centro de la muñeca interseca
z0 como en el ejemplo anterior, ya que cualquier rotación de la base mantiene este punto fijo.

Ejemplo 4.11 (Singularidades del Manipulador SCARA). Ya hemos obtenido el Jacobiano com-
pleto del manipulador SCARA. Este Jacobiano es tan simple que no hay necesidad de obtener el
Jacobiano modificado como en los ejemplos anteriores. Refiréndonos a la Figura 4.10 podemos ver

UNISON, MCE Control de Robots Luis Arturo García Delgado


86

Figura 4.7: Singularidad del Manipulador Codo sin Offset.

Figura 4.8: Manipulador Codo con un Offset en el Codo.

Figura 4.9: Singularidad del Manipulador Esférico.

geométricamente que la unica singularidad del brazo SCARA ocurre cuando el brazo está comple-
tamente extendido o completamente retraído. En efecto, ya que la parte del Jacobiano del robot

Luis Arturo García Delgado Control de Robots UNISON, MCE


87

Figura 4.10: Singularidad del Manipulador SCARA.

SCARA que gobierna las singularidades del brazo es dada por


 
α1 α3 0
J11 = α2 α4 0  (4.101)
 
0 0 −1

donde

α1 = −a1 s1 − a2 s12
α2 = a1 c1 + a2 c12
α3 = −a1 s12 (4.102)
α4 = a1 c12

observamos que el rango de J11 será menor que 3 cuando α1 α4 − α2 α3 = 0. Se puede calcular esta
velocidad y mostrar que equivale a

s2 = 0, lo cual implica θ2 = 0, π (4.103)

Note las similitudes entre este caso y las singularidades para el manipulador codo de la Figura
??. En cada caso, la porción relevante del brazo es apenas un manipulador plano de dos eslabones.
Como se puede ver de la Ecuación (??), el Jacobiano para el manipulador plano de dos eslabones
pierde rango cuando θ2 = 0 o π.

4.10. Fuerza Estática / Relaciones de Torque


La interacción del manipulador con el ambiente produce fuerzas y momentos en el efector final
o en la herramienta. Ésta, a su vez, produce fuerzas en las articulaciones del robot. En esta sección
discutimos el rol del Jacobiano del manipulador en la relación cuantitativa entre las fuerzas del
efector final y los torques en las articulaciones. Esta relación es importante en los métodos de
planeación de rutas, la obtención de las ecuaciones dinámicas y el diseño de algoritmos de control
en fuerza.
Sea F = [Fx , F y, Fz , nx , ny , nz ]T el vector de fuerzas y momentos en el efector final. Sea τ el
correspondiente vector de fuerzas de torques articulares. Entonces F y τ se relacionan mediante

τ = J T (q)F (4.104)

UNISON, MCE Control de Robots Luis Arturo García Delgado


88

donde J T (q) es la transpuesta del Jacobiano del manipulador.


Una forma fácil de obtener esta relación es mediante el llamado principio de trabajo virtual.
Represéntense mediante δX y δq desplazamientos infinitesimales en el espacio de trabajo y el espacio
articular, respectivamente. Estos desplazamientos son llamados desplazamientos virtuales si son
consistenetes con algunas restricciones impuestas sobre el sistema. Por ejemplo, si el efector final está
en contacto con una pared rígida, entonces los desplazamientos virtuales en posición son tangentes
a la pared. Estos desplazamientos virtuales se relacionan mediante el Jacobiano del manipulador
J(q) de acuerdo a
δX = J(q)δq (4.105)
El trabajo virtual del sistema es

δw = F T δX − τ T δq (4.106)

Sustituyendo la Ecuación (4.105) en la Ecuación (??) da

δw = (F T J − τ T )δq (4.107)

El principio de trabajo virtual dice, en efecto, que la cantidad dada por la Ecuación (4.107)
es igual a cero si el manipulador está en equilibrio. Esto lleva a la relación dada por la Ecuación
(4.104). En otras palabras, las fuerzas del efector final están relacionadas con los torques articulares
mediante la transpuesta del Jacobiano del manipulador.

Figura 4.11: Robot plano de dos eslabones.

Ejemplo 4.12. Considere el manipulador plano de dos eslabones de la Figura 4.11, con una fuerza
F aplicada al final del eslabón dos, como se muestra. El Jacobiano de este manipulador es dado por
la Ecuación (??). Los torques articulares resultantes τ = (τ1 , τ2 ), están dados por
 
Fx
Fy 
" # " # 
τ1 −a1 s1 − a2 s12 a1 c1 + a2 c12 0 0 0 1 F 
 z
= (4.108)
τ2 −a2 s12 a2 c12 0 0 0 0 1  nx 
 
 
 ny 
nz

4.11. Inversa de Velocidad y Aceleración


La relación del Jacobiano
ξ = J q̇ (4.109)

Luis Arturo García Delgado Control de Robots UNISON, MCE


89

especifica la velocidad del efector final que resultará cuando las articulaciones se muevan con ve-
locidad q̇. El problema inverso de velocidad consiste en encontrar las velocidades articulares q̇ que
producen la velocidad deseada del efector final. Es quizá un poco sorprendente que la relación in-
versa de velocidad es conceptualmente más simple que la relación inversa de posición. Cuando el
Jacobiano es una matriz cuadrada y no singular, este problema se puede resolver invirtiendo la
matriz Jacobiana
q̇ = J −1 ξ (4.110)
Para manipuladores que no tienen exactamente seis eslabones, el Jacobiano no puede ser inver-
tido. En este caso habrá una solución a la Ecuación (4.110) si y sólo si ξ se encuentra en el espacio
del rango del Jacobiano. Un vector ξ pertenece al rango de J si y sólo si

rangoJ(q) = rango[J(q)|ξ] (4.111)

En otras palabras, la Ecuación (4.109) se puede resolver para q̇ ∈ Rn una vez que el rango de la matriz
aumentada [J(q)|ξ] sea el mismo que el rango del Jacobiano J(q). Este es un resultado estándar
del álgebra lineal y existen muchos algoritmos, como la eliminación Gaussiana, para resolver tales
sistemas de ecuaciones lineales.
Para el caso en que n > 6 podemos resolver q̇ usando la seudoinversa derecha de J. Para construir
la seudoinversa, usamos el hecho de que cuando J ∈ Rm×n , si m < n y rango J = m, entonces
(JJ T )−1 existe. en este caso (JJ T ) ∈ Rm×m , y tiene rango m. Usando este resultado, podemos
reagrupar los términos para obtener

I = (JJ T )(JJ T )−1


= J[J T (JJ T )−1 ]
= JJ +

Aquí, J + = J T (JJ T )−1 es llamada seudoinversa de J, dado que JJ + = I. Note que J + J ∈ Rn×n y
que en general J + J ̸= I (recuerde que la multiplicación de matrices no es conmutativa).
Es fácil demostrar que una solución de la Ecuación (4.109) es dada por

q̇ = J + ξ + (I − J + J)b (4.112)

en donde b es un vector arbitrario.


En general, para m < n, (I − J + J) ̸= 0, y todos los vectores de la forma (I − J + J)b caen
en el espacio nulo de J. Esto significa que, si q̇ ′ = 0 es un vector de velocidad articular tal que
q̇ ′ = (I − J + J)b, entonces cuando las articulaciones se mueven con velocidad q̇ ′ , el efector final
permanecerá fijo ya que J q̇ ′ = 0. Por lo tanto, si q̇ es una solución a la Ecuación (4.109), entonces
también lo es q̇ + q̇ ′ , con q̇ ′ = (I − J + J)b, para cualquier valor de b. Si el objetivo es minimizar las
velocidades articulares resultantes, seleccionamos b = 0.
Podemos construir la seudoinversa derecha de J usando su descomposición de valor singular. En
particular, podemos escribir J como la matriz producto

J = U ΣV T

donde U ∈ Rm×m y V ∈ Rn×n son matrices ortogonales (de rotación) y Σ está dada mediante
 
σ1

 σ2 

Σ= . 0 
 
 
 . 
σm

UNISON, MCE Control de Robots Luis Arturo García Delgado


90

donde σi son los valores singulares del Jacobiano. Este producto matricial es conocido como
descomposición de valor singular del Jacobiano.
Ahora es tarea simple construir la seudoinversa dercha de J usando su descomposición de valor
singular
J + = V Σ+ U T (4.113)
en donde T
σ1−1


 σ2−1 

+
Σ = . 0 
 
 
 . 
−1
σm
Podemos aplicar un enfoque similar cuando el Jacobiano analítico se usa en lugar del Jacobiano
del manipulador. Recuerde de la Ecuación (??) que las velocidades articulares y las velocidades del
efector final se relacionan por medio del Jacobiano como

Ẋ = Ja (q)q̇ (4.114)

Entonces el problema inverso de velocidad se convierte en el de resolver el sistema lineal dado en la


Ecuación (4.114), lo cual se puede lograr como ya se hizo para el Jacobiano del manipulador.
Diferenciando la Ecuación (4.114) se obtiene una expresión para la aceleración

d
 
Ẍ = Ja (q)q̈ + Ja (q) q̇ (4.115)
dt

Entonces, dado un vector Ẍ de aceleraciones del efector final, el vector de aceleración articular
instantánea q̈ es dado como una solución de
d
 
Ja (q)q̈ = Ẍ − Ja (q) q̇ (4.116)
dt
Para manipuladores de 6-GDL las ecuaciones de inversa de velocidad y aceleración pueden
entonces estar dadas como
q̇ = Ja (q)−1 Ẋ (4.117)
y
d
   
q̈ = Ja (q)−1 Ẍ − Ja (q) q̇ (4.118)
dt
siempre y cuando det Ja (q) ̸= 0.

4.12. Problemas
4.1 Verifique la Ecuación (4.6) mediante cálculo directo.

4.2 Verifique la Ecuación (4.7) mediante cálculo directo.

4.3 Demuestre la afirmación dada en la Ecuación (4.9) de que R(a×b) = Ra×Rb, para R ∈ SO(3).

4.4 Verifique la Ecuación (4.16) mediante cálculo directo.

4.5 Suponga que a = (1, −1, 2) y que R = Rx,90 . Muestre mediante cálculo directo que RS(a)RT =
S(Ra).
∂R ∂R
4.6 Dada R = Rx,θ Ry,ϕ , calcule ∂ϕ . Evalúe ∂ϕ en θ = π2 , ϕ = π2 .

Luis Arturo García Delgado Control de Robots UNISON, MCE


91

4.7 Dada la transformación de ángulos de Euler

R = Rz,ψ Ry,θ Rz,ϕ


d
muestre que dt R = S(ω)R donde

ω = {cψ sθ ϕ̇ − sψ θ̇}i + {sψ sθ ϕ̇ + cψ θ̇}j + {ψ̇ + cθ ϕ̇}k

Los componentes de i, j y k, respectivamente, son llamados nutación, giro, y precesión.

4.8 Repita el problema 4.7 para la transformación Roll-Pitch-Yaw. En otras palabras, encuentre
d
una expresión explícita para ω tal que dt R = S(ω)R, donde R está dada por la Ecuación (2.39).

4.9 Dos marcos o0 x0 y0 z0 y o1 x1 y1 z1 están relacionados mediante la transformación homogénea


 
0 −1 0 1
1 0 0 −1
H=
 
0 0 1 0 

0 0 0 1

Una partícula tiene velocidad v1 (t) = [3, 1, 0]T relativa al marco o1 x1 y1 z1 . ¿Cuál es la velocidad de
la partícula en el marco o0 x0 y0 z0 ?

4.10 Para el manipulador plano de tres eslabones del Ejemplo 4.6, calcule el vector oc y desarrolle
la matriz Jacobiana del manipulador.

4.11 Calcule el Jacobiano J11 para el manipulador codo de 3 eslabones del Ejemplo 4.9 y muestre
que concuerda con la Ecuación (4.97). Muestre que el determinante de esta matriz concuerda con
la Ecuación (4.98).

4.12 Calcule el Jacobiano J11 para el manipulador esférico de tres eslabones del Ejemplo 4.10.

4.13 Use la Ecuación (4.101) para mostrar que las singularidades del manipulador SCARA están
dadas por la Ecuación (4.103).

4.14 Encuentre el Jacobiano de 6 × 3 para los tres eslabones del manipulador cilíndrico de la Figura
??. Encuentre las configuraciones singulares para este brazo.

4.15 Repita el Problema 4.14 para el manipulador Cartesiano de la Figura ??.

4.16 Complete el desarrollo del Jacobiano para el manipulador Stanford del Ejemplo 4.7.

4.17 Muestre que B(α) dada por la Ecuación (4.86) es invertible siempre que sθ ̸= 0.

4.18 Suponga que q̇ es una solución de la Ecuación (4.109) para m < n.


(a) Muestre que q̇ + (I − J + J)b también es una solución de la Ecuación (4.109) para una b ∈ Rn .
(b) Muestre que b = 0 da la solución que minimiza las velocidades articulares resultantes.

4.19 Verifique la Ecuación (4.113).

UNISON, MCE Control de Robots Luis Arturo García Delgado


92

Luis Arturo García Delgado Control de Robots UNISON, MCE


Capítulo 5

Cinemática Inversa

En el Capítulo 3 mostramos cómo determinar la posición y orientación del efector final en


términos de variables articulares. Este capítulo trata del problema inverso, el de encontrar las
variables articulares en términos de la posición y orientación del efector final. Este es el problema
de cinemática inversa, y es, en general, más difícil que el problema de cinemática directa.
Comenzaremos formulando el problema de cinemática inversa. En seguida, describiremos el prin-
cipio de desacoplamiento cinemático y cómo se puede utilizar para simplificar la cinemática inversa
de la mayoría de los manipuladores modernos. Usando el desacoplamiento cinemático, podemos
considerar los problemas de posición y orientación independientemente. Describimos un enfoque
geométrico para resolver el problema de posicionamiento, mientras que explotamos la parametriza-
ción de ángulos de Euler para resolver el problema de orientación.
También discutimos la solución numérica de la cinemática inversa utilizando métodos basados
en el Jacobiano inverso y la transpuesta del Jacobiano. El método del Jacobiano inverso es similar
a la búsqueda de Newton-Raphson mientras que el método de la transpuesta del Jacobiano es un
método de búsqueda de gradiente.

5.1. El Problema General de Cinemática Inversa


El problema general de cinemática inversa se establece como sigue. Dada una matriz de trans-
formación homogenea de 4 × 4 " #
R o
H= ∈ SE(3) (5.1)
0 1

con R ∈ SO(3), encontrar (una o todas) las soluciones de la ecuación

Tn0 (q1 , . . . , qn ) = H (5.2)

donde
Tn0 (q1 , . . . , qn ) = A1 (q1 ) · · · An (qn ) (5.3)
Aquí, H representa la posición deseada y orientación del efector final, y nuestra tarea es encontrar
los valores de las variables q1 , . . . , qn tales que Tn0 (q1 , . . . , qn ) = H.
La Ecuación (5.2) resulta en 12 ecuaciones no lineales con n variables desconocidas, lo cual se
puede escribir como
Tij (q1 , . . . , qn ) = hij i = 1, 2, 3, j = 1, 2, 3, 4 (5.4)
donde Tij , hij expresan las 12 entradas no triviales de Tn0 y H, respectivamente. (Debido a que el
renglón final de Tn0 y H son (0, 0, 0, 1), cuatro de las dieciseis ecuaciones representadas por (5.2) son
triviales).

93
94

Ejemplo 5.1. Volviendo al ejemplo del manipulador Stanford de la Sección 3.3.5. Suponga que la
posición deseada y la orientación del marco final etán dados por
 
0 1 0 −1.54
0 0 1 0.763 
H= (5.5)
 
1 0 0 0 

0 0 0 1

Para encontrar las correspondientes variables articulares θ1 , θ2 , d3 , θ4 , θ5 , y θ6 debemos resolver


el siguiente conjunto de ecuaciones:

c1 [c2 (c4 c5 c6 − s4 s6 ) − s2 s5 c6 ] − s1 (s4 c5 c6 + c4 s6 ) = 0


s1 [c2 (c4 c5 c6 − s4 s6 ) − s2 s5 c6 ] + c1 (s4 c5 c6 + c4 s6 ) = 0
−s2 (c4 c5 c6 − s4 s6 ) − c2 s5 c6 = 1
c1 [−c2 (c4 c5 s6 + s4 c6 ) + s2 s5 s6 ] − s1 (−s4 c5 s6 + c4 c6 ) = 1
s1 [−c2 (c4 c5 s6 + s4 c6 ) + s2 s5 s6 ] + c1 (−s4 c5 s6 + c4 c6 ) = 0
s2 (c4 c5 s6 + s4 c6 ) + c2 s5 s6 = 0
c1 (c2 c4 s5 + s2 c5 ) − s1 s4 s5 = 0
s1 (c2 c4 s5 + s2 c5 ) + c1 s4 s5 = 1
−s2 c4 s5 + c2 c5 = 0
c1 s2 d3 − s1 d2 + d6 (c1 c2 c4 s5 + c1 c5 s2 − s1 s4 s5 ) = −0.154
s1 s2 d3 + c1 d2 + d6 (c1 s4 s5 + c2 c4 s1 s5 + c5 s1 s2 ) = 0.763
c2 d3 + d6 (c2 c5 − c4 s2 s5 ) = 0

Si los valores de los parámetros DH son d2 = 0.154 y d6 = 0.263, una solución a este conjunto
de ecuaciones está dado por:
π π π π
θ1 = , θ2 = , d3 = 0.5, θ4 = , θ5 = 0, θ6 = .
2 2 2 2
Aunque no hayamos visto cómo obtener esta solución, no es difícil verificar que satisface la
cinemática directa para el manipulador Stanford.

Las ecuaciones del ejemplo anterior son, por supuesto, mucho más difíciles de resolver direc-
tamente en forma cerrada. Este es el caso para la mayoría de los brazos robóticos. Por lo tanto,
necesitamos desarrollar técnicas sistemáticas y eficientes que exploten la estructura cinemática par-
ticular del manipulador. Mientras que el problema de cinemática directa siempre tiene una solución
única que puede obtenerse evaluando las ecuaciones directas, el problema de cinemática inversa
puede o no tener solución. Aún si existe solución, ésta puede o no ser única. Más aún, debido a
que las ecuaciones de cinemática directa son en general complicadas funciones no lineales de las
variables articulares, la solución puede ser difícil de obtener aún y cuando exista.
Al resolver el problema de cinemática inversa, nos interesa encontrar una solución en forma
cerrada más que una solución numérica. Encontrar una solución en forma cerrada significa encontrar
una relación explícita:
qk = fk (h11 , . . . , h34 ), k = 1, . . . , n (5.6)
Las soluciones en forma cerrada son preferibles por dos razones. Primero, en ciertas aplicaciones,
como el seguimiento de una costura de soldadura cuya posición es provista por un sistema de visión,
las ecuaciones de cinemática inversa se deben resolver a una tasa veloz, por decir 20 milisegundos,
y tener una expresión cerrada en vez de una búsqueda iterativa es una necesidad práctica. Segundo,

Luis Arturo García Delgado Control de Robots UNISON, MCE


95

las ecuaciones cinemáticas, en general tienen soluciones múltiples. Tener soluciones en forma cerrada
nos permite desarrollar reglas para seleccionar una solución particular de entre varias.
La cuestón práctica de la existencia de soluciones al problema de cinemática inversa depende
de consideraciones de ingeniería tanto como de matemáticas. Por ejemplo, el movimiento de arti-
culaciones rotatorias puede estar restringido a menos de 360 grados de rotación, de forma que no
todas las soluciones matemáticas de las ecuaciones cinemáticas corresponderán a configuraciones
del manipulador físicamente realizables. Supondremos que la posición y orientación dadas son tales
que al menos una solución de (5.2) existe. Una vez que una solución de las ecuaciones matemáticas
es identificada, debe ser revisada más adelante para ver si satisface o no todas las restricciones en
los rangos de posibles movimientos articulares.

5.2. Desacoplamiento Cinemático


Aunque el problema general de la cinemática inversa es bastante difícil, resulta que para mani-
puladores que tienen 6 articulaciones, donde las últimas 3 articulaciones se intersecan en un punto
(como el manipulador Stanford), es posible desacoplar el problema de cinemática inversa en dos
problemas más simples, conocidos como cinemática inversa de posición y cinemática inver-
sa de orientación. En otras palabras, para un manipulador de 6 GDL con una muñeca esférica,
el problema de cinemática inversa se puede separar en dos problemas más simples, el primero es
encontrar la posición de intersección de los ejes de la muñeca, llamado centro de la muñeca, y
después encontrar la orientación de la muñeca.
Para ser más concretos supongamos que se tienen exactamente 6 GDL y que las últimas tres
articulaciones y que los últimos tres ejes articulares se intersecan en el punto oc . Expresamos (5.2)
como dos conjuntos de ecuaciones que representan las ecuaciones rotacionales y posicionales

R60 (q1 , . . . , q6 ) = R (5.7)


o06 (q1 , . . . , q6 ) = o (5.8)

donde o y R son la posición y orientación deseada del marco de la herramienta, expresadas con
respecto a un marco de coordenadas del mundo. Entonces, se nos dan o y R, y el problema de
cinemática inversa consiste en resolver q1 , . . . , q6 .
La suposición de una muñeca esférica significa que los ejes z3 , z4 y z5 se intersecan en oc y por
lo tanto los orígenes o4 y o5 asignados por la convensión DH siempre estarán en el centro de la
muñeca oc . En muchos de los robots o3 también se encuentra en oc , aunque esto no es necesario
para el desarrollo subsecuente. El punto importante de esta suposición de la cinemática inversa es
que el movimiento de los 3 eslabones finales sobre estos ejes no cambia la posición de oc , y entonces,
la posición del centro de la muñeca es función sólo de las tres primeras variables articulares.
El origen del marco de la herramienta (cuyas coordenadas deseadas están dadas por o) es obte-
nido simplemente por una traslación de distancia d6 sobre z5 desde oc (ver la Tabla 3.3). En nuestro
caso, z5 y z6 son el mismo eje, y la tercera columna de R expresa la dirección de z6 con respecto al
marco base. Por lo tanto, tenemos  
0
0
o = oc + d6 R 0 (5.9)
 
1
Entonces, para tener el efector final del robot en el punto con coordenada dadas por o y con la
orientación del efector final dada por R = (rij ), es necesario y suficiente que el centro de la muñeca
oc tenga coordenadas dadas por  
0
0
oc = o − d6 R 0 (5.10)
 
1

UNISON, MCE Control de Robots Luis Arturo García Delgado


96

y que la orientación del marco o6 x6 y6 z6 con respecto al marco base esté dada por R. Si las compo-
nentes de la posición del efector final son denotadas por ox , oy , oz y las componentes del centro de
la muñeca o0c son denotadas por xc , yc , zc , entonces de la Ecuación (5.10) se tiene la relación
   
xc ox − d6 r13
 yc  = oy − d6 r23  (5.11)
   
zc oz − d6 r33

Utilizando la Ecuación (5.11) podemos encontrar los valores de las 3 primeras variables articula-
res. Esto determina la transformación de orientación R30 la cual depende sólo de estas tres primeras
variables articulares. Ahora ya podemos determinar la orientación del efector final relativa al marco
o3 x3 y3 z3 a partir de la expresión
R = R30 R63 (5.12)
como
R63 = (R30 )−1 R = (R30 )T R (5.13)
Los tres últimos ángulos articulares se pueden encontrar como un conjunto de ángulos de Euler
correspondientes a R63 . Note que el lado derecho de la Ecuación (5.13) es completamente conocido ya
que R es dado y R30 se puede calcular una vez que se conozcan las tres primeras variables articulares.
La idea de desacoplamiento cinemático es ilustrada en la Figura 5.1.

Figura 5.1: Desacoplamiento cinemático en el caso de una muñeca esférica. El vector oc es la posición
del punto centro de la muñeca y o6 es la posición del efector final, ambas con respecto al marco
base. Las coordenadas del punto centro de la muñeca no dependen de las variables de orientación
de la muñeca θ4 , θ5 y θ6 .

5.3. Inversa de Posición: un Enfoque Geométrico


Para los arreglos cinemáticos comunes que consideramos, podemos usar un enfoque geométrico
para encontrar las variables q1 , q2 , q3 correspondientes a o0c dadas por la Ecuación (5.10). Res-
tringimos nuestro tratamiento al enfoque geométrico por dos razones. Primero, como ya dijimos,
los diseños de la mayoría de los manipuladores actuales son cinemáticamente simples, generalmente
consisten en una de las cinco configuraciones mencionadas en el Capítulo 1 con una muñeca esférica.
En realidad, se debe parcialmente a la dificultad del problema general de cinemática inversa el que el
diseño de los manipuladores se ha envuelto en su estado presente. Segundo, hay pocas técnicas que
que pueden manejar el problema general de la cinemática inversa para configuraciones arbitrarias.
Ya que el lector es más probable que encuentre configuraciones de robots del tipo considerado aquí,
la difucaltad adicional envuelta en tratar el caso general parece injustificada.

Luis Arturo García Delgado Control de Robots UNISON, MCE


97

En general la complejidad del problema de cinemática inversa se incrementa con el número


de parámetros de los eslabones (ai , αi , di , θi ) que sean diferentes de cero. Para la mayoría de los
manipuladores, muchos de los parámetros ai , di son cero, y los parámetros αi suelen ser 0 o ±π/2,
etc. En estos casos específicamente, un enfoque geométrico es lo más sencillo y lo más natural. La
idea general del enfoque geométrico es resolver la variable articular qi proyectando el manipulador
en el plano xi−1 -yi−1 y resolver un simple problema trigonométrico. Por ejemplo, para resolver θ1 ,
proyectamos el brazo en el plano x0 -y0 y usamos trigonometría para encontrar θ1 . Ilustraremos este
método con dos ejemplos importantes: los brazos esférico (RRP) y articulado (RRR).

5.3.1. Configuración Esférica


Primero resolvemos la cinemática inversa de posición para un manipulador esférico de tres grados
de libertad mostrado en la Figura 5.2, con los componentes de oc = o0c denotado mediante xc , yc , zc .
Proyectando oc en el plano x0 − y0 , vemos que

θ1 = atan2(yc , xc ) (5.14)

en la cual atan2 denota la función arcotangente de dos argumentos definida en el Apéndice A. Note
que una segunda solución válida para θ1 es

θ1 = π + atan2(yc , xc ). (5.15)

Por supuesto, esto, a su vez, llevará a una solución diferente para θ2 .

Figura 5.2: Primeras tres articulaciones de un manipulador esférico.

Estas soluciones para θ1 , son válidas a menos que xc = yc = 0. En este caso, la Ecuación (5.14)
está indefinida y el manipulador está en una configuración singular, en la cual el centro de la muñeca
oc interseca z0 como se muestra en la Figura 5.3. En esta configuración cualquier valor de θ1 deja
oc fijo. Hay por consiguiente infinidad de soluciones para para θ1 cuando oc interseca z0 .
El ángulo θ2 está dado en la Figura 5.2 como
π
θ2 = atan2(s, r) + (5.16)
2
donde r2 = x2c + yc2 , s = zc − d1 .
La distancia lineal d3 se encuentra mediante
p q
d3 = r 2 + s2 = x2c + yc2 + (zc − d1 )2 (5.17)

UNISON, MCE Control de Robots Luis Arturo García Delgado


98

Figura 5.3: Configuración singular para un manipulador esférico en la cual el centro de la muñeca
cae sobre el eje z0 .

La raíz cuadrada negativa para d3 es ignorada y así en este caso obtenemos dos soluciones de la
cinemática inversa de posición mientras el centro de la muñeca no interseque z0 .

5.3.2. Configuración Articulada

Figura 5.4: Primeras tres articulaciones de un manipulador codo.

Enseguida consideramos el manipulador codo mostrado en la Figura 5.4. Como en el caso del
manipulador esférico, la primera variable articular es la rotación de la base y hay dos posibles
soluciones
θ1 = atan2(yc , xc ) (5.18)

θ1 = π + atan2(yc , xc ) (5.19)
siempre que xc y yc no sean ambos cero.
Si xc y yc son cero, como se muestra en la Figura 5.5, la configuración es singular como antes y
θ1 puede tomar cualquier valor.

Luis Arturo García Delgado Control de Robots UNISON, MCE


99

Figura 5.5: Configuración singular para un manipulador codo en la cual el centro de la muñeca cae
sobre el eje z0 .

Figura 5.6: Manipulador codo con offset en el hombro

Si hay un offset d ̸= 0 como se muestra en la Figura 5.6 entonces el centro de la muñeca no puede
intersecar z0 . En este caso, dependiendo de cómo se hayan asignado los parámetros DH, tendremos
d2 = d o d3 = d. En este caso, habrá, en general, sólo dos soluciones para θ1 .
Éstas corresponden a las llamadas configuraciones de brazo izquierdo y brazo derecho como
se muestra en la Figura 5.7.
Para la configuración brazo izquierdo en la Figura 5.7 vemos geométricamente que
θ1 = ϕ − α (5.20)
en la cual
ϕ = atan2(yc , xc ) (5.21)
p
α = atan2(d, r2 − d2 ) (5.22)
q
= atan2(d, x2c + yc2 − d2 )
La segunda solución, dada por la configuración brazo derecho en la Figura 5.7 está dada por
p
θ1 = atan2(yc , xc ) + atan2(−d, − r2 − d2 ) (5.23)

UNISON, MCE Control de Robots Luis Arturo García Delgado


100

Figura 5.7: Configuración brazo izquierdo (a la izquierda) y brazo derecho (a la derecha) para un
manipulador codo con un offset.

Para visualizar esto, note que

θ1 = α + β
α = atan2(yc , xc )
β = γ+π
p
γ = atan2(−d, − r2 − d2 )

las cuales juntas implican que


p
β = atan2(−d, − r2 − d2 )

ya que cos(θ + π) = − cos(θ) y sin(θ + π) = − sin(θ).

Figura 5.8: Proyección en el plano formado por los eslabones 2 y 3.

Para encontrar los ángulos θ2 y θ3 para el manipulador codo, dado θ1 , consideramos el plano
formado por el segundo y tercer eslabón, como se muestra en la Figura 5.8. Dado que el movimiento
de los eslabones 2 y 3 es planar, la solución es análoga a la del manipulador de dos eslabones. Como
en la previa deducción, podemos aplicar la ley de los cosenos para obtener

r2 + s2 − a22 − a23
cos θ3 = (5.24)
2a2 a3
xc + yc2 − d2 + (zc − d1 )2 − a22 − a23
2
= := D
2a2 a3

Luis Arturo García Delgado Control de Robots UNISON, MCE


101

debido a que r2 = x2c + yc2 − d2 y s = zc − d1 . Entonces, θ3 está dada por


p
θ3 = atan2(± 1 − D2 , D) (5.25)
Las dos soluciones para θ3 corresponden a las posiciones codo-arriba o codo-abajo, respectivamente.
Similarmente, θ2 está dado como
θ2 = atan2(s, r) − atan2(a3 s3 , a2 + a3 c3 ) (5.26)
q
= atan2(zc − d1 , x2c + yc2 − d2 ) − atan2(a3 s3 , a2 + a3 c3 )
Un ejemplo de un manipulador codo con offsets es el PUMA mostrado en la Figura 5.9. Hay
cuatro soluciones para la cinemática inversa de posición como se muestra. Éstas corresponden a las
situaciones de brazo izquierdo arriba, brazo izquierdo abajo, brazo derecho arriba y brazo derecho
abajo. Veremos que hay dos soluciones para la orientación de la muñeca y por lo tanto un total de
ocho soluciones de la cinemática inversa del manipulador PUMA.

Figura 5.9: Cuatro soluciones de la cinemática inversa de posición para el manipulador PUMA

5.4. Inversa de Orientación


En la sección previa usamos un enfoque geométrico para resolver el problema inverso de posición,
con lo cual se obtenían los valores de las tres primeras variables articulares correspondientes a la
posición del centro de la muñeca. El problema de orientación inversa es el de encontrar los valores
de las tres últimas tres articulaciones correspondientes a la orientación dada con respecto al marco
o3 x3 y3 z3 . Para una muñeca esférica, se puede interpretar como el problema de encontrar el conjunto
de ángulos de Euler correspondientes a una matriz de rotación dada R. Recuerde que la Ecuación
(3.15) muestra que la matriz de rotación obtenida de la muñeca esférica tiene la misma forma que la
matriz de rotación de la transformación de ángulos de Euler, dada en (B.1). Por lo tanto, podemos
utilizar el método desarrollado en la Sección 2.5.1 para resolver los tres ángulos articulares de la
muñeca esférica. En particular, resolvemos los tres ángulos de Euler, ϕ, θ y ψ usando las Ecuaciones
(2.29)-(2.34), y entonces usar el mapeo
θ4 = ϕ, θ5 = θ, θ6 = ψ

UNISON, MCE Control de Robots Luis Arturo García Delgado


102

Tabla 5.1: Parámetros de los eslabones para el manipulador de la Figura 5.4.

Eslabón ai αi di θi
1 0 90 d1 θ1∗
2 a2 0 0 θ2∗
3 a3 90 0 θ3∗
∗ variable

Ejemplo 5.2 (Manipulador Articulado con Muñeca Esférica). Los parámetros DH para la asigna-
ción de marcos mostrados en la Figura 5.4 se resumen en la Tabla ??. Multiplicando las correspon-
dientes matrices Ai obtenemos la matriz R30 como
 
c1 c23 s1 c1 s23
0
R3 = s1 c23 −c1 s1 s23  (5.27)
 
s23 0 −c23

La matriz R63 = A4 A5 A6 es dada por


 
c4 c5 c6 − s4 s6 −c4 c5 s6 − s4 c6 c4 s5
R63 = s4 c5 c6 + c4 s6 −s4 c5 s6 + c4 c6 s4 s5  (5.28)
 
−s5 c6 s5 s6 c5

La ecuación a ser resuelta para las tres variables finales es por lo tanto

R63 = (R30 )T R (5.29)

y la solución de los ángulos de Euler puede ser aplicada a esta ecuación. Por ejemplo, las tres
ecuaciones dadas por la tercer columna en la ecuación matricial anterior están dadas por

c4 s5 = c1 c23 r13 + s1 c23 r23 + s23 r33 (5.30)


s4 s5 = s1 r13 − c1 r23 (5.31)
c5 = c1 s23 r13 + s1 s23 r23 − c23 r33 (5.32)

Entonces, si las Ecuaciones (5.30) y (5.31) no son ambas cero, obtenemos θ5 de (2.29) y (2.30)
como
q
θ5 = atan2(± 1 − (c1 s23 r13 + s1 s23 r23 − c23 r33 )2 , c1 s23 r13 + s1 s23 r23 − c23 r33 ) (5.33)

Si se selecciona la raíz cuadrada positiva en (5.33), entonces θ4 y θ6 están dadas por (2.34) y
(2.34), respectivamente, como

θ4 = atan2(s1 r13 − c1 r23 ,


c1 c23 r13 + s1 c23 r23 + s23 r33 ) (5.34)
θ6 = atan2(s1 r12 − c1 r22 , −s1 r11 + c1 r21 ) (5.35)

Las otras soluciones se obtienen de forma análoga. Si s5 = 0, entonces los ejes articulares z3 y
z5 son colineales. Esta es una configuración singular y sólo se puede determinar la suma θ4 + θ6 .
Una solución es seleccionar θ4 arbitrariamente y entonces determinar θ6 usando (2.36) o (2.38).

Ejemplo 5.3 (Manipulador Codo - Solución Completa). Para resumir el enfoque geométrico para
la solución de las ecuaciones de cinemática inversa, daremos una solución a la cinemática inversa

Luis Arturo García Delgado Control de Robots UNISON, MCE


103

del manipulador codo de seis grados-de-libertad que se muestra en la Figura 5.4 el cual tiene una
muñeca esférica y no tiene offsets en las articulaciones.
Dados    
ox r11 r12 r13
o =  oy  , R = r21 r22 r23  (5.36)
   
oz r31 r32 r33
entonces con

xc = ox − d6 r13 (5.37)
yc = oy − d6 r23 (5.38)
zc = oz − d6 r33 (5.39)

un conjunto de articulaciones variables de DH está dada por

θ1 = atan2(yc , xc ) (5.40)
q
θ2 = atan2(zc − d1 , x2c + yc2 − d2 ) − atan2(a3 s3 , a2 + a3 c3 ) (5.41)
p
θ3 = atan2(± 1 − D2 , D),
x2 + yc2 − d2 + (zc − d1 )2 − a22 − a23
con D = c (5.42)
2a2 a3
θ4 = atan2(s1 r13 − c1 r23 ,
c1 c23 r13 + s1 c23 r23 + s23 r33 ) (5.43)
q
θ5 = atan2(± 1 − (c1 s23 r13 + s1 s23 r23 − c23 r33 )2 , c1 s23 r13 + s1 s23 r23 − c23 r33 ) (5.44)
θ6 = atan2(s1 r12 − c1 r22 , −s1 r11 + c1 r21 ) (5.45)

Las otras soluciones posibles se dejan como un ejercicio.


Ejemplo 5.4 (Manipulador SCARA). Como otro ejemplo, considere el manipulador SCARA ilus-
trado en la Figura 5.10, con cinemática directa es definida por T40 a partir de la Ecuación (3.24).
La solución de la cinemática inversa está dada por un conjunto de soluciones de la ecuación
" #
R o
T40 = ,
0 1
 
c12 c4 + s12 s4 −c12 s4 + s12 c4 0 a1 c1 + a2 c12
s c − c s −s s − c c 0 a1 s1 + a2 s12 
=  12 4 12 4 12 4 12 4
(5.46)
 
0 0 −1 −d3 − d4 


0 0 0 1

Para empezar, notamos que el SCARA sólo tiene 4 gdl, no cualquier posible H de SE(3) permite
una solución de (??). De hecho, podemos ver que no hay solución a la Ecuación (??). De hecho
fácilmente podemos ver que no hay solución a la Ecuación (5.46) a menos que R sea de la forma
 
cα sα 0
R = sα −cα 0  (5.47)
 
0 0 −1

y si este es el caso, la suma θ1 + θ2 − θ4 es determinada por

θ1 + θ2 − θ4 = α = atan2(r12 , r11 ) (5.48)

UNISON, MCE Control de Robots Luis Arturo García Delgado


104

Figura 5.10: Primeras tres articulaciones del manipulador SCARA.

Proyectando la configuración del manipulador en el plano x0 − y0 resulta la geometría mostrada en


la Figura 5.10. Usando la ley de los cosenos

o2x + o2y − a21 − a22


c2 = (5.49)
2a1 a2
y √
θ2 = atan2(± 1 − c2 , c2 ) (5.50)
El valor para θ1 se obtiene entonces como

θ1 = atan2(oy , ox ) − atan2(a2 s2 , a1 + a2 c2 ) (5.51)

Ahora podemos determinar θ4 a partir de la Ecuación (5.48) como

θ4 = θ1 + θ2 − α = θ1 + θ2 − atan2(r12 , r11 ) (5.52)

Finalmente, d3 está dado como


d3 = oz + d4 (5.53)

5.5. Cinemática Inversa Numérica


Para los manipuladores considerados en las secciones previas obtuvimos soluciones en forma
cerrada para la cinemática inversa. En esta sección, consideramos algoritmos numéricos, iterativos,
para el cálculo de la cinemática inversa. Los métodos numéricos son incrementalmente populares
debido a la disponibilidad de computación de alto rendimiento y la llegada de software open-source.
Además, en casos donde las soluciones en lazo cerrado no existan, o si el manipulador es redundante,
un recurso de métodos numéricos puede ser la mejor opción.
Sea xd ∈ Rm un vector de coordenadas Cartesianas. Por ejemplo, xd puede representar el
punto del centro de la muñeca (m = 3) o la posición y orientación del efector final usando una
representación mínima para la orientación del efector final (m = 6). La cinemática directa para un
manipulador de n−eslabones, en este caso, es una función f : Rn → Rm . Si definimos

G(q) = xd − f (q) (5.54)

Luis Arturo García Delgado Control de Robots UNISON, MCE


105

entones una solución a la cinemática inversa es una configuración q d que satisface G(q d ) = xd −
f (q d ) = 0. Debajo daremos detalles de los algoritmos más comunes para resolver iterativamente
para q d dado xd ; el primero basado en la inversa del Jacobiano, que es similar al método Newton-
Raphson para encontrar raíces, y el segundo se basa en la transpuesta del Jacobiano y se obtiene
como un algoritmo de búsqueda de gradiente.

Método de Inversa del Jacobiano


Con xd dada como una configuración de robot deseada, expandimos la función de cinemática
directa f (q) en una serie de Taylor alrededor de la configuración q d , donde xd = f (q d ) para obtener

f (q) = f (q d ) + J(q d )(q − q d ) + t.o.s. (5.55)

donde tomamos J = Ja (q) como el Jacobiano analítico de la Ecuación (4.83). Despreciando los
términos de orden superior (t. o. s.) tenemos alrededor de la configuración q d , donde xd = f (q d )
para obtener
q d − q = J −1 (q)(xd − f (q)) (5.56)
suponiendo que el Jacobiano es cuadrado e invertible. Para encontrar una solución para q d , co-
menzamos con una estimación inicial, q0 , y de la secuencia de estimaciones sucesivas, q0 , q1 , q2 , . . .
como
qk = qk−1 + αk J −1 (qk−1 )(xd − f (qk−1 )), k = 1, 2, . . . (5.57)
Note que hemos introducido un tamaño de paso, αk > 0, dentro de la ecuación, que puede
ajustarse para ayudar a la convergencia. El tamaño de paso αk se puede seleccionar como una
constante o como una función de k, como un escalar o como una matriz diagonal, el último en orden
para escalar cada componente de la configuración de manera separada.

Observación 5.1. Ya que la Ecuación (5.57) se basa en una aproximación de primer orden de la
cinemática inversa, sólo se puede esperar convergencia local. También, debido a que generalmente
hay múltiples soluciones para la cinemática inversa, la configuración particular que resulta de correr
el algoritmo es dependiente de la estimación inicial.

La Figura 5.11 muestra los resultados obtenidos de un manipulador plano RR, de dos eslabo-
nes. El algoritmo converge dentro de 10−4 de la solución exacta después de 10 iteraciones con los
parámetros dados.
Si el Jacobiano no es cuadrado o invertible, entonces uno debe usar la seudoinversa J + = Ja+
en lugar de Ja−1 . Para m ≤ n, definimos la seudoinversa derecha en el Apéndice B como J + =
J T (JJ T )−1 . En este caso podemos definir la regla de actualización para qk como

qk = qk−1 + αk J + (qk−1 )(f (q d ) − f (qk−1 )) (5.58)

Método de la Transpuesta del Jacobiano


El segundo método que describimos se basa en la transpuesta del Jacobiano J T (q) en lugar de
la inversa del Jacobiano. Para empezar, definimos un problema de optimización
1
mı́n F (q) = mı́n (f (q) − xd )T (f (q) − xd ) (5.59)
q q 2

donde, como arriba, xd es la configuración deseada y f (q) es el mapa de cinemática directa. El


gradiente de la función costo de arriba F (q) está dado por

∇F (q) = J T (q)(f (q) − xd ) (5.60)

UNISON, MCE Control de Robots Luis Arturo García Delgado


106

Figura 5.11: Solución de la cinemática inversa usando la inversa del Jacobiano. Las coordenadas
deseadas del efector-final son xd = (0.2, 1.3). Las variables articulares correspondientes a xd son
θ1 = 0.5650, θ2 = 1.7062. La estimación inicial es θ1 = 0.25, θ2 = 0.75. El tamaño de paso α se
seleccionó como 0.75.

Un algoritmo de gradiente en decenso para minimizar F (q) (vea Apéndice D) es entonces

qk = qk−1 − αk ∇F (qk−1 ) = qk−1 − αk J T (qk−1 )(f (qk−1 ) − xd ) (5.61)

donde, nuevamente, αk > 0 es el tamaño de paso.

Observación 5.2. Una ventaja de este método es que la transpuesta del Jacobiano es más fácil
de calcular que la inversa del Jacobiano y no sufre de singularidades en las configuraciones. En
general, sin embargo, la convergencia, en términos de número de iteraciones, puede ser más lenta
con este método.

La Figura 5.12 muestra la respuesta para el manipulador de dos-eslabones RR para la misma


configuración deseada y estimación inicial como en la Figura 5.11. En este caso, el algoritmo converge
después de 30 iteraciones.

Figura 5.12: Solución de la cinemática inversa usando la transpuesta del Jacobiano. Las coordenadas
deseadas del efector-final son xd = (0.2, 1.3). Las variables articulares correspondientes a xd son
θ1 = 0.5650, θ2 = 1.7062. La estimación inicial es θ1 = 0.25, θ2 = 0.75. El tamaño de paso α se
seleccionó como 0.75.

Luis Arturo García Delgado Control de Robots UNISON, MCE


107

5.6. Problemas
5.1 Dada una posición deseada del efector final, ¿cuántas soluciones hay para la cinemática inversa
del brazo plano de tres eslabones que se muestra en la Figura 5.13? Si se especifica la orientación
del efector final ¿cuántas soluciones hay? Use el enfoque geométrico para encontrarlas.

Figura 5.13: Brazo plano de tres eslabonescon articulaciones rotatorias

5.2 Repita el Problema 5.1 para el brazo plano de tres eslabones con articulación prismática de la
Figura 5.14

Figura 5.14: Brazo plano de tres eslabones con articulación prismática

5.3 Resuelva la cinemática inversa de posición para el manipulador cilíndrico de la Figura 5.15

Figura 5.15: Configuración cilíndrica

5.4 Resuelva la cinemática inversa de posición para el manipulador Cartesiano de la Figura 5.16

5.5 Agregue una muñeca esférica al brazo cilíndrico de tres eslabones del Problema 5.3 y escriba la
solución completa de la cinemática inversa.

5.6 Agregue una muñeca esférica al manipulador Cartesiano del Problema 5.4 y escriba la solución
completa de la cinemática inversa.

UNISON, MCE Control de Robots Luis Arturo García Delgado


108

Figura 5.16: Configuración Cartesiana

5.7 Escriba un programa computacional para calcular las ecuaciones de cinemática inversa para
el manipulador codo usando las Ecuaciones (5.40)-(5.45). Incluya procedimientos para identificar
configuraciones singulares y que seleccione una configuración particular cuando la configuración no
sea singular. Pruebe su rutina para varios casos especiales, incluyendo configuraciones singulares.

5.8 El manipulador Stanford del Ejemplo 3.3.5tiene una muñeca esférica. Dada una posición de-
seada o y una orientación R del efector final,
(a) Calcule las coordenadas deseadas del centro de la muñeca o0c .
(b) Resuelva la cinemática inversa de posición, es decir, encuentre los valores de las primeras tres
variables articulares que colocan el centro de la muñeca en oc . ¿La solución es única? ¿Cuántas
soluciones encontró?
(c) Calcule la matriz de rotación R30 . Resuelva el problema inverso de orientación para este mani-
pulador encontrando un conjunto de ángulos de Euler correspondientes a R63 dada por la Ecuación
(5.28).

5.9 Repita el Problema 5.8 para el manipulador PUMA 260 del Problema 3.9, el cula también tiene
una muñeca esférica. ¿Cuántas soluciones encontró en total?

5.10 Encuentre todas las demás soluciones de la cinemática inversa del manipulador codo de la
Sección 5.3.2.

5.11 Modifique las soluciones θ1 y θ2 para el manipulador esférico dadas por las Ecuaciones (5.15)
y (5.16) para el caso de un hombro con offset.

Luis Arturo García Delgado Control de Robots UNISON, MCE


Capítulo 6

Dinámica

Este capítulo aborda la dinámica de robots manipuladores. Mientras que las ecuaciones cine-
máticas describen el movimiento del robot sin consideración de las fuerzas y torques que producen
el movimiento, las ecuaciones dinámicas describen explícitamente la relación entre entre fuerza y
movimiento. Las ecuaciones de movimiento son importantes a considerar en el diseño de robots,
en simulación y animación de movimiento de robots, y en el diseño de algoritmos de control. Pre-
sentamos las llamadas ecuaciones de Euler-Lagrange, las cuales describen la evolución de un
sistema mecánico sujeto a restricciones holonómicas (este término se define más adelante). Para
motivar el enfoque de Euler-Lagrange comenzamos con una sencilla deducción de estas ecuaciones
a partir de la segunda ley de Newton para un sistema de un-grado-de-libertad. Entonces deducimos
las ecuaciones de Euler-Lagrange a partir del principio de trabajo virtual en el caso general.
Para determinar las ecuaciones de Euler-Lagrange en una situación específica, uno debe formar
el Lagrangiano del sistema, que es la diferencia entre la energía cinética y la energía potencial;
mostramos cómo hacer esto en muchas situaciones comúnmente encontradas. Entonces deducimos las
ecuaciones dinámicas de mucjos ejemplos de manipuladores robóticos, incluido un robot Cartesiano
de dos-eslabones, un robot plano de dos-eslabones, y un robot de dos eslabones con articulaciones
manejadas remotamente.
También discutimos muchas propiedades importantes de las ecuaciones de Euler-Lagrange que
se pueden explotar para diseñar y analizar algoritmos de control realimentados. Entre éstos están
cotas específicas sobre la matriz de inercia, linealidad en los parámetros de inercia, y las propiedades
de antisimetría y pasividad. Este capítulo concluye con la obtención de una formulación alternativa
de las ecuaciones dinámicas de un robot, conocida como la formulación Newton-Euler, la cual
es una formulación recursiva de las ecuaciones dinámicas que se usa frecuentemente para cálculos
numéricos y simulación.

6.1. Las Ecuaciones de Euler Lagrange


En esta sección presentamos un conjunto general de ecuaciones diferenciales que describen la
evolución temporal de sistemas mecánicos sujetos a restricciones holonómicas cuando las fuerzas
de restricción satisfacen el principio del trabajo virtual. Éstas son llamadas las ecuaciones de
movimiento de Euler-Lagrange. Note que hay al menos dos maneras distintas de obtener estas
ecuaciones. El método que se presenta aquí se basa en el método del trabajo virtual, pero también
es posible obtener las mismas ecuaciones usando el principio de mínima acción de Hamilton.

6.1.1. Motivación
Para motivar la discusión subsecuente, mostramos primero cómo se pueden obtener las ecuacio-
nes de Euler-Lagrange a partir de la segunda ley de Newton para el sistema de un-grado-de-libertad

109
110

mostrado en la Figura 6.1.

Figura 6.1: Una partícula de masa constante m restringida a moverse verticalmente constituye un
sistema de un grado de libertad. La fuerza gravitacional mg actúa hacia abajo y la fuerza externa
f actúa hacia arriba.

Mediante la segunda ley de Newton, la ecuación de movimiento de la partícula es

mÿ = f − mg (6.1)

Note que el lado izquierdo de la Ecuación (6.1) se puede escribir como


d d ∂ 1 d ∂K
 
mÿ = (mẏ) = mẏ 2 = (6.2)
dt dt ∂ ẏ 2 dt ∂ ẏ

donde K = 12 mẏ 2 es la energía cinética. Usamos la notación de derivada parcial en la expresión de


arriba para ser consistentes con los sistemas considerados después cuando la energía cinética sea una
función de muchas variables. Igualmente podemos expresar la fuerza gravitacional de la Ecuación
(6.1) como
∂ ∂P
mg = (mgy) = (6.3)
∂y ∂y
donde P = mgy es la energía potencial debida a la gravedad. Si definimos
1
L = K − P = mẏ 2 − mgy (6.4)
2
y note que
∂L ∂K ∂L ∂P
= y =−
∂ ẏ ∂ ẏ ∂y ∂y
entonces podemos escribir la Ecuación (6.1) como
d ∂L ∂L
− =f (6.5)
dt ∂ ẏ ∂y
La función L, que es la diferencia de la energía cinética y la energía potencial, se llama Lagrangiano
del sistema, y la Ecuación (6.5) se llama ecuación de Euler-Lagrange.
El procedimiento general que discutimos más abajo es, por supuesto, el inverso del de arriba;
a saber, uno primero escribe las energías cinética y potencial de un sistema en términos de un
conjunto de las llamadas coordenadas generalizadas (q1 , . . . , qn ) donde n es el número de grados
de libertad del sistema, y entonces se calculan las ecuaciones de movimiento del sistema de n-GDL
de acuerdo a
d ∂L ∂L
− = τk , k = 1, . . . , n (6.6)
dt ∂ q̇k ∂qk

Luis Arturo García Delgado Control de Robots UNISON, MCE


111

donde τk es la fuerza (generalizada) asociada con qk . En el ejemplo de arriba de un solo GDL, la


variable y sirve como la coordenada generalizada. La aplicación de las ecuaciones de Euler-Lagrange
lleva a un conjunto de ecuaciones diferenciales de segundo orden acopladas y provee una formulación
de las ecuaciones dinámicas de movimiento para robots de eslabones seriales equivalente a aquellas
obtenidas usando la segunda ley de Newton. Sin embargo, como veremos, el enfoque del Lagrangiano
es ventajoso para los sistemas complejos como robots de múltiples eslabones.
Ejemplo 6.1 (Manipulador de Un Solo Eslabón). Considere el brazo robótico de un solo eslabón
mostrado en la Figura 6.2, que consiste en un eslabón rígido acoplado mediante un tren de engranajes
a un motor de CD. Sea θℓ y θm denotan los ángulos del eslabón y la flecha del motor, respectivamente.
Entonces, θm = rθℓ donde r : 1 es la razón del engranaje. La relación algebraica entre los ángulos
del eslabón y la flecha del motor significa que el sistema tiene sólo un grado de libertad y podemos
por lo tanto utilizar como coordenada generalizada ya sea θm o θℓ .

Figura 6.2: Robot de un solo eslabón. La flecha del motor se acopla al eje de rotación del eslabón
mediante una tren de engranes que amplifica el torque del motor y reduce la velocidad del motor.

Si seleccionamos como coordenada generalizada q = θℓ , la energía cinética del sistema está dada
por
1 2 1
K = Jm θm + Jℓ θ̇ℓ2
2 2
1 2
= (r Jm + Jℓ )q̇ 2 (6.7)
2
donde Jm , Jℓ son las inercias rotacionales del motor y del eslabón, respectivamente. La energía
potencial está dada como
P = M gℓ(1 − cos q) (6.8)
donde M es la masa total del eslabón y ℓ es la distancia desde el eje de la articulación al centro de
masa del eslabón. Definiendo I = r2 Jm + Jℓ , el Lagrangiano L está dado por
1
L = I q̇ 2 − M gℓ(1 − cos q) (6.9)
2
Sustituyendo esta expresión dentro de la Ecuación (6.6) con n = 1 y coordenada generalizada θℓ da
la ecuación de movimiento
I q̈ + M gℓ sin q = τℓ (6.10)
La fuerza generalizada τℓ representa aquellas fuerzas externas que no se pueden obtener a partir
de la energía potencial. Para este ejemplo, τℓ consiste en la entrada de torque del motor u = rτm ,
reflejada al eslabón, y los torques (no conservadores) de amortiguamiento Bm θ̇m y Bℓ θ̇ℓ . Al reflejar
el amortiguamiento del motor al eslabón se obtiene

τℓ = u − B q̇

UNISON, MCE Control de Robots Luis Arturo García Delgado


112

donde B = rBm + Bℓ . Por lo tanto, la expresión completa para la dinámica de este sistema es

I q̈ + B q̇ + M gℓ sin q = u (6.11)

Ejemplo 6.2 (Manipulador de Un Solo Eslabón con Articulación Elástica). En seguida, considere
un manipulador de un solo eslabón que incluye la flexibilidad en la transmisión como se muestra en
la Figura 6.3.

Figura 6.3: Robot de un solo eslabón, con articulación flexible. La elasticidad en la articulación
surge de la flexibilidad en la flecha o engranes.

En este caso el ángulo del motor q1 = θℓ y el ángulo del eslabón q2 = θm son variables indepen-
dientes y así el sistema posee dos grados de libertad.
Entonces, se requieren dos coordenadas generalizadas para especificar la configuración del siste-
ma.
La energía cinética de este sistema es
1 1
K = Jℓ q˙1 2 + Jm q˙2 2 (6.12)
2 2
La energía potencial incluye la energía potencial del resorte sumada a la energía potencial gravita-
cional,
1
P = M gℓ(1 − cos q1 ) + k(q1 − q2 )2 (6.13)
2
Al formar el Lagrangiano L = K − P e ignorando el amortiguamiento por simplicidad, las ecuacio-
nes de movimiento se encuentran a partir de la ecuaciones de Euler-Lagrange como

Jℓ q̈1 + M gℓ sin q1 + k(q1 − q2 ) = 0


(6.14)
Jm q̈2 + k(q2 − q1 ) = u

Los detalles se dejan como un ejercicio (Problema 6-1).

6.1.2. Restricciones Holonómicas y Trabajo Virtual


Ahora, considere un sistema de k partículas con sus correspondientes vectores de posición
r1 , . . . , rk , como se muestra en la Figura (6.4).
Si estas partículas son libres de moverse alrededor sin ninguna restricción, entonces es bastante
fácil describir su movimiento, notando que la masa por la aceleración de cada partícula es igual a la
fuerza externa aplicada a ella. No obstante, si el movimiento de la partícula está restringido de alguna
manera, entonces uno no sólo debe tener en cuenta las fuerzas externas aplicadas, sino también las
llamadas fuerzas restrictivas, es decir, las fuerzas necesarias para hacer que las restricciones se
mantengan. Como una sencilla ilustración de esto, suponga que el sistema consiste en dos partículas
unidas mediante un cable rígido sin masa de longitud ℓ. Entonces las dos coordenadas r1 y r2 deben
satisfacer la restricción
∥r1 − r2 ∥ = ℓ o (r1 − r2 )T (r1 − r2 ) = ℓ2 (6.15)

Luis Arturo García Delgado Control de Robots UNISON, MCE


113

Figura 6.4: Un sistema no restringido de k partículas tiene 3k grados de libertad. Si las partículas
están restringidas, el número de grados de libertad se reduce.

Si uno aplica algunas fuerzas externas a cada partícula, entonces las partículas no sólo experimentan
estas fuerzas externas sino también la fuerza ejercida por el cable, el cual está a lo largo de la dirección
r2 − r1 y de magnitud apropiada. Por lo tanto, para analizar el movimiento de las dos partículas,
podemos seguir una de dos opciones. Podemos calcular, bajo cada conjunto de fuerzas externas, la
correspondiente fuerza restrictiva que debe ser para que la ecuación de arriba continúe cumpliéndose.
Alternativamente, podemos buscar un método de análisis que no requiera que conozcamos la fuerza
restrictiva. Claramente, es preferible la segunda alternativa, ya generalmente es una tarea bastante
complicada calcular las fuerzas de restricción. Esta sección está dirigida a la consecución de este
último objetivo.
Primero, es necesario introducir cierta terminología. Una restricción sobre las k coordenadas
r1 , . . . , rk se llama holonómica si la restricción es una igualdad de la forma
gi (r1 , . . . , rk ) = 0, i = 1, . . . , ℓ (6.16)
La restricción dada por la Ecuación (6.15) impuesta al conectar las dos partículas mediante un
cable rígido sin masa es un ejemplo de una restricción holonómica. Diferenciando la Ecuación (6.16)
tenemos una expresión de la forma
k
X ∂gi
drj = 0 (6.17)
j=1
∂rj
Una restricción de la forma
k
X
ωj drj = 0 (6.18)
j=1
es llamada no holonómica si ésta no puede ser integrada a una restricción de igualdad de la forma
(6.16). Es interesante notar que, mientras el método de obtener la ecuación de movimiento usando el
principio de trabajo virtual se mantenga válido para sistemas no holonómicos, los métodos basados
en principios variacionales, como el principio de Hamilton, ya no se pueden aplicar para obtener
las ecuaciones de movimiento. Discutiremos sistemas sujetos a restricciones no holonómicas en el
Capítulo 14.
Si un sistema está sujeto a ℓ restricciones holonómicas, entonces uno puede pensar en términos
del sistema restringido que tiene ℓ menos grados de libertad que el sistema no restringido. En este
caso, puede ser posible expresar las coordenadas de las k partículas en términos de n coordenadas
generalizadas q1 , . . . , qn . En otras palabras, suponemos que las coordenadas de varias partículas,
sujetas al conjunto de restricciones dado por la Ecuación (6.16), se pueden expresar en la forma
ri = ri (q1 , . . . , qn ), i = 1, . . . , k (6.19)
donde q1 , . . . , qn son todas independientes. De hecho, la idea de coordenadas generalizadas se puede
usar aún y cuando hubiera infinito número de partículas. Por ejemplo, un objeto rígido físico como

UNISON, MCE Control de Robots Luis Arturo García Delgado


114

una barra contiene un infinito número de partículas; pero debido a que la distancia entre cada
par de partículas es fija durante todo el movimiento de la barra, son suficientes seis coordenadas
para especificar completamente las coordenadas de alguna partícula de la barra. En particular, uno
puede usar tres coordenadas de posición para especificar la ubicación del centro de masa de la barra,
y tres ángulos de Euler para especificar la orientación del cuerpo. Típicamente, las coordenadas
generalizadas son posiciones, ángulos, etc. De hecho, en el Capítulo 3 elegimos denotar las variables
articulares mediante los símbolos q1 , . . . , qn precisamente porque estas variables articulares forman
un conjunto de coordenadas generalizadas para un robot manipulador de n-eslabones.
Uno puede ahora hablar de desplazamientos virtuales, que son un conjunto de desplazamien-
tos infinitesimales, δr1 , . . . , δrk , que son consistentes con las restricciones. Por ejemplo, considere
nuevamente la restricción (6.15) y suponga que r1 , r2 son perturbadas a r1 + δr1 , r2 + δr2 , respecti-
vamente. Entonces, para que las coordenadas perturbadas continúen satisfaciendo la restricción, la
longitud de la barra no debe cambiar y así debemos tener

(r1 + δr1 − r2 − δr2 )T (r1 + δr1 − r2 − δr2 ) = ℓ2 (6.20)

Ahora, expandamos el producto de arriba y aprovechemos el hecho de que las coordenadas


originales r1 , r2 satisfacen la restricción dada por la Ecuación (6.15). Si omitimos los términos
cuadráticos en δr1 , δr2 , obtenemos después de algo de álgebra

(r1 − r2 )T (r1 − r2 ) = 0 (6.21)

Entonces, cualesquier perturbaciones infinitesimales en las posiciones de dos partículas deben satis-
facer la ecuación de arriba para que las posiciones perturbadas continúen satisfaciendo la ecuación
de restricción (6.15). Cada par de vectores infinitesimales δr1 , δr2 que satisfacen la Ecuación (6.21)
constituyen un conjunto de desplazamientos virtuales para este problema. La Figura 6.5 muestra
algún desplazamiento virtual representativo para una barra rígida.

Figura 6.5: Ejemplos de desplazamientos virtuales para una barra rígifa. Estos movimientos infinite-
simales no cambian la distancia entre los extremos y son por lo tanto compatibles con la suposición
de que la barra es rígida.

Ahora, la razón para usar coordenadas generalizadas es evitar lidiar con relaciones complicadas
como la Ecuación (6.21) de arriba. Si la Ecuación (6.19) se mantiene, entonces uno puede ver que
el conjunto de todos los desplazamientos virtuales es precisamente
n
X ∂ri
δri = δqj , i = 1, . . . , k (6.22)
j=1
∂qj

donde los desplazamientos virtuales δq1 , . . . , δqn de las coordenadas generalizadas son irrestrictos
(esto es lo que las hace coordenadas generalizadas).
En seguida, comenzamos una discusión de sistemas restringidos en equilibrio. Entonces la fuerza
neta sobre cada partícula es cero, que a su vez implica que el trabajo realizado por cada conjunto
de desplazamientos virtuales es cero. Entonces, la suma del trabajo realizado por algún conjunto de

Luis Arturo García Delgado Control de Robots UNISON, MCE


115

desplazamientos virtuales también es cero; esto es,


k
X
FiT δri = 0 (6.23)
i=1

donde Fi es la fuerza total sobre la partícula i. Como se mencionó antes, la fuerza Fi es la suma de
dos cantidades, a saber (i) la fuerza externa aplicada fi , y (ii) la fuerza de restricción fia . Ahora,
suponga que el trabajo total realizado por las fuerzas de restricción correspondiente a cualquier
conjunto de desplazamientos virtuales es cero, es decir,
k
fia T δri = 0
X
(6.24)
i=1

Esto será cierto cuando la fuerza de restricción entre un par de partículas es dirigida a lo largo del
vector radial que conecta dos partículasb(vea la discusión en el siguiente párrafo). Sustituyendo la
Ecuación (6.24) en la Ecuación (6.23) resulta en
k
X
fi T δri = 0 (6.25)
i=1

La belleza de esta ecuación es que no involucra las fuerzas de restricciones desconocidas, sino sólo
las fuerzas externas desconocidas. Esta ecuación expresa el principio de trabajo virtual, que
se puede escribir en palabras como: El trabajo realizado por las fuerzas externas correspondiente a
algún conjunto de desplazamientos virtuales es cero.
Note que el principio no es universalmente aplicable; éste requiere que la Ecuación (6.24) se
mantenga, es decir, que las fuerzas de restricción no trabajen. Entonces, si aplica el principio de
trabajo virtual, uno puede analizar la dinámica de un sistema sin tener que evaluar las fuerzas de
restricción.
Es fácil verificar que el principio de trabajo virtual aplica cuando la fuerza de restricción entre
un par de partículas actúa a lo largo del vector que conecta las coordenadas de posición de dos
partículas. En particular, cuando las restricciones son de la forma (6.15), el principio aplica. Para
ver esto, considere una vez más una sola restricción de la forma (6.15). En este caso, la fuerza de
restricción, si hay alguna, debe ser ejercida por el cable rígido sin masa, y por lo tanto debe ser
dirigida a lo largo del vector radial que conecta las dos partículas. En otras palabras, la fuerza
ejercida sobre la primera partícula por el cable debe ser de la forma

f1a = c(r1 − r2 ) (6.26)

para alguna constante c (la cual puede cambiar cuando la partícula se mueve alrededor). Mediante
la ley de acción y reacción, la fuerza ejercida sobre la segunda partícula por el cable sólo debe ser
el negativo de la de arriba, es decir,
f2a = −c(r1 − r2 ) (6.27)
Ahora, el trabajo realizado por las fuerzas de restricción correspondientes a un conjunto de despla-
zamientos virtuales es
f1a T δr1 + f2a T δr2 = c(r1 − r2 )T (δr1 − δr2 ) (6.28)
Sin embargo, la Ecuación (6.21) muestra que la expresión de arriba debe ser cero para cualquier
conjunto de desplazamientos virtuales. El mismo razonamiento se puede aplicar si el sistema consiste
en muchas partículas que estén conectadas por pare mediante cables rígidos sin masa de longitudes
fijas, en cuyo caso el sistema está sujeto a muchas restricciones de la forma (6.15). Ahora, el requisito
de que el movimiento de un cuerpo sea rígido equivalentemente se puede expresar como el requisito

UNISON, MCE Control de Robots Luis Arturo García Delgado


116

de que la distancia entre cualquier par de puntos sobre el cuerpo permanezca constante cuando
el cuerpo se mueve, esto es, como una infinidad de restricciones de la forma (6.15). Entonces, el
principio de trabajo virtual aplica cuando la rigidez es la única restricción en el movimiento. Hay en
efecto situaciones en las que este principio no aplica, tal como en la presencia de campos magnéticos.
No obstante, en todas las situaciones encontradas en este libro, podemos seguramente suponer que
el principio de trabajo virtual es válido.

6.1.3. Principio de D’Alembert


En la Ecuación (6.25), los desplazamientos virtuales δri no son independientes, así que no po-
demos concluir de esta ecuación que cada coeficiente Fi individualmente es igual a cero. Con el
objetivo de aplicar tal razonamiento, debemos transformar a coordenadas generalizadas. Antes de
hacer esto, consideramos sistemas que no están necesariamente en equilibrio. Para tales sistemas, el
principio de D’Alembert dice que, si uno introduce una fuerza ficticia adicional −ṗi sobre cada
partícula, donde pi es el momento de la partícula i, entonces cada partícula estará en equilibrio. En
consecuencia, si uno modifica la Ecuación (6.23) remplazando Fi por Fi − ṗi , entonces la ecuación
resultante es válida para sistemas arbitrarios. Uno puede entonces remover las fuerzas de restricción
como antes usando el principio de trabajo virtual. Esto resulta en la ecuación
k
X k
X
fiT δri − ṗTi δri = 0 (6.29)
i=1 i=1

La ecuación de arriba no significa que cada coeficiente de δri sea cero dado que las restricciones
virtuales δri no son independientes. El resto de esta deducción está encaminado a expresar la
ecuación de arriba en términos de las coordenadas generalizadas, que son independientes. Para este
propósito, expresamos cada δri en términos de los correspondientes desplazamientos virtuales de las
coordenadas generalizadas, como se hizo en la Ecuación (6.22). Entonces, el trabajo virtual realizado
por las fuerzas fi está dado por
k k X
n n
X X ∂ri X
fiT δri = fiT δqj = ψj δqj (6.30)
i=1 i=1 j=1
∂qj j=1

donde
k
X ∂ri
ψj = fiT δqj (6.31)
i=1
∂qj
se llama la j-ésima fuerza generalizada. Note que ψj no necesita tener dimensiones de fuerza,
tal como qj no necesita tener dimensiones de longitud; sin embargo, ψj δqj siempre debe tener
dimensiones de trabajo.
Ahora, estudiemos la segunda sumatoria de la Ecuación (6.29). Dado que pi = mi ṙi , se sigue
que
k k k X n
X X X ∂ri
ṗTi δri = mi r̈iT δri = mi r̈iT δqj (6.32)
i=1 i=1 i=1 j=1
∂qj
En seguida, usando la regla de diferenciación de productos, tenemos
" # " #
d ∂ri ∂ri d ∂ri
mi ṙiT = mi r̈iT + mi ṙiT (6.33)
dt ∂qj ∂qj dt ∂qj

Reagrupando lo de arriba y sumando para toda i = 1, . . . , n da


k k
( " # " #)
X ∂ri X d ∂ri d ∂ri
mi r̈iT = mi ṙiT − mi ṙiT (6.34)
i=1
∂qj i=1
dt ∂qj dt ∂qj

Luis Arturo García Delgado Control de Robots UNISON, MCE


117

Ahora, diferenciando la Ecuación (6.19) usando la regla de la cadena da


n
X ∂ri
vi = ṙi = q̇j (6.35)
j=1
∂qj

Observe de la ecuación de arriba que


∂vi ∂ri
= (6.36)
∂ q̇j ∂qj
Después,
n n
" #
d ∂ri X ∂ 2 ri ∂ X ∂ri ∂vi
= q̇ℓ = q̇ℓ = (6.37)
dt ∂qj ℓ=1
∂qj ∂qℓ ∂qj ℓ=1 ∂qℓ ∂qj
donde la última igualdad se deriva de la Ecuación (6.35). Sustituyendo la Ecuación (6.36) y la
Ecuación (6.37) en la Ecuación (6.34) y notando que ṙi = vi da
k k
( " # )
X ∂ri X d ∂vi ∂vi
mi r̈iT = mi viT − mi viT (6.38)
i=1
∂qj i=1
dt ∂ q̇j ∂qj
Si definimos que la energía cinética K sea la cantidad
k
X 1
K= mi viT vi (6.39)
i=1
2
entonces la Ecuación (6.38) se puede expresar de forma compacta como
k
X ∂ri d ∂K ∂K
mi r̈iT = − (6.40)
i=1
∂qj dt ∂ q̇j ∂qj
Ahora, sustituyendo la Ecuación (6.40) en la Ecuación (6.32) se ve que la segunda sumatoria de la
Ecuación (6.29) es
k n
( )
X
T
X d ∂K ∂K
ṗi δri = − δqj (6.41)
i=1 j=1
dt ∂ q̇j ∂qj
Finalmente, combinando las Ecuaciones (6.29), (6.30), y (6.41) da
n
( )
X d ∂K ∂K
− − ψj δqj = 0 (6.42)
j=1
dt ∂ q̇j ∂qj

Ahora, dado que los desplazamientos virtuales δqj son independientes, podemos concluir que cada
coeficiente de la Ecuación (6.42) es cero, es decir,
d ∂K ∂K
− = ψj , j = 1, . . . , n (6.43)
dt ∂ q̇j ∂qj
Si la fuerza generalizada j es la suma de una fuerza generalizada aplicada externamente y otra
debida al campo potencial, entonces es posible una modificación adicional. Suponga que existen
funciones τj y funciones de energía potencial P (q) tales que
∂P
ψj = − + τj (6.44)
∂qj
Entonces la Ecuación (6.43) se puede escribir en la forma
d ∂L ∂L
− = τj (6.45)
dt ∂ q̇j ∂qj
donde L = K − P es el Lagrangiano y hemos vuelto a obtener las ecuaciones de movimiento de
Euler-Lagrange como en la Ecuación (6.6).

UNISON, MCE Control de Robots Luis Arturo García Delgado


118

6.2. Energía Cinética y Potencial


En la sección previa, mostramos que las ecuaciones de Euler-Lagrange se pueden usar para
obtener el las ecuaciones dinámicas de una madera sencilla, siempre que uno sea capaz de expresar las
energías cinética y potencial del sistema en términos de un conjunto de coordenadas generalizadas.
Para que este resultado sea útil en el contexto práctico, es importante que uno sea capaz de calcular
estos términos fácilmente para un manipulador de n-eslabones. En esta sección obtenemos fórmulas
para la energía cinética y energía potencial de un robot con eslabones rígidos usando las variables
articulares de Denavit-Hartenberg como coordenadas generalizadas.
Para empezar note que la energía cinética de un objeto rígido es la suma de dos términos, la
energía cinética traslacional obtenida mediante la concentración de toda la masa del objeto en el
centro de masa, y la energía cinética rotacional del cuerpo alrededor del centro de masa. Refiriéndose
a la Figura 6.6 unimos un marco de coordenadas al centro de masa (llamado el marco unido al
cuerpo) como se muestra.

Figura 6.6: Un cuerpo rígido general tiene seis grados de libertad. La energía cinética consta de la
energía cinetica de rotación y la energía cinética de traslación.

La energía cinética del cuerpo está entonces dada


1 1
K = mv T v + ω T Iω (6.46)
2 2
donde m es la masa total del objeto, v y ω son los vectores de velocidad lineal y angular, respecti-
vamente, e I es una matriz simétrica 3 × 3 llamada el tensor de inercia.

6.2.1. El Tensor de Inercia


Se entiende que los vectores lineal y angular de arriba, v y ω, respectivamente, se expresan en
el marco inercial. En este caso, sabemos que ω se encuentra a partir de la matriz antisimétrica

S(ω) = ṘRT (6.47)

donde R es la transformación de orientación del marco unido al cuerpo y el marco inercial. Es por
lo tanto necesario expresar el tensor de inercia, I, también en el marco inercial para calcular el
triple producto ω T Iω. El tensor de inercia relativo al marco inercial de referencia dependerá de la
configuración del objeto. Si denotamos como I el tensor de inercia expresado en cambio en el marco
adjunto al cuerpo, entonces las dos matrices se relacionan mediante una transformación de similitud
de acuerdo a
I = RIRT (6.48)

Luis Arturo García Delgado Control de Robots UNISON, MCE


119

Ésta es una observación importante porque la matriz de inercia expresada en el marco unido al
cuerpo es una matriz constante independiente del movimiento del objeto y fácilmente calculada.
En seguida mostramos cómo calcular esta matriz explícitamente. Sea la densidad de masa del
objeto representada como una función de la posición, ρ(x, y, z).
Entonces el tensor de inercia en el marco unido al cuerpo se calcula como
 
Ixx Ixy Ixz
I = Iyx Iyy Iyz  (6.49)
 
Izx Izy Izz

donde
Z Z Z
Ixx = (y 2 + z 2 )ρ(x, y, z)dxdydz
Z Z Z
Iyy = (x2 + z 2 )ρ(x, y, z)dxdydz
Z Z Z
Izz = (x2 + y 2 )ρ(x, y, z)dxdydz

y
Z Z Z
Ixy = Iyx = − xyρ(x, y, z)dxdydz
Z Z Z
Ixz = Izx = − xzρ(x, y, z)dxdydz
Z Z Z
Iyz = Izy = − yzρ(x, y, z)dxdydz

Las integrales en las expresiones de arriba se calculan sobre la región de espacio ocupada por el
cuerpo rígido. Los elementos diagonales del tensor de inercia, Ixx , Iyy , Izz , se llaman los principales
momentos de inercia alrededor de los ejes x, y, y z, respectivamente. Los términos ortogonales
Ixy , Ixz , etc., se llaman los productos cruzados de inercia. Si la distribución de la masa del
cuerpo es simétrica con respecto al marco unido al cuerpo, entonces los productos cruzados de
inercia son idénticamente cero.

Ejemplo 6.3 (Sólido rectangular uniforme). Considere el sólido rectangular de largo a, ancho b
y altura c, mostrado en la Figura 6.7, y suponga que la densidad es constante, ρ(x, y, z) = ρ. Si
el marco del cuerpo está unido al centro de masa geométrico del objeto, entonces por simetría, los
productos cruzados de inercia son todos cero y es un sencillo ejercicio calcular
Z c/2 Z b/2 Z a/2
Ixx = (y 2 + z 2 )ρ(x, y, z)dxdydz
−c/2 −b/2 −a/2
abc 2 m
= ρ (b + c2 ) = (b2 + c2 )
12 12

dado que ρabc = m, la masa total. Del mismo modo, un cálculo similar muestra que

m 2 m 2
Iyy = (a + c2 ) ; Izz = (a + b2 )
12 12

UNISON, MCE Control de Robots Luis Arturo García Delgado


120

Figura 6.7: Un sólido rectangular con densidad de masa uniforme y marco de coordenadas unido al
centro geométrico del sólido.

6.2.2. Energía Cinética para un Robot de n-Eslabones


Ahora, considere un manipulador con n eslabones. Hemos visto en el Capítulo 4 que las veloci-
dades lineal y angular de un punto sobre algún eslabón se puede expresar en términos de la matriz
Jacobiana y las derivadas de las variables articulares. Ya que, en nuestro caso, las variables articula-
res son en realidad las coordenadas generalizadas, resulta que, para matrices Jacobianas apropiadas
Jvi y Jωi , de dimensión 3 × n, tenemos

vi = Jvi (q)q̇, ωi = Jωi (q)q̇ (6.50)

Ahora, suponga que la masa del eslabón i es mi y que la matriz de inercia del eslabón i, evaluada
alrededor de un marco de coordenadas paralelo al marco i pero cuyo origen está en el centro de
masa, es igual a Ii . Entonces a partir de las Ecuaciones (6.46) y (6.50) resulta que la energía cinética
total del manipulador es igual a
n n
" #
1 T X o
K = q̇ mi Jvi (q)T Jvi (q) + Jωi (q)T Ri (q)Ii Ri (q)T Jωi (q) q̇ (6.51)
2 i=1
1 T
= q̇ D(q)q̇ (6.52)
2
donde " n #
Xn o
D(q) = mi Jvi (q)T Jvi (q) + Jωi (q)T Ri (q)Ii Ri (q)T Jωi (q) (6.53)
i=1

es una matriz n × n dependiente de la configuración llamada la matriz de inercia. En la Sección


6.4 calcularemos esta matriz para varias configuraciones de manipulador que ocurren comúnmente.
La matriz de inercia es simétrica y definida positiva para cualquier manipulador. La simetría
de D(q) es fácilmente vista a partir de la Ecuación (6.53). La definición positiva se puede inferir
del hecho de que la energía cinética siempre es no-negativa y es cero si y sólo si las velocidades
articulares son cero. La prueba formal se deja como ejercicio (Problema 6-6).

6.2.3. Energía Potencial para un Robot de n-Eslabones


Ahora, considere el término de energía potencial. En el caso de dinámica rígida, la única fuente
de energía potencial es la gravedad. La energía potencial del i-ésimo eslabón se puede calcular
suponiendo que la masa del objeto entero se concentra en su centro de masa y es dada por

Pi = mi g T rci (6.54)

Luis Arturo García Delgado Control de Robots UNISON, MCE


121

donde g es el vector que da la dirección de la gravedad en el marco inercial y el vector rci da las
coordenadas del centro de masa del eslabón i. La energía potencial total del robot de n-eslabones
es por lo tanto
n
X n
X
P = Pi = mi g T rci (6.55)
i=1 i=1
En el caso de que el robot contenga elasticidad, por ejemplo si las articulaciones son flexibles,
entonces la energía potencial incluirá términos que contengan la energía almacenada en los elementos
elásticos. Note que la energía potencial es una función sólo de las coordenadas generalizadas y no
de sus derivadas.

6.3. Ecuaciones de Movimiento


En esta sección nos especializamos en las ecuaciones de Euler-Lagrange obtenidas en la Sección
6.1 para el caso en que se mantienen dos condiciones. Primero, la energía cinética es una función
cuadrática del vector q̇ de la forma
1 1X
K = q̇ T D(q)q̇ = dij (q)q̇i q̇j (6.56)
2 2 i,j

Las ecuaciones de Euler-Lagrange para un sistema tal se pueden obtener como sigue. Usando la
Ecuación (6.56) podemos escribir el Lagrangiano como
1X
L=K −P = dij (q)q̇i q̇j − P (q) (6.57)
2 i,j

La derivada parcial del Lagrangiano con respecto a la k-ésima velocidad articular está dada por
∂L X
= dkj q̇j (6.58)
∂ q̇k j

y por lo tanto
d ∂L X X d
= dkj q̈j + dkj q̇j
dt ∂ q̇k j j
dt
X X ∂dkj
= dkj q̈j + q̇i q̇j (6.59)
j i,j
∂qi

Similarmente la derivada parcial del Lagrangiano con respecto a la k-ésima posición articular está
dada por
∂L 1 X ∂dij ∂P
= q̇i q̇j − (6.60)
∂qk 2 i,j ∂qk ∂qk

Entonces, para cada k = 1, . . . , n, las ecuaciones de Euler-Lagrange se pueden escribir


X X  ∂dkj 1 ∂dij

∂P
dkj q̈j + − q̇i q̇j + = τk (6.61)
j i,j
∂qi 2 ∂qk ∂qk

Intercambiando el orden de la sumatoria y aprovechando la simetría, uno puede mostrar (Problema


6-7) que ( )
X  ∂dkj  1 X ∂dkj ∂dki
q̇i q̇j = + q̇i q̇j (6.62)
i,j
∂qi 2 i,j ∂qi ∂qj

UNISON, MCE Control de Robots Luis Arturo García Delgado


122

Por lo tanto,
( )
X  ∂dkj 1 ∂dij
 X1 ∂dkj ∂dki 1 ∂dij
− q̇i q̇j = + − q̇i q̇j
i,j
∂qi 2 ∂qk i,j
2 ∂qi ∂qj 2 ∂qk
X
= cijk q̇i q̇j
i,j

donde definimos ( )
1 ∂dkj ∂dki ∂dij
cijk := + − (6.63)
2 ∂qi ∂qj ∂qk
Los términos cijk de la Ecuación (6.63) se conocen como símbolos de Christoffel (del primer
tipo). Note que, para una k fija, tenemos cijk = cjik , lo que reduce el esfuerzo involucrado en el
cálculo de estos símbolos en un factor de aproximadamente la mitad. Finalmente, si definimos
∂P
gk = (6.64)
∂qk
entonces podemos escribir las ecuaciones de Euler-Lagrange como
n
X n X
X n
dkj (q)q̈j + cijk (q)q̇i q̇j + gk (q) = τk , k = 1, . . . , n (6.65)
j=1 i=1 j=1

En las ecuaciones de arriba, hay tres tipos de términos. El primer tipo involucra la segunda
derivada de las coordenadas generalizadas. El segundo tipo involucra términos cuadráticos en las
primeras derivadas de q, donde los coeficientes pueden depender de q. Estos últimos términos se
clasifican además en aquellos que involucran un producto del tipo q̇i2 y aquellos que involucran un
producto del tipo q̇i q̇j donde i ̸= j. Los términos del tipo q̇i2 se llaman centrífugos, mientras que los
términos del tipo q̇i q̇j se llaman términos de Coriolis. El tercer tipo de términos son aquellos que
involucran sólo q, pero no sus derivadas. Este tercer tipo surge de diferenciar la energía potencial.
Es común escribir la Ecuación (6.65) en forma matricial como

D(q)q̈ + C(q, q̇)q̇ + g(q) = τ (6.66)

donde el (k, j)esimo elemento de la matriz C(q, q̇) se define como


n n
( )
X X 1 ∂dkj ∂dki ∂dij
ckj = cijk (q)q̇i = + − q̇i (6.67)
i=1 i=1
2 ∂qi ∂qj ∂qk

y el vector de gravedad g(q) está dado por

g(q) = (g1 (q), . . . , gn (q)) (6.68)

En resumen, el desarrollo en esta sección es muy general y aplica a muchos sistemas mecánicos cuya
energía cinética es de la forma (6.56) y cuya energía potencial es independiente de q̇. En la siguiente
aplicamos esta discusión al estudio específico de configuraciones de robots.

6.4. Algunas Configuraciones Comunes


En esta sección aplicamos el método de arroba de análisis de varias configuraciones de mani-
puladores y desarrollamos las correspondientes ecuaciones de movimiento. Las configuraciones son
progresivamente más complejas, comenzando con un manipulador Cartesiano de dos eslabones y
finalizando con un mecanismo de eslabones de cinco-barras que tiene una matriz de inercia parti-
cularmente simple.

Luis Arturo García Delgado Control de Robots UNISON, MCE


123

Figura 6.8: Robot Cartesiano de dos-eslabones. Los ejes articulares ortogonales y el movimiento
lineal articular del robot Cartesiano resulta en cinemática y dinámica sencillas.

Manipulador Cartesiano de Dos Eslabones


Considere el manipulador que se muestra en la Figura 6.8 que consiste en dos eslabones y dos ar-
ticulaciones prismáticas. Denote las masas de los dos eslabones mediante m1 y m2 , respectivamente,
y denote los desplazamientos de las dos articulaciones prismáticas mediante q1 y q2 , respectivamente.
Es fácil ver, como se mencionó en la Sección 6.1, que estas dos cantidades sirven como coordenadas
generalizadas para el manipulador. Dado que las coordenadas generalizadas tienen dimensiones de
distancia, las correspondientes fuerzas generalizadas tienen unidades de fuerza. De hecho, son sólo
las fuerzas aplicadas en cada articulación. Denote éstas mediante fi , i = 1, 2.
Dado que estamos usando las variables articulares como coordenadas generalizadas, sabemos
que la energía cinética es de la forma (6.56) y que la energía potencial es sólo una función de q1 y
q2 . Por lo tanto, podemos usar las fórmulas de la Sección 6.3 para obtener las ecuaciones dinámicas.
También, dado que ambas articulaciones son prismáticas, el Jacobiano de velocidad angular es cero
y la energía cinética de cada eslabón consta solamente del término traslacional.
Resulta que la velocidad del centro de masa del eslabón 1 está dado mediante

vc1 = Jvc1 q̇ (6.69)

donde  
0 0 " #
q̇1
Jvc1 = 0 0 , q̇ = (6.70)
 
q̇2
1 0
Similarmente
vc2 = Jvc2 q̇ (6.71)
donde  
0 0
Jvc2 = 0 1 (6.72)
 
1 0
Por lo tanto, la energía cinética está dada por
1 n o
K = q̇ T m1 JvTc1 Jvc1 + m2 JvTc2 Jvc2 q̇ (6.73)
2
Comparando con la Ecuación (6.56), vemos que la matriz de inercia D está dada sencillamente por
" #
m1 + m2 0
D= (6.74)
0 m2

UNISON, MCE Control de Robots Luis Arturo García Delgado


124

En seguida, la energía potencial del eslabón 1 es m1 gq1 , mientras que la del eslabón 2 es m2 gq1 ,
donde g es la aceleración debida a la gravedad. Por lo tanto, la energía potencial total es

P = g(m1 + m2 )q1 (6.75)

Ahora, estamos listo para escribir abajo las ecuaciones de movimiento. Dado que la matriz de inercia
es constante, todos los símbolos de Christoffel son cero. Además, los componentes de gk del vector
de gravedad están dados por

∂P ∂P
g1 = = g(m1 + m2 ), g2 = =0 (6.76)
∂q1 ∂q2

Sustituyendo en la Ecuación (6.65) se obtienen las ecuaciones dinámicas como

(m1 + m2 )q̈1 + g(m1 + m2 ) = f1


(6.77)
m2 q̈2 = f2

Manipulador Codo Plano

Figura 6.9: Brazo articulado rotatorio de dos eslabones. El movimiento articular rotacional introduce
acoplamiento dinámico entre las articulaciones.

Ahora, considere el manipulador plano con dos articulaciones rotatorias mostrado en la Figura
6.9. Fijemos la notación como sigue: Para i = 1, 2, qi denota el ángulo de la articulación, que además
sirve como coordenada generalizada; mi denota la masa del eslabón i; ℓci denota la longitud de la
articulación previa al centro de masa del eslabón i; e Ii denota el momento de inercia del eslabón i
alrededor de un eje que sale de la página, pasando a través del centro de masa del eslabón i.
Usaremos las variables articulares Denavit-Hartenberg como coordenadas generalizadas, lo que
nos permitirá hacer un efectivo de las expresiones del Jacobiano del Capítulo 4 al calcular la energía
cinética. Primero,
vc1 = Jvc1 q̇ (6.78)

donde,  
−ℓc1 sin q1 0
Jvc1 =  ℓc1 cos q1 0 (6.79)
 
0 0
Similarmente,
vc2 = Jvc2 q̇ (6.80)

Luis Arturo García Delgado Control de Robots UNISON, MCE


125

donde  
−ℓ1 sin q1 − ℓc2 sin(q1 + q2 ) −ℓc2 sin(q1 + q2 )
Jvc2 =  ℓ1 cos q1 + ℓc2 cos(q1 + q2 ) ℓc2 cos(q1 + q2 )  (6.81)
 
0 0
Por lo tanto, la parte traslacional de la energía cinética es
1 T 1 T 1 n o
m1 vc1 vc1 + m2 vc2 vc2 = q̇ m1 JvTc1 Jvc1 + m2 JvTc2 Jvc2 q̇ (6.82)
2 2 2
En seguida, consideramos los términos de velocidad angular. Debido a la particularmente sencilla
naturaleza de este manipulador, no surgen muchas de las dificultades. Primero, está claro que
ω1 = q̇1 k, ω2 = (q̇1 + q̇2 )k (6.83)
cuando se expresan en el marco base inercial. Más aún, dado que ωi está alineado con el eje-z de
cada marco de coordenadas articular, la energía cinética rotacional se reduce sencillamente a 21 Ii ωi2 ,
donde Ii es el momento de inercia alrededor de un eje a través del centro de masa del eslabón i
paralelo al eje-zi . Por lo tanto, la energía cinética rotacional de todo el sistema en términos de las
coordenadas generalizadas es ( " # " #)
1 T 1 0 1 1
q̇ I1 + I2 q̇ (6.84)
2 0 0 1 1
Ahora, estamos listos para formar la matriz de inercias D(q). Para este propósito, simplemente
tenemos que sumar las dos matrices de la Ecuación (6.82) y la Ecuación (6.84), respectivamente.
Entonces " #
T T I1 + I2 I2
D(q) = m1 Jvc1 Jvc1 + m2 Jvc2 Jvc2 + (6.85)
I2 I2
Llevando acabo las multiplicaciones de arriba y usando las identidades trigonométricas estándar
cos2 θ + sin2 θ = 1, cos α cos β + sin α sin β = cos(α − β) lleva a
d11 = m1 ℓ2c1 + m2 (ℓ21 + ℓ2c2 + 2ℓ1 ℓc2 cos q2 ) + I1 + I2
d12 = d21 = m2 (ℓ2c2 + ℓ1 ℓc2 cos q2 ) + I2 (6.86)
d22 = m2 ℓ2c2 + I2
Ahora, podemos calcular los símbolos de Christoffel usando la Ecuación (6.63). Esto da
1 ∂d11
c111 = =0
2 ∂q1
1 ∂d11
c121 = c211 = = −m2 ℓ1 ℓc2 sin q2 = h
2 ∂q2
∂d12 1 ∂d22
c221 = − =h
∂q2 2 ∂q1
∂d21 1 ∂d11
c112 = − = −h
∂q1 2 ∂q2
1 ∂d22
c122 = c212 = =0
2 ∂q1
1 ∂d22
c222 = =0
2 ∂q2
Después, la energía potencial del manipulador es sólo la suma de aquellas de los dos eslabones. Para
cada eslabón, la energía potencial es sólo su masa multiplicada por la aceleración gravitacional y la
altura de su centro de masa. Entonces
P1 = m1 gℓc1 sin q1
P2 = m2 g(ℓ1 sin q1 + ℓc2 sin(q1 + q2 ))

UNISON, MCE Control de Robots Luis Arturo García Delgado


126

y así la energía potencial total es

P = P1 + P2 = (m1 ℓc1 + m2 ℓ1 )g sin q1 + m2 ℓc2 g sin(q1 + q2 ) (6.87)

Por lo tanto, la función gk definida en la Ecuación (6.64) se convierte en

∂P
g1 = = (m1 ℓc1 + m2 ℓ1 )g cos q1 + m2 ℓc2 g cos(q1 + q2 ) (6.88)
∂q1
∂P
g2 = = m2 ℓc2 g cos(q1 + q2 ) (6.89)
∂q2

Finalmente, podemos escribir abajo las ecuaciones dinámicas del sistema como en la Ecuación (6.65).
Sustituyendo para las varias cantidades en esta ecuación y omitiendo los términos cero lleva a

d11 q̈1 + d12 q̈2 + c121 q̇1 q̇2 + c211 q̇2 q̇1 + c221 q̇22 + g1 = τ1
(6.90)
d21 q̈1 + d22 q̈2 + c112 q̇12 + g2 = τ2

En este caso, la matriz C(q, q̇) está dada como


" #
hq̇2 hq̇2 + hq̇1
C= (6.91)
−hq̇1 0

Manipulador Codo Plano con Eslabón Manejado Remotamente

Figura 6.10: Brazo articulado rotatorio de dos eslabones con eslabón impulsado remotamente. De-
bido al impulso remoto los ángulos de las flechas de motor no son proporcionales a los ángulos
articulares.

Ahora, ilustramos el uso de las ecuaciones Lagrangianas en una situación donde las coordenadas
generalizadas no son las variables articulares definidas en los primeros capítulos. Considere nue-
vamente el manipulador codo plano, pero suponga ahora que ambas articulaciones son manejadas
por motores montados en la base. La primera articulación es girada directamente por uno de los
motores, mientras que la otra es girada por un mecanismo de engranaje o una correa de distribución
(vea la Figura 6.10).
En este caso, uno debe seleccionar las coordenadas generalizadas como se muestra en la Figura
6.11, debido a que el ángulo p2 se determina impulsando el motor número 2, y no se afecta mediante
el ángulo p1 . Obtendremos las ecuaciones dinámicas para esta configuración y mostraremos que
resultarán algunas simplificaciones.
Debido a que p1 y p2 no son los ángulos articulares usados anteriormente, no podemos usar
los Jacobianos de velocidad obtenidos en el Capítulo 4 para encontrar la energía cinética de cada

Luis Arturo García Delgado Control de Robots UNISON, MCE


127

Figura 6.11: Coordenadas generalizadas para el robot de la Figura 6.10.

eslabón. En lugar de eso, tendremos que llevar a cabo el análisis directamente. Es fácil ver que
 
−ℓc1 sin p1 0 " #
 ṗ
vc1 =  ℓc1 cos p1 0 1 (6.92)

ṗ2
0 0
 
−ℓ1 sin p1 −ℓc2 sin p2 " #
 ṗ
vc2 =  ℓ1 cos p1 ℓc2 cos p2  1 (6.93)

ṗ2
0 0

ω1 = ṗ1 k, ω2 = ṗ2 k (6.94)


Entonces, la energía cinética del manipulador es igual a
1
K = ṗT D(p)ṗ (6.95)
2
donde " #
m1 ℓ2c1 + m2 ℓ21 + I1 m2 ℓ1 ℓc2 cos(p2 − p1 )
D(p) = (6.96)
m2 ℓ1 ℓc2 cos(p2 − p1 ) m2 ℓ2c2 + I2
Al calcular los símbolos de Christoffel como en la Ecuación (6.63) da

1 ∂d11
c111 = =0
2 ∂p1
1 ∂d11
c121 = c211 = =0
2 ∂p2
∂d12 1 ∂d22
c221 = − = −m2 ℓ1 ℓc2 sin(p2 − p1 )
∂p2 2 ∂p1
(6.97)
∂d21 1 ∂d11
c112 = − = m2 ℓ1 ℓc2 sin(p2 − p1 )
∂p1 2 ∂p2
1 ∂d22
c212 = c122 = =0
2 ∂p1
1 ∂d22
c222 = =0
2 ∂p2
Después, la energía potencial del manipulador, en términos de p1 y p2 , es igual a

P = m1 gℓc1 sin p1 + m2 g(ℓ1 sin p1 + ℓc2 sin p2 ) (6.98)

UNISON, MCE Control de Robots Luis Arturo García Delgado


128

Por lo tanto, las fuerzas gravitacionales generalizadas son

g1 = m1 (ℓc1 + m2 ℓ1 )g cos p1
g2 = m2 ℓc2 g cos p2

Finalmente, las ecuaciones de movimiento son

d11 p̈1 + d12 p̈2 + c221 ṗ22 + g1 = τ1


(6.99)
d21 p̈1 + d22 p̈2 + c112 ṗ21 + g2 = τ2

Comparando la Ecuación (6.99) y la Ecuación (6.90), vemos que impulsando la segunda articulación
de manera remota desde la base hemos eliminado las fuerzas de Coriolis, pero todavía tenenmos las
fuerzas centrífugas que acoplan las dos articulaciones.

Acoplamiento de Cinco-Barras

Figura 6.12: Acoplamiento de cinco-barras.

Ahora, considere el manipulador que se muestra en la Figura 6.12. Mostraremos que, si los
parámetros del manipulador satisfacen una simple relación, entonces las ecuaciones del manipulador
están desacopladas, de manera que cada cantidad q1 y q2 se puede controlar independientemente
de la otra. El mecanismo de la Figura 6.12 se llama acoplamiento de cinco-barras. Claramente,
hay sólo cuatro barras en la figura, pero en la teoría de mecanismos es una convención contar la
tierra como un acoplamiento adicional, lo cual explica la terminología. Se supone que las longitudes
de los eslabones 1 y 3 son las mismas, y que las dos longitudes marcadas ℓ2 son las mismas; de
esta manera la ruta cerrada en la figura es de hecho un paralelogramo, lo que simplifica en gran
medida los cálculos. Note, sin embargo, que las cantidades ℓc1 y ℓc3 no necesitan ser iguales. Por
ejemplo, aún y cuando los eslabones 1 y 3 tienen la misma longitud, no necesitan tener la misma
distribución de masa. Es claro de la figura que, aunque hay cuatro eslabones que se mueven, hay
de hecho sólo dos grados de libertad, identificados como q1 y q2 . Entonces, en contraste con los
mecanismos estudiados antes en este libro, éste es una cadena cinemática cerrada (aunque de un
tipo particularmente simple). Como resultado, no podemos usar los resultados anteriores en las
matrices Jacobianas, y en vez de eso tenemos que empezar desde cero. Como primer paso escribimos
abajo las coordenadas de los centros de masa de los distintos eslabones como una función de las

Luis Arturo García Delgado Control de Robots UNISON, MCE


129

coordenadas generalizadas. Esto da


" # " #
xc1 ℓc1 cos q1
= (6.100)
yc1 ℓc1 sin q1
" # " #
xc2 ℓc2 cos q2
= (6.101)
yc2 ℓc2 sin q2
" # " # " #
xc3 ℓ2 cos q2 ℓ cos q1
= + c3 (6.102)
yc3 ℓ2 sin q2 ℓc3 sin q1
" # " # " #
xc4 ℓ1 cos q1 ℓ cos(q2 − π)
= + c4
yc4 ℓ1 sin q1 ℓc4 sin(q2 − π)
" # " #
ℓ1 cos q1 ℓ cos q2
= − c4 (6.103)
ℓ1 sin q1 ℓc4 sin q2

Después, con la ayuda de estas expresiones, ponemos escribir abajo las velocidades de los varios
centros de masa como una función de q1 y q2 . Por conveniencia descartamos la tercera fila de cada
una de las siguientes matrices Jacobianas ya que ésta siempre es cero. El resultado es
" #
−ℓc1 sin q1 0
vc1 = q̇
ℓc1 cos q1 0
" #
0 −ℓc2 sin q2
vc2 = q̇
0 ℓc2 cos q2
" # (6.104)
−ℓc3 sin q1 −ℓ2 sin q2
vc3 = q̇
ℓc3 cos q1 ℓ2 cos q2
" #
−ℓ1 sin q1 −ℓc4 sin q2
vc4 = q̇
ℓ1 cos q1 ℓc4 cos q2

Definamos los Jacobianos de velocidad Jvci , i ∈ {1, . . . , 4} de la manera obvia, es decir, como
aparecen las cuatro matrices en las ecuaciones de arriba. En seguida, es claro que las velocidades
angulares de los cuatro eslabones están simplemente dadas por

ω1 = ω3 = q̇1 k, ω2 = ω4 = q̇2 k (6.105)

Entonces, la matriz de inercia está dada por


4
" #
I + I3 0
+ 1
X
T
D(q) = mi Jvc Jvc (6.106)
i=1
0 I2 + I4

Si sabemos sustituir la Ecuación (6.104) en la ecuación de arriba y usamos las ecuaciones trigono-
métricas estándar, nos quedamos con

d11 (q) = m1 ℓ2c1 + m3 ℓ2c3 + m4 ℓ21 + I1 + I3


d12 (q) = d21 (q) = (m3 ℓ2 ℓc3 − m4 ℓ1 ℓc4 ) cos(q2 − q1 ) (6.107)
d22 (q) = m2 ℓ2c2 + m3 ℓ22 + m4 ℓ2c4 + I2 + I4
Ahora, notamos de las expresiones de arriba que si

m3 ℓ2 ℓc3 = m4 ℓ1 ℓc4 (6.108)

entonces d12 y d21 son cero, es decir, la matriz de inercia es diagonal y constante. Como consecuencia
las ecuaciones dinámicas no contendrán si términos de Coriolis ni centrífugos.

UNISON, MCE Control de Robots Luis Arturo García Delgado


130

Considerando ahora la energía potencial, tenemos que

4
X
P =g yci
i=1
(6.109)
= g sin q1 (m1 ℓc1 + m3 ℓc3 + m4 ℓ1 )
+ g sin q2 (m2 ℓc2 + m3 ℓ2 − m4 ℓc4 )

Por lo tanto

g1 = g cos q1 (m1 ℓc1 + m3 ℓc3 + m4 ℓ1 )


(6.110)
g2 = g cos q2 (m2 ℓc2 + m3 ℓ2 − m4 ℓc4 )

Note que g1 dependo sólo de q1 pero no de q2 y similarmente que g2 depende sólo de q2 pero no
de q1 . Por lo tanto, si la relación (??) se satisface, entonces el manipulador de aspecto bastante
complejo de la Figura 6.12 se describe por el conjunto de ecuaciones desacopladas

d11 q̈1 + g1 (q1 ) = τ1 , d22 q̈2 + g2 (q2 ) = τ2 (6.111)

Esta discusión ayuda a explicar la popularidad de la configuración del paralelogramo en robots


industriales. Si se satisface la relación (6.108), entonces uno puede ajustar los dos ángulos q1 y q2
independientemente, sin preocuparse sobre las interacciones entre los dos ángulos. Compare esto
con la situación del caso de los manipuladores codo planos discutidos previamente en esta sección.

6.5. Propiedades de las Ecuaciones Dinámicas de Robots


Las ecuaciones de movimiento para un robot de n-eslabones pueden ser bastante formidables
especialmente si el robot contiene una o más articulaciones rotatorias. Afortunadamente, estas
ecuaciones contienen algunas propiedades estructurales importantes que se pueden aprovechar para
desarrollar algoritmos de control. Veremos esto en los capítulos subsecuentes. Aquí discutiremos
algunas de estas propiedades, las más importantes de las cuales están la llamada propiedad de
antisimetría y la propiedad de pasividad relacionada, y la propiedad de linealidad en los parámetros.
Para robots de articulaciones rotatorias, la matriz de inercia también satisface cotas globales que
son útiles para diseño de control.

6.5.1. Antisimetría y Pasividad


La propiedad de antisimetría se refiere a una importante relación entre la matriz de inercia D(q)
y la matriz C(q, q̇) que aparece en la Ecuación (6.66).

Proposición 6.1 (La Propiedad de Antisimetría). Sea D(q) la matriz de inercia para un robot de
n-eslabones y defina C(q, q̇) en términos de los elementos de D(q) de acuerdo a la Ecuación (6.67).
Entonces la matriz N (q, q̇) = Ḋ(q) − 2C(q, q̇) es antisimétrica, es decir, los componentes njk de N
satisfacen njk = −nkj .

Demostración. Dada la matriz de inercia D(q), el (k, j)ésimo componente de Ḋ(q) está dado mediante
la regla de la cadena como
n
∂dkj
d˙kj =
X
q̇i (6.112)
i=1
∂qi

Luis Arturo García Delgado Control de Robots UNISON, MCE


131

Por lo tanto, el (k, j)ésimo componente de N = Ḋ − 2C está dado por


nkj = d˙kj − 2ckj
n
" ( )#
X ∂dkj ∂dkj ∂dki ∂dij
= − + − q̇i
i=1
∂qi ∂qi ∂qj ∂qk (6.113)
n
" #
X ∂dij ∂dki
= − q̇i
i=1
∂qk ∂qj

Dado que la matriz de inercia D(q) es simétrica, esto es, dij = dji , resulta que de la Ecuación (6.113)
al intercambiar los índices k y j que
njk = −nkj (6.114)
lo que completa la prueba. ⋄

Es importante notar que, para que N = Ḋ − 2C sea antisimétrica, uno debe definir C de acuerdo
a la Ecuación (6.67). Esto será importante en capítulos posteriores cuando discutamos algoritmos
de control robusto y adaptable.
Relacionado con la propiedad de antisimetría está la llamada propiedad de pasividad la cual,
en el contexto presente, significa que existe una constante, β ≥ 0, tal que
Z T
q̇ T (t)τ (t)dt ≥ −β, ∀T >0 (6.115)
0

El término q̇τ tiene unidades de potencia. Por lo tanto, la expresión 0T q̇ T τ (t)dt es la energía
R

producida por el sistema a través del intervalo de tiempo [0, T ]. La pasividad significa que la cantidad
de energía disipada por el sistema tiene una cota inferior dada por −β. La palabra pasividad viene
de la teoría de circuitos donde un sistema pasivo de acuerdo a la definición de arriba es uno que se
puede formar a partir de componentes pasivos (resistores, capacitores, inductores). Igualmente un
sistema pasivo mecánico se puede formar a partir de masas, resortes, y amortiguadores.
Para probar la propiedad de pasividad, sea H la energía total del sistema, es decir, la suma de
las energías cinética y potencial,
1
H = q̇ T D(q)q̇ + P (q) (6.116)
2
La derivada Ḣ satisface
1 ∂P
Ḣ = q̇ T D(q)q̈ + q̇ T Ḋ(q)q̇ + q̇ T
2 ∂q
(6.117)
1 ∂P
= q̇ T {τ − C(q, q̇)q̇ − g(q)} + q̇ T Ḋ(q)q̇ + q̇ T
2 ∂q
donde hemos sustituido D(q)q̈ usando las ecuaciones de movimiento. Juntando términos y usando
el hecho de que g(q) = ∂P
∂q da

1
Ḣ = q̇ T τ + q̇ T {Ḋ(q) − 2C(q, q̇)}q̇
2 (6.118)
= q̇ T τ
la última igualdad siguiendo de la propiedad de antisimetría. Al integrar ambos lados de la Ecuación
(6.118) con respecto al tiempo da,
Z T
q̇ T (t)τ (t)dt = H(T ) − H(0) ≥ −H(0) (6.119)
0

dado que la energía total H(T ) es no negativa, y la propiedad de pasividad por lo tanto sigue con
β = H(0).

UNISON, MCE Control de Robots Luis Arturo García Delgado


132

6.5.2. Cotas de la Matriz de Inercia


Hemos remarcado previamente que la matriz de inercia para un robot rígido de n-eslabones es
simétrica y definida positiva. Para un valor fijo de coordenadas generalizadas q, denote mediante 0 <
λ( q) ≤ · · · ≤ λn (q) los n eigenvalores de D(q). Estos eigenvalores son positivos como consecuencia
de la definición positiva de D(q). Como un resultado, se puede mostrar fácilmente que

λ1 (q)In×n ≤ D(q) ≤ λn (q)In×n (6.120)

donde In×n denota la matriz identidad n × n. Las inequidades son interpretadas en el sentido
estándar de las inequidades matriciales, a saber, si A y B son matrices n × n, entonces B < A
significa que A − B es definida positiva y B ≤ A significa que A − B es semidefinida positiva.
Si todas las articulaciones son rotatorias, entonces la matriz de inercia contiene sólo términos que
involucran funciones seno y coseno y, por lo tanto, está acotada como una función de coordenadas
generalizadas. Como resultado, uno puede encontrar constantes λm y λM que den cotas uniformes
(independientes de q) en la matriz de inercia.

λm In×n ≤ D(q) ≤ λM In×n (6.121)

6.5.3. Linealidad en los Parámetros


Las ecuaciones de movimiento de robots se definen en términos de ciertos parámetros, como
las masas de los eslabones, momentos de inercia, etc., que se deben determinar para cada robot
particular con el objetivo, por ejemplo, de simular las ecuaciones o para sintonizar controladores.
La complejidad de las ecuaciones dinámicas hacen de la determinación de estos parámetros una
tarea difícil. Afortunadamente, las ecuaciones de movimiento son lineales en estos parámetros en
el siguiente sentido. Existe una función n × ℓ, Y (q, q̇, q̈) y un vector ℓ-dimensional Θ tales que las
ecuaciones de Euler-Lagrange se pueden escribir como

D(q)q̈ + C(q, q̇)q̇ + g(q) = Y (q, q̇, q̈)Θ (6.122)

La función Y (q, q̇, q̈) se llama el regresor y Θ ∈ Rℓ es el vector de parámetros. La dimensión


del espacio de parámetros, es decir, el número de parámetros necesarios para escribir la dinámica en
esta manera, no es única. En general, un cuerpo rígido dado es descrito mediante diez parámetros,
a saber, la masa total, las seis entradas independientes del tensor de inercia, y las tres coordenadas
del centro de masa. Un robot de n-eslabones tiene entonces un máximo de 10n parámetros de la di-
námica. Sin embargo, dado que los movimientos del eslabon están restringidos y acoplados mediante
interconexiones de las articulaciones, realmente hay menos de 10n parámetros independientes. En-
contrar un conjunto mínimo de parámetros que pueden parametrizar las ecuaciones dinámicas es, no
obstante, difícil en general. Considere el robot plano de dos-eslabones, con articulaciones rotatorias,
de la Sección 6.4. Si agrupamos los términos de inercia que aparecen en la Ecuación (6.86) como

Θ1 = m1 ℓ2c1 + m2 (ℓ21 + ℓ2c2 ) + I1 + I2 (6.123)


Θ2 = m2 ℓ1 ℓc2 (6.124)
Θ3 = m2 ℓ2c2 + I2 (6.125)

entonces podemos escribir los elementos de la matriz de inercia como

d11 = Θ1 + 2Θ2 cos(q2 ) (6.126)


d12 = d21 = Θ3 + Θ2 cos(q2 ) (6.127)
d22 = Θ3 (6.128)

Luis Arturo García Delgado Control de Robots UNISON, MCE


133

No se requieren más parámetros en los símbolos de Christoffel ya que éstos son funciones de los
elementos de la matriz de inercia. Sin embargo, los torques gravitacionales requieren parámetros
adicionales. Estableciendo

Θ4 = m1 ℓc1 + m2 ℓ1 (6.129)
Θ5 = m2 ℓ2c2 (6.130)

podemos escribir los términos gravitacionales g1 y g2 como

g1 = Θ4 g cos(q1 ) + Θ5 g cos(q1 + q2 ) (6.131)


g2 = Θ5 g cos(q1 + q2 ) (6.132)

Sustituyendo éstas en las ecuaciones de movimiento es fácil escribir la dinámica en la forma (6.122)
donde
" #
q̈ cos(q2 )(2q̈1 + q̈2 ) − sin(q2 )(q̇12 + 2q̇1 q̇2 ) q̈2 g cos(q1 ) g cos(q1 + q2 )
Y (q, q̇, q̈) = 1
0 cos(q2 )q̈1 + sin(q2 )q̇12 q̈1 + q̈2 0 g cos(q1 + q2 )

y el vector de parámetros Θ está dado mediante

m1 ℓ2c1 + m2 (ℓ21 + ℓ2c2 ) + I1 + I2


   
Θ1
Θ  
 2  m2 ℓ1 ℓc2 

Θ = Θ3  = 
   2
m2 ℓc2 + I2

(6.133)

   
Θ4   m1 ℓc1 + m2 ℓ1 
Θ5 2
m2 ℓc2

Entonces, hemos parametrizado la dinámica usando un espacio de parámetros de cinco dimensiones.


Note que en ausencia de gravedad sólo se necesitan tres parámetros.

6.6. Formulación Newton-Euler


En esta sección, presentamos un método para analizar la dinámica de robots manipuladores co-
nocida como formulación Newton-Euler. Este método lleva exactamente a las mismas respuestas
finales que la formulación Lagrangiana presentada en secciones anteriores, pero la ruta tomada es
bastante diferente. En particular, en la formulación Lagrangiana tratamos al manipulador como un
todo y realizamos el análisis usando una función Lagrangiana (la diferencia entre la energía cinética
y la energía potencial). En contraste, en la formulación Newton-Euler tratamos cada eslabón del
robot a la vez, y escribimos abajo las ecuaciones que describen su movimiento lineal y su movimiento
angular. Por supuesto, dado que cada eslabón está acoplado a otros eslabones, estas ecuaciones que
describen cada eslabón contienen fuerzas y torques acoplados que aparecen también en las ecua-
ciones que describen eslabones vecinos. Haciendo una recursión llamada hacia adelante-hacia atrás,
somos capaces de determinar todos estos términos acoplados y eventualmente llegar a una descrip-
ción del manipulador como un todo. Así vemos que la filosofía de la formulación Newton-Euler es
completamente diferente del de la formulación Lagrangiana.
En esta etapa el lector puede justamente preguntarse si hay necesidad de otra formulación. His-
tóricamente, ambas formulaciones evolucionaron en paralelo, y cada una se percibió que poseían
ciertas ventajas. Por ejemplo, se creía en un tiempo que la formulación Lagrangiana era más ade-
cuada para cálculos recursivos que la formulación Lagrangiana. Sin embargo, la situación actual es
que ambas formulaciones son equivalentes en casi todos los aspectos. En el presente la principal
razón para tener otro método de análisis a nuestra disposición es que éste debe proveer diferentes
perspectivas.

UNISON, MCE Control de Robots Luis Arturo García Delgado


134

En cualquier sistema mecánico uno tiene que identificar un conjunto de coordenadas genera-
lizadas (que se presentan en la Sección 6.1 y se etiquetan como q) y las correspondientes fuerzas
generalizadas (también presentadas en la Sección 6.1 y etiquetadas como τ ). Analizar la dinámica
de un sistema significa encontrar la relación entre q y τ . En esta etapa debemos distinguir entre dos
aspectos: Primero, debemos estar interesados en obtener ecuaciones en forma cerrada que descri-
ban la evolución temporal de las coordenadas generalizadas, tal como la Ecuación (6.90). Segundo,
debemos estar interesados en saber lo que las fuerzas generalizadas necesitan para ser aplicadas
con el objetivo de realizar una evolución temporal particular de las coordenadas generalizadas. La
distinción es que en el último caso sólo queremos saber qué función dependiente del tiempo τ (·)
produce una trayectoria particular q(·) y puede no importar conocer la relación funcional general
entre las dos. Quizás sea justo decir que en el primer tipo de análisis, la formulación Lagrangiana
es superior mientras que en el último caso la formulación Newton-Euler es superior. Mirando hacia
adelante a temas más allá del alcance del libro, si uno desea estudiar fenómenos mecánicos más
avanzados tal como las deformaciones elásticas de los eslabones (i.e., si uno ya no asume la rigidez
en los eslabones), entonces la formulación Lagrangiana es superior.
En esta sección presentamos las ecuaciones generales que describen la formulación Newton-Euler.
En la siguiente sección ilustramos el método aplicándolo al manipulador codo plano estudiado en
la Sección 6.4 y mostramos que las ecuaciones resultantes son las mismas que las de la Ecuación
(6.90).
Los hechos de la mecánica Newtoniana que son pertinentes en la discusión presente se pueden
establecer como sigue:

1. Cada acción tiene una reacción igual y opuesta. Por lo tanto, si el cuerpo 1 aplica una fuerza
f y un torque τ al cuerpo 2, entonces el cuerpo 2 aplica una fuerza de −f y un torque de −τ
al cuerpo 1.

2. La razón de cambio del momento lineal es igual a la fuerza total aplicada al cuerpo.

3. La razón de cambio del momento angular es igual al torque total aplicado al cuerpo.

Al aplicar el segundo hecho al movimiento lineal de un cuerpo se obtiene la relación

d(mv)
=f (6.134)
dt
donde m es la masa del cuerpo, v es la velocidad del centro de masa con respecto al marco inercial,
y f es la suma de fuerzas externas aplicadas al cuerpo. Dado que en aplicaciones robóticas la masa
es constante en función al tiempo, la Ecuación (6.134) se puede simplificar a la relación familiar

ma = f (6.135)

donde a = v̇ es la aceleración del centro de masa.


La aplicación del tercer hecho al movimiento angular de un cuerpo da

d(I0 ω0 )
= τ0 (6.136)
dt
donde I0 es el momento de inercia del cuerpo alrededor del marco inercial cuyo origen está en el
centro de masa, ω0 es la velocidad angular del cuerpo, y τ0 es la suma de torques aplicados al cuerpo.
Ahora hay una diferencia esencial entre el movimiento lineal y el movimiento angular. Mientras que
la masa de un cuerpo es constante en la mayoría de las aplicaciones, su momento de inercia con
respecto a un marco inercial puede no ser constante. Para ver esto, suponga que unimos un marco
rígidamente al cuerpo, y denote mediante I la matriz de inercia del cuerpo con respecto a este

Luis Arturo García Delgado Control de Robots UNISON, MCE


135

marco. Entonces I permanece igual sin tener en consideración cualquier movimiento que ejecute el
cuerpo. Sin embargo, la matriz I0 está dada mediante

I0 = RIRT (6.137)

donde R es la matriz de rotación que transforma las coordenadas del marco unido al cuerpo al
marco inercial. Por lo tanto no hay razón de esperar que I0 sea constante como función del tiempo.
Una posible manera de superar esta dificultad es escribir la ecuación de movimiento angular en
términos de un marco rígidamente unido al cuerpo. Esto lleva a

I ω̇ + ω × (Iω) = τ (6.138)

donde I es la matriz de inercia (constante) del cuerpo con respecto al marco unido al cuerpo, ω
es la velocidad angular, pero expresada en el marco unido al cuerpo, y τ es el torque total sobre
el cuerpo, nuevamente expresado en el marco unido al cuerpo. Demos ahora una deducción de la
ecuación (6.138) para demostrar claramente de dónde viene el término ω × (Iω); note que este
término se llama el término giroscópico.
Sea R la orientación del marco rígidamente unido al cuerpo con respecto al marco inercial; note
que ésta puede ser función del tiempo. Entonces la Ecuación (6.137) da la relación entre I e I0 .
Ahora mediante la definición de la velocidad angular, sabemos que

ṘRT = S(ω0 ) (6.139)

En otras palabras, la velocidad angular del cuerpo, expresada en un marco inercial, está dada por
la Ecuación (6.139). Por supuesto, el mismo vector, expresado en un marco unido al cuerpo, está
dado mediante
ω0 = Rω, ω = RT ω0 (6.140)
Entonces el momento angular, expresado en el marco inercial, es

h = RIRT Rω = RIω (6.141)

Diferenciando y notando que I es constante se da la expresión para la razón de cambio del momento
angular, expresado como un vector en el marco inercial:

ḣ = ṘIω + RI ω̇ (6.142)

Ahora
S(ω0 ) = ṘRT , Ṙ = S(ω)R (6.143)
Entonces, con respecto al marco inercial,

ḣ = S(ω0 )RIω + RI ω̇ (6.144)

Con respecto al marco unido rígidamente al cuerpo, la razón de cambio del momento angular es

RT ḣ = RT S(ω0 )RIω + I ω̇
= S(RT ω0 )Iω + I ω̇ (6.145)
= S(ω)Iω + I ω̇ = ω × (Iω) + I ω̇

Esto establece la Ecuación (6.138). Por supuesto, si deseamos, podemos escribir la misma ecuación
en términos de vectores expresados en un marco inercial. Pero pronto veremos que hay una ventaja
en escribir las ecuaciones de fuerza y momento angular con respecto al marco unido al eslabón i,

UNISON, MCE Control de Robots Luis Arturo García Delgado


136

a saber que gran cantidad de vectores de hecho se reducen a vectores constantes, llevando por lo
tanto a simplificaciones significativas en las ecuaciones
Ahora obtenemos la formulación Newton-Euler de las ecuaciones de movimiento de un mani-
pulador de n-eslabones. Con este propósito, primero seleccionamos los marcos 0, . . . , n, donde en
marco 0 es el marco inercial, y el marco i está rígidamente unido al eslabón i para i ≥ 1. Tam-
bién presentamos varios vectores, que están todos expresados en el marco i. El primer conjunto de
vectores pertenece a las velocidades y aceleraciones de varias partes del manipulador.
ac,i = la aceleración del centro de masa del eslabón i
ae,i = la aceleración del final del eslabón i (i.e., articulación i + 1)
ωi = la velocidad angular del marco con respecto al marco 0
αi = la aceleración angular del marco i con respecto al marco 0
Los siguientes vectores se relacionan con fuerzas y torques.
gi = la aceleración debida a la gravedad (expresada en el marco i)
fi = la fuerza ejercida por el eslabón i − 1 sobre el eslabón i
τi = el torque ejercido por el eslabón i − 1 sobre el eslabón i
i
Ri+1 = la matriz de rotación del marco i + 1 al marco i
El conjunto final de vectores pertenecen a características físicas del manipulador. Note que cada
uno de los siguientes vectores son constantes como función de q. En otras palabras, cada uno de los
vectores listados aquí es independiente de la configuración del manipulador.
mi = la masa del eslabón i
Ii = la matriz de inercia del eslabón i alrededor de un marco paralelo
al marco i cuyo origen está en el centro de masa del eslabón i
ri,ci = el vector desde la articulación i al centro de masa del eslabón i
ri+1,ci = el vector desde la articulación i al centro de masa del eslabón i
ri,i+1 = el vector desde la articulación i a la articulación i − 1
Ahora considere el diagrama de cuerpo libre mostrado en la Figura 6.13; ésta muestra el eslabón i
junto con todas las fuerzas y torques que actúan en él. Analicemos cada una de las fuerzas y torques
de la figura. Primero, fi es la fuerza aplicada por el eslabón i − 1 al eslabón i. Después, mediante
la ley de acción y reacción, el eslabón i + 1 aplica una fuerza de −fi+1 de acuerdo con nuestra
convención. Para expresar el mismo vector en el marco i, es necesario multiplicarla por la matriz
de rotación Rii+1 . Similares explicaciones aplican para los torques τi y −Rii+1 τi+1 . La fuerza mi gi
es la fuerza gravitacional. Dado que todos los vectore de la Figura 6.13 se expresan en el marco i,
el vector de gravedad gi es en general una función de i.

Figura 6.13: Fuerzas y momentos sobre el eslabón i.

Escribiendo abajo las ecuaciones de balance de fuerza para el eslabón i da


fi − Rii+1 fi+1 + mi gi = mi ac,i (6.146)

Luis Arturo García Delgado Control de Robots UNISON, MCE


137

En seguida escribimos abajo la ecuación de balance de momento para el eslabón i. Para este propósi-
to, es importante notar dos cosas: Primero, el momento ejercido por una por una fuerza f alrededor
de un punto está dado por f × r, donde r es el vector radial desde el punto donde se aplica la fuerza
hasta el punto alrededor del cual calculamos el momento. Segundo, en la ecuación de momento de
abajo, el vector mi gi no aparece, ya que éste se aplica directamente al centro de masa. Entonces
tenemos
τi − Rii+1 τi+1 + fi × ri,ci − (Rii+1 fi+1 ) × ri+1,ci = Ii αi + ωi × (Ii ωi ) (6.147)
Ahora presentamos el corazón de la formulación Newton-Euler, que consiste en encontrar los
vectores fi , . . . , fn y τi , . . . , τn correspondientes a un conjunto de vectores q, q̇, q̈. En otras palabras,
encontramos las fuerzas y torques en el manipulador que corresponden a un conjunto dado de
coordenadas generalizadas y sus primeras dos derivadas. Esta información se puede usar para realizar
cualquier tipo de análisis, como se describió arriba. Esto es, podemos usar las ecuaciones de abajo
ya sea para encontrar la f y τ correspondientes a una trayectoria particular q(·), o también
para obtener ecuaciones ecuaciones dinámicas en forma cerrada. La idea general es como sigue:
Dadas q, q̇, q̈, suponemos que somos de alguna manera capaces de determinar todas las velocidades
y aceleraciones de varias partes del manipulador, es decir, todas las cantidades ac,i , ωi y αi . Entonces
podemos resolver las Ecuaciones (6.146) y (6.147) recursivamente para encontrar todas las fuerzas
y torques, como sigue: Primero, sea fn+1 = 0 y τi+1 = 0. Esto expresa el hecho de que no hay un
eslabón n + 1. Entonces podemos resolver la Ecuación (6.146) para obtener

fi = Rii+1 fi+1 + mi ac,i − mi gi (6.148)

Mediante sustitución sucesivamente i = n, n − 1, . . . , 1 encontramos todas las fuerzas. De manera


similar, podemos resolver la Ecuación (6.147) para obtener

τi = Rii+1 τi+1 − fi × ri,ci + (Rii+1 fi+1 ) × ri+1,ci + Ii αi + ωi × (Ii ωi ) (6.149)

Mediante sustitución sucesivamente i = n, n − 1, . . . , 1 encontramos todos los torques. Note que la


iteración de arriba se corre en dirección decreciente de i.
Entonces, la solución está completa una vez que encontremos una relación fácilmente calculada
entre q, q̇, q̈ y ac,i , ωi y αi . Esto se puede obtener mediante un procedimiento recursivo en la dirección
de i incremental. Este procedimiento se presenta abajo, para el caso de articulaciones rotatorias; las
correspondientes relaciones para articulaciones prismáticas son realmente fáciles de obtener.
Con el propósito de distinguir entre cantidades expresadas con respecto al marco i y el marco
base, usamos un superíndice (0) para denotar al último. Entonces, por ejemplo, ωi denota la ve-
(0)
locidad angular del marco i expresada en el marco i, mientras que ωi denota la misma cantidad
expresada en un marco inercial.
Ahora tenemos que
(0) (0)
ωi = ωi−1 + zi−1 q̇i (6.150)
Esto simplemente expresa el hecho de que la velocidad angular del marco i es igual que la del marco
i − 1 más la rotación agregada de la articulación i. Para obtener una relación entre ωi y ωi−1 ,
solamente necesitamos expresar la ecuación de arriba en el marco i en lugar de en el marco base,
cuidando de tener en cuenta el hecho de que ωi y ωi−1 se expresan en diferentes marcos. Esto lleva
a
ωi = (Rii−1 )T ωi−1 + bi q̇i (6.151)
donde
bi = (Ri0 )T zi−1 (6.152)
es el eje de rotación de la articulación i expresada en el marco i.

UNISON, MCE Control de Robots Luis Arturo García Delgado


138

En seguida trabajemos en la aceleración angular αi . Es de vital importancia notar aquí que


(0)
αi = (Ri0 )T ω̇i (6.153)

En otras palabras, αi es la derivada de la velocidad angular del marco i, expresada en el marco


i. ¡αi = ω̇i no es correcto! Encontraremos una situación similar con la velocidad y aceleración del
centro de masa. Ahora vemos directamente de la Ecuación (6.150) que
(0) (0) (0)
ω̇i = ω̇i−1 + zi−1 q̈i + ωi × zi−1 q̇i (6.154)

Expresando la misma ecuación en el marco i da

αi = (Rii−1 )T αi−1 + bi q̈i + ωi × bi q̇i (6.155)

Ahora vamos a los términos de velocidad lineal y aceleración. Note que, en contraste con la velocidad
angular, la velocidad lineal no aparece en ningún lugar en las ecuaciones dinámicas; sin embargo, se
necesita una expresión para la velocidad lineal antes de que podamos obtener una expresión para
la aceleración lineal. De la Sección 4.5, tenemos que la velocidad del centro de masa del eslabón i
está dada mediante
(0) (0) (0) (0)
vc,i = ve,i−1 + ωi × ri,ci (6.156)
(0)
Para obtener una expresión para la aceleración, note que el vector ri,ci es constante en el marco i.
Entonces
(0) (0) (0) (0) (0) (0) (0)
ac,i = ae,i−1 + ω̇i × ri,ci + ωi × (ωi × ri,ci ) (6.157)
Ahora
(0)
ac,i = (Ri0 )T ac,i (6.158)
Llevemos a cabo la multiplicación y usemos la propiedad familiar

R(a × b) = (Ra) × (Rb) (6.159)

También debemos tomar en cuenta el hecho de que ae,i−1 se expresa en el marco i−1 y se transforma
al marco i. Esto da
(0) (0) (0) (0)
ac,i = (Rii−1 )T ae,i−1 + ω̇i × ri,ci + ωi × (ωi × ri,ci ) (6.160)

Ahora para encontrar la aceleración del extremo del eslabón i, podemos usar la Ecuación (6.160)
con ri,i+1 reemplazando ri,ci . En consecuencia
(0) (0) (0) (0)
ae,i = (Rii−1 )T ae,i−1 + ω̇i × ri,i+1 + ωi × (ωi × ri,i+1 ) (6.161)

Ahora la formulación recursiva está completa. Ahora podemos establecer la formulación Newton-
Euler como sigue.
1. Comenzamos con las condiciones iniciales

ω0 = 0, α0 = 0, ac,0 = 0, ae,0 = 0 (6.162)

y resolvemos las Ecuaciones (6.151), (6.155), (6.161), y (6.160) (en ese orden) para calcular
ωi , αi , y ac,i para i incrementando desde 1 a n.

2. Comenzar con las condiciones terminales

fn+1 = 0, τn+1 = 0 (6.163)

y use las Ecuaciones (6.148) y (6.149) para calcular fi y τi Para i decrementando desde n a 1.

Luis Arturo García Delgado Control de Robots UNISON, MCE


139

6.6.1. Linealidad en los Parámetros


En esta sección aplicamos la formulación recursiva de Newton-Euler obtenida en la Sección 6.6
para analizar la dinámica del manipulador plano de la Figura 6.9, y mostramos que el método
Newton-Euler lleva a las mismas ecuaciones que el método Lagrangiano, a saber la Ecuación (6.90).
Comenzamos con la recursión hacia adelante para expresar las diferentes velocidades y acelera-
ciones en términos de q1 , q2 , y sus derivadas. Note que, en este sencillo caso, es bastante fácil ver
que
ω1 = q̇1 k, α1 = q̈1 k, ω2 = (q̇1 + q̇2 )k, α2 = (q̈1 + q̈2 )k (6.164)

tal que no hay necesidad de usar las Ecuaciones (6.151) y (6.155). También, los vectores que son
independientes de la configuración son como sigue:

r1,c1 = ℓc1 i, r2,c1 = (ℓc1 − ℓ1 )i, r1,2 = ℓ1 i (6.165)


r2,c2 = ℓc2 i, r3,c2 = (ℓc2 − ℓ2 )i, r1,2 = ℓ2 i (6.166)

donde i aquí denota el vector unitario (1, 0, 0) y no el índice i de la iteración.

Recursión hacia Adelante del Eslabón 1

Usando la Ecuación (6.160) con índice i = 1 y notando que ae,0 = 0 da

ac,1 = q̈1 k × ℓc1 i + q̇1 k × (q̇1 k × ℓc1 i)


 
−ℓc1 q̇12
= ℓc1 q̈1 j − ℓc1 q̇12 i =  ℓc1 q̈1  (6.167)
 
0

donde, nuevamente i y j son los vectores unitarios estándar en las direcciones x y y, respectivamente.
Note qué simple es este cálculo cuando lo hacemos con respecto al marco 1, en contraste con el mismo
cálculo en el marco 0. Finalmente, tenemos
" #
− sin q1
g1 = −(R10 )T gj =g (6.168)
− cos q1

donde g es la aceleración debida a la gravedad. En esta etapa podemos economizar un poco no


mostrando los terceros componentes de estas aceleraciones, ya que todos son iguales a cero. De
manera similar, el tercer componente de todas las fuerzas será cero mientras que los primeros
dos componentes de todos los torques serán cero. Para completar los cálculos para el eslabón 1,
calculamos la aceleración en el extremo del eslabón 1. Ésta se obtiene a partir de la Ecuación
(6.167) reemplazando ℓc1 mediante ℓ1 . Por lo tanto
" #
−ℓ1 q̇12
ae,1 = (6.169)
ℓ1 q̈1

Recursión hacia Adelante del Eslabón 2

Nuevamente usamos la Ecuación (6.160) y sustituimos para ω2 de la Ecuación (6.164). Esto da

ac,2 = (R12 )T ae,1 + [(q̈1 + q̈2 )k] × ℓc2 i (6.170)


(q̇1 + q̇2 )k × [(q̇1 + q̇2 )k × ℓc2 i]

UNISON, MCE Control de Robots Luis Arturo García Delgado


140

La única cantidad de la ecuación de arriba que es dependiente de la configuración es la primera.


Esto se puede calcular como
" #" #
cos q2 sin q2 −ℓ1 q̇12
(R12 )T ae,1 =
− sin q2 cos q2 ℓ1 q̈1
" #
−ℓ1 q̇12 cos q2 + ℓ1 q̈1 sin q2
= (6.171)
ℓ1 q̇12 sin q2 + ℓ1 q̈1 cos q2

Sustituyendo en la Ecuación (6.170) da


" #
−ℓ1 q̇12 cos q2 + ℓ1 q̈1 sin q2 − ℓc2 (q̇1 + q̇2 )2
ac,2 = (6.172)
ℓ1 q̇12 sin q2 + ℓ1 q̈1 cos q2 − ℓc2 (q̈1 + q̈2 )

El vector gravitacional es  
sin(q1 + q2 )
g2 = g − cos(q1 + q2 ) (6.173)
 
0
Dado que sólo hay dos eslabones, no hay necesidad de calcular ae,2 . Por lo tanto la recursión hacia
adelante está completa en este punto.

Recursión hacia Atrás: Eslabón 2


Ahora llevamos a cabo la recursión hacia atrás para calcular las fuerzas y torques articulares.
Note que, en esta instancia, los torques articulares son las cantidades aplicadas externamente, y
nuestro último objetivo es desarrollar las ecuaciones dinámicas que involucran los torques articulares.
Primero aplicamos la Ecuación (6.148) con índice i = 2 y notamos que f3 = 0. Esto resulta en

f2 = m2 ac,2 − m2 g2 (6.174)
τ2 = I2 α2 + ω2 × (I2 ω2 ) − f2 × ℓc2 i (6.175)

Ahora podemos sustituir ω2 , α2 de la Ecuación (6.164), y ac,2 de la Ecuación (6.172). También


notamos que el término giroscópico es igual a cero, ya que ambos ω2 e I2 ω2 están alineados con k.
Ahora, el producto cruz f2 × ℓc2 i está claramente alineado con k, el vector unitario en la dirección
z, y su magnitud es justo el segundo componente de f2 . El resultado final es

τ2 = I2 (q̈1 + q̈2 )k + [m2 ℓ1 ℓc2 sin q2 q̇12 + m2 ℓ1 ℓc2 cos q2 q̈1


+m2 ℓ2c2 (q̈12 + q̈2 ) + m2 ℓc2 g cos(q1 + q2 )]k (6.176)

Dado que τ2 = τ2 k, vemos que la ecuación de arriba es la misma que la segunda ecuación de (6.90);
los detalles son rutina y se dejan al lector.

6.7. Resumen del Capítulo


En este capítula tratamos a detalle la dinámica de robots de n-eslabones. Obtuvimos las ecua-
ciones de Euler-Lagrange a partir del principio de D’Alembert y el principio de trabajo virtual.
Estas ecuaciones toman la forma
d ∂L ∂L
− = τk , k = 1, . . . , n
dt ∂ q̇k ∂qk
donde n es el número de grados de libertad y L = K − P es la función Lagrangiana; la diferencia
de las enregías Cinética y Potential, que se escribe en términos de un conjunto de coordenadas
generalizadas (q1 , . . . , qn ). Los términos τk son las fuerzas generalizadas que actúan sobre el sistema.

Luis Arturo García Delgado Control de Robots UNISON, MCE


141

Obtuvimos fórmulas calculables para las energías cinética y potencial; la energía cinética K está
dada como
n n
" #
1 T X o
K = q̇ mi Jvi (q)T Jvi (q) + Jωi (q)T Ri (q)Ii Ri (q)T Jωi (q) q̇
2 i=1
1 T
= q̇ D(q)q̇
2
donde " n #
Xn o
T T T
D(q) = mi Jvi (q) Jvi (q) + Jωi (q) Ri (q)Ii Ri (q) Jωi (q)
i=1
es la matriz de inercia n × n del manipulador. Las matrices Ii de la fórmula de arriba son los
tensores de inercia del eslabón. El tensor de inercia se calcula en un marco unido al cuerpo como
 
Ixx Ixy Ixz
I = Iyx Iyy Iyz 
 
Izx Izy Izz

donde
Z Z Z
Ixx = (y 2 + z 2 )ρ(x, y, z)dxdydz
Z Z Z
Iyy = (x2 + z 2 )ρ(x, y, z)dxdydz
Z Z Z
Izz = (x2 + y 2 )ρ(x, y, z)dxdydz

y
Z Z Z
Ixy = Iyx = − xyρ(x, y, z)dxdydz
Z Z Z
Ixz = Izx = − xzρ(x, y, z)dxdydz
Z Z Z
Iyz = Izy = − yzρ(x, y, z)dxdydz

son los principales momentos de inercia y productos cruzados de inercia, respectivamente, donde la
integración se toma sobre la región de espacio ocupada por el cuerpo.
La fórmula para la energía potencial del i-ésimo eslabón es

Pi = mi g T rci

donde g es el vector de gravedad expresado en el marco inercial y el vector rci da las coordenadas del
centro de masa del eslabón i en el marco inercial. La energía potencial total del robot de n-eslabones
es por lo tanto
n
X n
X
P = Pi = mi g T rci
i=1 i=1
Entonces deducimos una forma especial de las ecuaciones de Euler-Lagrange usando las expre-
siones de arriba para las energías potencial y cinética como
n
X n X
X n
dkj (q)q̈j + cijk (q)q̇i q̇j + gk (q) = τk , k = 1, . . . , n
j=1 i=1 j=1

UNISON, MCE Control de Robots Luis Arturo García Delgado


142

donde los términos


∂P
gk =
∂qk
son las fuerzas gravitacionales generalizadas
( )
1 ∂dkj ∂dki ∂dij
cijk := + −
2 ∂qi ∂qj ∂qk

y los términos cijk son los símbolos de Christoffel del primer tipo.
Las ecuaciones de Euler-Lagrange en la forma vector-matricial se convierten en

D(q)q̈ + C(q, q̇)q̇ + g(q) = τ

donde el (k, j)ésimo elemento de la matriz C(q, q̇) se define como


n n
( )
X X 1 ∂dkj ∂dki ∂dij
ckj = cijk (q)q̇i = + − q̇i
i=1 i=1
2 ∂qi ∂qj ∂qk

y el vector de gravedad g(q) está dado por

g(q) = [g1 (q), . . . , gn (q)]T

Después, obtuvimos algunas propiedades importantes de las ecuaciones de Euler-Lagrange, a


saber, las propiedades de antisimetría, pasividad, y linealidad en los parámetros. La propie-
dad de antisimetría establece que la matriz N (q, q̇) = Ḋ(q) − 2C(q, q̇). La propiedad de pasividad
expresa que existe una constante β > 0 tal que
Z T
q̇ T (t)τ (t)dt ≥ −β, ∀T >0
0

La propiedad de linealidad en los parámetros establece que existe una función n × ℓ, Y (q, q̇, q̈),
llamada regresor, y un vector Θ ℓ-dimensional, llamado el vector de parámetros tal que las ecuaciones
de Euler-Lagrange se pueden escribir

D(q)q̈ + C(q, q̇)q̇ + g(q) = Y (q, q̇, q̈)Θ

También obtuvimos cotas para la matriz de inercia para un manipulador de n-eslabones como

λ1 (q)In×n ≤ D(q) ≤ λn (q)In×n

En caso de que el robot contenga sólo articulaciones rotatorias, las funciones λ1 y λn se pueden
seleccionar como constantes positivas.
Finalmente, discutimos la formulación recursiva Newton-Euler de la dinámica de robots. La
formulación Newton-Euler es equivalente al método de Euler-Lagrange pero ofrece algunas ventajas
desde el punto de vista de computación en línea.

Luis Arturo García Delgado Control de Robots UNISON, MCE


143

6.8. Problemas
6.1 Complete la deducción de las ecuaciones dinámicas para el robot de un solo eslabón, con
articulación flexible del Ejemplo 6.2.
6.2 Verifique la Ecuación (6.21) mediante cálculos directos, despreciando los términos cuadráticos
de δr1 y δr2 .
6.3 Considere un cuerpo rígido sometido a pura rotación sin fuerzas externas actuando sobre él. La
energía cinética es entonces dada como
1
K = (Ixx ωx2 + Iyy ωy2 + Izzωz2 )
2
con respecto a un marco de coordenadas localizado en el centro de masa y cuyos ejes de coordenadas
son los ejes principales. Tome como coordenadas generalizadas los ángulos de Euler ϕ, θ y ψ y
muestre que las ecuaciones de movimiento de Euler-Lagrange del cuerpo rotante son

Ixx ω̇x + (Izz − Iyy )ωy ωz = 0


Iyy ω̇y + (Ixx − Izz )ωz ωx = 0
Izz ω̇z + (Iyy − Ixx )ωx ωy = 0

6.4 Encuentre los momentos de inercia y productos cruzados de inercia de un sólido rectangular
uniforme de lados a, b, c con respecto a un sistema de coordenadas con origen en una de las esquinas
y ejes a lo largo de las aristas del sólido.
6.5 Dada la matriz de inercia D(q) definida mediante la Ecuación (6.86) muestre que det D(q) ̸= 0
para toda q.
6.6 Muestre que la matriz de inercia D(q) para un robot de n-eslabones siempre es definida positiva.
6.7 Verifique la expresión (6.62) que se usó para obtener los símbolos de Christoffel.
6.8 Considere un manipulador Crtesiano de 3-eslabones,
(a) Calcule el tensor de inercia Ji para cada eslabón i = 1, 2, 3 suponiendo que los eslabones son
sólidos rectangulares uniformes de largo 1, ancho 14 , y alto 14 , y masa 1.
(b) Calcule la matriz de inercia 3 × 3 D(q) para este manipulador.
(c) Muestre que los símbolos de Christoffel cijk son cero para este robot. Interprete el significado
de esto para las ecuaciones dinámicas de movimiento
(d) Obtenga las ecuaciones de movimiento en la forma matricial:

D(q)q̈ + C(q, q̇)q̇ + g(q) = u

6.9 Obtenga las ecuaciones de Euler-Lagrange para el robot plano RP de la Figura 3.14.
6.10 Obtenga las ecuaciones de Euler-Lagrange para el robot plano RPR de la Figura 5.14.
6.11 Obtenga las ecuaciones Euler-Lagrange de movimiento de para el robot de tres-eslabones
RRR de la Figura 5.13. Explore el uso de software simbólico, como Maple o Mathematica, para este
problema. Vea, por ejemplo, el paquete Robotica [126].
6.12 Para cada uno de los robots de arriba, defina un vector de parámetros, Θ, calcule el regresor,
Y (q, q̇, q̈) y exprese las ecuaciones de movimiento como

Y (q, q̇, q̈)Θ = τ (6.177)

UNISON, MCE Control de Robots Luis Arturo García Delgado


144

6.13 Recuerde que para una partícula con energía cinética K = 12 mẋ2 , el momento se define como

dK
p = mẋ =
dẋ
Por lo tanto, para un sistema mecánico con coordenadas generalizadas q1 , . . . , qn , definimos el mo-
mento generalizado pk como
∂L
pk =
∂ q̇k
donde L es el Lagrangiano del sistema. Con K = 21 q̇ T D(q)q̇ y L = K − V pruebe que
n
X
q̇k pk = 2K
k=1

6.14 Hay otra formulación de las ecuaciones de movimiento de un sistema mecánico que es útil, la
llamada formulación Hamiltoniana. Defina la función Hamiltoniana H mediante
n
X
H= q̇k pk − L
k−1

(a) Muestre que H = K + V .


(b) Usando las ecuaciones de Euler-Lagrange, obtenga las ecuaciones de Hamilton

∂H
q̇k =
∂pk
∂H
ṗk = − + τk
∂qk
donde τk es la entrada de fuerza generalizada.
(c) Para el manipulador de dos-eslabones de la Figura 6.9 calcule las ecuaciones de Hamilton en
forma matricial. Note que las ecuaciones de Hamilton son un sistema de ecuaciones diferenciales de
primer orden a diferencia del sistema de segundo orden dado por las ecuaciones de Lagrange.

6.15 Dado el Hamiltoniano H para un robot rígido, muestre que


dH
= q̇ T τ
dt
dH
donde τ es la fuerza externa aplicada en las articulaciones. ¿Cuáles son las unidades de dt ?

Luis Arturo García Delgado Control de Robots UNISON, MCE


Capítulo 7

Planificación de Rutas y Trayectorias

En los capítulos previos estudiamos la geometría de brazos robóticos, desarrollando soluciones


tanto para problemas de cinemática directa e inversa. Las soluciones a estos problemas dependen
sólo de la geometría intrínseca del robot, y ellas no reflejan ninguna restricción impuesta por el
espacio de trabajo en el cual opera el robot. En particular, ellas no toman en cuenta la posibilidad
de colisión entre el robot y objetos en el espacio de trabajo o colisiones entre el robot y las fronteras
de su espacio de trabajo (e.g., paredes, piso, puertas cerradas). En este capítulo abordamos el
problema de planificación de trayectorias libres de colisiones para el robot. Supondremos que se
especifican las configuraciones inicial y final del robot y que el problema es encontrar una ruta libre
de colisiones para el robot que conecte estas configuraciones.
La descripción de este problema es engañosamente simple, sin embargo, el problema de plani-
ficación de ruta está entre los problemas más difíciles en la ciencia computacional. Por ejemplo, el
tiempo computacional requerido por el algoritmo completo1 mejor conocido para planificación de
ruta crece exponencialmente con el número de grados de libertad internos del robot. Por esta razón,
los algoritmos completos se utilizan en la práctica sólo para robots simples con pocos grados de
libertad, como los robots móviles que se trasladan en el plano. Para robots que tienen más que unos
pocos grados de libertad o que son capaces de movimiento rotacional, los problemas de planificación
de rutas son frecuentemente tratados como problemas de búsqueda. Los algoritmos que se usan para
dichos problemas son guiados mediante estrategias heurísticas, y no garantizan encontrar soluciones
para todos los problemas. No obstante, son bastante efectivos en un amplio rango de aplicaciones
prácticas, son bastante fáciles de implementar, y requieren sólo moderado tiempo computacional
para la mayoría de los problemas.
La planificación de ruta brinda una descripción geométrica del movimiento del robot, pero no
considera ningún aspecto dinámico del movimiento. Por ejemplo, para un brazo manipulador, ¿cuáles
deben ser las velocidades y aceleraciones articulares mientras atraviesa la ruta? Para un robot tipo
carro, cuál debe ser el perfil de aceleración a lo largo de la ruta? Esta clase de preguntas se abordan
mediante un planificador de trayectoria. El planificador de trayectoria calcula una función q(t) que
especifica completamente el movimiento del robot en tanto éste atraviesa la ruta.
Comenzamos en la Sección 7.1 revisando la noción de espacio de configuración que fue
presentada al principio en el Capítulo 1. Damos una breve descripción de la geometría del espacio
de configuración y describimos cómo se pueden mapear los obstáculos en el espacio de trabajo
al espacio de configuración. Luego, en la Sección 7.2 consideramos el problema de planificación
de movimiento de robots con formas poligonales que se trasladan en un espacio de trabajo plano
que contiene objetos poligonales. Aunque éste es un caso muy especial, tiene gran aplicabilidad a
problemas que involucren robots móviles, como el que se muestra en la Figura 1.3. En la Sección 7.3
presentamos un primer método que se puede aplicar a problemas de planificación de rutas en general,
1
Se dice que un algoritmo está completo si éste encuentra una solución cuando exista alguna, y señala la falla en
tiempo finito cuando no existe una solución.

145
146

el así llamado método de campo potencial artificial. Los métodos de campo potencial exploran
el espacio de configuración siguiendo el gradiente de una función que recompensa el progreso hacia
el objetivo mientras que penaliza la colisión con objetos en el espacio de trabajo. Generalmente
no es posible construir dicha función sin presentar mínimos locales, en los cuales los algoritmos de
gradiente en decenso terminarán sin encontrar una solución. La aleatorización se presenta como
un método para tratar con este problema. En la Sección 7.4, describimos dos métodos que generan
aleatoriamente un conjunto de configuraciones muestra, y los usa como vértices en un grafo que
representa un conjunto de rutas libres en el espacio de configuración. Finalmente, dado que cada
uno de estos métodos generan una secuencia de configuraciones, describimos cómo se pueden usar
splines polinomiales para generar trayectorias suaves a partir de una secuencia de configuraciones
en la Sección 7.5.

7.1. El Espacio de Configuración


En el Capítulo 3 vimos que el mapa de cinemática directa se puede usar para determinar la
posición y orientación del marco del efector final dado el vector de variables articulares. Además, las
matrices A se pueden usar para inferir la posición y orientación de algún eslabón del robot. Dado que
se supone que cada eslabón del robot es un cuerpo rígido, las matrices A se pueden usar para inferir la
posición de algún punto en el robot, dados los valores de las variables articulares. De manera similar,
para una plataforma robótica móvil, si unimos rígidamente un marco de coordenadas al robot,
podemos inferir la posición de cualquier punto en la plataforma móvil una vez que conozcamos
la posición y orientación del marco unido al cuerpo. En la literatura de planificación de ruta se
refiere como configuración a la especificación completa de la localización de cada punto del robot,
y el conjunto de todas las configuraciones posibles se refiere como espacio de configuración.
En esta sección, formalizamos la noción de espacio de configuración, incluyendo cómo se puede
representar éste matemáticamente, cómo la presencia de objetos en el espacio de trabajo impone
restricciones sobre el conjunto de configuraciones válidas, y la representación de rutas en el espacio
de configuración.

7.1.1. Representación del Espacio de Configuración


Denotamos mediante Q una representación del espacio de configuración. Por ejemplo, como
vimos en el Capítulo 2, para cualquier objeto rígido podemos especificar la localización de cada
punto del objeto uniendo rígidamente un marco de coordenadas al objeto y especificando la posición
y orientación de este marco. Por lo tanto, para un objeto rígido que se mueve en el plano podemos
representar una configuración mediante el triple q = (x, y, θ), y el espacio de configuración se puede
representar mediante Q = R2 × SO(2). Alternativamente, podemos elegir representar la orientación
del objeto como un punto sobre el círculo unitario, S 1 . En este caso, el espacio de configuración se
representaría mediante Q = R2 × S 1 .
Para brazos manipuladores, el vector de variables articulares con frecuencia brinda una repre-
sentación conveniente de una configuración. Para un brazo rotatorio de un-eslabón el espacio de
configuración es solamente el conjunto de orientaciones del eslabón, y entonces Q = S 1 , donde S 1
representa el círculo unitario. Podemos parametrizar localmente Q mediante un solo parámetro,
el ángulo articular θ1 , exactamente como se hizo en el Capítulo 3 usando la convención DH. Para
el brazo plano de dos-eslabones tenemos Q = S 1 × S 1 = T 2 , en la cual T 2 representa el toro, y
podemos representar la configuración mediante q = (θ1 , θ2 ). Para un brazo Cartesiano, tenemos
Q = R3 y podemos representar una configuración mediante q = (d1 , d2 , d3 ).
Para robots móviles, típicamente tratamos al robot como un solo objeto rígido, ignorando el
movimiento de los componentes individuales como ruedas rotantes o hélices. Para vehículos terres-
tres, el espacio de configuración se representa típicamente como Q = SE(2), o, en casos donde la

Luis Arturo García Delgado Control de Robots UNISON, MCE


147

orientación del vehículo no es relevante, como Q = R2 . El último caso es abordado específicamente


después, en la Sección 7.2. Para robots que se mueven en espacio tri-dimensional, como los vehículos
aéreos o robots subacuáticos, típicamente definimos el espacio de configuración como Q = SE(3).

7.1.2. Obstáculos en el Espacio de Configuración


Una colisión ocurre cuando algún punto sobre el robot contacta ya sea un objeto en el espacio
de trabajo o la frontera del espacio de trabajo (e.g., paredes o el piso), los cuales son considerados
como obstáculos para propósitos de planificación de rutas libres de colisiones. También son posibles
las auto-colisiones, por ejemplo si el efector final unido a un brazo manipulador hace contacto
con el eslabón de la base, pero no consideraremos aquí el caso de auto-colisiones. Para describir
las colisiones presentaremos alguna notación adicional. Definimos el espacio de trabajo del robot
como el espacio en el cual el robot se mueve, denotado por W. En general, consideramos W = R2
para robots móviles que se mueven en el plano, y W = R3 para robots que se mueven en un espacio
tridimensional (e.g., brazos robóticos no planos y robots móviles como vehículos aéreos). Denotamos
el subconjunto del espacio de trabajo que es ocupado por el robot en la configuración q mediante
A(q), y mediante Oi el subconjunto del espacio de trabajo ocupado por el i-ésimo obstáculo. Para
planificar una ruta libre de colisiones debemos asegurar que el robot nunca alcance una configuración
q que ocasione que éste haga contacto con un obstáculo. El conjunto de configuraciones para las
cuales el robot choca con un obstáculo es referido como el espacio de configuración del obstáculo
y es definido mediante
QO = {q ∈ Q|A(q) ∩ O = ̸ ∅}
en el cual O = Oi . El conjunto de configuraciones libres de colisiones, referido como el espacio de
S

configuración libre, es entonces simplemente el conjunto diferencia

Qfree = Q\QO

Ejemplo 7.1 (Un Cuerpo Rígido que se Traslada en el Plano). Considere un robot móvil de forma
triangular cuyos movimientos posibles incluyen sólo traslación en el plano, como en la Figura 7.1.
Para este caso, el espacio de configuración del robot es Q = R2 , así que es particularmente fácil
visualizar ambos, el espacio de configuración y el espacio de configuración de la región del obstáculo.
Si sólo hay un obstáculo en el espacio de trabajo y tanto el robot como el obstáculo son polígonos
convexos, es una cuestión simple el cálculo del espacio de configuración de la región del obstáculo
QO. Sea ViA el vector que es normal a la i-ésima arista del robot y sea ViO el vector que es normal
a la i-ésima arista del obstáculo. Defina ai que sea el vector desde el origen de coordenadas del robot
al i-ésimo vértice del efector final, y bj que sea el vector desde el origen de coordenadas del marco
del mundo al j-ésimo vértice del obstáculo, como se muestra en la Figura 7.1(a). Los vértices de
QO se pueden determinar como sigue.

Para cada par VjO y Vj−1


O , si V A apunta entre −V O y −V O , entonces sume a QO los vértices
i j j−1
bj − ai y bj − ai+1 .

Para cada par ViA y Vi−1


A , si V O apunta entre −V A y −V A , entonces sume a QO los vértices
j i i−1
bj − ai y bj+1 − ai .

Esto se ilustra en la Figura 7.1(b). Note que este algoritmo esencialmente coloca al robot en
todas las posiciones donde el contacto vértice-a-vértice entre el robot y el obstáculo es posible. El
origen del marco de coordenadas local del robot en cada una de dichas configuraciones define un
vértice de QO. El polígono definido mediante estos vértices es QO.
Si hay múltiples obstáculos convexos Oi , entonces el espacio de configuración de la región del
obstáculo es simplemente la unión de regiones de obstáculos QOi para obstáculos individuales. Para

UNISON, MCE Control de Robots Luis Arturo García Delgado


148

Figura 7.1: (a) El robot es un objeto rígido en forma de triángulo en un espacio de trabajo bi-
dimensional que contiene un solo obstáculo rectangular. (b) La frontera del espacio de configuración
QO (mostrado como una línea discontinua) se puede obtener calculando el casco convexo de la
configuración en el cual el robot hace contacto vértice-a-vértice con el único obstáculo convexo.

un obstáculo no convexo, el espacio de configuración de la región del obstáculo se puede calcular


descomponiendo primero el obstáculo en piezas convexas Oi calculando el espacio de configuración
de la región del obstáculo QOi para cada pieza, y finalmente, calcular la unión de QOi .

Ejemplo 7.2 (Un Brazo Plano de Dos Eslabones). El cálculo de QO es más difícil para robots con
articulaciones rotatorias. Considere un brazo plano de dos-eslabones en un espacio de trabajo que
contiene un solo obstáculo como se muestra en la Figura 7.2(a). El espacio de configuración de la
región del obstáculo se lustra en la Figura 7.2(b).

Figura 7.2: (a) El robot es un brazo plano de dos-eslabones y el espacio de trabajo contiene un
solo obstáculo poligonal, pequeño. (b) El correspondiente espacio de configuración de la región del
obstáculo contiene todas las configuraciones q = (θ1 , θ2 ) tal que el brazo en la configuración q
interseca el obstáculo.

Para valores de θ1 muy cercanos a π/2, el primer eslabón del brazo colisiona con el obstáculo.
Cuando el primer eslabón está cercano al obstáculo (θ1 cercano a π/2), para algunos valores de θ2

Luis Arturo García Delgado Control de Robots UNISON, MCE


149

el segundo eslabón del brazo colisiona con el obstáculo. La región QO mostrada en la Figura 7.2(b)
se calculó usando una rejilla discreta en el espacio de configuración. Para cada celda en la rejilla,
se realizó una prueba de colisión, y la celda fue sombreada cuando ocurría una colisión. Esto sólo
es una representación aproximada de QO; sin embargo, para robots con articulaciones rotatorias
las representaciones exactas son muy costosas de calcular, y por lo tanto dichas representaciones
aproximadas se usan con frecuencia para brazos robóticos con pocos grados de libertad.

El cálculo de QO para el caso bi-dimensional de Q = R2 y obstáculos poligonales es sencillo,


pero, como se puede ver del ejemplo del brazo plano de dos-eslabones, el cálculo de QO se vuelve
difícil incluso para espacios de configuración moderadamente complejos. En el caso general (por
ejemplo, brazos articulados o cuerpos rígidos que se puedan trasladar y rotar), el problema de
calcular una representación del espacio de configuración de la región del obstáculo es intratable.
Una de las razones para esta complejidad es que el tamaño de la representación del espacio de
configuración tiende a crecer exponencialmente con el número de grados de libertad. Esto es fácil
de entender intuitivamente considerando el número de cubos unitarios n-dimensionales necesarios
para llenar un espacio de tamaño k. Para el caso uni-dimensional k intervalos unitarios cubrirán
el espacio. Para el caso bi-dimensional se requieren k 2 cuadraros. Para el caso tridimensional se
requieren k 3 cubos, y así sucesivamente. Por lo tanto, en este capítulo desarrollaremos métodos que
eviten la construcción de una representación explícita de QO o de Qfree .

7.1.3. Rutas en el Espacio de Configuración


El problema de planificación de rutas consiste en encontrar una ruta desde una configuración
inicial qs hasta una configuración final qf , tal que el robot no colisione con ningún obstáculo mientras
atraviesa la ruta. De manera más formal, una ruta libre de colisiones desde qs hasta qf es un mapa
continuo, γ : [0, 1] → Qfree , con γ(0) = qs y γ(1) = qf . Desarrollaremos métodos de planificación de
rutas que calculen una secuencia de configuraciones discretas (puntos de consigna) en el espacio de
configuración. En la Sección 7.5 mostraremos cómo se pueden generar trayectorias suaves a partir
de dicha secuencia de puntos de consigna.

7.2. Planificación de rutas para Q = R2


Antes de considerar el problema general de planificación de ruta, primero consideramos el caso
especial en que Q = R2 , y en particular, las situaciones en las cuales el robot y los obstáculos se
pueden representar como polígonos en el plano, y en las cuales el robot se puede mover en cualquier
dirección arbitraria (e.g., no hay restricciones en las direcciones de movimiento como existirían en
robots móviles tipo carro, que no se pueden mover en dirección perpendicular al rumbo del carro).
Además, suponemos que el espacio de trabajo del robot, y por ende su espacio de configuración,
está acotado. Esto a menudo es una aproximación aceptable para situaciones en las cuales los robots
móviles navegan en espacios de trabajo como almacenes, pisos de fábricas, edificios de oficinas, etc.
En este caso, como hemos visto en el Ejemplo 7.1, es una cuestión simple construir una represen-
tación explícita del espacio de configuración de la región del obstáculo (y por lo tanto, del espacio de
configuración libre). En esta sección, presentamos tres algoritmos que se pueden usar para construir
rutas de colisión, dada como entrada una representación poligonal, explícita del espacio de confi-
guración de las regiones de obstáculos. Todos los tres algoritmos forman estructuras gráficas para
representar el conjunto de todas la rutas posibles, y por lo tanto, una vez que estas representaciones
han sido construidas, el problema de planificación de ruta se reduce a un problema de búsqueda
gráfico, para lo cual existen muchos algoritmos.
Un grafo se define como G = (V, E), en el cual V es un conjunto de vértices, y E es un conjunto
de aristas, cada una de las cuales corresponde a un par de vértices. Un ejemplo se muestra en la

UNISON, MCE Control de Robots Luis Arturo García Delgado


150

Figura 7.3: Un grafo con cinco vértices y seis aristas.

Figura 7.3, en la cual el grafo tiene vértices y aristas

V = {v1 , v2 , . . . , v5 }
E = {(v1 , v2 ), (v2 , v3 ), (v2 , v4 ), (v1 , v4 ), (v4 , v5 ), (v3 , v5 )}

Se dice que los vértices son adyacentes si están conectados mediante una arista. Una ruta desde un
vértice vi hasta un vértice vj es una secuencia de vértices adyacentes, comenzando en vi y finalizando
en vj , o equivalentemente, el conjunto de aristas definidas mediante pares de vértices adyacentes en
esta ruta. Por ejemplo, las aristas (v1 , v4 ), (v4 , v2 ), (v2 , v3 ), (v3 , v5 ) definen una ruta desde v1 hasta
v5 .

7.2.1. El Grafo de Visibilidad


Un grafo de visibilidad es un grafo cuyos vértices pueden “ver” a cada uno de los otros, es decir,
las aristas en el grafo corresponden a rutas que no se intersecan con el interior de ningún obstáculo;
la “línea de visión” entre vértices adyacentes no está ocluida. Para planificación de ruta en un
espacio de configuración poligonal, el conjunto de vértices V incluye (a) las configuraciones inicial y
meta qs y qf , y (b) cada vértice de obstáculos en el espacio de configuración. El conjunto de aristas,
E, incluye todas las aristas (vi , vj ) tal que el segmento de línea que une vi a vj cae enteramente en
el espacio de configuración libre, o tal que (vi , vj ) corresponda a una arista de un obstáculo en el
espacio de configuración. La Figura 7.4(a) muestra un espacio de configuración que contiene regiones
de obstáculos poligonales, y la Figura 7.4(b) muestra el grafo de visibilidad correspindiente.
Cualquier ruta en el grafo de visibilidad corresponde a una ruta semi-libre en el espacio de
configuración, donde por semi-libre nos referimos a que la ruta cae en el límite del espacio de
configuración libre (i.e., ya sea en el espacio de configuración libre, o en la frontera del espacio de
configuración de la región del obstáculo). Sin embargo, siempre es posible deformar una ruta semi-
libre en una ruta libre mediante una pequeña perturbación de la ruta semi-libre. Como ejemplo, la
Figura 7.4(c) muestra una ruta semi-libre desde qs hasta qf (note que la ruta hace contacto con la
frontera del espacio de configuración de los obstáculos en los vértices de los obstáculos v2 y v6 ), y
la Figura 7.4(d) muestra una correspondiente ruta libre.
Se puede mostrar (Problema 7-7) que el grafo de visibilidad contiene las rutas semi-libres más
cortas para cualquier qs y qf , siempre que estas qs y qf se incluyan en la construcción del grafo
de visibilidad. Se debe notar que tales rutas más cortas pudieran no ser deseables en la práctica,
ya que ellas llevan al robot arbitrariamente cerca de los obstáculos en el espacio de trabajo, lo que
fácilmente puede llevar a una colisión si hay alguna incertidumbre en la localización del robot o
en el mapa del entorno. Por esta razón, a menudo es preferible planificar rutas que maximicen el

Luis Arturo García Delgado Control de Robots UNISON, MCE


151

Figura 7.4: Esta figura ilustra la construcción de una ruta libre usando el grafo de visibilidad. (a)
Un ambiente que contiene obstáaculos poligonales, con configuraciones de inicio y meta qs y qf . (b)
El grafo de visibilidad. (c) Una ruta semi-libre desde qs hasta qf . (d) Una ruta libre desde qs hasta
qf , obtenida mediante una pequeña perturbación de los vértices de la ruta que hacen contacto con
los vértices de obstáculos en la ruta semi-libre.

espacio libre entre el robot y cualquier obstáculo. El llamado diagrama generalizado de Voronoi,
discutido a continuación, se puede usar para construir dichas rutas.

7.2.2. El Diagrama Generalizado de Voronoi


Considere un conjunto de puntos discretos en el plano, P = {p1 , . . . , pn }. Para cada punto pi ,
definimos su celda de Voronoi que es el conjunto de puntos en el plano que están más cercanos a pi
que cualquier otro pj ∈ P ,

Vor(pi ) = {x ∈ R2 | ∥x − pi ∥ ≤ ∥x − pj ∥, para toda j ̸= i}

Dos regiones de Voronoi son adyacentes si Vor(pi ) ∩ Vor(pj ) ̸= ∅, en cuyo caso la intersección es un
segmento de línea recta, referida como arista de Voronoi, definida como

Eij = {x ∈ R2 | ∥x − pi ∥ = ∥x − pj ∥ ≤ ∥x − pk ∥, para toda k ̸= i, j}

La arista de Voronoi Eij se compone del conjunto de puntos en el plano que son mínimamente
equidistantes a los puntos pi y pj .
Si consideramos los puntos pi como obstáculos, entonces una ruta libre de colisiones es simple-
mente una ruta que no incluye ninguno de pi . Defina el espacio libre de una ruta que sea la distancia
mínima entre la ruta y cualquier punto p ∈ P , i.e.,

ρ(γ) = mı́n mı́n ∥γ(t) − p∥


t∈[0,1] p∈P

Si qs y qf caen en las aristas de Voronoi, entonces la ruta máximamente libre de colisiones γ ∗ que
conecta qs y qf se contiene completamente en el conjunto de aristas de Voronoi.
Todos estos conceptos se pueden generalizar del caso de puntos discretos al caso de polígonos
en el plano. Un polígono consiste en un conjunto de vértices que están conectados por aristas.

UNISON, MCE Control de Robots Luis Arturo García Delgado


152

Juntos, estos vértices y aristas son algunas veces referidos como las características que definen
el polígono. Por lo tanto, una característica f del polígono es ya sea un vértice, v o una arista,
e = (v, v ′ ). Ahora, sea P el conjunto de características que corresponden al espacio de configuración
poligonal de obstáculos. La distancia de un punto x a una característica f de un polígono se define
como (
∥x − v∥ : f =v
d(x, f ) =
mı́nα∈[0,1] ∥x − (v − α(v − v ))∥ : f = e = (v, v ′ )

en el cual ∥x − v∥ es la distancia Euclideana entre el punto x y el vértice v, y la expresión


mı́nα∈[0,1] ∥x − (v − α(v − v ′ ))∥ da la distancia mínima desde el punto x hacia la arista e = (v, v ′ ).
Definimos la celda de Voronoy de la característica f como el conjunto de puntos en el plano que
están más cercanos a f que a cualquier otra característica f ′ ∈ P ,

Vor(f ) = {x ∈ R2 |d(x, f ) ≤ d(x, f ′ ), para f ̸= f ′ ∈ P }

También podemos generalizar el concepto de aristas de Voronoi como el conjunto de puntos míni-
mamente equidistantes de dos características,

Eij = {x ∈ R2 |d(x, fi ) = d(x, fj ) ≤ d(x, fk ), para toda k ̸= i, j}

Dado que el conjunto de características incluye sólo puntos y segmentos de líneas, el conjunto de
aristas de Voronoi incluirá sólo segmentos de líneas que sean mínimamente equidistantes a dos
vértices o aristas, y secciones o parábolas que sean mínimamente equidistantes a a un vértice o una
arista. Definimos el diagrama generalizado de Voronoi como el grafo G = (V, E) cuyas aristas son
las aristas de Voronoi, y cuyos vértices son puntos en los cuales se intersecan múltiples aristas de
Voronoi.
Para el caso de obstáculos poligonales, definimos el espacio libre de una ruta como la distancia
mínima entre la ruta y alguna característica f ∈ P , i.e.,

ρ(γ) = mı́n mı́n d(γ(t), f )


t∈[0,1] f ∈P

y, como arriba, si qs y qf caen en las aristas de Voronoi, entonces la ruta de máximo espacio libre
γ ∗ que conecta qs y qf está contenida completamente en el conjunto de aristas de Voronoi.
Para el caso en que qs y qf no caen el las aristas de Voronoi, es necesario también construir
rutas libres de colisión desde cada qs y qf hasta las aristas de Voronoi. Esto es en realidad muy fácil
de hacer. Si, por ejemplo, qs cae en la región de Voronoi para una característica particular, f , una
ruta en línea recta desde qs que siga el gradiente ∇d(qs , f ) llegará a una arista de Voronoi antes de
alcanzar cualquier otra característica f ′ (Problema 7-8). Para el caso de una característica arista,
este gradiente está dado por
qs − q ∗
∇d(qs , f ) =
∥qs − q ∗ ∥
en el cual q ∗ es el punto de la arista más cercano a qs .
El problema de planificación de ruta se puede resolver ahora como sigue:

1. Encuentre la ruta en línea recta desde qs hasta la arista de Voronoi más cercana. Sea qs′ el
punto en el cual esta ruta interseca la arista de Voronoi.

2. Encuentre la ruta en línea recta desde qf hasta la arista de Voronoi más cercana. Sea qf′ el
punto en el cual esta ruta interseca la arista de Voronoi.

3. Encuentre una ruta en el diagrama generalizado de Voronoi desde qs′ hasta qf′ .

Luis Arturo García Delgado Control de Robots UNISON, MCE


153

Figura 7.5: Un espacio de configuración poligonal que contiene cinco obstáculos, y su diagrama de
Voronoi generalizado.

Existen algoritmos eficientes para calcular el diagrama generalizado de Voronoi exacto, pero
en la práctica numérica, se usan con frecuencia los algoritmos basados en rejillas, ya que (a) son
mucho más fáciles de implementar (b) el error inducido al recurrir a una rejilla discreta suele ser
pequeño en relación con el espacio libre logrado mediante las rutas que se encuentran en el diagrama
de Voronoi generalizado, y (c) las representaciones basadas en rejillas son factibles para espacios
bi-dimensionales. La Figura 7.5 muestra un espacio de configuración poligonal y el correspondiente
diagrama de Voronoi generalizado.

7.2.3. Descomposiciones Trapezoidales


El grafo de visibilidad y el diagrama de Voronoi generalizado son dos gráficas cuyas aristas
corresponden directamente a rutas en el espacio de configuración. Para el grafo de visibilidad, las
aristas corresponden a porciones de rutas específicas semi-libres, mientras que para el diagrama
de Voronoi generalizado, cada arista de Voronoi corresponde a una porción específica de la ruta
libre. Ninguna de estas representaciones captura explícitamente ninguna información acerca de la
geometría del espacio de configuración libre.
Por el contrario, una descomposición espacial del espacio de configuración libre es una co-
lección de regiones {R1 , . . . , Rm } tal que Ri = Qfree e int(Ri ) ∩ int(Rj ) = ∅ para toda i ̸= j,
S

donde int(R) denota el interior de la región R. Las regiones Ri definen explícitamente la geometría
del espacio de configuración libre. Una descomposición espacial convexa tiene la propiedad
adicional de que cada Ri es convexa. Las regiones convexas tienen la atractiva propiedad de que
para cualquier qi , qj ∈ R, el segmento de línea que las conecta se encuentra completamente dentro
de R, esto es, qi − α(qi − qj ) ∈ R para toda α ∈ [0, 1]. Por lo tanto, la construcción de una ruta libre
entre dos configuraciones en el mismo subconjunto convexo de Qfree es trivial. Una descomposición
trapezoidal es un caso especial de la descomposición espacial de clase convexa que aplica al caso de
polígonos en el plano.

UNISON, MCE Control de Robots Luis Arturo García Delgado


154

La Figura 7.6(a) muestra la descomposición trapezoidal del espacio de configuración libre para
el caso de obstáculos poligonales. Cada región en la descomposición es un trapezoide que consta
de las aristas del polígono y segmentos de línea verticales que inciden sobre los vértices de los
polígonos2 . Un algoritmo popular para construir una descomposición trapezoidal se logra haciendo
un barrido de una línea vertical a través del espacio de configuración, deteniéndose en cada vértice
del espacio de configuración de la región de obstáculos, y haciendo actualizaciones apropiadas a la
descomposición. La Figura 7.6(b) muestra un paso de este proceso. En esta parada de la línea de
barrido, ℓ, las regiones R3 y R4 son “cerradas” y la región R5 está “abierta”.

Figura 7.6: Una descomposición trapezoidal del espacio de configuración libre para el caso de obs-
táculos poligonales.

El grafo de conectividad para una descomposición trapezoidal codifica las relaciones de adya-
cencia entre las regiones de la descomposición. Los vértices del grafo de conectividad corresponden
2
Note que los triángulos se consideran como trapezoides que tienen un lado de largo cero, y los rectángulos son
casos especiales de trapezoides para los cuales los lados opuestos son paralelos.

Luis Arturo García Delgado Control de Robots UNISON, MCE


155

a las regiones, y existe una arista entre Ri y Rj si dos regiones son adyacentes (i.e., si Ri ∩ Rj ̸= ∅).
La Figura 7.6(c) muestra el grafo de conectividad para la descomposición trapezoidal de la Figura
7.6(a). Para un qs y qf dados, el problema de planificación de ruta se puede resolver como sigue.

1. Determine la región Ri que contiene la configuración inicial qs .

2. Determine la región Rj que contiene la configuración final qf .

3. Encuentre una ruta en el grafo de conectividad desde Ri hasta Rj .

4. Construya una ruta lineal por partes desde qs y qf que pase sucesivamente a través de las
celdas encontradas en el Paso 3, cruzando desde una región a la siguiente en el punto medio
de la frontera de las dos regiones.

7.3. Campos Potenciales Artificiales


Los métodos descritos en la Sección 7.2 son aplicables sólo para espacios de configuración muy
simples. Para espacios de configuración más complejos (e.g., SE(2) para un robot tipo carro, SE(3)
para un vehículo aéreo, o el toro-n para un brazo de n-eslabones) típicamente no es factible construir
una representación explícita de QO o Qfree . Una alternativa es desarrollar un algoritmo de búsqueda
que incrementalmente explore Qfree mientras busque la ruta. Una estrategia popular para explorar
Qfree usa un campo potencial artificial para guiar la búsqueda.
La idea básica detrás de la aproximación de campo potencial es tratar al robot como una
partícula puntual en el espacio de configuración bajo la influencia de un campo potencial artificial
U . El campo U se construye de tal forma que el robot sea atraído a la configuración final qf mientras
es repelido de las fronteras de QO. Si es posible, U se construye de tal manera que haya un solo
mínimo global de U en qf y no haya mínimos locales. Desafortunadamente por lo general resulta
difícil o incluso imposible construir tal campo.
En la mayoría de los planificadores de ruta por campos potenciales, el campo U se construye como
un campo aditivo que consta de un componente que atrae al robot a qf y un segundo componente
que repele al robot de la frontera de QO

U (q) = Uatt (q) + Urep (q)

Dada esta formulación, la planificación de ruta puede verse como un problema de optimización,
a saber, el problema de encontrar el mínimo global de U empezando desde la configuración inicial qs ,
y a menudo se utilizan métodos de descenso del gradiente para encontrar una solución. En física, un
campo de fuerza conservador se puede escribir como el gradiente negativo de una función potencial.
Por lo tanto, podemos interpretar el gradiente en descenso analógicamente como una partícula
que se mueve bajao la influencia de la fuerza F = −∇U . Más abajo nos referimos frecuentemente
a las fuerzas atractiva y repulsiva para explotar esta intuición natural cuando definamos campos
potenciales.
Desarrollamos el método de campo potencial para planificación de ruta en dos escenarios. Pri-
mero, en la Sección 7.3.1, desarrollamos el método para el caso especial de Q = Rn . Al hacer esto,
podemos fácilmente definir U en términos de distancias Euclidianas, sin tratar el problema de definir
métricas sobre espacios de configuración arbitrarios. Esto permite un sencillo desarrollo inicial de
los conceptos y algoritmos. En lugar de definir explícitamente campos potenciales en estos espacios
de configuración, definiremos una colección de los llamados campos potenciales en el espacio de
trabajo, y luego mostramos cómo el gradiente del correspondiente potencial en el espacio de confi-
guración se puede calcular usando el Jacobiano del mapa de cinemática directa. Para ambos casos,
describimos algoritmos específicos de gradiente en descenso para planificación de ruta.

UNISON, MCE Control de Robots Luis Arturo García Delgado


156

7.3.1. Campos Potenciales Artificiales para Q = Rn


Para el caso de Q = Rn , definiremos un potencial atractivo en términos de la distancia Euclidiana
a la meta, y un potencial repulsivo en términos de la distancia Euclidiana a la frontera del obstáculo
más cercano. Entonces describimos cómo se pueden usar métodos de gradiente en descenso para
encontrar una ruta libre de colisiones. Debido a que el gradiente en descenso a menudo fracasa en
situaciones en las cuales el campo potencial tiene múltiples mínimos locales, finalizamos con una
discusión de cómo se puede usar la aleatorización para escapar de los mínimos locales de la función
potencial.

El Campo Atractivo
Para atraer al robot a su configuración meta, definiremos un campo potencial atractivo Uatt .
En la configuración meta q = qf . Hay muchos criterios que debe satisfacer el campo potencial Uatt .
Primero, Uatt debe ser monotónicamente creciente con la distancia a la configuración meta. La
opción más simple par que dicho campo crezca linealmente con esta distancia, un llamado potencial
de pozo cónico
Uatt (q) = ζ∥q − qf ∥
en la que ζ es un parámetro usado para escalar los efectos del potencial atractivo. El gradiente de
dicho campo tiene magnitud unitaria en todas partes excepto en la configuración meta, donde éste
es cero. Esto puede llevar a problemas de estabilidad dado que hay una discontinuidad en la fuerza
atractiva en la posición meta.
El potencial de pozo parabólico dado por
1
Uatt (q) = ζ∥q − qf ∥2
2
es continuamente diferenciable y se incrementa monotónicamente con la distancia a la configuración
meta. La fuerza atractiva es igual al gradiente negativo de Uatt , la cual está dada mediante (Problema
7-9)
Fatt (q) = −∇Uatt (q) = −ζ(q − qf ) (7.1)
Para el pozo parabólico la fuerza atractiva es un vector dirigido hacia qf con una magnitud lineal-
mente relacionada con la distancia de q a qf .
Mientras que esta fuerza converge linealmente a cero en tanto q se aproxima a qf , lo cual es
una propiedad deseable, ésta crece sin límites cuando q se aleja de qf . Si qs está muy lejos de qf ,
esto puede producir una fuerza atractiva inicial que sea muy grande. Por esta razón podemos optar
por combinar los potenciales cuadrático y cónico de tal manera que el potencial cónico esté activo
cuando q esté distante de qf , y el potencial cuadrático esté activo cuando q esté cercano a qf . Por
supuesto, es necesario que se defina el gradiente en la frontera entre los campos cónico y cuadrático.
Dicho campo se puede definir mediante
(
1
− qf ∥ 2
2 ζ∥q : ∥q − qf ∥ ≤ d
Uatt (q) =
dζ∥q − qf ∥ − 12 ζd2 : ∥q − qf ∥ > d

en la cual d es la distancia que define la transición del pozo cónico al parabólico. En este caso la
fuerza está dada por 
−ζ(q − qf )
 : ∥q − qf ∥ ≤ d
Fatt (q) = (q − qf )
−dζ
 : ∥q − qf ∥ > d
∥q − qf ∥
El gradiente está bien definido en la frontera de los dos campos dado que en la frontera d = ∥q − qf ∥
y el gradiente del potencial cuadrático es igual al gradiente del potencial cónico Fatt (q) = −ζ(q −qf ).

Luis Arturo García Delgado Control de Robots UNISON, MCE


157

El Campo Repulsivo
Con el propósito de prevenir colisiones entre el robot y obstáculos definiremos un campo po-
tencial repulsivo que crezca en cuanto la configuración se acerca a la frontera de QO. Hay muchos
criterios que debe satisfacer dicho campo repulsivo. Éste debe repeler al robot de los obstáculos,
nunca debe permitir que el robot colisione con un obstáculo, y, cuando el robot esté lejos de un
obstáculo, ese obstáculo debe ejercer poca o ninguna influencia sobre el movimiento del robot. Una
forma de lograr esto es definir una función potencial cuyo valor se aproxima a infinito cuando la
configuración se aproxima al borde de un obstáculo, y cuyo valor decrece a cero a cierta distancia
especificada del borde del obstáculo.
Definimos ρ(q) como la distancia desde la configuración q hasta la frontera de QO,

ρ(q) = ′mı́n ∥q − q ′ ∥
q ∈∂QO

en la cual ∂QO denota la frontera del espacio de configuración de la región del obstáculo. Definimos
ρ0 como la distancia de influencia de un obstáculo. Esto significa que un obstáculo no repelerá al
robot si la distancia de q al obstáculo es mayor que ρ0 .
Una función potencial que cumple los criterios antes definidos está dada por
  2
1η 1 1
− : ρ(q) ≤ ρ0

Urep (q) = 2 ρ(q) ρ0

0 : ρ(q) > ρ0

en la cual η es un parámetro que se usa para escalar los efectos del potencial repulsivo. La fuerza
repulsiva es igual al gradiente negativo de Urep (q). Para ρ(q) ≤ ρ0 , esta fuerza está dada por

1 1 1
 
Frep (q) = η − ∇ρ(q) (7.2)
ρ(q) ρ0 ρ2 (q)

Si QO es convexo y b es el punto sobre la frontera de QO que está más cercano a q, entonces


ρ(q) = ∥q − b∥, y su gradiente es
q−b
∇ρ(q) =
∥q − b∥
es decir, el vector unitario dirigido de b hacia q.

Figura 7.7: En este caso el gradiente del potencial repulsivo dado por la Ecuación (7.2) no es
continuo. En particular, el gradiente cambia discontinuamente cuando q cruza la línea intermedia
entre los dos obstáculos.

Si el obstáculo es no convexo, entonces la función ρ no será necesariamente diferenciable en


todas partes, lo que implica una discontinuidad en el vector de fuerza. La Figura 7.7 ilustra dicho

UNISON, MCE Control de Robots Luis Arturo García Delgado


158

caso. Aquí la región del obstáculo se define mediante dos obstáculos rectangulares. Para todas las
configuraciones a la izquierda de la línea discontinua el vector de fuerza apunta a la derecha, mientras
que para todas las configuraciones a la derecha de la línea discontinua el vector de fuerza apunta a
la izquierda. Por lo tanto, cuando q cruza la línea punteada, ocurre una discontinuidad en la fuerza.
Hay muchas formas de tratar con este problema. La más sencilla de éstas es simplemente asegurar
que las regiones de influencia de los distintos obstáculos no se traslape.

Planificación mediante Gradiente en Descenso


El gradiente en descenso es un enfoque muy conocido para resolver problemas de optimización.
La idea es simple. Comenzando en la configuración inicial, toma un pequeño paso en la dirección
del gradiente negativo (que es la dirección en la que decrece el potencial tan rápido como es posi-
ble). Esto da una nueva configuración, y el proceso se repite hasta que se alcanza la configuración
final. De manera más formal, un algoritmo de gradiente en descenso construye una secuencia3 de
configuraciones, q 0 , q 1 , . . . , q m tal que q 0 = qs y q m = qf . La configuración en el paso i + 1 está dada
mediante
q i+1 = q i − αi ∇U (q i ) (7.3)
El parámetro escalar αi escala el tamaño de paso en la i-ésima iteración. Algunas variantes de
gradiente en descenso reemplazan el gradiente ∇U (q i ) mediante un vector unitario en la dirección
del gradiente; en este caso αi determina completamente el tamaño de paso en la i-ésima iteración.
Es importante que αi sea lo suficientemente pequeña para que no permita al robot “saltar dentro”
de obstáculos mientras que deba ser lo suficientemente grande para que el algoritmo no requiera
excesivo tiempo computacional. En problemas de planificación de movimiento la elección de αi a
menudo se realiza sobre una base ad hoc o empírica, por ejemplo, basado en la distancia al obstáculo
más cercano o a la meta. En la literatura de optimización se pueden encontrar cantidad de métodos
sistemáticos para seleccionar αi .
Es poco probable que alguna vez logremos satisfacer exactamente la condición q i = qf y por esta
razón los algoritmos de gradiente en descenso terminan típicamente cuando q i está suficientemente
cerca de la configuración meta qf , por ejemplo cuando ∥q i − qf ∥ < ϵ, donde seleccionamos ϵ como
una constante suficientemente pequeña, basados en los requerimientos de la tarea.

Escape de Mínimos Locales


El problema que plaga todos los algoritmos de gradiente en descenso es la posible existencia
de mínimos locales en el campo potencial. Para una elección apropida de αi en (7.3), se puede
mostrar que el algoritmo del gradiente en descenso está garantizado para converger a un mínimo
en el campo, pero no hay garantía de que este mínimo será el mínimo global. En nuestro caso esto
implica que no hay garantía de que este método encontrará una ruta hacia qf . Un ejemplo simple
de esta situación se muestra en la Figura 7.8.
Este problema ha sido ampliamente conocido en la comunidad de optimización, donde los mé-
todos probabilísticos así como el de recocido simulado (simulated annealing) se han desarrollado
para hacerle frente. De manera similar, los métodos aleatorios se han desarrollado para tratar
con este y otros problemas en la planificación de movimientos de robots. Un método para escapar de
mínimos locales combina el gradiente en descenso con aleatorización. Este enfoque usa el gradiente
en descenso hasta que el planificador se encuentra atrapado en un mínimo local, y entonces usa una
caminata aleatoria para escapar del mínimo local. Esto requiere resolver dos problemas: determinar
cuando el planificador está atrapado en un mínimo local y definir la caminata aleatoria.
Típicamente, se utiliza uno heurístico para reconocer mínimos locales. Por ejemplo, si muchos
i
q sucesivos caen dentro de una pequeña región del espacio de configuración, es probable que haya
3
Note que q i se usa para denotar el valor de q en la i-ésima iteración (no es el i-ésimo componente del vector q).

Luis Arturo García Delgado Control de Robots UNISON, MCE


159

Figura 7.8: La configuración q i es un mínimo local en el campo potencial. En q i la fuerza atractiva


cancela exactamente a la fuerza repulsiva y el planificador fracasa en hacer mayor progreso.

un mínimo local cercano. Por ejemplo, si para cierta ϵm pequeña positiva tenemos ∥q i − q i+1 ∥ < ϵm ,
∥q i − q i+2 ∥ < ϵm , y ∥q i − q i+3 ∥ < ϵm entonces asumimos que q i está cercana a un mínimo local,
siempre que q i no esté suficientemente cercana a la configuración meta.
La definición de la caminata aleatoria requiere un poco de más cuidado. Una aproximación
es simular movimiento Browniano. La caminata aleatoria consiste en t pasos aleatorios. Un paso
aleatorio desde q = (q1 , . . . , qn ) se obtiene mediante sumando aleatoriamente una pequeña constante
fija a cada qi ,
qrandom−step = (q1 ± v1 , . . . , qn ± vn )
con vi una constante pequeña fija y la probabilidad de sumar +vi o −vi igual a 1/2 (que es, una
distribución uniforme). Sin pérdida de generalidad, suponemos que q = 0. Podemos usar la teoría de
probabilidad para caracterizar el comportamiento de la caminata aleatoria que consiste en t pasos
aleatorios. En particular, si q t es la configuración alcanzada después de t pasos aleatorios, la función
de densidad de probabilidad para q t = (q1 , . . . , qn ) está dada mediante
!
1 q2
pi (qi , t) ≈ √ exp − i2
vi 2πt 2vi t

lo cual es una función de densidad de media Gaussiana4 cero con varianza vi2 t. Éste es un resultado
del teorema del límite central, que establece que la función de densidad de probabilidad para la
suma de k variables aleatorias independientes, idénticamente distribuidas tiende a una función de
densidad Gaussiana en tanto k → ∞. La varianza vi2 t determina esencialmente el rango de la
caminata aleatoria. Si ciertas características de mínimos locales (por ejemplo, el tamaño del cuenco
de atracción) se conocen de antemano, esto se puede usar para seleccionar los parámetros de vi y t.
De lo contrario, se pueden determinar empíricamente o basados en suposiciones débiles acerca del
campo potencial.

7.3.2. ̸ Rn
Campos Potenciales para Q =
Para el caso de Q ̸= Rn , es difícil construir un campo potencial directamente sobre el espacio
de configuración, y difícil calcular el gradiente de dicho campo. Las razones para esto incluyen la
dificultad de calcular distancias más cortas a obstáculos en el espacio de configuración, la geome-
tría compleja del espacio de configuración en sí mismo, y el costo computacional de calcular una
4
Una función de densidad Gaussiana es la clásica curva en forma de campana. La media indica el centro de la
curva (el pico de la campana) y la varianza indica el ancho de la campana. La función de probabilidad de densidad
(pdf) dice qué tan probable es que la variable qi caerá en un cierto intervalo. Lo más grande que sean los valores pdf,
lo más probable que qi caiga en el intervalo correspondiente.

UNISON, MCE Control de Robots Luis Arturo García Delgado


160

representación explícita de la frontera del espacio de configuración de la región del obstáculo. Por
esta razón, cuando Q = ̸ Rn definiremos campos potenciales en el espacio de trabajo directa-
mente en el espacio de trabajo del robot, y entonces mapeamos los gradientes de estos campos a un
gradiente correspondiente para una función potencial en el espacio de configuración.
En particular, para un brazo de n-eslabones, definiremos un campo potencial para cada uno
de los orígenes de los n marcos DH (excluyendo el fijo, marco 0). Estos campos potenciales en el
espacio de trabajo atraerán los orígenes de los marcos DH a sus posiciones meta mientras los repelen
de los obstáculos. Usaremos estos campos para definir movimientos en el espacio de configuración
usando la matriz Jacobiana del manipulador. Se puede usar un enfoque similar para robots móviles.
En este caso, definimos un conjunto de puntos de control en el robot que son suficientes para
restringir completamente su posición, y definimos potenciales en el espacio de trabajo para cada
uno de estos. Para un robot móvil en el plano, son suficientes dos puntos, mientras tres puntos (no
colineales) son suficientes para robots de vuelo libre.

El Campo Atractivo

Para atraer al robot a su configuración meta, definiremos un potencial atractivo Uatt para oi , el
origen del i-ésimo marco DH. Cuando todos los n orígenes alcancen sus posiciones meta, el brazo
habrá alcanzado su configuración meta.
Si denotamos la posición del origen del i-ésimo marco DH mediante oi (q), entonces el potencial
de pozo cónico está dado por
Uatt,i (q) = ζi ∥oi (q) − oi (qf )∥

en el cual ζi es un parámetro que se usa par escalar los efectos del potencial atractivo. El potencial
parabólico está dado mediante

1
Uatt,i (q) = ζi ∥oi (q) − oi (qf )∥2
2
Para el pozo parabólico, la fuerza atractiva en el espacio de trabajo para oi es igual al gradiente
negativo de Uatt,i , que es dada mediante

Fatt,i (q) = −∇Uatt,i (q) = −ζi (oi (q) − oi (qf ))

que es un vector que se dirige hacia oi (qf ) con magnitud linealmente relacionada con la distancia a
oi (q) desde oi (qf ).
Podemos combinar los potenciales de pozo cónico y parabólico como hicimos en la Sección 7.3.1,
lo cual da (
1
ζi ∥oi (q) − oi (qf )∥2 : ∥oi (q) − oi (qf )∥ ≤ d
Uatt,i (q) = 2 1 2
dζi ∥oi (q) − oi (qf )∥ − 2 ζi d : ∥oi (q) − oi (qf )∥ > d

en la cual d es la distancia que define la transición del pozo cónico al parabólico. En este caso la
fuerza del espacio de trabajo para oi está dada por

−ζi (oi (q) − oi (qf ))
 : ∥oi (q) − oi (qf )∥ ≤ d
Fatt,i (q) = (oi (q) − oi (qf )) (7.4)
−dζi
 − 1 ζi d2 : ∥oi (q) − oi (qf )∥ > d
∥oi (q) − oi (qf )∥ 2

El gradiente está bien definido en la frontera de los dos campos dado que en la frontera d =
∥oi (q) − oi (qf )∥ y el gradiente del potencial cuadrático es igual al gradiente del potencial cónico
Fatt,i (q) = −ζi (oi (q) − oi (qf )).

Luis Arturo García Delgado Control de Robots UNISON, MCE


161

Figura 7.9: La configuración inicial para el brazo plano de dos eslabones está dada por θ1 = θ2 = 0 y
la configuración final está dada por θ1 = θ2 = π/2. Los orígenes de los márcos DH 1 y 2 se muestran
para ambos, qs y qf .

Ejemplo 7.3 (Brazo Plano de Dos Eslabones). Considere el brazo plano de dos eslabones que se
muestra en la Figura 7.9, con a1 = a2 = 1 y con configuraciones inicial y final dadas por
" # " #
0 π/2
qs = , qf =
0 π/2

Usando las ecuaciones de cinemática directa para este brazo (ver Ejemplo 3.3.1) obtenemos
" # " # " # " #
1 0 2 −1
o1 (qs ) = , o1 (qf ) = , o2 (qs ) = , o2 (qf ) =
0 1 0 1

Usando estas coordenadas para los orígenes de los dos marcos DH en sus configuraciones inicial y
meta, suponiendo que d es suficientemente grande obtenemos las fuerzas atractivas
" #
−1
Fatt,1 (qs ) = −ζ1 (o1 (qs ) − o1 (qf )) = ζ1
1
" #
−3
Fatt,2 (qs ) = −ζ1 (o2 (qs ) − o2 (qf )) = ζ2
1

El Campo Repulsivo
Para prevenir colisiones, definiremos un campo potencial repulsivo en el espacio de trabajo para
el origen de cada marco DH (excepto el marco 0). Note que al definir potenciales repulsivos sólo
para los orígenes de los marcos DH no no podemos asegurar que las colisiones nunca ocurrirán (por
ejemplo la parte media de un eslabón grande pudiera chocar con un obstáculo), pero es muy sencillo
modificar el método para prevenir dichas colisiones, como se verá más abajo. Por ahora, trataremos
solamente con los orígenes de los marcos DH.
Definimos ρ(oi (q)) como la distancia en el espacio de trabajo desde el origen del marco i de DH
hasta el obstáculo más cercano.

ρ(oi (q)) = mı́n ∥oi (q) − x∥


x∈∂O

Igualmente, ahora definimos ρ0 como la distancia de influencia de un obstáculo en el espacio de


trabajo. Esto significa que un obstáculo no repelerá oi si la distancia de oi al obstáculo es mayor
que ρ0 .

UNISON, MCE Control de Robots Luis Arturo García Delgado


162

Nuestro potencial repulsivo en el espacio de trabajo está ahora dado mediante


 2
1

1η

− 1
: ρ(oi (q)) ≤ ρ0
Urep,i (q) = 2 i ρ(oi (q)) ρ0

0 : ρ(oi (q)) > ρ0
La fuerza repulsiva en el espacio de trabajo es igual al gradiente negativo de Urep,i (q). Para ρ(oi (q)) ≤
ρ0 , esta fuerza está dada por
1 1 1
 
Frep,i (q) = ηi − ∇ρ(oi (q)) (7.5)
ρ(oi (q)) ρ0 ρ2 (oi (q))

en la cual la notación ∇ρ(oi (q)) indica el gradiente ∇ρ(x) evaludao en x = oi (q). Si la región del
obstáculo es convexa y b es el punto en la frontera del obstáculo que es más cercano a oi , entonces
ρ(oi (q)) = ∥oi (q) − b∥, y su gradiente es
oi (q) − b
∇ρ(x) =
x=oi (q) ∥oi (q) − b∥
es decir, el vector unitario dirigido de b hacia oi (q).

Figura 7.10: El obstáculo mostrado repele o2 , pero está fuera de la distancia de influencia de o1 .
Por lo tanto, éste no ejerce fuerza repulsiva sobre o1 .

Ejemplo 7.4 (Brazo Plano de Dos Eslabones). Considere el Ejemplo 7.3, con un solo obstáculo
convexo en el espacio de trabajo como se muestra en la Figura 7.10. Sea ρ0 = 1. Esto evita que el
obstáculo repela o1 , lo cual es razonable dado que el eslabón 1 nunca puede tocar el obstáculo. El
punto más cercano del obstáculo a o2 es el vértice b del obstáculo poligonal. Suponga que b tiene
coordenadas (2, 0.5). Entonces, la distancia de o2 (qs ) a b es ρ(o2 (qs )) = 0.5 y ∇ρ(o2 (qs )) = [0, −1]T .
La fuerza repulsiva en la configuración inicial para o2 está entonces dada por
" # " #
1 1
 
0 0
Frep,2 (qs ) = η2 −1 = η2
0.5 0.25 −1 −4
Esta fuerza no tiene efecto en la articulación 1, pero ocasiona que la articulación 2 rote ligeramente
en dirección de las manecillas del reloj, moviendo el eslabón 2 lejos del obstáculo.

Como se mencionó anteriormente, la definición del campo repulsivo sólo en los orígenes de los
marcos DH no garantiza que el robot no pueda chocar con un obstáculo. La Figura 7.11 muestra un
ejemplo donde éste es el caso. En esta figura o1 y o2 están muy lejos del obstáculo y por lo tanto la
influencia repulsiva puede no ser lo suficientemente grande para prevenir que el eslabón 2 colisione
con el obstáculo. Para enfrentar este problema podemos usar un conjunto de puntos de control
repulsivo flotante of loat,i típicamente uno por eslabón. Los puntos de control flotante se definen
como puntos en los límites de un eslabón que estén más cercanos a algún obstáculo en el espacio
de trabajo. Obviamente la selección de of loat,i depende de la configuración q. Para el caso mostrado
en la Figura 7.11, of loat,2 debe localizarse cercano al centro del eslabón 2, para entonces repeler al
robot del obstáculo. La fuerza repulsiva que actúa en of loat,i se define de la misma manera que para
otros puntos de control usando la Ecuación (7.5).

Luis Arturo García Delgado Control de Robots UNISON, MCE


163

Figura 7.11: Las fuerzas repulsivas ejercidas en los orígenes de los marcos DH o1 y o2 pueden no ser
suficientes para prevenir una colisión entre el eslabón 2 y el obstáculo.

Mapeo de las fuerzas del Espacio de Trabajo a Torques Articulares


Hemos mostrado cómo construir campos potenciales en el espacio de trabajo de robots que
induce fuerzas artificiales en los orígenes oi de los marcos DH para el brazo robótico. En esta
sección describimos cómo estas fuerzas se pueden mapear a torques articulares.
Como dedujimos en el Capítulo 4 usando el principio del trabajo virtual, si τ denota el vector
de torques articulares inducidos por la fuerza F ejercida en el espacio de trabajo en el efector final,
entonces
JvT F = τ
donde Jv incluye los tres renglones de arriba del Jacobiano del manipulador. No usamos los tres
renglones de abajo, dado que hemos considerado sólo fuerzas atractivas y repulsivas en el espacio de
trabajo, y no torques atractivos y repulsivos en el espacio de trabajo. Note que para cada oi se debe
construir un Jacobiano apropiado, pero esto es sencillo dadas las técnicas descritas en el Capítulo
4 y las matrices A para el brazo. Denotamos el Jacobiano para oi mediante Joi .

Ejemplo 7.5 (Brazo Plano de Dos Eslabones). Considere nuevamente el brazo de dos eslabones
del Ejemplo 7.3, con fuerzas repulsivas en el espacio de trabajo como las dadas en el Ejemplo 7.4.
El Jacobiano que mapea las velocidades articulares a velocidades lineales satisface
" #
q̇1
ȯi = Joi (q)
q̇2

Para el brazo de dos eslabones la matriz Jacobiana para o2 es simplemente el Jacobiano que obtu-
vimos en el Capítulo 4, a saber
" #
−s1 − s12 −s12
Jo2 (q1 , q2 ) =
c1 + c12 c12

La matriz Jacobiana para o1 es similar, pero toma en cuenta que el movimiento de la articulación
2 no afecta la velocidad de o1 . Entonces
" #
−s1 0
Jo1 (q1 , q2 ) =
c1 0

En qs = (0, 0) tenemos " # " #


−s1 c1 0 1
JoT1 (q1 , q2 ) = =
0 0 0 0
y " # " #
−s1 − s12 c1 + c12 0 2
JoT2 (q1 , q2 ) = =
−s12 c12 0 1

UNISON, MCE Control de Robots Luis Arturo García Delgado


164

Usando estos Jacobianos, podemos mapear fácilmente las fuerzas atractivas y repulsivas en el espacio
de trabajo a los torques articulares. Si definimos ζ1 = ζ2 = η2 = 1 obtenemos
" #" # " #
0 1 −1 1
τatt,1 (qs ) = =
0 0 1 0
" #" # " #
0 2 −3 2
τatt,2 (qs ) = =
0 1 1 1
" #" # " #
0 2 0 −8
τrep,2 (qs ) = =
0 1 −4 −4

El torque articular artificial total que actúa en el brazo es la suma de los torques articulares
artificiales que resulta de todos los potenciales atractivos y repulsivos
X X
τ (q) = JoTi (q)Fatt,i (q) + JoTi (q)Frep,i (q) (7.6)
i i

Es esencial que sumemos los torque articulares y no las fuerzas en el espacio de trabajo. En otras
palabras, Debemos usar los Jacobianos para transformar las fuerzas a torques articulares antes de
que combinemos los efectos de los campos potenciales. Por ejemplo, la Figura 7.12 muestra un caso
en que dos fuerzas en el espacio detrabajo F1 y F2 , actúan en esquinas opuestas de un rectángulo.
Es fácil ver que F1 + F2 = 0, pero que la combinación de estas fuerzas produce un torque alrededor
del centro del rectángulo.

Figura 7.12: Las dos fuerzas ilustradas en la figura son vectores de igual magnitud en direcciones
opuestas. La suma vectorial de estas dos fuerzas produce una fuerza neta cero, pero hay un torque
neto inducido mediante esas fuerzas.

Ejemplo 7.6 (Robot plano de dos eslabones). Considere nuevamente el brazo plano de dos eslabones
del Ejemplo 7.3,con torques articulares como los determinados en el Ejemplo 7.5. En este caso el
torque articular total inducido por los campos potenciales atractivo y repulsivo en el campo de trabajo
está dado por

τ (qs ) = τatt,1 (qs ) + τatt,2 (qs ) + τrep,2 (qs )


" # " # " # " #
1 2 −8 −5
= + + =
0 1 −4 −3

Estos torques articulares tienen el efecto de causar que cada articulación rote en dirección de las
manecillas del reloj, alejándose de la meta, debido a la cercana proximidad de o2 al obstáculo.
Seleccionando un valor más pequeño para η2 , se puede superar este efecto. ⋄

Luis Arturo García Delgado Control de Robots UNISON, MCE


165

Aplicación a Robots Móviles


Los métodos descritos en esta sección pueden extenderse fácilmente al caso de robots móviles.
Para hacer esto, definimos un conjunto de puntos de control sobre el robot {oi }i=1...m tal que q = qf
cuando oi (q) = oi (qf ) para i = 1, . . . m. Entonces procedemos como se explicó más arriba, tratando
estos oi de la misma manera en que tratamos los marcos DH. La matriz Jacobiana utilizada en este
caso está dada por
∂oi
 
Joi (q) =
∂q
y un gradiente apropiado para la función potencial en el espacio de configuración está dado mediante
X X
τ (q) = JoTi Fatt,i (q) + JoTi Frep,i (q)
i i

en el cual τ incluye fuerzas y momentos aplicados con respecto al marco de coordenadas unido al
cuerpo del robot.
Ejemplo 7.7 (Robot poligonal en el plano). Considere el robot poligonal que se muestra en la
Figura 7.13. El vértice a tiene coordenadas (ax , ay ) en el marco de coordenadas local del robot. Por
lo tanto, si la configuración del robot está dada mediante q = (x, y, θ), el mapeo de cinemática
directa para el vértice a (es decir, el mapeo de q = (x, y, θ) a las coordenadas globales del vértice a)
está dado mediante " #
x + ax cos θ − ay sin θ
a(x, y, θ) =
y + ax sin θ + ay cos θ

Figura 7.13: En este ejemplo, el robot es un polígono cuya configuración se puede representar como
q = (x, y, θ), en la cual θ es el ángulo desde el eje-x del mundo al eje-x del marco local del robot.
Una fuerza F se ejerce en el vértice a con coordenadas locales (ax , ay ).

La matriz Jacobiana correspondiente está dada por


" #
1 0 −ax sin θ − ay cos θ
Ja (x, y, θ) =
0 1 ax cos θ − ay sin θ
Utilizando la transpuesta del Jacobiano para mapear las fuerzas en el espacio de trabajo a fuerzas
generalizadas, obtenemos
 
" # Fx
Fx
JaT (x, y, θ) = Fy
 
Fy

−Fx (ax sin θ + ay cos θ) + Fy (ax cos θ − ay sin θ)
La entrada de abajo en este vector corresponde al torque ejercido alrededor del origen del marco del
robot. ⋄

UNISON, MCE Control de Robots Luis Arturo García Delgado


166

Planificación del Decenso del Gradiente

Como se vio más arriba, el algoritmo de decenso del gradiente construye una secuencia de
configuraciones, q 0 , q 1 , . . . , q m tal que q 0 = qs y q m = qf , pero en este caso la k-ésima iteración está
dada mediante
τ (q k )
q k+1 = q k + αk
∥τ (q k )∥

en la cual τ es dada mediante (7.6). El escalar αk determina el tamaño del paso en la k-ésima
iteración, y el algoritmo termina cuando ∥q k − qf ∥ < ϵ, donde seleccionamos que ϵ sea una constante
suficientemente pequeña, basados en los requerimientos de la tarea.
El problema de mínimos locales en el campo potencial también existe para esta aproximación
para definir potenciales en el espacio de trabajo y mapear gradientes en el espacio de trabajo al
espacio de configuración. Un ejemplo de esta situación se muestra en la Figura 7.14

Figura 7.14: La configuración qmin es un mínimo local en el campo potencial. En qmin la fuerza
atractiva cancela exáctamente la fuerza repulsiva y el planificador no logra seguir avanzando.

Hay una serie de opciones de diseño que se deben tomar al utilizar este enfoque.

La constante ζi de la Ecuación (7.4) controla la influencia relativa del potencial atractivo


para el punto de control oi . No es necesario que a todas las ζi se les asigne el mismo valor.
Típicamente asignamos un peso mayor a uno de los oi que a los otros, lo que produce un tipo
de movimiento de “seguimiento del líder”, en el cual el líder oi es atraído más rápidamente
a su posición final y el robot entonces se reorienta a sí mismo de manera que los otros oi
alcancen sus posiciones finales.

La constante ηi de la Ecuación (7.5) controla la influencia relativa del potencial repulsivo


para oi . Como con las ζi no es necesario que a todas las ηi se les asigne el mismo valor. En
particular, típicamente establecemos el valor de ηi para que sea mucho menor en obstáculos
que estén cerca de la posición meta del robot (para evitar que ocurra que estos obstáculos
repelan al robot de la posición meta).

La constante ρ0 de la Ecuación (7.5) define la distancia de influencia de los obstáculos. Como


sucede con ηi podemos definir un valor distinto de ρ0 para cada obstáculo. En particular, no
queremos que ninguna región de influencia de obstáculos incluya la posición meta de cualquier
punto de control repulsivo. También es posible que deseemos asignar valores distintos de ρ0
a los obstáculos para evitar la posibilidad de superposición de regiones de influencia para
distintos obstáculos.

Luis Arturo García Delgado Control de Robots UNISON, MCE


167

7.4. Métodos Basados en Muestreo


El enfoque de campo potencial descrito arriba explora Qfree incrementalmente generando una se-
cuencia de configuraciones q 0 , . . . , q m usando un enfoque de gradiente en descenso. Esta exploración
es inheréntemente dirigida-a-la-meta (debido al potencial atractivo), y es esta tendencia la que hace
que la aproximación sea susceptible a fallos debido a la presencia de mínimos locales en el campo
potencial. Como hemos visto, la aplicación una caminata aleatoria puede ser una forma efectiva
de escapar de mínimos locales, abandonando temporalmente el comportamiento dirigido-a-la-meta
en favor de una estrategia aleatorizada. Llevándolo a un extremo, podemos diseñar un planificador
que abandone completamente la búsqueda dirigida-a-la-meta, confiando totalmente en su lugar en
estrategias aleatorizadas. Éste es el enfoque tomado por planificadores basados-en-muestreo5 .
Los planificadores basados en muestreo generan una secuencia de configuraciones usando una
estrategia de muestreo aleatoria. La estrategia más simple es meramente generar muestras aleatorias
a partir de una distribución de probabilidad uniforme sobre el espacio de configuración. Si dos
muestras están suficientemente cerca una de la otra, la planificación de una ruta entre ellas se puede
lograr usando un sencillo planificador local. Al aplicar iterativamente esta estrategia se produce un
grafo G = (V, E) en el cual el conjunto de vértices V incluyen las configuraciones muestra generadas
aleatoriamente, y las aristas corresponden a rutas locales entre configuraciones muestra que caen en
la proximidad cercana a alguna otra. El grafo G es referido como un mapa de ruta en el espacio
de configuración.
En esta sección, describiremos dos algoritmos basados en muestreo. El primer algoritmo cons-
truye un mapa de ruta probabilístico o PRM, el cual es un mapa de ruta que trata de cubrir
uniformemente todo el espacio de configuración libre. Este enfoque es particularmente útil cuando
se van a resolver muchos problemas de planificación en un solo espacio de trabajo, tal que el costo de
construir el mapa de ruta se puede amortizar sobre muchas instancias de planificación. El segundo
algoritmo construye un árbol aleatorio de exploración rápida o RRT, que es un árbol aleato-
rio cuyo vértice raíz corresponde a la configuración inicial qs . Usando una estrategia de muestreo
inteligente para generar nuevos vértices en el árbol, este método es capaz de explorar rápidamente
el espacio de configuración libre, y ha probado ser efectivo para resolver incluso problemas difíciles
de planificación de ruta.

7.4.1. Mapas de Rutas Probabilísticos (PRM)


En general, un mapa de ruta en el espacio de configuración es una red uni-dimensional de curvas
que efectivamente representen Qfree . Un mapa de ruta se representa típicamente como un grafo,
en que las aristas corresponden a segmentos de curva, cuyas intersecciones corresponden a vértices.
Cuando se usan métodos de mapas de rutas, la planificación comprende tres etapas: (1) encontrar
una ruta desde qs hasta una configuración qa en el mapa de ruta, (2) encontrar una ruta desde qf
hasta una configuración qb en el mapa de ruta, (3) encontrar una ruta en el mapa de ruta desde
qa hasta qb . Los pasos (1) y (2) son típicamente mucho más sencillos que encontrar una ruta de qs
a qf . El grafo de visibilidad y el diagrama generlizado de Voronoi descritos en la Sección 7.2 son
dos ejemplos de mapas de rutas en el espacio de configuración (aunque para el grafo de visibilidad,
tanto qs como qf se incluyen en el mapa de ruta por construcción).
Un mapa de ruta probabilístico, o PRM, es un mapa de ruta en el espacio de configuración
cuyos vértices corresponden a configuraciones generadas aleatoriamente, y cuyas aristas correspon-
den a rutas libres de colisiones entre configuraciones. La construcción de un PRM es un proceso
conceptualmente sencillo. Primero, se genera un conjunto de configuraciones aleatorias que sirven
5
Mientras hay algunos planificadores basados en muestreo que usan estrategias de muestreo cuasi-aleatorias, o
incluso determinísticas, el uso de enfoques aleatorizados es por mucho más prevalente, y aquí consideramos sólo estos
enfoques.

UNISON, MCE Control de Robots Luis Arturo García Delgado


168

como los vértices del mapa de rutas. Entonces, un planificador de rutas local, simple, se usa para
generar rutas que conecten pares de configuraciones. Finalmente, si el mapa de ruta inicial consta
de múltiples componentes conectados6 , éste se aumenta durante una fase de mejora, en la cual se
suman nuevos vértices y aristas en un intento de conectar para conectar componentes inconexos del
mapa de ruta. Para resolver un problema de planificación de ruta, se usa el planificador local simple
para agregar qs y qf al mapa de ruta, y se busca una ruta de qs a qf en el mapa de ruta resultante.
Estos cuatro pasos se ilustran en la Figura 7.15. Ahora discutimos estos pasos más detalladamente.

Figura 7.15: Estas figuras ilustran los pasos en la construcción de un mapa de ruta probabilístico
para un espacio de configuración bi-dimensional que contiene obstáculos poligonales. (a) Primero, un
conjunto de muestras aleatorias se genera en el espacio de configuración. Sólo se retienen las muestras
libres de colisiones. (b) Cada muestra se conecta a sus vecinos más cercanos usando una ruta simple
en línea recta. Si tal ruta causa una colisión, las muestras correspondientes no se conectan en el
mapa de ruta. (c) Dado que el mapa de ruta inicial contiene múltiples componentes conectados, las
muestras adicionales se generan y se conectan al mapa de ruta en una fase de mejora. (d) Una ruta
desde qs hasta qf se encuentra conectando qs y qf al mapa de ruta y luego se busca en este mapa
de ruta aumentado una ruta desde qs hasta qf .

Muestreo del Espacio de Configuración


La forma más simple de generar configuraciones muestra es con muestreo aleatorio uniforme del
espacio de configuración. Las configuraciones muestra que caen en QO se descartan. Un sencillo
algoritmo para checar colisiones puede determinar cuando éste es el caso. La desventaja de este
6
Un componente conectado es un subgrafo máximo del grafo tal que existe una ruta en el subgrafo entre cualesquier
dos vértices.

Luis Arturo García Delgado Control de Robots UNISON, MCE


169

enfoque es que el número de muestras que éste coloca en alguna región particular de Qfree es
proporcional al volumen de la región. Por lo tanto, es improbable que el muestreo uniforme ubique
muestras en pasajes estrechos de Qfree . En la literatura PRM, esto es referido como el problema
de pasaje estrecho. Puede tratarse utilizando ya sea esquemas de muestreo más inteligentes o
utilizando una fase de mejora durante la construcción del PRM. En esta sección, discutimos la
última opción.

Conexión de Pares de Configuraciones

Dado un conjunto de vértices que corresponden a configuraciones, el siguiente paso en la cons-


trucción del PRM es determinar cuáles pares de vértices se deben conectar en el planificador de ruta
local. El enfoque típico es tratar de conectar cada vértice con sus k vecinos más cercanos, donde k
es un parámetro seleccionado por el usuario. Por supuesto, para definir a los vecinos más cercanos,
se requiere una función de distancia. La Tabla 7.1 enlista cuatro funciones de distancia que han
sido populares en la literatura PRM. En esta tabla, q y q ′ son dos configuraciones que corresponden
a diferentes vértices en el mapa de ruta, qi se refiere al valor de la i-ésima coordenada de q, A es
un conjunto de puntos de referencia en el robot, y p(q) se refiere a las coordenadas en el espacio
de trabajo del punto de referencia p en la configuración q. De éstas, la más simple, y quizá más
comúnmente usada, es la norma-2 en el espacio de configuración.

Tabla 7.1: Cuatro funciones de distancia comúnmente usadas.

Pn 2
Norma-2 en Q ∥q ′ − q∥ = ′
i=1 (qi − qi ) 2

Norma-∞ en Q máxn |qi′ − qi |


hP i2
′) − p(q)∥2
Norma-2 en el espacio de trabajo p∈A ∥p(q

Norma-∞ en el espacio de trabajo máxp∈A ∥p(q ′ ) − p(q)∥

Una vez que se han identificado los pares de vértices vecinos, se usa un planificador local simple
para conectarlos. A menudo, se usa una línea recta en el espacio de configuración como el plan
candidato, y así, la planificación de ruta entre dos vértices se reduce a checar colisiones a lo largo
de la ruta en línea recta en el espacio de configuración. Si ocurre una colisión en esta ruta, ésta se
puede descartar, o se puede usar un planificador más sofisticado para tratar de conectar los vértices.
El enfoque más sencillo para detección de colisiones a lo largo de la ruta en línea recta es
muestrear la ruta en una discretización suficientemente fina, y checar colisiones en cada muestra.
Este método funciona, siempre que la discretización sea suficientemente fina, pero es muy ineficiente.
Esto se debe a que muchos de los cálculos requeridos para checar colisiones en una muestra se repiten
para la siguiente muestra (suponiendo que el robot se ha movido sólo una pequeña cantidad entre
las dos configuraciones). Por esta razón se han desarrollado enfoques incrementales de detección
de colisiones. Mientras que estos enfoques están más allá del alcance de este texto, hay disponibles
cantidad de paquetes de software para detección de colisiones en el dominio público. La mayoría de
los desarrolladores de planificadores de movimiento de robots usan uno de estos paquetes, en lugar
de implementar sus propias rutinas de detección de colisiones.

UNISON, MCE Control de Robots Luis Arturo García Delgado


170

Mejora
Después de que el PRM inicial ha sido construido, es probable que éste consistirá en múltiples
componentes conectados. A menudo estos componentes individuales se encuentran en grandes re-
giones de Qfree que están conectadas mediante pasajes angostos en Qfree . El objetivo del proceso de
mejora es conectar el mayor número de estos componentes inconexos que sea posible.
Un enfoque para mejora es simplemente tratar de conectar pares de vértices en dos componentes
inconexos, quizás usando un planificador más sofisticado como el descrito en la Sección 7.3. Un
enfoque común es identificar el componente conectado más grande, y tratar de conectarle a él
los componentes más pequeños. El vértice del componente más pequeño que esté más cercano al
componente más grande se selecciona típicamente como el candidato para conexión. Un segundo
enfoque es seleccionar un vértice aleatoriamente como un candidato para conexión, y sesgar la opción
aleatoria basados en el número de vecinos del vértice; un vértice con pocos vecinos en el mapa de
ruta es más probable que esté cercano a un pasaje estrecho, y podría ser un candidato más probable
para conexión.
Otro enfoque para mejora es agregar más vértices aleatorios al mapa de ruta, con la esperanza de
encontrar vértices que se encuentren en o cercanos a los pasajes estrechos. Un enfoque es identificar
vértices que tengan pocos vecinos, y generar configuraciones muestra alrededor de estos vértices. El
planificador local se usa entonces para tratar de conectar estas nuevas configuraciones al mapa de
ruta.

Suavizado de ruta
Después de que se ha generado el PRM, la planificación de ruta equivale a conectar qs y qf al
mapa de ruta usando el planificador local, y entonces se realiza el suavizado de ruta, dado que la
ruta resultante estará compuesta de segmentos de líneas rectas en el espacio de configuración. El
algoritmo más simple de suavizado de ruta es seleccionar dos puntos aleatorios sobre la ruta y tratar
de conectarlos con el planificador local. Este proceso se repite hasta que no se haga un progreso
significativo.

7.4.2. Árboles Aleatorios de Exploración Rápida (RRTs)


En los algoritmos PRM clásicos, la i-ésima configuración muestra se obtiene muestreando una
distribución probabilística uniforme en Q, independiente de cualesquier muestras previamente ge-
neradas7 . Como resultado, es posible, e incluso probable, que en cualquier iteración dada la configu-
ración muestra generada nuevamente puede estar muy lejos de cualesquier vértices existentes en el
mapa de ruta actual. En tales casos, es probable que el planificador local falle en conectar la nueva
muestra a algún vértice existente, incrementando el número de componentes conectados en el mapa
de ruta. Un enfoque alternativo es crecer un solo árbol, comenzando en un vértice que corresponde
a qs , hasta que algún vértice rama alcance la configuración meta. Éste es el enfoque incorporado
por los árboles aleatorios de exploración rápida (RRTs).
La construcción de un RRT es un proceso iterativo en el cual se agrega un nuevo vértice a un
árbol existente en cada iteración. El proceso de agregar un nuevo vértice comienza generando una
muestra aleatoria, qsample , a partir de una distribución de probabilidad uniforme en Q; sin embargo,
a diferencia de la construcción de PRMs, este vértice no se agrega al árbol existente. En lugar de
eso, qsample se usa para determinar cómo “crecer” el árbol actual. Esto se hace seleccionando el
vértice qnear en la dirección de qsample . La configuración a la cual llega este paso, qnew , se agrega al
árbol, y se agrega una arista desde qnear hasta qnew . La Figura 7.16 ilustra el proceso para una sola
iteración del algoritmo de construcción del RRT.
7
En el lenguage de teoría de probabilidad, las configuraciones muestra corresponden a variables aleatorias inde-
pendientes.

Luis Arturo García Delgado Control de Robots UNISON, MCE


171

Figura 7.16: Un nuevo vértice se agrega a un árbol existente mediante (i) la generación de una
configuración muestra genera qsample a partir de una distribución de probabilidad uniforme sobre
Q, (ii) la identificación de qnear , el vértice en el árbol actual que esté más cercano a qsample , y (iii)
tomar un pequeño paso desde qnear hacia qsample .

Mientras que los algoritmos basados en RRT han probado ser muy efectivos en planificar rutas
libres de colisiones para robots, su verdadero poder radica en en el método mediante el cual se
genera el nuevo nodo qnew y se conecta al árbol existente. Para PRMs, se conecta un nuevo nodo al
árbol resolviendo un problema local de planificación de ruta. Para los RRTs, la configuración qnew
se selecciona “dando un paso” hacia qsample . La forma más simple de lograr esto, por supuesto, es
dar pasos a lo largo de la ruta en línea recta hacia qsample , pero se pueden aplicar métodos más
generales. Considere, por ejemplo, un robot cuyo sistema dinámico esté descrito por

ẋ = f (x, u) (7.7)

en donde x denota el estado del sistema y u denota una entrada. Si definimos nuestro RRT en el
espacio de estado en vez del espacio de configuración, podemos generar el vértice xnew integrando
la dinámica (7.7) hacia adelante en el tiempo desde la condición inicial dada por xnear
Z ∆t
xnew = xnear + f (x, u)dt (7.8)
0

La evaluación de esta integral requiere que se conozca una entrada de control apropiada u. La
elección de u para asegurar que xnew se encuentre a lo largo de la línea que conecta xnear con xsample
es un problema difícil, pero afortunadamente, asegurar que xnew se encuentre exactamente sobre
esta línea no es escencial para la eficacia de los algoritmos RRT. Una forma popular de determinar
xnew es seleccionar aleatoriamente un conjunto de entradas candidatas, ui , evaluar (7.8) para cada
una de ellas, y retener el resultado que haga el mejor progreso hacia xsample . Usando este enfoque, se
han aplicado RRTs para problemas de planificación de movimiento para robots tipo carro, vehículos
aéreos no tripulados, vehículos subacuáticos autónomos, naves espaciales, satélites, y muchos otros.

7.5. Planificación de Trayectorias


En la Sección 7.1.3, definimos una ruta8 desde q0 hasta qf en el espacio de configuración como
un mapa continuo, γ : [0, 1] → Q, con γ(0) = q0 y γ(1) = qf . Una trayectoria es una función
del tiempo q(t) tal que q(t0 ) = q0 y q(tf ) = qf . En este caso, tf − t0 representa la cantidad de
tiempo que toma ejecutar la trayectoria. Dado que la trayectoria es parametrizada por el tiempo,
8
En la Sección 7.1.3 usamos qs para denotar la configuración inicial. En esta sección, usamos q0 para denotar la
primera configuración en una secuencia de dos o más configuraciones que serán usadas para definir una ruta.

UNISON, MCE Control de Robots Luis Arturo García Delgado


172

podemos calcular velocidades y aceleraciones a lo largo de la trayectoria mediante diferenciación.


Si pensamos en el argumento de γ como la variable tiempo, entonces una ruta es un caso especial
de una trayectoria, una que se ejecutará em una unidad de tiempo. En otras palabras, en este caso
γ da una especificación completa de la trayectoria del robot, incluyendo las derivadas temporales
(dado que uno sólo necesita diferenciar γ para obtener éstas).
Como se vio arriba, un algoritmo de planificación de ruta típicamente no da el mapa γ; sólo dará
una secuencia de puntos (llamados puntos vía) a lo largo de la ruta. Éste es también el caso para
otras formas en que se puede especificar la ruta. En algunos casos las rutas se especifican dando una
secuencia de posturas del efector final T60 (k∆t). En este caso, se debe usar la solución cinemática
inversa para convertir esto en una secuencia de configuraciones articulares. Una forma común de
especificar rutas para robots industriales es guiar físicamente al robot a través del movimiento
deseado con una consola de programción (teach pendant), el llamado modo de programación
y reproducción. En algunos casos, esto puede ser más eficiente que desplegar un sistema de
planificación de ruta, por ejemplo, en los ambientes estáticos cuando se ejecutará la misma ruta
muchas veces. En este caso, no hay necesidad de calcular la cinemática inversa; el movimiento
deseado es simplemente registrado como un conjunto de ángulos articulares (en realidad como un
conjunto de valores de enconders).
Debajo, consideramos primero el movimiento punto-a-punto. En este caso la tarea es planificar
una trayectoria desde una configuración inicial q(t0 ) a una configuración final q(tf ). En algunos casos
deben haber restricciones en la trayectoria (por ejemplo, si el robot debe comenzar y terminar con
velocidad cero). No obstante, es fácil darse cuenta que hay infinidad de trayectorias que satisfarán
un número finito de restricciones sobre los puntos finales. Es práctica común por lo tanto seleccionar
trayectorias a partir de una familia finitamente parametrizable, por ejemplo, polinomios de grado n,
donde n depende del número de restricciones a ser satisfechas. Éste es el enfoque que tomaremos en
este texto. Una vez que hayamos visto cómo construir trayectorias entre dos configuraciones, será
fácil generalizar el método para el caso de trayectorias especificadas mediante múltiples puntos vía.

7.5.1. Trayectorias para Movimiento Punto a Punto


Como se describió arriba, el problema es encontrar una trayectoria que conecte las configuracio-
nes inicial y final mientras satisface otras restricciones especificadas en los puntos finales, tal como
restricciones de velocidad y/o aceleración. Sin pérdida de generalidad, consideraremos la planifica-
ción de la trayectoria para una sola articulación, dado que las trayectorias para las articulaciones
restantes se crearán independientemente y exactamente de la misma manera. Por lo tanto, nos
preocuparemos del problema de determinar q(t), donde q(t) es una variable articular escalar.
Suponemos que en el tiempo t0 la variable articular satisface

q(t0 ) = q0 (7.9)
q̇(t0 ) = v0 (7.10)

y deseamos alcanzar los valores en tf

q(tf ) = qf (7.11)
q̇(tf ) = vf (7.12)

La Figura 7.17 muestra una trayectoria adecuada para este movimiento. Además, podríamos desear
especificar las restricciones en las aceleraciones inicial y final. En este caso tenemos dos ecuaciones
adicionales

q̈(t0 ) = α0 (7.13)
q̈(tf ) = αf (7.14)

Luis Arturo García Delgado Control de Robots UNISON, MCE


173

Figura 7.17: Una trayectoria típica en el espacio articular.

Más adelante investigaremos varias formas específicas de calcular trayectorias usando polinomios
de bajo orden. Comenzamos con polinomios cúbicos, que permiten la especificación de posiciones
y velocidades inicial y final. Luego describimos trayectorias de polinomios quínticos, que también
permiten la especificación de las aceleraciones inicial y final. Después de describir estos dos trayec-
torias de polinomios generales, describimos trayectorias que son reconstruidas a partir de segmentos
de aceleración constante.

Trayectorias de Polinomios Cúbicos


Considere el primer caso donde deseamos generar una trayectoria articular polinomial entre dos
configuraciones, y que deseamos especificar las velocidades inicial y final de la trayectoria. Esto
da cuatro restricciones que debe satisfacer la trayectoria. Por lo tanto, como mínimo requerimos
un polinomio con cuatro coeficientes independientes que se deben seleccionar para satisfacer estas
restricciones. Entonces, consideramos una trayectoria cúbica de la forma

q(t) = a0 + a1 t + a2 t2 + a3 t3 (7.15)

Entonces la velocidad deseada está dada como

q̇(t) = a1 + 2a2 t + 3a3 t2 (7.16)

Combinando las Ecuaciones (7.15) y (7.16) con las cuatro restricciones se producen cuatro ecuaciones
con cuatro incógnitas

q0 = a0 + a1 t0 + a2 t20 + a3 t30
v0 = a1 + 2a2 t0 + 3a3 t20
qf = a0 + a1 tf + a2 t2f + a3 t3f
vf = a1 + 2a2 tf + 3a3 t2f

Estas cuatro ecuaciones se pueden combinar en una sola ecuación matricial

1 t0 t20 t30
    
a0 q0
0 1 2t 2  
0 3t0  a1 
v 
 0
  =   (7.17)

1 tf t2f t3f  a2  qf 

0 1 2tf 3t2f a3 vf

UNISON, MCE Control de Robots Luis Arturo García Delgado


174

Se puede mostrar (Problema 7-19) que el determinante de la matriz de coeficientes de la Ecuación


(7.17) es igual a (tf − t0 )4 y, por lo tanto, la Ecuación (7.17) siempre tiene una solución única
siempre que se permita un intervalo de tiempo distinto de cero para la ejecución de la trayectoria.

Ejemplo 7.8 (Trayectoria de Polinomio Cúbico). Como un ejemplo ilustrativo, podemos considerar
el caso especial en que las velocidades inicial y final son cero. Suponga que tomamos t0 = 0 y tf = 1
seg, con
v0 = 0, vf = 0
Entonces, queremos mover de una posición inicial q0 a una posición final qf en 1 segundo, comen-
zando y finalizando con velocidad cero. A partir de la Ecuación (7.17) obtenemos
    
1 0 0 0 a0 q0
0 1 0 0 a   0 
  1  
  =  

1 1 1 1 a2  qf 

0 1 2 3 a3 0

Esto entonces es equivalente a las cuatro ecuaciones

a0 = q0
a1 = 0
a2 + a3 = qf − q0
2a2 + 3a3 = 0

Estas dos últimas ecuaciones se pueden resolver para obtener

a2 = 3(qf − q0 )
a3 = −2(qf − q0 )

La función polinomial cúbica requerida es por lo tanto

q(t) = q0 + 3(qf − q0 )t2 − 2(qf − q0 )t3

Las correspondientes curvas de velocidad y aceleración están dadas como

q̇(t) = 6(qf − q0 )t − 6(qf − q0 )t2


q̈(t) = 6(qf − q0 ) − 12(qf − q0 )t

La Figura 7.18 muestra estas trayectorias con q0 = 10◦ , qf = −20◦ .

Figura 7.18: (a) Trayectoria de polinomio cúbico. (b) Perfil de velocidad para una trayectoria de
polinomio cúbico. (c) Perfil de aceleración para una trayectoria de polinomio cúbico.

Luis Arturo García Delgado Control de Robots UNISON, MCE


175

Trayectorias de Polinomios Quínticos


Como se puede ver en la Figura 7.18, una trayectoria cúbica da posiciones y velocidades continuas
en los puntos de tiempo inicial y final pero hay discontinuidades en la aceleración. La derivada de
la aceleración se llama tirón. Una discontinuidad en la aceleración conduce a un tirón impulsivo,
que puede excitar modos vibracionales en el manipulador y reduce la precisión en el seguimiento.
Por esta razón, uno podría desear especificar restricciones sobre la aceleración así como sobre la
posición y velocidad. En este caso, tenemos seis restricciones (una por cada configuración inicial y
final, velocidades inicial y final y aceleraciones inicial y final). Por lo tanto, requerimos un polinomio
de quinto orden
q(t) = a0 + a1 t + a2 t2 + a3 t3 + a4 t4 + a5 t5 (7.18)
Usando las Ecuaciones (7.9)-(7.14) y tomando el número apropiado de derivadas obtenemos las
siguientes ecuaciones,

q0 = a0 + a1 t0 + a2 t20 + a3 t30 + a4 t40 + a5 t50


v0 = a1 + 2a2 t0 + 3a3 t20 + 4a4 t30 + 5a5 t40
α0 = 2a2 + 6a3 t0 + 12a4 t20 + 20a5 t30
qf = a0 + a1 tf + a2 t2f + a3 t3f + a4 t4f + a5 t5f
vf = a1 + 2a2 tf + 3a3 t2f + 4a4 t3f + 5a5 t4f
αf = 2a2 + 6a3 tf + 12a4 t2f + 20a5 t3f

que se pueden escribir como


 
1 t0 t20 t30 t40 t50
  
a0 q0
2 3 4
0 1 2t0 3t0 4t0 5t0  a1   v0 
    
0 0

2 6t 12t 2 20t3  a   α 
0 0 0 2  0

1 tf t 2 3 4 5
 =  (7.19)
 f tf t f t f  a3 
   qf 
0 1 2t 2 3 4  
f 3tf 4tf 5tf  a4  vf 
  

0 0 2 6tf 12tf 20tf 2 3 a5 αf

Ejemplo 7.9 (Trayectoria de Polinomio Quíntico). La Figura 7.19 muestra estas trayectorias con
q0 = 0◦ , qf = 20◦ con velocidades y aceleraciones inicial y final cero.

Figura 7.19: (a) Trayectoria de polinomio quíntico. (b) Perfil de velocidad para una trayectoria de
polinomio quíntico. (c) Perfil de aceleración para una trayectoria de polinomio quíntico.

Segmentos Lineales con Combinaciones Parabólicas (LSPB)


Otra forma de generar trayectorias adecuadas en el espacio articular es mediante el uso de los
llamados segmentos lineales con combinaciones parabólicas (LSPB). Este tipo de trayectoria

UNISON, MCE Control de Robots Luis Arturo García Delgado


176

tiene un perfil de velocidad trapezoidal y es apropiado cuando se desea una velocidad constante a lo
largo de una porción de la ruta. La trayectoria LSPB es tal que la velocidad inicial es “incrementada
en forma de rampa” hasta su valor deseado y entonces es “decremntada en forma de rampa” en
cuanto se aproxima a la posición meta. Para lograr esto especificamos la trayectoria deseada en tres
partes. La primera parte desde el tiempo t0 hasta el tiempo tb es un polinomio cuadrático. Esto
resulta en una velocidad lineal “rampa”. En el tiempo tb , llamado tiempo de combinación, la
trayectoria conmuta a una función lineal. Esto corresponde a una velocidad constante. Finalmente,
en tf − tb la trayectoria conmuta otra vez, esta vez a un polinomio cuadrático tal que la velocidad
es lineal.

Figura 7.20: Tiempos de combinación para trayectoria LSPB.

Seleccionamos el tiempo de combinación tb de tal manera que la curva de posición sea simétrica
como se muestra en la Figura 7.20. Por conveniencia suponga que t0 = 0 y q̇(tf ) = 0 = q̇(0).
Entonces entre los tiempos 0 y tb tenemos

q(t) = a0 + a1 t + a2 t2

tal que la velocidad es


q̇(t) = a1 + 2a2 t

Las restricciones q0 = 0 y q̇(0) = 0 implican que

a 0 = q0
a1 = 0

En el tiempo tb queremos que la velocidad sea igual a una constante dada, por decir V . Entonces,
tenemos
q̇(tb ) = 2a2 tb = V

lo que implica que


V
a2 =
2tb

Luis Arturo García Delgado Control de Robots UNISON, MCE


177

Por lo tanto, la trayectoria requerida entre 0 y tb está dada como


V 2 α
q(t) = q0 + t = q0 + t 2
2tb 2
V
q̇(t) = t = αt
tb
V
q̈ = =α
tb
donde α denota la aceleración.
Ahora, entre el tiempo tb y tf − tb , la trayectoria es un segmento lineal con velocidad V

q(t) = q(tb ) + V (t − tb )

Dado que, por simetría,


tf q0 + qf
 
q =
2 2
tenemos
q0 + qf tf
= q(tb ) + V ( − tb )
2 2
lo que implica que
q0 + qf tf
− V ( − tb )
q(tb ) =
2 2
Dado que dos segmentos deben “combinarse” en el tiempo tb , requerimos
V q0 + qf − V t f
q0 + tb = + V tb
2 2
que, una vez resuelta para el tiempo de combinación tb , da
q0 − qf + V t f
tb = (7.20)
V
tf
Note que tenemos la restricción 0 < tb ≤ 2. Esto lleva a la desigualdad

qf − q0 2(qf − q0 )
< tf ≤
V V
Para ponerlo de otra forma tenemos la desigualdad
qf − q0 2(qf − q0 )
<V ≤
tf tf

Por lo tanto, la velocidad especificada debe estar entre estos límites o el movimiento no es posible.
La porción de la trayectoria entre tf − tb y tf se encuentra ahora mediante consideraciones de
simetría. La trayectoria LSPB completa está dada por
 α
q0 + t2
 0 ≤ t ≤ tb

 2
 qf + q0 − V t f

q(t) = +Vt tb < t ≤ tf − tb (7.21)
 22

 αtf α
+ αtf t − t2


 qf − tf − tb < t ≤ tf
2 2
La Figura 7.21(a) muestra dicha trayectoria LSPB, donde la velocidad máxima V = 60. En este
caso tb = 31 . Las curvas de velocidad y aceleración están dadas en las Figuras 7.21(b) y 7.21(c),
respectivamente.

UNISON, MCE Control de Robots Luis Arturo García Delgado


178

Figura 7.21: (a) trayectoria LSPB. (b) Perfil de velocidad para la trayectoria LSPB. (c) Perfil de
aceleración para la trayectoria LSPB.

Trayectorias de Tiempo Mínimo

Una variación importante de la trayectoria LSPB se obtiene dejando el tiempo final tf sin
especificar y buscando la trayectoria “más rápida” entre q0 y qf con una aceleración constante dada
α, esto es, la trayectoria con el mínimo tiempo final tf . Ésta algunas veces es llamada una trayectoria
bang-bang trajectory dado que la solución óptima se logra con la aceleración en su valor máximo
+α hasta un tiempo de conmutación apropiado ts en cuyo tiempo ésta conmuta abruptamente
hasta su valor mínimo −α (máxima desaceleración) desde ts hasta tf .
Regresando a nuestro ejemplo simple en el cual suponemos que la trayectoria comienza y termina
en el reposo, es decir, con velocidades inicial y final cero, las consideraciones de simetría sugerirían
t
que el tiempo de conmutación ts sea sólo 2f . Éste es en efecto el caso. Fara velocidades inicial y/o
final distintas de cero, la situación es más complicada y no lo discutiremos aquí. Si denotamos por
Vs la velocidad en el tiempo ts entonces tenemos Vs = αts y usando la Ecuación (7.20) con tb = ts
obtenemos
q0 − qf + Vs tf
ts =
Vs

tf
La condición de simetría ts = 2 implica que

qf − q0
Vs =
ts

y usando el hecho de que Vs = αts , obtenemos

qf − q0
= αts
ts

lo que implica que


r
qf − q0
ts =
α

La Figura 7.22 muestra la posición, velocidad y aceleración para dicha trayectoria de tiempo mínimo.

Luis Arturo García Delgado Control de Robots UNISON, MCE


179

Figura 7.22: (a) Trayectoria de tiempo mínimo. (b) Perfil de velocidad para trayectoria de tiempo
mínimo. (c) Perfil de aceleración para trayectoria de tiempo mínimo.

7.5.2. Trayectorias para Rutas Especificadas mediante Puntos Vía


Ahora que hemos examinado el problema de planificación de trayectoria entre dos configuracio-
nes, generalizamos nuestro enfoque al caso de planificación de trayectorias que pasan a través de
una secuencia de configuraciones, llamada puntos vía. Considere el sencillo ejemplo de una ruta
especificada mediante tres puntos, q0 , q1 y q2 , tal que los puntos vía se alcancen en los tiempos
t0 , t1 y t2 , respectivamente. Si además de estas tres restricciones imponemos restricciones sobre las
velocidades y aceleraciones inicial y final, obtenemos el siguiente conjunto de restricciones,

q(t0 ) = q0 , q̇(t0 ) = v0 , q̈(t0 ) = α0


q(t1 ) = q1 , q(t2 ) = q2 , q̇(t2 ) = v2 , q̈(t2 ) = α2

lo cual se puede satisfacer mediante la generación de una trayectoria polinomial de sexto orden

q(t) = a0 + a1 t + a2 t2 + a3 t3 + a4 t4 + a5 t5 + a6 t6 (7.22)

Una ventaja de este enfoque es que, dado que q(t) es continuamente diferenciable, no tenemos que
preocuparnos por las discontinuidades ya sea en velocidad o aceleración en el punto vía, q1 . Sin
embargo, para determinar los coeficientes para este polinomio, debemos resolver un sistema lineal
de dimensión siete. La clara desventaja de este enfoque es que en tanto el número de puntos vía
se incremente, también se incrementa la dimensión del correspondiente sistema lineal, haciendo el
método intratable cuando se usan muchos puntos vía.
Una alternativa a usar un simple polinomio de alto orden para toda la trayectoria es usar poli-
nomios de bajo orden para segmentos de trayectoria entre puntos vía adyacentes. Estos polinomios
algunas veces son referidos como polinomios de interpolación o polinomios combinados. Con este
enfoque, debemos tener cuidado en que se satisfagan las restricciones de velocidad y aceleración en
los puntos vía, donde conmutamos de un polinomio a otro.
Para el primer segmento de la trayectoria, suponga que los tiempos inicial y final son t0 y tf ,
respectivamente, y las restricciones sobre las velocidades inicial y final están dada mediante

q(t0 ) = q0 , q(tf ) = q1 (7.23)


q̇(t0 ) = v0 , q̇(tf ) = v1 (7.24)

el polinomio cúbico requerido para este segmento de trayectoria se puede calcular de

q(t0 ) = a0 + a1 (t − t0 ) + a2 (t − t0 )2 + a3 (t − t0 )3 (7.25)

UNISON, MCE Control de Robots Luis Arturo García Delgado


180

donde

a0 = q0
a1 = v0
3(q1 − q0 ) − (2v0 + v1 )(tf − t0 )
a2 =
(tf − t0 )2
2(q0 − q1 ) + (v0 + v1 )(tf − t0 )
a3 =
(tf − t0 )3

Se puede planificar una secuencia de movimientos usando la fórmula de arriba usando las con-
diciones finales qf , vf del i-ésimo movimiento como condiciones iniciales para el movimiento subse-
cuente.
La Figura 7.23 muestra un movimiento de 6 segundos, calculado en tres partes usando la Ecua-
ción (7.25), donde la trayectoria comienza en 10◦ y se requiere alcanzar 40◦ en 2 segundos, 30◦ en
4 segundos y 90◦ en 6 segundos, con velocidad cero en 0, 2, 4, y 6 segundos.
La Figura 7.24 muestra la misma trayectoria de 6 segundos como la de arriba con las restricciones
añadidas de que las aceleraciones deben ser cero en los tiempos de combinación.

Figura 7.23: (a) Trayectoria hecha con spline cúbico a partir de tres polinomios cúbicos. (b) Perfil de
velocidad para múltiples trayectorias polinomiales cúbicas. (c) Perfil de aceleración para múltiples
trayectorias polinomiales cúbicas.

Figura 7.24: (a) Trayectoria con múltiples segmentos quínticos. (b) Perfil de velocidad para múltiples
segmentos quínticos. (c) Perfil de aceleración para múltiples segmentos quínticos.

7.5.3. Resumen del Capítulo

Luis Arturo García Delgado Control de Robots UNISON, MCE


181

7.6. Problemas
7.1 Describa el espacio de configuración para un robot móvil que se puede trasladar y rotar en el
plano.

7.2 Describa el espacio de configuración del manipulador de tres-eslabones que se muestra en la


Figura 3.12.

7.3 Describa el espacio de configuración del manipulador de tres-eslabones que se muestra en la


Figura 3.13.

7.4 Describa el espacio de configuración del manipulador de tres-eslabones que se muestra en la


Figura 3.14.

7.5 Describa el espacio de configuración del manipulador de tres-eslabones que se muestra en la


Figura 3.15.

7.6 Describa el espacio de configuración de un brazo antropomórfico de seis-eslabones equipado con


una muñeca esférica.

7.7 Muestre que el grafo de visibilidad incluye todas las rutas semi-libres más cortas desde qs hasta
qf . Nota, esto es equivalente a mostrar que la condición necesaria para que una ruta sea la ruta
semi-libre más corta es que ésta se incluya en el grafo de visibilidad.

7.8 Suponga que qs cae en la región de Voronoi de una característica particular, f . Muestre que
una ruta en línea recta desde qs que sigue el gradiente ∇d(qs , f ) llegará a la arista de Voronoi antes
de alcanzar alguna otra característica f ′ .

7.9 Verifique la Ecuación (7.1).

7.10 Obtenga las ecuaciones necesarias para calcular la distancia más corta desde un punto p al
segmento de línea en el plano con dos vértices a1 y a2 .

7.11 Obtenga las ecuaciones necesarias para calcular la distancia más corta desde un punto p al
polígono en el plano con vértices ai , i = 1, . . . , n.

7.12 Obtenga las ecuaciones necesarias para calcular la distancia más corta desde un punto p al
polígono en tres dimensiones con vértices ai , i = 1, . . . , n.

7.13 Verifique la Ecuación (7.5).

7.14 Considere un simple robot poligonal con cuatro vértices, tal que en q = (0, 0, 0) los vértices
se localizan en a1 (0) = (1, 1), a2 (0) = (1, 0), a3 (0) = (1, 1), y a4 (0) = (0, 1). Si dos obstáculos
puntuales se localizan en o1 = (3, 3) y o2 = (−3, −3), determine la fuerza artificial en el espacio de
trabajo y la del espacio de configuración que actúan sobre el robot.

7.15 Escriba un programa computacional para implementar el planificador de ruta descrito en la


Sección 7.3.2 para un brazo plano de tres-eslabones que se mueve entre obstáculos poligonales.

7.16 Escriba un programa computacional simple para realizar comprobación de colisiones para el
caso de un robot poligonal que se mueve en el plano entre obstáculos poligonales. Su programa
debe aceptar una configuración q como entrada, y debe regresar un valor que indique si q es una
configuración libre de colisiones.

UNISON, MCE Control de Robots Luis Arturo García Delgado


182

7.17 De un procedimiento para generar muestras aleatorias de orientaciones en SO(n) dado que
usted tenga acceso a un generador de números aleatorios que pueda generar muestras desde la
distribución uniforme sobre el intervalo unitario. Sus muestras no necesitan estar uniformemente
distribuidas sobre SO(n).

7.18 Escriba un programa computacional para implementar el planificador RPM descrito en la


Sección 7.4.1 para un brazo plano de tres eslabones que se mueve entre obstáculos poligonales.

7.19 Muestre mediante cálculos directos que el determinante de los coeficientes matriciales de la
Ecuación (7.17) es (tf − t0 )4 .

7.20 Suponga que deseamos que un manipulador comience en una configuración inicial en el tiempo
t0 y siga una banda transportadora. Discuta los pasos necesarios para planificar una trayectoria
adecuada para este problema.

7.21 Suponga que deseamos una trayectoria en espacio articular q̇id (t) para la i-ésima articulación
(suponiendo que es rotatoria) que comienza en reposo en la posición q0 en el tiempo t0 y alcanza
la posición q1 en 2 segundos con una velocidad final de 1 rad/seg. Calcule un polinomio cúbico que
satisfaga estas restricciones. Bosqueje la trayectoria como una función de tiempo.

7.22 Calcule una trayectoria LSPB que satisfaga los mismos requisitos que los del Problema 7-21.
Bosqueje los perfiles de posición, velocidad y aceleración.

7.23 Complete los detalles del cálculo de la trayectoria LSPB. En otras palabras, calcule la porción
de trayectoria entre los tiempos tf − tb y tf y verifique las Ecuaciones (7.21).

7.24 Escriba un archivo m de Matlab, lspb.m, para generar una trayectoria LSPB, dados datos
inicales apropiados.

Luis Arturo García Delgado Control de Robots UNISON, MCE


Apéndice A

Fundamentos Matemáticos

A.1. Trigonometría
A.1.1. Relaciones trigonométricas básicas

Figura A.1: Triángulo rectángulo en círculo unitario

En la Figura A.1, se muestra un triángulo rectángulo dentro del círculo unitario, a partir de la
cual se determinarán las relaciones trigonométricas fundamentales:
seno. El seno de un ángulo dentro de un triángulo rectángulo se define como el cateto opuesto
(co) entre la hipotenusa (hip). La representación gráfica se muestra en la Figura A.2.
co y
sin θ = =
hip r

coseno. El coseno de un ángulo dentro de un triángulo rectángulo se define como el cateto


adyacente (ca) entre la hipotenusa (hip). La representación gráfica se muestra en la Figura
A.3.
ca x
cos θ = =
hip r

tangente. La tangente de un ángulo dentro de un triángulo rectángulo se define como el


cateto opuesto (co) entre el cateto adyacente (ca).
co y
tan θ = =
ca x

183
184

Figura A.2: Función seno

Figura A.3: Función coseno

cosecante.
1
csc θ =
sin θ
secante.
1
sec θ =
cos θ
cotangente
1
cot θ =
tan θ

A.1.2. Otras relaciones trigonométricas


seno cardinal
sin θ
sinc θ =
θ
verseno
versin θ = 1 − cos θ

semiverseno
versin θ
semiversin θ =
2
coverseno
coversin θ = 1 − sin θ

semicoverseno
coversin θ
semicoversin θ =
2
exsecante
exsec θ = sec θ − 1

Luis Arturo García Delgado Control de Robots UNISON, MCE


185

A.1.3. Funciones recíprocas


f = sin θ → θ = asinf

f = cos θ → x = acosf

f = tan θ → x = atanf

Nota: La función tangente inversa atan(y/x) regresa un ángulo en el rango (−π/2, π/2). Para
obtener un valor en el rango completo de ángulos, se debe usar la función atan2(y, x).

Ejemplo A.1.
π
atan2(1, −1) = −
4

atan2(−1, 1) = +
4

A.1.4. Reducción de fórmulas


sin(−θ) = − sin θ

sin( π2 + θ) = cos θ

cos(−θ) = cos θ

tan(−θ) = − tan θ

tan( π2 + θ) = − cot θ

tan(θ − π) = tan θ

A.1.5. Identidades trigonométricas


sin2 θ + cos2 θ = 1

tan2 θ + 1 = sec2 θ

sin(a ± b) = sin a cos b ± cos a sin b

cos(a ± b) = cos a cos b ∓ sin a sin b


tan a ± tan b
tan(a ± b) =
1 ∓ tan a tan b

A.2. Álgebra Lineal


A.2.1. Vectores
El símbolo R denota el conjunto de números reales y Rn denota un vector de n elementos reales.
Se utilizan letras minúsculas: a, b, x, y, etc., para denotar variables escalares en R y vectores en Rn .
Las letras mayúsculas A, B, R, etc., denotan matrices.
Por lo tanto, x ∈ Rn significa
x1
 
 .. 
x= . 
xn

UNISON, MCE Control de Robots Luis Arturo García Delgado


186

donde xi ∈ R, para i = 1, .., n.


El vector x es un arreglo en columna con n componentes reales x1 , .., xn . También se puede
representar como
x = [x1 , · · · , xn ]T
donde el superíndice T representa la transpuesta.
El producto escalar de dos vectores x y y pertenecientes a Rn , denotado por ⟨x, y⟩ o xT y, es
un número real definido por
⟨x, y⟩ = xT y = x1 y1 + · · · + xn yn
El producto escalar de dos vectores es conmutativo, es decir

xT y = y T x

La norma de un vector x ∈ Rn es

∥x∥ = ⟨x, x⟩1/2 = (x21 + · · · + x2n )1/2

Algunas desigualdades vectoriales útiles son

Desigualdad de Cauchy-Schuartz
|xT y| ≤ ∥x∥∥y∥

Desigualdad del triángulo


∥x + y∥ ≤ ∥x∥ + ∥y∥

Para vectores en R2 o R3 el producto escalar se puede expresarcomo

xT y = ∥x∥∥y∥ cos θ

donde θ es el ángulo entre los vectores x y y.


El producto exterior de dos vectores x y y pertenecientes a Rn es una matriz de n × n definida
por  
x1 y1 . . x1 yn
x y . . x2 yn 
xy T =  2 1
 
 . . . . 

xn y1 . . xn yn
El producto escalar y el producto exterior se relacionan mediante

xT y = Tr(xy T )

donde la función Tr(·) es la traza de una matriz, es decir, la suma de los elementos diagonales de la
matriz.
Algunas veces se usará i, j y k para indicar vectores unitarios estándar en R3
     
1 0 0
i = 0 ; j = 1 ; k = 0
     
0 0 1

usando dicha notación, el vector x = [x1 , x2 , x3 ]T se puede escribir como

x = x1 i + x2 j + x3 k

Luis Arturo García Delgado Control de Robots UNISON, MCE


187

El producto vectorial o producto cruz x × y de dos vectores x y y pertenecientes a R3 es


un vector definido por
 
i j k
c = x × y = det x1 x2 x3 
 
y1 y2 y3
= (x2 y3 − x3 y2 )i + (x3 y1 − x1 y3 )j + (x1 y2 − x2 y1 )k

El producto cruz es un vector cuya magnitud es

∥c∥ = ∥x∥∥y∥| sin θ|

donde θ es el ángulo entre x y y cuya dirección está dada por la regla de la mano derecha, como se
muestra en la Figura A.4.

Figura A.4: Regla de la mano derecha

Un marco de coordenadas x − y − z con la regla de la mano derecha es un marco con ejes


mutuamente perpendiculares que satisface la regla de la mano derecha en el sentido que k = i × j,
donde i, j y k son vectores unitarios sobre los ejes x, y y z respectivamente.
El producto cruz tiene las propiedades

x × y = −y × x
x × (y + z) = x × y + x × z
α(x × y) = (αx) × y = x × (αy)

A.2.2. Diferenciación de vectores


Suponga que el vector x(t) = [x1 (t), . . . , xn (t)]T es una función temporal. Entonces la derivada
temporal ẋ de x es el vector
ẋ(t) = [ẋ1 (t), . . . , ẋn (t)]T
El producto escalar y el producto cruz satisfacen las siguientes reglas de producto para la dife-
renciación

d dx dy
   
⟨x, y⟩ = , y + x,
dt dt dt
d dx dy
(x × y) = ×y+x×
dt dt dt

UNISON, MCE Control de Robots Luis Arturo García Delgado


188

A.2.3. Matrices
Una matriz A = (aij ) de n × m es un arreglo ordenado de números reales con n vectores renglón
[ai1 , . . . , aim ], para i = 1, .., n y a su vez m vectores columna [a1j , . . . , anj ]T , para j = 1, .., m.
El rango de una matriz A es el número más grande de renglones (o columnas) linealmente
independientes de A. Así, el rango de una matriz de n × m no puede ser mayor que el mínimo de n
y m.
Ejemplo A.2.    
1 3 5 1 2 3
A = 2 8 4 B = 2 4 6
   
2 2 1 3 1 2

rango(A) = 3 rango(B) = 2

La transpuesta de una matriz A se denota por AT y se forma intercambiando los renglones y
las columnas de A.
Ejemplo A.3.    
2 4 3 2 1 5
A = 1 3 4 → AT = 4 3 5
   
5 5 1 3 4 1

Algunas propiedades de la matriz transpuesta son

(AT )T = A
(AB)T = B T AT , si A y B tienen dimensiones compatibles
(A + B)T = AT + B T

Una matriz cuadrada A de n × n se dice que es

Simétrica si y sólo si AT = A
Skew simétrica si y sólo si AT = −A
Ortogonal si y sólo si AT A = AAT = I

La inversa de una matriz cuadrada A ∈ Rn×n es una matriz B ∈ Rn×n que satisface
AB = BA = I (A.1)
donde I es la matriz identidad de tamaño n × n. La inversa de una matriz se suele representar
como A−1 . La inversa de una matriz existe y es única si A tiene rango n, o lo que es lo mismo si
det(A) ̸= 0. La inversa de una matriz cuadrada satisface
1. (A−1 )−1 = A

2. (AB)−1 = B −1 A−1 , donde B es una matriz cuadrada de la misma dimensión que A


La norma de una matriz A ∈ Rn×n se define como
∥Ax∥
∥A∥ = sup∥x∦=0
∥x∥

Luis Arturo García Delgado Control de Robots UNISON, MCE


189

A.3. Problemas
A.1 Encontrar el ángulo θ en la Figura A.5

Figura A.5: Problema de trigonometría

A.2 Determinar el valor de la variable x de la Figura A.6

Figura A.6: Problema de trigonometría

A.3 Simplifique las siguientes expresiones:


(a) sin2 θ − 1
(b) sin θ cos ϕ + cos θ sin ϕ

A.4 Considerando los siguientes vectores

u = [5 3 7]T
v = [1 2 3]T
w = [2 4 2]T
x = [sin θ cos θ 0]T
y = [cos ϕ 0 − sin ϕ]T

Realizar las siguientes operaciones:


(a) ⟨u, v⟩
(b) xT y
(c) ⟨w, x⟩
(d) ∥w∥
(e) ∥y∥
(f) vwT
(g) yxT
(h) v × u

UNISON, MCE Control de Robots Luis Arturo García Delgado


190

(i) y × x
(j) −x × y
(k) el ángulo θ entre los vectores u y w
(l) ẏ
d
(m) dt ⟨x, y⟩
d
(n) dt (x × y)

A.5 Utilizando las matrices


   
3 1 5 8 −4 4
A = 4 3 2 , B= 6 1 2
   
2 6 7 −2 3 4

Realizar las siguientes operaciones:


(a) Encuentre el rango de A
(b) Compruebe que (AB)T = B T AT
(c) Encuentre A−1 , B −1 y (AB)−1
(d) Compruebe que (AB)−1 = B −1 A−1

A.6 Diga si la matriz R  


cos θ − sin θ 0
R =  sin θ cos θ 0
 
0 0 1
es simétrica, skew simétrica u ortogonal.

Luis Arturo García Delgado Control de Robots UNISON, MCE


Apéndice B

Prácticas

B.1. Práctica 1. Realidad Virtual en MATLAB


La realidad virtual consiste en un entorno de escenas u objetos de apariencia real generados
mediante tecnología informática. MATLAB contiene distintos paquetes para realidad virtual, que
se pueden crear y manipular principalmente mediante el toolbox Simulink 3D Animation.
El toolbox de realidad virtual es una solución para la interacción de modelos de realidad virtual
de sistemas dinámicos sobre el tiempo. Extiende las capacidades de MATLAB y Simulink dentro
del mundo de gráficas de realidad virtual.

Mundos virtuales: Crea mundos virtuales de escenas tridimensionales usando la tecnología


VRML (Virtual Reality Modeling Language).

Sistemas dinámicos: Crea y define sistemas dinámicos con MATLAB y Simulink.

Animación: Ver movimientos de escenas de 3 dimensiones manejados por señales desde el


ambiente de Simulink.

Manipulación: Cambia las posiciones y propiedades de los objetos en un mundo virtual mien-
tras la simulación se está ejecutando.

Para proveer un ambiente de trabajo completo, el toolbox de realidad virtual incluye los siguien-
tes componentes adicionales:

Visor VRML

Editor VRML: para plataformas de Windows, use V-Realm Builder para crear y editar código
VRML. Para plataformas UNIX o LINUX, use el editor de texto de MATLAB para escribir
códigos VRML para crear mundos virtuales

(Bibliografía: Virtual Reality Toolbox. For Use with MATLAB and Simulink. Users Guide.
Version 3. The Mathworks)
Por la simplicidad en el diseño de mundos virtuales y accesibilidad a todas las características de
diseño, en esta práctica se trabajará con el editor de mundos virtuales V-Realm Builder 2.0.
Para escoger V-Realm Builder como editor predeterminado de MATLAB, de click sobre el botón
de preferencias , o simplemente teclee preferences en la ventana de comandos.
Dentro del cuadro de diálogo de Preferences, seleccione en el menú de la parte izquierda de la
ventana la opción Simulink 3D Animation y cambiar la opción Default Editor por V-Realm Builder,
como se ve en la figura B.1.

191
192

Figura B.1: Selección de editor V-Realm Builder dentro de la ventana Preferences.

Hay distintas opciones para abrir el editor de mundos virtuales V-Realm Builder. La opción más
sencilla es encontrar la ubicación del archivo ejecutable dentro de las carpetas de MATLAB (en el
explorador de archivos) y abrir con doble click el ejecutable.
La ubicación de V-Realm Builder se encuentra en la carpeta de los archivos de MATLAB en
program files. A continuación se presenta la ubicación del ejecutable:
C:\Program Files\MATLAB\R20XXX\toolbox\sl3d\vrealm\program\vrbuild2
donde debe sustituir R20XXX por la versión de MATLAB que tenga instalada.
Una vez que abra el editor de mundos virtuales, se despliega una ventana como la de la figura
B.2.

Figura B.2: Editor V-Realm Builder.

Al dar click en el botón de nuevo archivo, la ventana se ve como en la figura B.3. La parte
derecha de la ventana, con fondo negro, es la sección donde se irá dibujando el mundo virtual,
mientras que la parte izquierda de la pantalla, con dondo blanco, es donde se despliegan los objetos
con todas sus propiedades.
El sistema de coordenadas VRML es diferente del de MATLAB. VRML usa el sistema de
coordenadas del mundo en el cual el eje-y apunta hacia arriba y el eje-z posiciona los objetos más
cerca o más lejos del frente de la pantalla, como se aprecia en la figura B.4b). Es importante darse
cuenta de este hecho en situaciones que involucran la interacción de estos sistemas de coordenadas
diferentes.

Luis Arturo García Delgado Control de Robots UNISON, MCE


193

Figura B.3: Editor V-Realm Builder.

(a) (b)

Figura B.4: (a) Sistema de coordenadas en las gráficas de MATLAB; (b) sistema de coordenadas
VRML.

Bosquejo de un manipulador cilíndrico en V-Realm Builder

Para comenzar el diseño de un bosquejo de robot, ubique la barra de herramientas Geometry


Node .
En la barra de herramientas Geometry Node seleccione una caja (Box). Al insertar este compo-
nente se dibuja una caja cúbica sobre el área de diseño, mientras que en la parte izquierda de la
pantalla se agrega el árbol de propiedades del objeto insertado, como se muestra en la figura B.5.
Al expandir el árbol de propiedades del objeto Box debajo de la propiedad geometry aparece la
propiedad size, si da doble click sobre dicha propiedad, se muestra un cuadro de diálogo donde se
pueden modificar los valores de las dimensiones de la caja en los ejes x, y y z, como se muestra en
la figura B.6a). Cambie el valor del eje y de la caja por 0.2 y la pieza se modificará a como aparece
en la figura B.6b).
Cada objeto que se inserta, en la sección de árbol de nodos se nombra de manera genérica como

UNISON, MCE Control de Robots Luis Arturo García Delgado


194

Figura B.5: Inserción de un objeto Box en el área de diseño.

(a)

(b)

Figura B.6: Modificación de las dimensiones de un objeto Box.

transform, sin embargo, para poder identificar mejor cada pieza y tener la posibilidad de editar
desde matlab sus propiedades, se sugiere renombrar las piezas. Para ello, de click sobre la palabra
transform, y un par de segundos después vuelva a dar click y ya se puede modificar el nombre, como
se observa en la figura B.7.

(a) (b)

Figura B.7: Renombrar el identificador de las piezas.

Luis Arturo García Delgado Control de Robots UNISON, MCE


195

A continuación se darán las instrucciones para el bosquejo del manipulador cilíndrico.

1. Dar click sobre la propiedad children del objeto Base. Cuando aparezca seleccionada la palabra
children, inserte una pieza Cylinder. Se dibujará un cilindro sobre la primera pieza.

2. En el árbol de nodos, estando sobre esta pieza insertada, identifique las sección children/Sha-
pe/geometry/Cylinder y cambie las siguientes propiedades: height = 0.8 y radius = 0.4. Des-
pués identifique para este objeto la propiedad translation y traslade el eje y = 0.4. Notará que
el cilindro se posa sobre la pieza Base. Para este objeto, renombre la palabra transform por
Motor1.

3. Dar click sobre la propiedad children del objeto Motor1. Cuando aparezca seleccionada la
palabra children, inserte una pieza Cylinder.

4. En el árbol de nodos, estando sobre esta pieza insertada, identifique las sección children/Sha-
pe/geometry/Cylinder y cambie las siguientes propiedades: height = 0.8 y radius = 0.1. Para
este objeto, renombre la palabra transform por q1. Esta pieza será la parte rotatoria de la
articulación 1.

5. Dar click sobre la propiedad children del objeto q1. Cuando aparezca seleccionada la palabra
children, inserte una pieza Cylinder.

6. En el árbol de nodos, estando sobre esta pieza insertada, identifique las sección children/Sha-
pe/geometry/Cylinder y cambie las siguientes propiedades: height = 1 y radius = 0.1. Después
identifique para este objeto la propiedad translation y traslade el eje y = 0.9. Notará que el
cilindro se posa sobre la pieza q1. Para este objeto, renombre la palabra transform por Esla-
bon1.

7. Dar click sobre la propiedad children del objeto Eslabon1. Cuando aparezca seleccionada la
palabra children, inserte una pieza Cylinder.

8. En el árbol de nodos, estando sobre esta pieza insertada, identifique las sección children/Sha-
pe/geometry/Cylinder y cambie las siguientes propiedades: height = 0.8 y radius = 0.4. Des-
pués identifique para este objeto la propiedad rotation y en el cuadro de diálogo cambie las
propiedades X axis = 1 y Rotation = 90. Después identifique para este objeto la propiedad
translation y traslade el eje y = 0.9. Notará que el cilindro se rota y se posa sobre la pieza
Eslabon1. Para este objeto, renombre la palabra transform por Motor2.

9. Dar click sobre la propiedad children del objeto Motor2. Cuando aparezca seleccionada la
palabra children, inserte una pieza Cylinder.

10. En el árbol de nodos, estando sobre esta pieza insertada, identifique las sección children/Sha-
pe/geometry/Cylinder y cambie las siguientes propiedades: height = 0.8 y radius = 0.1. Para
este objeto, renombre la palabra transform por q2. Esta pieza será la parte rotatoria de la
articulación 2.

11. Dar click sobre la propiedad children del objeto q2. Cuando aparezca seleccionada la palabra
children, inserte una pieza Cylinder.

12. En el árbol de nodos, estando sobre esta pieza insertada, identifique las sección children/Sha-
pe/geometry/Cylinder y cambie las siguientes propiedades: height = 1 y radius = 0.1. Después
identifique para este objeto la propiedad translation y traslade el eje x = 0.9. Notará que el
cilindro se posa a la derecha de la pieza q2. Ahora, en la propiedad rotation gire 90◦ sobre el
eje z. Para este objeto, renombre la palabra transform por Eslabon2.

UNISON, MCE Control de Robots Luis Arturo García Delgado


196

13. Dar click sobre la propiedad children del objeto Eslabon2. Cuando aparezca seleccionada la
palabra children, inserte una pieza Box.

14. En el árbol de nodos, estando sobre esta pieza insertada, identifique las sección children/Sha-
pe/geometry/Box/size y cambie las dimensiones de los ejes x, y y z por 0.8. Después identifique
para este objeto la propiedad translation y traslade el eje y = −0.9. Notará que el cubo se
posa a la derecha de la pieza Eslabon2. Para este objeto, renombre la palabra transform por
Prisma3.

15. Dar click sobre la propiedad children del objeto Prisma3. Cuando aparezca seleccionada la
palabra children, inserte una pieza Box.

16. En el árbol de nodos, estando sobre esta pieza insertada, identifique las sección children/Sha-
pe/geometry/Box/size y cambie las dimensiones de los ejes x = 0.8, y = 0.1 y z = 0.8. Después
identifique para este objeto la propiedad translation y traslade el eje y = −0.4. Notará que
el cubo se posa a la derecha de la pieza Eslabon2. Para este objeto, renombre la palabra
transform por q3.

17. Dar click sobre la propiedad children del objeto q3. Cuando aparezca seleccionada la palabra
children, inserte una pieza Cylinder.

18. En el árbol de nodos, estando sobre esta pieza insertada, identifique las sección children/Sha-
pe/geometry/Cylinder y cambie las siguientes propiedades: height = 1 y radius = 0.1. Después
identifique para este objeto la propiedad translation y traslade el eje y = −0.6. Notará que el
cilindro se posa a la derecha de la pieza q2. Para este objeto, renombre la palabra transform
por Eslabon3.

Si se siguieron adecuadamente los pasos de diseño, se debe haber formado un bosquejo como el
de la figura B.8.

Figura B.8: Bosquejo del manipulador cilíndrico diseñado en V-Realm Builder.

Para mejorar la apariencia del diseño y la navegación en el mundo virtual, se puede agregar un
fondo a la imagen y un punto de visión. Para ello, identifique en la barra de herramientas Common
Node, los iconos .
En el árbol de nodos, que es la sección a la izquierda de la ventana, vaya a la parte superior y
de click sobre el objeto New World que se encuentra en la parte superior. En seguida presione el
botón Insert Background . Con esto se dibuja un fondo de color al diseño. Después presione el
botón Acces/Edit Viewpoint, . Con esto se crea un punto de visión actual y cuando navegue en
el mundo virtual puede regresar al punto de visión seleccionado.

Luis Arturo García Delgado Control de Robots UNISON, MCE


197

Controlar un mundo virtual desde Simulink

Para interactuar con mundos virtuales desde Simulink, primero identifique la librería Simulink
3D Animation en el navegador de librerías de Simulink, como se aprecia en la figura

Figura B.9: Librería Simulink 3D Animation.

A un modelo en blanco inserte un bloque VR Sink y de doble click sobre el bloque insertado y se
abrirá una ventana de parámetros. Identifique en la sección Virtual World Properties, la parte para
indicar el archivo fuente (Source file), y mediante el botón Browse busque el modelo virtual creado
previamente en V-Realm Builder. Cuando cargue el mundo virtual, en la sección Virtual World Tree
aparecen los elementos del árbol de nodos del mundo virtual, como se ve en la figura B.10.

Figura B.10: Parámetros del bloque VR Sink.

En el árbol de nodos de la sección Virtual World Tree vaya bajando hasta identificar las varia-
bles articulares q1 , q2 y q3 , y seleccione en el checkbox la propiedad que se desea variar en cada
articulación. Para este manipulador del ejemplo seleccionamos en q1 la propiedad rotation, en q2
también seleccione la propiedad rotation y en q3 la propiedad translation, como se ve en la figura
B.11.

UNISON, MCE Control de Robots Luis Arturo García Delgado


198

(a) (b) (c)

Figura B.11: Selección de los objetos modificables en el árbol de nodos.

Cuando termina de seleccionar las propiedades variables del


mundo virtual, en el bloque aparece una entrada por cada propie-
dad, en este caso [Link], [Link] y [Link], como se
ve en la figura B.12.
Las entradas rotation requieren como entrada un vector de 4
Figura B.12: Bloque VR Sink.
datos, los tres primeros correspondientes a los ejes de rotación x, y
y z y el cuarto dato es el ángulo de rotación, en radianes. Debido a
que en los manipuladores cada articulación está restringida a 1 grado de libertad, las rotaciones se
producen sobre un solo eje, por lo tanto se puede considerar un vector de ejes de rotación en donde
dos de ellos serán cero y el eje sobre el cual rota la articulación es 1, es decir [0 1 0]. Y debido a
que el ángulo es variable, para visualizar el cambio en las articulaciones rotatorias se pondrá una
constante pi seguida de un bloque Slider Gain para mover desde una barra deslizante entre −1 y
1 el valor de la ganancia. Las entradas distintas se unen en una línea mediante un Mux, en la figura
B.13a) se observa cómo se varía la rotación de una articulación rotatoria.
Para mover la articulación prismática se debe realizar una traslación únicamente sobre el eje y.
La traslación requiere introducir un vector de tres elementos de entrada: la distancia que se traslada
en cada eje, x, y y z. En este caso, debido a la configuración de las rotaciones previas, la traslación
debe ser una distancia negativa. Para ver cómo se formó el vector de entrada para trasladar la
variable prismática, observe la figura B.13b). Para poder variar manualmente en tiempo real la
variable q3 se utilizó también un Slider Gain.

(a) (b)

Figura B.13: Selección de los objetos modificables en el árbol de nodos.

Finalmente, para poder ejecutar la simulación donde manualmente se varíen los valores de las
variables articulares mediante barras deslizantes y observar al momento el cambio en el manipulador
virtual, abra con doble click cada bloque Slider Gain y también abra el visor de mundos virtuales
dando doble click sobre el bloque VR Sink. El tiempo de simulación debe ser cambiado a inf para
que no se detenga hasta que usted le de parar. Presione el botón Run y mueva los Sliders para que

Luis Arturo García Delgado Control de Robots UNISON, MCE


199

observe sobre el modelo virtual el efecto. La figura B.14 muestra la simulación corriendo en la que
se pueden mover las articulaciones del robot cilíndrico mediante los sliders.

Figura B.14: Simulación de movimiento de las articulaciones de un robot cilíndrico.

Como trabajo para el alumno se pide crear el bosquejo de:

Manipulador codo de dos eslabones.

Manipulador cilíndrico con muñeca esférica.

Manipulador Stanford.

Manipulador SCARA.

UNISON, MCE Control de Robots Luis Arturo García Delgado


200

B.2. Práctica 2: Operaciones con Vectores y Matrices


B.2.1. Variables Simbólicas
Las variables en todo lenguaje de programación, incluido Matlab, son espacios de memoria que
almacenan algún tipo de dato especificado. Dicho dato o valor se debe asignar a la variable antes
de poder utilizarla o hacer cálculos con ella. No se puede utilizar una variable definida si no se ha
realizado una asignación de datos previamente.
Las variables simbólicas son variables que se utilizan sin necesidad de tomar un valor, y sirven
para expresar o reprensentar expresiones matemáticas. En muchas ocasiones resulta útil el uso de
variables simbólicas para obtener resultados de operaciones con variables algebráicas que deben que-
dar expresadas como sí mismas y no con un valor específico, de modo que podemos usar expresiones
como x2 + x + 1 sin tener que asignarle ningún valor a x.
En MATLAB declaramos las variables simbólicas con el comando syms seguido de las variables
simbólicas a declarar separadas por espacios. Ejemplo:
syms teta fi

Con esta definición las variables teta y fi pueden representar cualquier número complejo.
Si queremos restringirlas a representar sólo números reales (R), se debe escribir la palabra real
separada un espacio del nombre de la variable. Ejemplo:
syms teta real

B.2.2. Vectores y Matrices


La forma de declarar matrices (y por ende vectores) es escribiendo los elementos de la matriz
entre corchetes “[]”; las columnas se separan mediante espacios y los renglones mediante el símbolo
“;”. Por ejemplo, para expresar la matriz
 
2 1 3
A = 4 4 2
 
1 5 4

en MATLAB se escribe
A = [2 1 3; 4 4 2; 1 5 4]

También podemos utilizar variables simbólicas como elementos de la matriz. Por ejemplo, para
expresar la matriz de rotación " #
cos θ − sin θ
R=
sin θ cos θ
en MATLAB escribimos
A = [cos(teta) -sin(teta); sin(teta) cos(teta)]

siempre y cuando ya esté definida la variable teta como simbólica.

Transpuesta
El operando para transponer un vector (xT ) o una matriz (AT ) es el apóstrofe colocado a la
derecha del vector o la matriz. Ejemplo:
x'
A'

Luis Arturo García Delgado Control de Robots UNISON, MCE


201

B.2.3. Operaciones con Vectores y Matrices


Producto escalar
Sean x, y ∈ Rn dos vectores columna de dimensión n. El producto escalar o producto punto
⟨x, y⟩ se puede realizar de dos maneras:

1. x'*y

2. dot(x, y)

Norma Euclidiana
La norma Euclideana de un vector, ∥x∥, se realiza mediante la función
norm(x)

Producto Exterior
El producto exterior de dos vectores, xy T , se realiza mediante
x*y'

Producto Cruz
El producto cruz de dos vectores, x × y, se realiza mediante
cross(x, y)

Graficación de Vectores
Para visualizar dos vectores, x y y, de tres dimensiones, se puede hacer con
plot3([0 x(1)], [0 x(2)], [0 x(3)])
hold on
plot3([0 y(1)], [0 y(2)], [0 y(3)])

Ángulo entre Vectores


Por definición, el producto punto de dos vectores en R2 o R3 , se puede representar como x · y =
∥x∥∥y∥ cos θ, donde θ es el ángulo que los separa. Si se desea hallar θ, despejamos y obtenemos

x·y
 

θ = cos 1
∥x∥∥y∥

lo cual, expresado en Matlab es


teta = acos(dot(x,y)/(norm(x)*norm(y)))

Derivada
La función diff(expr) calcula la derivada de la expresión expr con respecto a la varia-
ble simbólica que utiliza dicha expresión. Nota: la derivada se calcula con respecto a la variable
simbólica, si la variable a derivar no es el tiempo (t), entonces no es una derivada temporal.

UNISON, MCE Control de Robots Luis Arturo García Delgado


202

La diferencia entre derivada con respecto a una variable y derivada temporal es la siguiente:
Suponga que se tiene una variable que depende del tiempo x(t). Por simplicidad sólo utilizaremos
la variable como x. Se tiene una función f definida como

f (x) = 3x4 + x2 − 0.5

La derivada de f (x) con respecto a x es

d
f (x) = 12x3 + 2x
dx
mientras que la derivada temporal de f (x) es

d
f (x) = 12x3 ẋ + 2xẋ
dt
dx
donde ẋ = dt .

Rango de una Matriz


El rango de una matriz A se obtiene mediante la función
rank(A)

Traza
La traza de una matriz A, se determina mediante
trace(A)

Determinante
El determinante de una matriz A, se obtiene utilizando la función
det(A)

Inversa de una Matriz


La inversa de una matriz A, se puede obtener de las siguientes maneras

1. A^-1

2. inv(A)

Luis Arturo García Delgado Control de Robots UNISON, MCE


203

B.3. Práctica 3. Graficación de Marcos


B.3.1. Matrices de Rotación Básicas
A continuación definiremos funciones de Matlab para expresar las matrices de rotación básicas,
es decir: las matrices de rotación sobre los ejes x, y y z, es decir:
     
1 0 0 cos θ 0 sin θ cos θ − sin θ 0
Rx,θ = 0 cos θ − sin θ Ry,θ = 0 1 0  Rz,θ =  sin θ cos θ 0
     
0 sin θ cos θ − sin θ 0 cos θ 0 0 1

Con tal propósito podemos generar las funciones de los Programas B.1, B.2, B.3.

 Programa B.1: R_x.m


function R = R_x(teta)
R = [1 0 0;
0 cos(teta) -sin(teta);
0 sin(teta) cos(teta)];
 

 Programa B.2: R_y.m


function R = R_y(q)
R = [cos(q) 0 sin(q);
0 1 0;
-sin(q) 0 cos(q)];
 

 Programa B.3: R_z.m


function R = R_z(q)
R = [cos(q) -sin(q) 0;
sin(q) cos(q) 0;
0 0 1];
 
Estas funciones son escenciales para representar rotaciones. Podemos utilizarlas con ángulos
definidos (un número real en radianes) o con variables simbólicas. Por ejemplo, para representar
una rotación de 45◦ sobre el eje x, escribimos
R_x(pi/4)

y MATLAB devuelve la matriz de rotación


ans =
1.0000 0 0
0 0.7071 -0.7071
0 0.7071 0.7071

Así mismo podemos utilizar variables simbólicas para obtener composiciones de rotaciones. Por
ejemplo, si se quiere encontrar la matriz de rotación que exprese un ángulo ϕ sobre el eje y, seguido
de una rotación θ sobre el eje z actual, utilizamos
syms fi teta real
R = R_y(fi)*R_z(teta)

obteniendo
R =
[ cos(fi)*cos(teta), -cos(fi)*sin(teta), sin(fi)]
[ sin(teta), cos(teta), 0]
[ -cos(teta)*sin(fi), sin(fi)*sin(teta), cos(fi)]

UNISON, MCE Control de Robots Luis Arturo García Delgado


204

B.3.2. Gráfica de Marcos


Para graficar cada eje del marco de coordenadas nos basaremos en la instrucción plot3()
previamente utilizada para graficar vectores. Por lo tanto, para componer un marco de coordenadas
se necesitan los tres vectores base. La función para conseguir dicho fin se muestra en el Programa
B.4.

 Programa B.4: Marco.m


function [] = Marco(R, num, varargin)
% Sirve para graficar un marco de coordenadas en 3D. Los parámetros de entrada
% son: R -> una matriz de orientación del marco; num -> un carácter (‘’) con
% el número o letra que identifica al marco y varargin puede contener caracte-
% rísticas de la gráfica como 'color', 'r', 'LineWidth', 2, 'LineStyle','-'

hold on
ejex_x = [0 R(1,1)];
ejex_y = [0 R(2,1)];
ejex_z = [0 R(3,1)];
plot3(ejex_x, ejex_y, ejex_z, varargin{:}) % gráfica eje x

ejey_x = [0 R(1,2)];
ejey_y = [0 R(2,2)];
ejey_z = [0 R(3,2)];
plot3(ejey_x, ejey_y, ejey_z, varargin{:}) % gráfica eje y

ejez_x = [0 R(1,3)];
ejez_y = [0 R(2,3)];
ejez_z = [0 R(3,3)];
plot3(ejez_x, ejez_y, ejez_z, varargin{:}) % gráfica eje z

t_x = ['x_' num]; % etiqueta del eje x


t_y = ['y_' num]; % etiqueta del eje y
t_z = ['z_' num]; % etiqueta del eje z
text(R(1,1), R(2,1), R(3,1), t_x)
text(R(1,2), R(2,2), R(3,2), t_y)
text(R(1,3), R(2,3), R(3,3), t_z)
end
 
Un sencillo ejemplo de la utilización de la función Marco() se muestra a continuación
I = eye(3); % I es la matriz identidad de 3x3
% dibujamos el marco 0 con línea contínua de color rojo
Marco(I, '0', 'color', 'r', 'LineWidth', 2, 'LineStyle', '-')
axis equal
axis([-1 1 -1 1 -1 1]) % definimos los ejes de la gráfica
view(45,45) % rotación de la vista de la gráfica

Como resultado se tendrá la Figura B.15


Ahora se desea graficar una serie de rotaciones sobre el marco actual. Suponga que se tiene el
marco fijo o0 x0 y0 z0 . Se desea obtener el marco o1 x1 y1 z1 al aplicar una rotación de 30◦ sobre el eje
x0 . Finalmente se obtendrá el marco o2 x2 y2 z2 al realizar una rotación de 45◦ sobre el eje z actual.
Lo anterior se puede realizar con el Programa B.5

 Programa B.5: Graficar_marcos1.m


%% Este programa es para dibujar marcos de coordenadas

o0x0y0z0 = eye(3); % marco 0


Marco(o0x0y0z0, '0', 'color', 'r', 'LineWidth', 2, 'LineStyle','-')

% aplicamos una rotación de 30° en eje x0

Luis Arturo García Delgado Control de Robots UNISON, MCE


205

Figura B.15: Gráfica de un marco de coordenadas en MATLAB.

o1x1y1z1 = o0x0y0z0*R_x(pi/6); % marco 1


Marco(o1x1y1z1, '1', 'color', 'b', 'LineWidth', 2, 'LineStyle','--')

% aplicamos una rotación de 45° en eje z1


o2x2y2z2 = o1x1y1z1*R_z(pi/4); % marco 2
Marco(o2x2y2z2, '2', 'color', 'g', 'LineWidth', 2, 'LineStyle',':')

axis equal
axis([-1 1 -1 1 -1 1])
view(135, 45)
 

Como resultado se tendrá la gráfica de la Figura B.16

UNISON, MCE Control de Robots Luis Arturo García Delgado


206

Figura B.16: Gráfica de rotaciones de marcos de coordenadas en MATLAB.

Como ejercicio se deja:

1. Considere la siguiente secuencia de rotaciones:

a) Rotar un ángulo ϕ respecto al eje-x del mundo


b) Rotar un ángulo θ respecto al eje-z actual
c) Rotar un ángulo ψ respecto al eje-y del mundo

2. Considere la siguiente secuencia de rotaciones:

a) Rotar un ángulo ϕ respecto al eje-x del mundo


b) Rotar un ángulo θ respecto al eje-z del mundo
c) Rotar un ángulo ψ respecto al eje-x actual

3. Considere la siguiente secuencia de rotaciones:

a) Rotar un ángulo ϕ respecto al eje-x del mundo


b) Rotar un ángulo θ respecto al eje-z actual
c) Rotar un ángulo ψ respecto al eje-x actual
d) Rotar un ángulo α respecto al eje-z del mundo

4. Considere la siguiente secuencia de rotaciones:

a) Rotar un ángulo ϕ respecto al eje-x del mundo

Luis Arturo García Delgado Control de Robots UNISON, MCE


207

b) Rotar un ángulo θ respecto al eje-z del mundo


c) Rotar un ángulo ψ respecto al eje-x actual
d) Rotar un ángulo α respecto al eje-z del mundo

5. Calcule la matriz de rotación dada por el producto

Rx,θ Ry,ϕ Rz,π Ry,−ϕ Rx,−θ

6. Realizar las rotaciones anteriores, pero esta vez con respecto al marco del mundo (no al marco
actual).

7. Si se obtiene el marco de coordenadas o1 x1 y1 z1 del marco de coordenadas o0 x0 y0 z0 mediante


una rotación de π/2 respecto al eje-x seguida de una rotación de π/2 respecto al eje y actual,
encuentre la matriz de rotación que representa la transformación compuesta. Bosqueje los
marcos inicial y final.

8. Suponga que tres marcos de coordenadas o1 x1 y1 z1 , o2 x2 y2 z2 y o3 x3 y3 z3 son dados, y suponga


que  
1 0 0
√  
 1 3  0 0 −1
1
R2 = 

0 −  1
2 , R3 = 0 1 0
 
√2
 
 3 1  1 0 0
0
2 2
Encuentre la matriz R23 .

UNISON, MCE Control de Robots Luis Arturo García Delgado


208

B.4. Práctica 4. Parametrización de rotaciones


Cualquier rotación posible en marcos tridimensionales, es decir SO(3), puede ser expresada
mediante composiciones de tres rotaciones sucesivas en distintas convenciones, tales como:

Ángulos de Euler
Matriz de rotación roll-pitch-yaw
Representación eje-ángulo

B.4.1. Matriz de Rotación mediante Ángulos de Euler


La matriz de rotación mediante ángulos de Euler en los ejes sucesivos Y − Z − Y es utilizada
cuando se desean alcanzar orientaciones mediante muñeca esférica. Dicha matriz está dada por
 
cϕ cθ cψ − sϕ sψ −cϕ cθ sψ − sϕ cψ cϕ sθ
RZY Z = sϕ cθ cψ + cϕ sψ −sϕ cθ sψ + cϕ cψ sϕ sθ  (B.1)
 
−sθ cψ sθ sψ cθ

La matriz de rotación RZY Z de la Ecuación (B.1) se puede programar en una función mediante
el Programa B.6.

 Programa B.6: R_zyz.m


function R = R_zyz(fi, teta, psi)
R = R_z(fi)*R_y(teta)*R_z(psi);
 
Por ejemplo, si se desea representar un giro de ϕ = 30◦ , θ= 60◦ yψ= 45◦ mediante ángulos de
Euler, puede teclear
R_zyz(pi/6, pi/3, pi/4)

a lo que se devuelve el resultado


ans =
-0.0474 -0.6597 0.7500
0.7891 0.4356 0.4330
-0.6124 0.6124 0.5000

Esta matriz resultante tiene la forma


   
−0.0474 −0.6597 0.7500 r11 r12 r13
R =  0.7891 0.4356 0.4330 = r21 r22 r23  (B.2)
   
−0.6124 0.6124 0.5000 r31 r32 r33
El problema inverso de la matriz de rotación consiste en que partiendo de una matriz con valores
numéricos como el de la Ec. (B.2), encontrar una combinación de ángulos ϕ, θ y ψ que resuelvan
RZY Z para que se igualen ambas matrices.
Para solucionar el problema consideraremos tres casos y se da una solución para cada uno de
ellos:
1. Si r33 = +1, entonces
θ=0
y la Ecuación (B.1) se convierte en
 
cϕ+ψ −sϕ+ψ 0
R = sϕ+ψ cϕ+ψ 0
 
0 0 1

Luis Arturo García Delgado Control de Robots UNISON, MCE


209

Dado que existen infinitas soluciones para ϕ + ψ, se determina

ϕ = atan2(r21 , r11 )
ψ = 0

2. Si r33 = −1, entonces


θ = 180◦
y la Ecuación (B.1) se convierte en
   
−cϕ−ψ −sϕ−ψ 0 r11 r12 0
R = −sϕ−ψ cϕ−ψ 0  = r21 r22 0 
   
0 0 −1 0 0 −1

Dado que existen infinitas soluciones para ϕ − ψ, se determina

ϕ = atan2(−r21 , −r11 )
ψ = 0

3. Si r33 ̸= ±1, entonces q


2 ,r )
θ = atan2( 1 − r33 (B.3)
33

y con ello

ϕ = atan2(r23 , r13 ) (B.4)


ψ = atan2(r32 , −r31 ) (B.5)

El resultado anterior se puede programar dentro de una función de MATLAB como la del
Programa B.7.

 Programa B.7: inv_ang_Euler.m


function [phi, theta, psi] = inv_ang_Euler(R)
if (R(3,3) == 1)
theta = 0;
phi = atan2(R(2,1), R(1,1));
psi = 0;
elseif (R(3,3) == -1)
theta = pi;
phi = atan2(-R(2,1), -R(1,1));
psi = 0;
else
theta = atan2(sqrt(1-R(3,3)^2), R(3,3));
phi = atan2(R(2,3), R(1,3));
psi = atan2(R(3,2), -R(3,1));
end
end
 
Considerando el ejemplo anterior, donde se obtuvo la matriz R de la Ecuación (B.2) producida
mediante un giro de ϕ = 30◦ , θ = 60◦ y ψ = 45◦ , se pueden encontrar los ángulos originalmente
introducidos utilizando
R = R_zyz(pi/6, pi/3, pi/4);
[phi, theta, psi] = inv_ang_Euler(R)

a lo que MATLAB devuelve el resultado

UNISON, MCE Control de Robots Luis Arturo García Delgado


210

phi =
0.5236

theta =
1.0472

psi =
0.7854

los cuales corresponden a los ángulos introducidos en R = R_zyz(pi/6, pi/3, pi/4) .

B.4.2. Matriz de Rotación mediante ángulos Roll-Pitch-Yaw


La matriz de rotación mediante giros Roll-Pitch-Yaw es utilizada comúnmente para representar
rotaciones de robots móviles. Dicha matriz está dada mediante
 
cψ cθ cψ sθ sϕ − sψ cϕ cψ sθ cϕ + sψ sϕ
Rrpy = sψ cθ sψ sθ sϕ + cψ cϕ sψ sθ cϕ − cψ sϕ  (B.6)
 
−sθ cθ sϕ cθ cϕ

La matriz de rotación Rrpy de la Ecuación (B.6) se puede programar en una función mediante
el Programa B.8.

 Programa B.8: R_rpy.m


function R = R_rpy(fi, teta, psi)
R = R_z(psi)*R_y(teta)*R_x(fi);
 
Por ejemplo, si se desea representar un giro de ϕ = 30◦ , θ = 60◦ y ψ = 45◦ mediante ángulos de
Euler, puede teclear
R_rpy(pi/6, pi/3, pi/4)

a lo que se devuelve el resultado


ans =
0.3536 -0.3062 0.8839
0.3536 0.9186 0.1768
-0.8660 0.2500 0.4330

B.4.3. Matriz de Rotación mediante Representación Eje/Ángulo

Figura B.17: Rotación sobre un eje arbitrario

La matriz de rotación se puede generar mediante un eje unitario k y un giro θ. La Figura B.17
bosqueja el concepto del eje k surgido al hacer la transformación rotacional R = Rz,α Ry,β la cual

Luis Arturo García Delgado Control de Robots UNISON, MCE


211

alinea el eje-z del mundo con el vector k. Una rotación sobre el eje k se puede calcular usando la
transformación de semejanza como

Rk,θ = RRz,θ R−1 = Rz,α Ry,β Rz,θ Ry,−β Rz,−α (B.7)

La matriz de rotación Rk,θ , expresada en función del vector k y el ángulo θ es


 
kx2 vθ + cθ kx ky vθ − kz sθ kx kz vθ + ky sθ
Rk,θ = kx ky vθ + kz sθ ky2 vθ + cθ ky kz vθ − kx sθ  (B.8)
 
kx kz vθ − ky sθ ky kz vθ + kx sθ kz2 vθ + cθ

donde vθ = vers θ = 1 − cθ .
La matriz de rotación Rk,θ de la Ecuación (B.8) se puede programar en una función mediante
el Programa B.9.

 Programa B.9: R_kq.m


function R = R_kq(k, theta)
cq = cos(theta);
sq = sin(theta);
vq = 1-cq;
R = [k(1)^2*vq+cq k(1)*k(2)*vq-k(3)*sq k(1)*k(3)*vq+k(2)*sq;
k(1)*k(2)*vq+k(3)*sq k(2)^2*vq+cq k(2)*k(3)*vq-k(1)*sq;
k(1)*k(3)*vq-k(2)*sq k(2)*k(3)*vq+k(1)*sq k(3)^2*vq+cq];
end
 
Si se quiere encontrar el vector k a partir de los ángulos α y β de la Ecuación (B.7), recurra al
Programa

 Programa B.10: k_ab.m


function [k] = k_ab(alpha, beta)
kz = cos(beta);
kx = sqrt(1-kz^2)*cos(alpha);
ky = sqrt(1-kz^2)*sin(alpha);
k = [kx; ky; kz];
end
 
Por ejemplo, si se desea representar un eje orientado mediante α = 30◦ y β = 60◦ , y con un
ángulo θ = 45◦ , se escribe
k = k_ab(pi/6, pi/3)
R = R_kq(k, pi/4)

a lo que se devuelve el resultado


k =
0.7500
0.4330
0.5000

R =
0.8719 -0.2584 0.4160
0.4487 0.7620 -0.4669
-0.1964 0.5937 0.7803

El problema inverso consiste en que partiendo de una matriz de rotación con valores numéricos
rij , se desea encontrar los valores del eje k y el ángulo θ equivalente. La solución se encuentra por
medio de las ecuaciones
−1 Tr(R) − 1
 
θ = cos
2

UNISON, MCE Control de Robots Luis Arturo García Delgado


212

y  
r − r23
1  32
k= r13 − r31 

2sθ
r21 − r12
lo cual se puede programar como en el código B.11.

 Programa B.11: inv_k_theta.m


function [k, theta] = inv_k_theta(R)
theta = acos((trace(R)-1)/2);
k = (1/(2*sin(theta)))*[R(3,2)-R(2,3); R(1,3)-R(3,1); R(2,1)-R(1,2)];
end
 
Para comprobar lo anterior, considere la matriz de rotación creada con el Programa B.9 y
comprobar mediante el Programa B.11.
k = k_ab(pi/6, pi/3);
R = R_kq(k, pi/4);
[k, theta] = inv_k_theta(R)

a lo que se devuelve el resultado


k =
0.7500
0.4330
0.5000

theta =
0.7854

lo cual corresponde con el par eje/ángulo (k, θ) que generaron la matriz R.

B.4.4. Trabajo para el alumno


Como ejercicio se deja:
π π
1. Encuentre la matriz de rotación correspondiente a los ángulos de Euler ϕ = , θ = 0 y ψ = .
2 4
¿Cuál es la dirección del eje x1 relativa al marco base?

2. Desarrolle las ecuaciones para los ángulos de roll (balanceo), pitch (cabeceo) y yaw (guiñada)
correspondientes a la matriz de rotación R = (rij ).
1
3. Sea k = √ [1, 1, 1]T , θ = 90◦ . Encuentre Rk,θ .
3
4. Calcule la matriz de rotación dada por el producto

Rx,θ Ry,ϕ Rz,π Ry,−ϕ Rx,−θ

5. Suponga que R representa una rotación de 90◦ respecto y0 seguida por una rotación de 45

respecto z1 . Encuentre la representación eje/ángulo equivalente para representar R. Bosqueje
los marcos inicia y final y el vector de eje-k equivalente.

Luis Arturo García Delgado Control de Robots UNISON, MCE


213

B.5. Práctica 5. Matrices de Transformación Homogéneas


En esta sección se verá cómo graficar marcos de coordenadas basados en matrices de transforma-
ción homogénea. Primero vamos a crear funciones para cada una de las 6 matrices de transformación
básicas. Tres matrices para traslación:
     
1 0 0 a 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 b 0 1 0 0
T ransx,a = , T ransy,b = , T ransz,c =
     
0 0 1 0 0 0 1 0 0 0 1 c

0 0 0 1 0 0 0 1 0 0 0 1
y tres matrices para rotación:
     
1 0 0 0 cβ 0 sβ 0 cγ −sγ 0 0
0 c
α −s α 0  0 1 0 0 s cγ 0 0
Rotx,α = , Roty,β = , Rotz,γ = γ
     
0 sα cα 0 −sβ 0 cβ 0 0 0 1 0

0 0 0 1 0 0 0 1 0 0 0 1
Con este fin, creamos los programas B.12 al B.17:

 Programa B.12: Trans_x.m


function T = Trans_x(a)
T = [1 0 0 a;
0 1 0 0;
0 0 1 0;
0 0 0 1];
 

 Programa B.13: Trans_y.m


function T = Trans_y(b)
T = [1 0 0 0;
0 1 0 b;
0 0 1 0;
0 0 0 1];
 

 Programa B.14: Trans_z.m


function T = Trans_z(c)
T = [1 0 0 0;
0 1 0 0;
0 0 1 c;
0 0 0 1];
 

 Programa B.15: Rot_x.m


function T = Rot_x(q)
T = [1 0 0 0;
0 cos(q) -sin(q) 0;
0 sin(q) cos(q) 0;
0 0 0 1];
 

 Programa B.16: Rot_y.m


function T = Rot_y(q)
T = [cos(q) 0 sin(q) 0;
0 1 0 0;
-sin(q) 0 cos(q) 0;
0 0 0 1];
 

UNISON, MCE Control de Robots Luis Arturo García Delgado


214

 Programa B.17: Rot_z.m


function T = Rot_z(q)
T = [cos(q) -sin(q) 0 0;
sin(q) cos(q) 0 0;
0 0 1 0;
0 0 0 1];
 
Una vez que se tienen las matrices de transformación homogénea, hacemos un programa para
graficar el marco que bosqueje dicha matriz. Para ello se crea las funciones PlotCircle3D.m del
Programa B.18 y graf_marco_H.m del Programa B.19.

 Programa B.18: PlotCircle3D.m


function PlotCircle3D(center,normal,radius, varargin)
theta=0:0.01:2*pi;
v=null(normal);
points=repmat(center',1,size(theta,2))+radius*(v(:,1)*cos(theta)+v(:,2)*sin(theta));
plot3(points(1,:),points(2,:),points(3,:), varargin{:}, 'Color', 'k');
 

 Programa B.19: graf_marco_H.m


function [] = graf_marco_H(T, color, num)
dx = T(1,4);
dy = T(2,4);
dz = T(3,4);
a = 0.7; % factor de escala de los vectores
Xx = [dx dx+T(1,1)*a];
Yx = [dy dy+T(2,1)*a];
Zx = [dz dz+T(3,1)*a];
Xy = [0 T(1,2)*a]+dx;
Yy = [0 T(2,2)*a]+dy;
Zy = [0 T(3,2)*a]+dz;
Xz = [0 T(1,3)*a]+dx;
Yz = [0 T(2,3)*a]+dy;
Zz = [0 T(3,3)*a]+dz;
hold on
line(Xx, Yx, Zx, 'color', color,'LineWidth',2,'Tag','x') % grafica eje x
line(Xy, Yy, Zy, 'color', color,'LineWidth',2) % grafica eje y
line(Xz, Yz, Zz, 'color', color,'LineWidth',2) % grafica eje z
% Cono eje z
height = 0.1;
T_z = T*[1 0 0 0; 0 1 0 0; 0 0 1 1*a-height; 0 0 0 1];
center = T_z(1:3, 4)';
normal = T_z(1:3, 3)';
radius = 0.04;
PlotCircle3D(center,normal,radius, 'color', color,'LineWidth',2)
for dl = 0:pi/10:2*pi
p_sup = T_z*[1 0 0 0; 0 1 0 0; 0 0 1 height; 0 0 0 1];
p_inf = T_z*[1 0 0 radius*cos(dl); 0 1 0 radius*sin(dl); 0 0 1 0; 0 0 0 1];
plot3([p_sup(1, 4) p_inf(1, 4)], [p_sup(2, 4) p_inf(2, 4)],...
[p_sup(3, 4) p_inf(3, 4)], 'color', color,'LineWidth',2)
end
% Cono eje y
T_y = T*[1 0 0 0; 0 1 0 1*a-height; 0 0 1 0; 0 0 0 1];
center = T_y(1:3, 4)';
normal = T_y(1:3, 2)';
PlotCircle3D(center,normal,radius, 'color', color,'LineWidth',2)
for dl = 0:pi/10:2*pi
p_sup = T_y*[1 0 0 0; 0 1 0 height; 0 0 1 0; 0 0 0 1];
p_inf = T_y*[1 0 0 radius*cos(dl); 0 1 0 0; 0 0 1 radius*sin(dl); 0 0 0 1];
plot3([p_sup(1, 4) p_inf(1, 4)], [p_sup(2, 4) p_inf(2, 4)],...

Luis Arturo García Delgado Control de Robots UNISON, MCE


215

[p_sup(3, 4) p_inf(3, 4)], 'color', color,'LineWidth',2)


end
% Cono eje x
T_x = T*[1 0 0 1*a-height; 0 1 0 0; 0 0 1 0; 0 0 0 1];
center = T_x(1:3, 4)';
normal = T_x(1:3, 1)';
PlotCircle3D(center,normal,radius, 'color', color,'LineWidth',2)
for dl = 0:pi/10:2*pi
p_sup = T_x*[1 0 0 height; 0 1 0 0; 0 0 1 0; 0 0 0 1];
p_inf = T_x*[1 0 0 0; 0 1 0 radius*cos(dl); 0 0 1 radius*sin(dl); 0 0 0 1];
plot3([p_sup(1, 4) p_inf(1, 4)], [p_sup(2, 4) p_inf(2, 4)],...
[p_sup(3, 4) p_inf(3, 4)], 'color', color,'LineWidth',2)
end
t_x = ['x_' num];
t_y = ['y_' num];
t_z = ['z_' num];
text(a*T(1,1)+dx,a*T(2,1)+dy,a*T(3,1)+dz, t_x)
text(a*T(1,2)+dx,a*T(2,2)+dy,a*T(3,2)+dz, t_y)
text(a*T(1,3)+dx,a*T(2,3)+dy,a*T(3,3)+dz, t_z)
 

Para ver la utilidad de estas funciones, diseñamos el programa B.20 mediante el cual se pueden
dibujar objetos en 3 dimensiones y visualizar marcos de coordenadas definidos por matrices de
transformación homogéneas. Como resultado se tendrá la gráfica de la Figura B.18.

 Programa B.20: Graficar_marcos_H.m


%% Este programa es para dibujar marcos de coordenadas

% dibujar la figura
d1 = 2; % distancia 1
d2 = 4; % distancia 2
X = [0 d1 d1 0 0 0 0 d1 d1 0 d1 d1];
Y = [0 0 0 0 0 d2 0 0 d2 d2 d2 0];
Z = [0 0 d2 d2 0 0 d2 d2 0 0 0 0];
line(X,Y,Z,'Color','r','LineWidth',1) % dibuja en línea roja la figura
%axis([-d1 d1 -d1 d1 -d1 d2])
axis equal %%

hold on
T_0 = eye(4); % definimos marco 0 por medio de matriz homogénea
graf_marco_H(T_0, 'b', '0') % dibuja el marco 0

H1_0 = [0 1 0 0;
0 0 -1 0;
-1 0 0 d2;
0 0 0 1];
T_1 = H1_0*T_0;
graf_marco_H(T_1, 'b', '1') % dibuja el marco 1

H2_0 = [0 0 -1 0;
-1 0 0 d2;
0 1 0 0;
0 0 0 1];
T_2 = H2_0*T_0;
graf_marco_H(T_2, 'b', '2') % dibuja el marco 2
view(-50, 30)
 

UNISON, MCE Control de Robots Luis Arturo García Delgado


216

Figura B.18: Gráfica de de marcos de coordenadas con matrices de transformación homogéneas.

B.5.1. Trabajo para el alumno


Como aporte del alumno se pide que realice el bosquejo del dibujo y de los marcos de los
siguientes problemas:

Considere el diagrama de la Figura B.19. Un robot es colocado a 1 metro de una mesa. La


parte superior de la mesa tiene 1 metro de altura y es un cuadrado de 1 metro por lado. Un
marco o1 x1 y1 z1 está fijo a una esquina de la mesa como se muestra. Un cubo que mide 20 cm
por lado es colocado en el centro de la mesa con un marco o2 x2 y2 z2 establecido en el centro
del cubo como se muestra. Una cámara se sitúa diréctamente encima del centro del cubo 2
m encima de la superficie de la mesa y tiene asignado un marco o3 x3 y3 z3 como se muestra.
Encuentre las transformaciones homogéneas que relacionan cada uno de estos marcos con el
marco base o0 x0 y0 z0 . Encuentre la transformación homogénea que relaciona el marco o2 x2 y2 z2
con el marco de la cámara o3 x3 y3 z3 .

En el Problema B.5.1, suponga que, después de que la cámara es calibrada, se rota 90◦ respecto
z3 . Recalcule las transformaciones de coordenadas de arriba.

Si el bloque de la mesa es rotado 90◦ respecto z2 y desplazado de tal forma que su centro tiene
coordenadas [0, 0.8, 0.1]T relativas al marco o1 x1 y1 z1 , calcule la transformación homogénea
que relaciona el marco del bloque con el marco de la cámara; el marco del bloque con el marco
de la base.

Luis Arturo García Delgado Control de Robots UNISON, MCE


217

Figura B.19: Diagrama del Problema B.5.1

UNISON, MCE Control de Robots Luis Arturo García Delgado


218

B.6. Práctica 6. Cinemática Directa


Mediante la convención de Denavit-Hartenberg es posible formar matrices de transformación
homogéneas Ai con sólo 4 parámetros, a saber: ai , αi , di y θi . Cada matriz de transformación Ai
relaciona el marco i con el marco i − 1. Con los parámetros de los n marcos se puede formar una
tabla de parámetros de Denavit-Hartenberg de la forma:

Tabla B.1: Tabla de parámetros articulares para manipuladores.

Eslabón ai αi di θi
1 a1 α1 d1 θ1∗
2 a2 α2 d2 θ2∗
.. ..
. .
n an αn dn θn∗
∗ articulación variable

Si se llena adecuadamente la tabla de parámetros DH para alguna configuración de manipulador,


es posible bosquejar (dibujar) el robot del que se obtuvieron dichos parámetros. Mediante el progra-
ma B.21 se hará una interfaz gráfica de usuario en MATLAB, donde se pide introducir la tabla de
parámetros DH, especificando (con check boxes) cuáles parámetros son variables. Para el funciona-
miento de este programa se requiere tener guardado previamente los programas graf_marco_H.m
y PlotCircle3D.m

 Programa B.21: Cinematica_DH.m


function Cinematica_DH
f = figure('Position',[100 300 250 210],'Name','Dibuja Robots',...
'MenuBar','none','NumberTitle','off');

% Texto
uicontrol('Style','text',...
'Position',[10 185 230 20],...
'String','Parámetros de Denavit-Hartenberg');

% Tabla
data = {'', '', '', false, '', false;
'', '', '', false, '', false;
'', '', '', false, '', false;
'', '', '', false, '', false;
'', '', '', false, '', false;
'', '', '', false, '', false};
rnames = {'1','2','3','4','5','6'};
cnames = {'a','alpha','d','*','theta','*'};
cformat = {'char','char','char','logical','char','logical'};
cedit = [true true true true true true];
cwidth = {40 40 40 20 40 20};

T6 = uitable('Position',[10,50,230,135],...
'Data',data,...
'ColumnName',cnames,'RowName',rnames,...
'ColumnWidth',cwidth,'ColumnEditable',cedit,...
'ColumnFormat',cformat);

% Botón
uicontrol('Style', 'pushbutton', 'String', 'Graficar',...
'Position', [10 10 100 25],...
'Callback', {@Graficar,T6}); % Pushbutton string callback
% that calls a MATLAB function

Luis Arturo García Delgado Control de Robots UNISON, MCE


219

end

function [] = Graficar(hObj,event,T6)
tableData=get(T6,'Data');
ai = cell2mat(tableData(1,1));
for i=2:6
ai = [ai; cell2mat(tableData(i,1))];
end

L = length(ai) ;
for i = 1:L
a(i) = str2num(ai(i));
alfa(i) = str2num(cell2mat(tableData(i,2)));
d(i) = str2num(cell2mat(tableData(i,3)));
teta(i) = str2num(cell2mat(tableData(i,5)));% auxt;
end
di_var = cell2mat(tableData(1:L,4)); % cell2mat(tableData(:,4));
tetai_var = cell2mat(tableData(1:L,6)); % cell2mat(tableData(:,6));

Dibuja_Robot(a, alfa, d, di_var, teta) %, tetai_var


end

function [] = Dibuja_Robot(a, alfa, d, d_var, teta) %, teta_var


for i = 1:length(a)
ct = cosd(teta(i));
st = sind(teta(i));
ca = cosd(alfa(i));
sa = sind(alfa(i));
ai = a(i);
di = d(i);

A(:,:,i) = [ct -st*ca st*sa ai*ct;


st ct*ca -ct*sa ai*st;
0 sa ca di;
0 0 0 1];
if (i > 1)
T0(:,:,i) = T0(:,:,i-1)*A(:,:,i);
else
T0(:,:,1) = A(:,:,1);
end
end

T0(:,:,i)

figure(2)
hold on
II = eye(4); % marco inercial o base

% Grafica eslaboón 1
if (d(1) ~= 0)
line([0 0], [0 0], [0 T0(3,4,1)], 'Color', 'b', 'LineWidth',2)
end
if (a(1) ~= 0)
line([0 T0(1,4,1)], [0 T0(2,4,1)], [T0(3,4,1) T0(3,4,1)],...
'Color', 'b', 'LineWidth',2)
end

graf_marco_H(II, 'r', '0') % grafica marco 0

if (d_var(1))
art_pris(II)
else

UNISON, MCE Control de Robots Luis Arturo García Delgado


220

art_rot(II)
end

for i = 2:length(a)
if (d(i) ~= 0)
line([T0(1,4,i-1) T0(1,4,i-1)+d(i)*T0(1,3,i-1)], ...
[T0(2,4,i-1) T0(2,4,i-1)+d(i)*T0(2,3,i-1)], ...
[T0(3,4,i-1) T0(3,4,i-1)+d(i)*T0(3,3,i-1)], ...
'Color', 'b', 'LineWidth',2)
end
if (a(i) ~= 0)
line([T0(1,4,i-1)+d(i)*T0(1,3,i-1) T0(1,4,i)],...
[T0(2,4,i-1)+d(i)*T0(2,3,i-1) T0(2,4,i)],...
[T0(3,4,i-1)+d(i)*T0(3,3,i-1) T0(3,4,i)],...
'Color', 'k', 'LineWidth',2)
end

graf_marco_H(T0(:,:,i-1), 'r', num2str(i-1)) % grafica marco i

if (d_var(i))
art_pris(T0(:,:,i-1))
else
art_rot(T0(:,:,i-1))
end
end

graf_marco_H(T0(:,:,i), 'r', num2str(i)) % grafica marco final

% pinza
esq1 = T0(:,:,i)*[1 0 0 -0.3; 0 1 0 0; 0 0 1 0; 0 0 0 1];
esq2 = T0(:,:,i)*[1 0 0 0.3; 0 1 0 0; 0 0 1 0; 0 0 0 1];
esq3 = T0(:,:,i)*[1 0 0 -0.3; 0 1 0 0; 0 0 1 0.2; 0 0 0 1];
esq4 = T0(:,:,i)*[1 0 0 0.3; 0 1 0 0; 0 0 1 0.2; 0 0 0 1];
line([esq1(1,4) esq2(1,4)], [esq1(2,4) esq2(2,4)], ...
[esq1(3,4) esq2(3,4)], 'Color', 'k')
line([esq1(1,4) esq3(1,4)], [esq1(2,4) esq3(2,4)],...
[esq1(3,4) esq3(3,4)], 'Color', 'k')
line([esq2(1,4) esq4(1,4)], [esq2(2,4) esq4(2,4)],...
[esq2(3,4) esq4(3,4)], 'Color', 'k')

axis('square')
axis('equal')
end

function art_pris(T)
r = 0.2;
v1 = T*[1 0 0 -r; 0 1 0 -r; 0 0 1 r; 0 0 0 1];
v2 = T*[1 0 0 -r; 0 1 0 r; 0 0 1 r; 0 0 0 1];
v3 = T*[1 0 0 r; 0 1 0 -r; 0 0 1 r; 0 0 0 1];
v4 = T*[1 0 0 r; 0 1 0 r; 0 0 1 r; 0 0 0 1];
v5 = T*[1 0 0 -r; 0 1 0 -r; 0 0 1 -r; 0 0 0 1];
v6 = T*[1 0 0 -r; 0 1 0 r; 0 0 1 -r; 0 0 0 1];
v7 = T*[1 0 0 r; 0 1 0 -r; 0 0 1 -r; 0 0 0 1];
v8 = T*[1 0 0 r; 0 1 0 r; 0 0 1 -r; 0 0 0 1];

plot3([v1(1,4) v2(1,4)], [v1(2,4) v2(2,4)], [v1(3,4) v2(3,4)],'k')


plot3([v2(1,4) v4(1,4)], [v2(2,4) v4(2,4)], [v2(3,4) v4(3,4)],'k')
plot3([v3(1,4) v4(1,4)], [v3(2,4) v4(2,4)], [v3(3,4) v4(3,4)],'k')
plot3([v1(1,4) v3(1,4)], [v1(2,4) v3(2,4)], [v1(3,4) v3(3,4)],'k')

plot3([v1(1,4) v5(1,4)], [v1(2,4) v5(2,4)], [v1(3,4) v5(3,4)],'k')


plot3([v2(1,4) v6(1,4)], [v2(2,4) v6(2,4)], [v2(3,4) v6(3,4)],'k')

Luis Arturo García Delgado Control de Robots UNISON, MCE


221

plot3([v3(1,4) v7(1,4)], [v3(2,4) v7(2,4)], [v3(3,4) v7(3,4)],'k')


plot3([v4(1,4) v8(1,4)], [v4(2,4) v8(2,4)], [v4(3,4) v8(3,4)],'k')

plot3([v5(1,4) v6(1,4)], [v5(2,4) v6(2,4)], [v5(3,4) v6(3,4)],'k')


plot3([v6(1,4) v8(1,4)], [v6(2,4) v8(2,4)], [v6(3,4) v8(3,4)],'k')
plot3([v7(1,4) v8(1,4)], [v7(2,4) v8(2,4)], [v7(3,4) v8(3,4)],'k')
plot3([v5(1,4) v7(1,4)], [v5(2,4) v7(2,4)], [v5(3,4) v7(3,4)],'k')

% cuadro extra
v1 = T*[1 0 0 -r; 0 1 0 -r; 0 0 1 1.5*r; 0 0 0 1];
v2 = T*[1 0 0 -r; 0 1 0 r; 0 0 1 1.5*r; 0 0 0 1];
v3 = T*[1 0 0 r; 0 1 0 -r; 0 0 1 1.5*r; 0 0 0 1];
v4 = T*[1 0 0 r; 0 1 0 r; 0 0 1 1.5*r; 0 0 0 1];

plot3([v1(1,4) v2(1,4)], [v1(2,4) v2(2,4)], [v1(3,4) v2(3,4)],'k')


plot3([v2(1,4) v4(1,4)], [v2(2,4) v4(2,4)], [v2(3,4) v4(3,4)],'k')
plot3([v3(1,4) v4(1,4)], [v3(2,4) v4(2,4)], [v3(3,4) v4(3,4)],'k')
plot3([v1(1,4) v3(1,4)], [v1(2,4) v3(2,4)], [v1(3,4) v3(3,4)],'k')
end

function art_rot(T)
T_sup = T*[1 0 0 0; 0 1 0 0; 0 0 1 0.3; 0 0 0 1];
T_inf = T*[1 0 0 0; 0 1 0 0; 0 0 1 -0.3; 0 0 0 1];
center = T_sup(1:3, 4)';
normal = T_sup(1:3, 3)';
radius = 0.2;
PlotCircle3D(center,normal,radius)

center = T_inf(1:3, 4)';


normal = T_inf(1:3, 3)';
PlotCircle3D(center,normal,radius)

for dl = 0:pi/10:2*pi
p_sup = T*[1 0 0 radius*cos(dl); 0 1 0 radius*sin(dl);...
0 0 1 0.3; 0 0 0 1];
p_inf = T*[1 0 0 radius*cos(dl); 0 1 0 radius*sin(dl);...
0 0 1 -0.3; 0 0 0 1];
plot3([p_sup(1, 4) p_inf(1, 4)], [p_sup(2, 4) p_inf(2, 4)],...
[p_sup(3, 4) p_inf(3, 4)],'k')
end
end
 
Al ejecutar el Script Cinematica_DH , aparece una interfaz de usuario como la de la Figura
B.20. En dicha interfaz se muestra una tabla vacía en la que se deben llenar los parámetros DH
del manipulador que se desea bosquejar. Las distancias, ai y di se deben especificar con un valor
numérico, y los ángulos αi y θi se deben especificar en grados. Se debe especificar cuáles de los
parámetros son variables mediante los checkbox que se presentan junto a di o θi . Como ejemplo, en
la Figura B.20 se muestra cómo se llenan los datos para bosquejar el manipulador Stanford.
En la parte inferior de la GUI se localiza un botón “graficar”, el cual, al presionarlo, ejecuta una
función mediante la cual se realiza el bosquejo del robot. Cada renglón de la matriz de parámetros
representa un eslabón movido por una articulación. Se dibuja en color negro cada articulación
(prismática o rotatoria, según la que se haya marcado como variable), los eslabones se dibujan en
color azul y se dibujan los marcos en color rojo. Note que como sólo se disponen de los valores de la
tabla DH para bosquejar al robot, la articulación i se dibuja centrada en el marco i − 1, por lo que
si distintos marcos tienen su origen en el mismo punto, las articulaciones se dibujan empalmadas.
Por último, al final del último eslabón (sobre el último marco de coordenadas) se dibuja una pinza,
apuntando en dirección del eje zn . El resultado del bosquejo del robot creado mediante la GUI, se
muestra en la Figura B.21.

UNISON, MCE Control de Robots Luis Arturo García Delgado


222

Figura B.20: Interfaz gráfica de usuario (GUI) para bosquejo de robots usando tabla de parámetros
DH.

Figura B.21: Bosquejo con asignación de marcos de coordenadas DH para el manipulador Stanford.

Como aporte del alumno se pide que realice el bosquejo de los siguientes manipuladores:
Manipulador codo plano

Manipulador cilíndrico con muñeca esférica

Manipulador Stanford

Manipulador SCARA

Manipulador del Problema 3.2

Manipulador del Problema 3.3

Manipulador del Problema 3.4

Luis Arturo García Delgado Control de Robots UNISON, MCE


223

Manipulador del Problema 3.5

Manipulador del Problema 3.6

Manipulador del Problema 3.7

Manipulador del Problema 3.8

Manipulador del Problema 3.9

Manipulador del Problema 3.10

Como aportación adicional (opcional) se les pide incluir en la GUI slides para poder mover las
variables articulares desde controles slide y que se grafique en el momento cualquer movimiento.

UNISON, MCE Control de Robots Luis Arturo García Delgado


224

B.7. Práctica 7. El Jacobiano


El Jacobiano en un manipulador relaciona las velocidades articulares q̇ con la velocidad del
cuerpo ξ = (v, w)T del efector final, es decir

ξ = J q̇

Esta relación se puede escribir como dos ecuaciones separadas, una para la velocidad lineal y otra
para la velocidad angular

v = Jv q̇
ω = Jω q̇

El Jacobiano es una matriz de 6 renglones y n columnas, donde n es el número de articula-


ciones de un manipulador. La i-ésima columna de la matriz Jacobiana del manipulador se calcula
dependiendo de si la articulación i es prismática o rotatoria, de acuerdo a la siguiente expresión
" #

 z i−1 × (on − o i−1 )

 si la articulación i es rotatoria
z


Ji = " # i−1
 zi−1
si la articulación i es prismática



 0

en donde cada vector zi es la dirección del eje z en la matriz de rotación Ri0 y el vector oi son las
coordenadas del origen del marco i con respecto al marco de la base. Por lo tanto, si la matriz de
transformación homogénea que relaciona al marco i con el marco 0 es
" #
Ri0 (q) o0i (q)
Ti0 (q) = (B.9)
0 1

Por lo tanto, a partir de la matriz homogénea Ti0 , los tres primeros renglones de la tercer columna
expresa el vector zi y los tres primeros renglones de la cuarta columna forman el vector oi . Para el
caso de i = 0, debido a que expresa las coordenadas de la base, se tiene
   
0 0
z0 = 0 , o0 = 0
   
1 0

En esta práctica se desarrollará un programa en MATLAB que calcule la matriz Jacobiana de


robots manipuladores a partir de la tabla de parámetros de Denavit-Hartenberg.

B.7.1. Programas para calcular el Jacobiano


Los vectores oi como zi necesarios para calcular el Jacobiano se obtienen a partir de las matrices
de transformación homogéneas Ti0 , como en la Ecuación (B.9), las cuales se componen mediante
una multiplicación sucesiva de matrices Ai de parámetros DH, de la manera Ti0 = A1 · · · Ai . Por lo
tanto, el primer paso antes del cálculo del Jacobiano será crear una función para dichas matrices
Ai . El programa ADH.m mostrado en el código B.22, se utiliza para calcular la matriz Ai , tomando
como argumento de entrada los cuatro parámetros DH para el eslabón i. Note que el parámetro α
se debe introducir en grados (no en radianes). La función entrega como resultado la matriz Ai .

 Programa B.22: ADH.m


function A = ADH(a, alfa, d, teta)

Luis Arturo García Delgado Control de Robots UNISON, MCE


225

switch alfa
case 0
ca = 1;
sa = 0;
case 90
ca = 0;
sa = 1;
case -90
ca = 0;
sa = -1;
case 180
ca = -1;
sa = 0;
otherwise
ca = cos(alfa*pi/180);
sa = sin(alfa*pi/180);
end
cq = cos(teta);
sq = sin(teta);
A = [cq -sq*ca sq*sa a*cq;
sq cq*ca -cq*sa a*sq;
0 sa ca d;
0 0 0 1];
end
 
El programa de MATLAB B.23 calcula la matriz Jacobiana de un manipulador descrito mediante
una tabla de parámetros Denavit-Hatenberg. El único parámetro de entrada al programa es la tabla
TablaDH , la cual consta de 5 columnas y n renglones, donde n es el número de articulaciones del
manipulador y las columnas expresan los parámetros ai , αi , di , θi y un quinto parámetro ρi que se
define como 0 si la articulación es prismática y 0 si es rotatoria.

 Programa B.23: CalculaJacobiano.m


function J = CalculaJacobiano(TablaDH)
[r, c] = size(TablaDH);
a = TablaDH(:,1);
alfa = TablaDH(:,2);
d = TablaDH(:,3);
teta = TablaDH(:,4);
rho = TablaDH(:,5);
for i = 1:r
A(:,:,i) = ADH(a(i), alfa(i), d(i), teta(i));
if (i == 1)
T(:,:,i) = A(:,:,i);
else
T(:,:,i) = T(:,:,i-1)*A(:,:,i);
end
end

% se comienzan a calcular los vectores z y o


z0 = [0; 0; 1];
% o0 = [0; 0; 0];

for i = 1:r
z(:,i) = T(1:3, 3, i);
o(:,i) = T(1:3, 4, i);
end

% calcular resta de o_n - o_i-1


for i = 1:r
if (i == 1)

UNISON, MCE Control de Robots Luis Arturo García Delgado


226

o_dif(:,i) = o(:,r);
else
o_dif(:,i) = o(:,r) - o(:,i-1);
end
end

% calcula el Jacobiano
for i = 1:r
if (rho(i) == 0) % si articulación i es prismática
if (i == 1)
J(1:3, i) = z0;
else
J(1:3, i) = z(:,i-1);
end
J(4:6, i) = [0; 0; 0];
else % si la articulación es rotatoria
if (i == 1)
J(1:3, i) = cross(z0, o_dif(:,i));
J(4:6, i) = z0;
else
J(1:3, i) = cross(z(:,i-1), o_dif(:,i));
J(4:6, i) = z(:,i-1);
end
end
end
end
 
Para comprobar que el programa B.23: CalculaJacobiano.m funciona adecuadamente, lo
probaremos con el cálculo de la matriz Jacobiana para el manipulador codo. Para ello utilice las
siguientes instrucciones
syms d1 a2 a3 q1 q2 q3 real
% la tabla de parámetros DH del manipulador codo es la siguiente:
TablaDH = [0 90 d1 q1 1;
a2 0 0 q2 1;
a3 0 0 q3 1]

% el Jacobiano es dado mediante


J = CalculaJacobiano(TablaDH);
simplify(J)

El comando simplify se utiliza para simplificar o reducir una expresión simbólica. El resultado
es el siguiente
ans =
 
− sin(q1)(a3 cos(q2 + q3) + a2 cos(q2)) − cos(q1)(a3 sin(q2 + q3) + a2 sin(q2)) −a3 sin(q2 + q3) ∗ cos(q1)
 cos(q1)(a3 cos(q2 + q3) + a2 cos(q2)) − sin(q1)(a3 sin(q2 + q3) + a2 sin(q2)) −a3 sin(q2 + q3) ∗ sin(q1) 
0 a3 cos(q2 + q3) + a2 cos(q2) a3 cos(q2 + q3)
 
 
0 sin(q1) sin(q1)
 
 
 0 − cos(q1) − cos(q1) 
1 0 0

Las singularidades del brazo para este manipulador se pueden encontrar mediante el determinan-
te de la submatriz J11 en el desacoplamiento de singularidades, es decir, los primeros tres renglones
de la matriz J calculada. Por lo tanto, si se desean encontrar las singularidades del brazo, en
MATLAB utilizamos los comandos
J11 = J(1:3, :); % toma los primeros tres renglones de J
d = det(J11); % calcula el determinante de la matriz J11
simplify(d) % simplifica el resultado

Con las instrucciones anteriores se obtiene la respuesta

Luis Arturo García Delgado Control de Robots UNISON, MCE


227

ans =
-a2*a3*(a2*cos(q2)*sin(q3) - a3*sin(q2) + a3*cos(q3)^2*sin(q2)
+ a3*cos(q2)*cos(q3)*sin(q3))

En la respuesta dada, observe que se pueden reducir los términos

a3 c23 s2 − a3 s2 = a3 s2 (c23 − 1) = a3 s2 (s23 )

donde s2 = sin(q2 ), s3 = sin(q3 ) y c3 = cos(q3 ). Entonces el determinante se escribe como

−a2 a3 (a2 c2 s3 + a3 s2 s33 + a3 c2 c3 s3 ) = −a2 a3 s3 (a2 c2 + a3 s2 s3 + a3 c2 c3 )

por último, se usa la identidad trigonométrica

a3 s2 s3 + a3 c2 c3 = a3 c23

Por lo tanto, el determinante de J11 se puede escribir como

det(J11 ) = a2 a3 s3 (a2 c2 + a3 c23 )

Trabajo del alumno. El alumno debe calcular el Jacobiano de 6 × 3 y las singularidades del
brazo para:

El manipulador plano de dos eslabones

El manipulador esférico de tres eslabones

El manipulador SCARA

El manipulador cilíndrico

El manipulador cartesiano

El manipulador Stanford

UNISON, MCE Control de Robots Luis Arturo García Delgado


228

B.8. Práctica 8. Cinemática Inversa


La cinemática inversa es el problema de que, partiendo de una posición y orientación deseada en
el efector final, se debe encontrar el valor de las variables articulares del robot para que a través de
la cinemática directa, el marco de la herramienta llegue a la postura deseada. La postura deseada
se especifica mediante una matriz homogénea de la forma
" #
R o
H=
0 1

donde o = [ox , oy , oz ]T indica la posición deseada del efector final y R especifica la orientación que
debe tener el marco de la herramienta.
La solución de la cinemática inversa para el manipulador articulado con muñeca esférica, de la
Figura B.22, se estudió en el Capítulo 3 en las secciones de cinemática inversa y desacople cinemático.

Figura B.22: Manipulador articulado con muñeca esférica.

El desacople cinemático se utiliza para facilitar la solución de la cinemática inversa en manipu-


ladores con muñeca esférica y consiste en lo siguiente:

En primer lugar se localiza en centro de la muñeca esférica retrocediendo una distancia d6


sobre el eje z6 , es decir  
0
0
oc = o − d6 R 0
 
1
o lo que es lo mismo    
xc ox − d6 r13
 yc  = oy − d6 r23 
   
zc oz − d6 r33

Una vez que se localizó el centro de la muñeca esférica, se resuelve la inversa de posición,
es decir, se encuentra la solución de las tres primeras variables articulares (si es que antes
de la muñeca sólo hay tres articulaciones) que permitan al marco o3 x3 y3 z3 posicionarse en el
centro de la muñeca. Para ello se estudia cuidadosamente la geometría de cada manipulador
articulación por articulación.
Por lo tanto, en este punto se encuentran una solución para q1 , q2 y q3 .

El siguiente paso es resolver la inversa de orientación. Con la inversa de posición se llega al


centro de la muñeca esférica, y se tiene la orientación del tercer marco R30 , pero falta orientar

Luis Arturo García Delgado Control de Robots UNISON, MCE


229

el marco del efector final de acuerdo a la orientación deseada R. Para ello, se encuentra la
orientación que debe lograr la muñeca esférica que es

R63 = (R03 )T R

Con los elementos de la matriz R63 se resuelve el problema de encontrar los ángulos de Euler,
donde
θ4 = ϕ, θ5 = θ, θ6 = ψ
La solución de los ángulos de Euler se estudió en el Capítulo 2. Una vez encontrado el valor
de estos últimos 3 ángulos, se tiene la solución completa de la cinemática inversa.

En esta práctica se desarrollará un programa en MATLAB que resuelva la cinemática inversa


para el manipulador articulado con muñeca esférica de la Figura B.22.
El programa de MATLAB B.24 recibe como parámetro la matriz H, que es la matriz de trans-
formación homogénea con la posición y orientación deseada. El resultado que entrega el programa
son las seis posiciones articulares que solucionan la cinemática inversa.

 Programa B.24: cinem_inversa_articulado.m


function [q] = cinem_inversa_articulado(H)
% parámetros del robot articulado
d1 = 2;
a2 = 2;
a3 = 2;
d6 = 2;

% o = posición deseada del efector final


o = H(1:3, 4); % o = renglón 1 al 3, columna = 4 de la matriz H
% R = orientación deseada del efector final
R = H(1:3, 1:3); % R = primeros 3 renglones y columnas de H

% DESACOPLE CINEMÁTICO

% Inversa de posición (primeras 3 articulaciones) *******************


% o_c = [xc, yc, zc]' = posición del centro de la muñeca esférica
o_c = o - d6*R(:,3);
xc = o_c(1);
yc = o_c(2);
zc = o_c(3);

% teta 1
teta1 = atan2(yc, xc);
D = (xc^2 + yc^2 + (zc-d1)^2 - a2^2 - a3^2)/(2*a2*a3);

% teta 3
teta3 = atan2(sqrt(1-D^2), D);
c3 = cos(teta3);
s3 = sin(teta3);

% teta 2
beta = atan2(zc-d1, sqrt(xc^2+yc^2));
gama = atan2(a3*s3, a2+a3*c3);
teta2 = beta-gama;

% parámetros DH
% esl | a_i | alfa_i | d_i | teta_i
% 1 | 0 | 90 | d1 | teta1
% 2 | a2 | 0 | 0 | teta2
% 3 | a3 | 0 | 0 | teta3

UNISON, MCE Control de Robots Luis Arturo García Delgado


230

% 4 | 0 | -90 | 0 | teta4
% 5 | 0 | 90 | 0 | teta5
% 6 | 0 | 0 | d6 | teta6

% calcular las primeras 3 matrices homogéneas


c1 = cos(teta1);
s1 = sin(teta1);
c2 = cos(teta2);
s2 = sin(teta2);

A1 = [c1 0 s1 0;
s1 0 -c1 0;
0 1 0 d1;
0 0 0 1];

A2 = [c2 -s2 0 a2*c2;


s2 c2 0 a2*s2;
0 0 1 0;
0 0 0 1];

A3 = [c3 -s3 0 a3*c3;


s3 c3 0 a3*s3;
0 0 1 0;
0 0 0 1];

% se calcula la transformación homogénea hasta llegar al centro de la


% muñeca esférica
T_30 = A1*A2*A3;
R_30 = T_30(1:3, 1:3);

% Inversa de orientación (muñeca esférica) ****************************


R_63 = R_30'*R; % R_63 calcula la orientación que debe proporcionar la
% muñeca esférica para igualar la orient. deseada R
rm11 = R_63(1,1);
rm12 = R_63(1,2);
rm13 = R_63(1,3);
rm21 = R_63(2,1);
rm22 = R_63(2,2);
rm23 = R_63(2,3);
rm31 = R_63(3,1);
rm32 = R_63(3,2);
rm33 = R_63(3,3);

if (rm13 ~= 0) && (rm23 ~= 0)


c5 = rm33;
s5 = sqrt(1-c5^2);
teta5 = atan2(s5, c5);

teta4 = atan2(rm23, rm13);


teta6 = atan2(rm32, -rm31);
else
if (rm33 > 0)
teta5 = 0;
teta4 = atan2(rm21, rm11);
teta6 = 0;
else
teta5 = pi;
teta4 = atan2(-rm21, -rm11);
teta6 = 0;
end
end

Luis Arturo García Delgado Control de Robots UNISON, MCE


231

q = [teta1; teta2; teta3; teta4; teta5; teta6]*180/pi;


end
 
Para comprobar que el programa B.24: Cinematica_inversa_articulado.m funciona ade-
cuadamente, utilizaremos el programa Cinematica_DH.m desarrollado en la práctica anterior, el
cual nos permitirá generar las variables H a partir de los valores que seleccionemos en las variables
articulares. Otra opción para generar la matriz H conociendo los valores articulares es crear otro
programa que realice la cinemática directa para este robot. Para ello se ha creado el programa de
MATLAB B.25 llamado cinem_directa_articulado.m .

 Programa B.25: cinem_directa_articulado.m


function [H] = cinem_directa_articulado(q1, q2, q3, q4, q5, q6)
% parámetros del robot articulado
d1 = 2;
a2 = 2;
a3 = 2;
d6 = 2;

% parámetros DH
% esl | a_i | alfa_i | d_i | teta_i
% 1 | 0 | 90 | d1 | teta1
% 2 | a2 | 0 | 0 | teta2
% 3 | a3 | 0 | 0 | teta3
% 4 | 0 | -90 | 0 | teta4
% 5 | 0 | 90 | 0 | teta5
% 6 | 0 | 0 | d6 | teta6

% calcular las primeras 3 matrices homogéneas


c1 = cosd(q1);
s1 = sind(q1);
c2 = cosd(q2);
s2 = sind(q2);
c3 = cosd(q3);
s3 = sind(q3);
c4 = cosd(q4);
s4 = sind(q4);
c5 = cosd(q5);
s5 = sind(q5);
c6 = cosd(q6);
s6 = sind(q6);

A1 = [c1 0 s1 0;
s1 0 -c1 0;
0 1 0 d1;
0 0 0 1];

A2 = [c2 -s2 0 a2*c2;


s2 c2 0 a2*s2;
0 0 1 0;
0 0 0 1];

A3 = [c3 -s3 0 a3*c3;


s3 c3 0 a3*s3;
0 0 1 0;
0 0 0 1];

A4 = [c4 0 -s4 0;
s4 0 c4 0;
0 -1 0 0;
0 0 0 1];

UNISON, MCE Control de Robots Luis Arturo García Delgado


232

A5 = [c5 0 s5 0;
s5 0 -c5 0;
0 1 0 0;
0 0 0 1];

A6 = [c6 -s6 0 0;
s6 c6 0 0;
0 0 1 d6;
0 0 0 1];

H = A1*A2*A3*A4*A5*A6;
end
 
Para comprobar, puede escribir en la ventana de comandos la siguiente instrucción
H = cinem_directa_articulado(45, 0, 45, 150, 40, 180)

que genera la matriz H de la cinemática directa para los valores articulares

θ1 = 45
θ2 = 0
θ3 = 45
θ4 = 150
θ5 = 40
θ6 = 180

obteniéndose
H =
0.9777 -0.1830 0.1026 2.6195
0.0687 -0.1830 -0.9807 0.4528
0.1983 0.9659 -0.1664 3.0815
0 0 0 1.0000

Para probar la cinemática inversa escriba la siguiente instrucción en la ventana de comandos


q = cinem_inversa_articulado(H)

con lo que se obtiene


q =
45.0000
0.0000
45.0000
150.0000
40.0000
180.0000

Trabajo del alumno. El alumno debe resolver los problemas que se mencionan a continuación,
para ello se sugiere crear un programa en cada caso:
Problema 5.5

Problema 5.6

Problema 5.8

Problema 5.9

Problema 5.11

Luis Arturo García Delgado Control de Robots UNISON, MCE


233

B.9. Práctica 9. Ecuación de Movimiento de Euler-Lagrange


Una forma de representar el modelo dinámico de un robot es mediante las ecuaciones de movi-
miento de Euler-Lagrange, que toman la forma

d ∂L ∂L
− = τk , k = 1, . . . , n (B.10)
dt ∂ q̇k ∂qk

donde n es el número de grados de libertad y L es el Lagrangiano del sistema. El Lagrangiano es


una función de energía que expresa la relación

L=K−P

donde K expresa la energía cinética del sistema y P denota su energía potencial.


La energía cinética K se puede calcular como
n n
" #
1 T X o
K = q̇ mi Jvi (q)T Jvi (q) + Jωi (q)T Ri (q)Ii Ri (q)T Jωi (q) q̇
2 i=1
1 T
= q̇ D(q)q̇
2
donde " n #
Xn o
T T T
D(q) = mi Jvi (q) Jvi (q) + Jωi (q) Ri (q)Ii Ri (q) Jωi (q) (B.11)
i=1

es la matriz de inercia n × n del manipulador. Los términos Jvi (q) y Jωi (q) son los Jacobianos
de velocidad lineal y angular, respectivamente, para el eslabón i; mi denota la masa del eslabón i,
mientras que las matrices Ii son los tensores de inercia del eslabón i.
La ecuación para calcular la energía potencial del i-ésimo eslabón se puede utilizar

Pi = mi g T rci

donde g es el vector que indica la magnitud dirección de la gravedad en el marco inercial y el vector
rci da las coordenadas del centro de masa del eslabón i en el marco inercial. La energía potencial
total del robot de n-eslabones es por lo tanto
n
X n
X
P = Pi = mi g T rci (B.12)
i=1 i=1

Entonces, desarrollando la Ecuación (B.10), las ecuaciones de Euler-Lagrange se pueden expresar


como
n
X n X
X n
dkj (q)q̈j + cijk (q)q̇i q̇j + gk (q) = τk , k = 1, . . . , n
j=1 i=1 j=1

donde los términos


∂P
gk = (B.13)
∂qk
son las fuerzas gravitacionales generalizadas, y los términos
( )
1 ∂dkj ∂dki ∂dij
cijk = + − (B.14)
2 ∂qi ∂qj ∂qk

denotan los símbolos de Christoffel del primer tipo.

UNISON, MCE Control de Robots Luis Arturo García Delgado


234

Las ecuaciones de Euler-Lagrange en la forma matricial se expresan como

D(q)q̈ + C(q, q̇)q̇ + g(q) = τ (B.15)

donde la matriz C(q, q̇) se conoce como matriz de fuerzas centrífugas y de Coriolis. La matriz C(q, q̇)
no es única, sin embargo, a partir de los símbolos de Christoffel se puede construir dicha matriz,
donde su (k, j)ésimo elemento se define como
n n
( )
X X 1 ∂dkj ∂dki ∂dij
ckj = cijk (q)q̇i = + − q̇i (B.16)
i=1 i=1
2 ∂qi ∂qj ∂qk

y el vector de gravedad g(q) está dado por

g(q) = [g1 (q), . . . , gn (q)]T (B.17)

B.9.1. Programas para calcular matriz de inercia


A continuación se diseñará un programa de MATLAB para calcular la matriz de inercia de la
Ecuación (B.11) de un manipulador metiendo como único parámetro la tabla de parámetros DH con
variables simbólicas. Para la Ecuación (B.11) se observa que es necesario calcular previamente los
Jacobianos al centro de masa de cada eslabón, por lo tanto, el primer programa que debemos generar
es JacobianoEslabon_i.m del código B.26. Este programa es similar al programa de prácticas
anteriores CalculaJacobiano.m , pero con dos diferencias, a saber, primero que se calcula el
Jacobiano para algún eslabón i entre 1 y n, y segundo que el Jacobiano calculado para el eslabón i
se calcula con respecto al centro de masa de dicho eslabón. Por lo tanto, los parámetros de entrada
a la función son la tabla n × 5 de parámetros de DH del manipulador en cuestión, y el número de
eslabón al que se le desea calcular el Jacobiano sobre su centro de masa. El programa toma variables
simbólicas para las articulaciones y distancias del robot, y crea variables simbólicas ℓci para denotar
distancias a los centros de masa de cada eslabón. La salida de esta función son las matrices Jvi , Jωi
y Ri .

 Programa B.26: JacobianoEslabon_i.m


function [Jv, Jw, R] = JacobianoEslabon_i(TablaDH, link_i)
% Esta función calcula la matriz Jacobiana para el i-ésimo eslabón en un
% manipulador, donde link_i es el número de eslabón en cuestón
[r, c] = size(TablaDH);
a = TablaDH(:,1);
alfa = TablaDH(:,2);
d = TablaDH(:,3);
teta = TablaDH(:,4);
rho = TablaDH(:,5);

% distancia al centro de masa del eslabón i


eval(['syms lc' num2str(link_i) ' real']);
eval(['lci = lc' num2str(link_i) ';']);
if (a(link_i) ~= 0)
a(link_i) = lci;
end
if (d(link_i) ~= 0)
d(link_i) = lci;
end

T0 = eye(4);
for i = 1:link_i
A = ADH(a(i), alfa(i), d(i), teta(i)); %(:,:,i);
eval(['T' num2str(i) '= T' num2str(i-1) '*A;']);

Luis Arturo García Delgado Control de Robots UNISON, MCE


235

eval(['Ri = T' num2str(i) '(1:3, 1:3);']);


end
R = simplify(Ri);

% se comienzan a calcular los vectores z y o


z0 = [0; 0; sym(1)];
o0 = [0; 0; 0];

for i = 1:link_i
eval(['z' num2str(i) ' = T' num2str(i) '(1:3, 3);']);
eval(['o' num2str(i) ' = T' num2str(i) '(1:3, 4);']);
end

% calcular resta de o_n - o_i-1


for i = 1:link_i
eval(['o' num2str(i) '_dif = o' num2str(link_i) ' - o' num2str(i-1) ';']);
end

% calcula el Jacobiano
for i = 1:link_i
if (rho(i) == 0) % si articulación i es prismática
J(1:3, i) = eval(['z' num2str(i-1) ';']);
J(4:6, i) = [0; 0; 0];
else % si la articulación es rotatoria
J(1:3, i) = eval(['cross(z' num2str(i-1) ', o' num2str(i) '_dif);']);
J(4:6, i) = eval(['z' num2str(i-1)]);
end
end
if (link_i < r)
for i = link_i+1:r
J(1:6, i) = [0; 0; 0; 0; 0; 0];
end
end
Jv = J(1:3, :);
Jw = J(4:6, :);
end
 
Una vez que se tiene guardado el programa JacobianoEslabon_i.m , ya es posible crear un
programa para calcular la matriz de inercia D(q) para algún manipulador. La matriz de inercia se
calcula con el programa CalculaMatrizInercia.m del código ??prog:CalculaMatrizInercia, el
cual aplica directamente la Ecuación (B.11). El único parámetro de entrada a este programa es la
tabla de parámetros DH para la configuración del manipulador que se desea encontrar su matriz de
inercia, y la salida de la función es la matriz de inercia misma.

 Programa B.27: CalculaMatrizInercia.m


function D = CalculaMatrizInercia(TablaDH)
[r, c] = size(TablaDH);
% se definen variables de masas e inercias de los eslabones
for i = 1:r
eval(['syms m' num2str(i)]);
eval(['syms I' num2str(i)]);
end

Di = 0;
for i = 1:r
[Jvi, Jwi, Ri] = JacobianoEslabon_i(TablaDH, i);
eval(['mi = m' num2str(i) ';']);
eval(['Ii = I' num2str(i) ';']);
Di = Di + mi*Jvi'*Jvi + Jwi'*Ri*Ii*Ri'*Jwi;
end

UNISON, MCE Control de Robots Luis Arturo García Delgado


236

D = simplify(Di);
end
 
Para comprobar que el programa B.27: CalculaMatrizInercia.m funciona adecuadamente, lo
probaremos con el cálculo de la matriz de inercia para el manipulador codo plano de dos-eslabones.
Para ello utilice las siguientes instrucciones
% pkg load symbolic % for octave only
syms a1 a2 q1 q2 real
% la tabla de parámetros DH del manipulador codo es la siguiente:
TablaDH = [a1 0 0 q1 1;
a2 0 0 q2 1]

D = CalculaMatrizInercia(TablaDH)

El resultado es el siguiente
D =
I1 + I2 + a21 ∗ m2 + 2 ∗ a1 ∗ lc2 ∗ m2 cos(q2 ) + lc1
2 2 2
 
∗ m1 + lc2 ∗ m2 I2 + a1 ∗ lc2 ∗ m2 ∗ cos(q2 ) + lc2 ∗ m2
2 2
I2 + a1 ∗ lc2 ∗ m2 ∗ cos(q2 ) + lc2 ∗ m2 I2 + lc2 ∗ m2

B.9.2. Programas para calcular la energía potencial


La energía potencial del manipulador se obtiene mediante la Ecuación (B.12). Para calcular
dicha ecuación se necesitan calcular previamente los vectores rci , que son los vectores que indican
las coordenadas del centro de masa del eslabón i con respecto al origen del marco inercial. Entonces,
antes de calcular la energía potencial se debe diseñar un programa que calcule los vectores rci para
la configuración de manipulador que se indique. El programa Calcula_rci.m que se muestra
en el código B.28 encuentra el vector rci para un eslabón i indicado. Los parámetros de entrada
a esta función son TablaDH que es la tabla de parámetros DH que indican la configuración del
manipulador especificado y link_i que hace referencia al número de eslabón al que se le desea
encontrar el vector rci . El programa genera automáticamente las variables simbólicas que hacen
referencia a las distancias desde el origen del coordenadas de cada marco DH al centro de masa de
cada eslabón, desde 1 hasta i. Por supuesto la salida de esta función es el vector rci .

 Programa B.28: Calcula_rci.m


function rci = Calcula_rci(TablaDH, link_i)
[r, c] = size(TablaDH);
a = TablaDH(:,1);
alfa = TablaDH(:,2);
d = TablaDH(:,3);
teta = TablaDH(:,4);
rho = TablaDH(:,5);

% distancia al centro de masa del eslabón i


eval(['syms lc' num2str(link_i) ' real']);
eval(['lci = lc' num2str(link_i) ';']);
if (a(link_i) ~= 0)&&(rho(link_i))
a(link_i) = lci;
end
if (d(link_i) ~= 0)&&(rho(link_i))
d(link_i) = lci;
end

Ti = 1;
for i = 1:link_i
A = ADH(a(i), alfa(i), d(i), teta(i));
Ti = Ti*A;
end

Luis Arturo García Delgado Control de Robots UNISON, MCE


237

rci = Ti(1:3, 4);


end
 
Una vez creado el programa Calcula_rci.m , se puede crear un programa para calcular la
energía potencial donde se aplica de forma casi directa la Ecuación (B.12). Tenga en cuenta que el
término g T de la Ecuación (B.12) es un vector que indica la dirección de actuación de la fuerza de
gravedad (es decir, la dirección vertical del mundo) con respecto al marco 0 DH del manipulador.
Por ejemplo, si el manipulador codo plano se mueve en un plano horizontal, entonces el vector de
gravedad estará alineado con el eje z0 , de manera que g = (0, 0, g), y el robot tiene energía potencial
igual a cero; pero si el manipulador se puede mover en un plano vertical, el eje z0 del manipulador
apuntará en una dirección horizontal (tal vez hacia afuera de la página) y el vector de gravedad
estará alineado con el eje y0 , de modo que g = (0, g, 0). Tomando en cuenta esta consideración,
se puede ahora diseñar el programa EnergiaPotencial.m mostrado en el código B.29, el cual
utiliza como parámetros de entrada TablaDH que es la tabla de parámetros DH del manipulador
al que se le desea calcular la energía potencial y vg que es un vector que expresa la dirección de
actuación del vector de gravedad con respecto al eje z0 del manipulador en cuestión. La salida de
este programa es la energía potencial expresada de manera simbólica.

 Programa B.29: EnergiaPotencial.m


function P = EnergiaPotencial(TablaDH, vg)
% vg es un vector de 3x1 que da la dirección de actuación del vector de
% gravedad, por ejemplo vg = [0; 0; 1], o vg = [0; 1; 0]
syms g real
[r, c] = size(TablaDH);
gg = g*vg;
P = 0;
for i = 1:r
eval(['syms m' num2str(i) ' real']);
mi = eval(['m' num2str(i) ';']);
rci = Calcula_rci(TablaDH,i);
P = P + mi*gg'*rci;
end
end
 
Para comprobar que el programa B.29: EnergiaPotencial.m funciona adecuadamente, lo
probaremos con el cálculo de la energía potencial para el manipulador codo plano de dos-eslabones.
Para ello utilice las siguientes instrucciones
P = EnergiaPotencial(TablaDH, [0; 1; 0])

El resultado es el siguiente
P =
g*lc1*m1*sin(q1) + g*m2*(a1*sin(q1) + lc2*sin(q1)*cos(q2) + lc2*sin(q2)*cos(q1))

B.9.3. Trabajo para el alumno


Como trabajo para el alumno se dejan los siguientes ejercicios:

Para calcular las ecuaciones dinámicas de Euler-Lagrange en forma vector-matricial, como en


la Ecuación (B.15), además de la matriz de inercia D(q), es necesario calcular la matriz de
fuerzas centrífugas y de Coriolis C(q, q̇) y el vector de pares gravitacionales g(q).

1. Diseñe un programa para calcular los símbolos de Christoffel de la Ecuación (B.14). Note
que, para una k fija, tenemos cijk = cjik , lo que reduce el esfuerzo involucrado en el
cálculo de estos símbolos en un factor de aproximadamente la mitad.

UNISON, MCE Control de Robots Luis Arturo García Delgado


238

2. Utilizando los símbolos de Christoffel cijk calculados y variables simbólicas q̇i , para i =
1, . . . , n, diseñe una función para formar la matriz de fuerzas centrífugas y de Coriolis
C(q, q̇), de acuerdo con la Ecuación (B.16).
3. Cree una función para calcular el vector de pares gravitacionales g(q) de la Ecuación
(B.17), donde cada elemento de este vector se calcula mediante la Ecuación (B.13).
Como ayuda para resolver esto, las derivadas parciales las puede obtener en MATLAB
mediante la instrucción diff .

Considere un manipulador Crtesiano de 3-eslabones, Obtenga las ecuaciones de movimiento


en la forma matricial.

Obtenga las ecuaciones de Euler-Lagrange para el robot plano RP de la Figura 3.14.

Obtenga las ecuaciones de Euler-Lagrange para el robot plano RPR de la Figura 5.14.

Obtenga las ecuaciones Euler-Lagrange de movimiento de para el robot de tres-eslabones RRR


de la Figura 5.13.

Luis Arturo García Delgado Control de Robots UNISON, MCE


239

B.10. Práctica 10. Planificación de Ruta Mediante Campos Poten-


ciales Artificiales
Una forma de guiar un robot de una configuración inicial qs a una configuración final qf dada,
mientras se evaden colisiones con obstáculos es la conocida como campos potenciales artificiales.
El principio de funcionamiento del enfoque de campos potenciales es tratar al robot como una
partícula puntual bajo la influencia de un campo potencial artificial U , el cual se debe construir
buscando que haya un solo mínimo global en qf y de ser posible se busca que no haya mínimos
locales o puntos silla de montar.
Una función potencial atractiva adecuada es la que combina un potencial de pozo parabólico
cerca de la posición meta para que la posición meta sea continuamente diferenciable y un potencial
de pozo cónico lejos de la posición meta para que la fuerza lejos del origen crezca linealmente. Dicho
campo se puede definir mediante
(
1
− oi (qf )∥2 ;
2 ζi ∥oi (q) ∥oi (q) − oi (qf )∥ ≤ d
Uatt,i (q) = 1 2
(B.18)
dζ∥oi (q) − oi (qf )∥ − 2 ζi d ; ∥oi (q) − oi (qf )∥ > d

en la cual d es la distancia que define la transición del pozo cónico al parabólico, ζi es una constante
que determina la influencia relativa del campo potencial sobre el robot, oi (q) denota la posición del
origen del marco i en la configuración actual q, mientras oi (qf ) representa la posición del origen del
marco i en la configuración final. La fuerza del espacio de trabajo para oi está dada por

−ζi (oi (q) − oi (qf ));
 ∥oi (q) − oi (qf )∥ ≤ d
Fatt,i (q) = (oi (q) − oi (qf )) (B.19)
−dζ
 ; ∥oi (q) − oi (qf )∥ > d
∥oi (q) − oi (qf )∥

La energía potencial atractiva (B.18) se puede programar en una función en MATLAB como
en el programa B.30, donde se reciben como parámetros oq que es oi (q), oqf que representa
oi (qf ), zeta que es la ganancia ζi y d que es la disctancia d de transición entre los dos tipos de
potenciales atractivos. La función entrega como resultado el potencial atractivo U .

 Programa B.30: Uatt.m


function U = Uatt(oq, oqf, zeta, d)
dif_o = oq - oqf;
dist_o = norm(dif_o);
if dist_o <= d
U = 0.5*zeta*dist_o^2;
else
U = d*zeta*dist_o - 0.5*zeta*d^2;
end
end
 
La fuerza atractiva (B.19) se puede programar en una función en MATLAB como en el programa
B.31, donde se reciben los mismos parámetros que en el programa B.30. La función entrega como
resultado la fuerza atractiva F .

 Programa B.31: Fatt.m


function F = Fatt(oq, oqf, zeta, d)
dif_o = oq - oqf;
dist_o = norm(dif_o);
if dist_o <= d
F = -zeta*dif_o;
else
F = -d*zeta*(dif_o/dist_o);

UNISON, MCE Control de Robots Luis Arturo García Delgado


240

end
end
 
Para el potencial repulsivo, se puede definir una función repulsiva que vale cero en el perímetro
del área de influencia del obstáculo (distancia ρ0 desde cualquier punto del obstáculo) y crece el
potencial exponencialmente conforme el robot se aproxime más a la frontera del obstáculo. Esta
función se define como
 2
1 1

1η

− ρ(oi (q)) ≤ ρ0
Urep,i (q) = 2 i ρ(oi (q)) ρ0 (B.20)

0 ρ(oi (q)) > ρ0

en la cual ρ(oi (q)) es la distancia más corta entre oi y cualquier obstáculo en el espacio de trabajo,
ηi es una constante que controla la influencia relativa del potencial repulsivo en el punto oi (q). La
fuerza repulsiva en el espacio de trabajo es igual al gradiente negativo de Urep,i (q) y está dada por
 
1 1 1 oi (q) − pcl

η − ρ(oi (q)) ≤ ρ0

i
Frep,i (q) = ρ(oi (q)) ρ0 ρ2 (oi (q)) ∥oi (q) − pcl ∥ (B.21)

0 ρ(oi (q)) > ρ0

donde pcl es un vector de coordenadas del punto en la frontera del obstáculo más cercano a oi (q).
Para definir en MATLAB un obstáculo en forma de polígono convexo, puede crear un vector
donde cada renglón contenga el vector de coordeadas de cada vértice del obstáculo, por ejemplo,
para representar un obstáculo con tres vértices v1 = (1.5, 1), v2 = (2, 2) y v3 = (1, 2), se puede
lograr mediante
Obs1 = [1.5 1; % vértice 1
2 2; % vértice 2
1 2]; % vértice 3

Observe que la función potencial repulsiva (??) y la fuerza repulsiva (B.21) necesitan para
calcularlas definir la distancia ρ(oi (q)) entre el punto oi (q) y el punto más cercano del obstáculo
pcl . Por lo tanto, antes de calcular las funciones del potencial y de la fuerza repulsiva, es ne-
cesario programar una función que encuentre la distancia ρ(oi (q)) y las coordenadas de pcl . El
programa B.32 resuelve el problema de encontrar la distancia ρ(oi (q)) o rho_oi y el punto
pcl o p_cl . La función dist_obst_oi recibe como parámetros de entrada las coordenadas
del origen del marco oi (q) y el vector de coordenadas de vértices del obstáculo. Observe que es-
te programa tiene una función principal dist_obst_oi(oi, obst) y una función secundaria
point_to_line_distance(pt, v1, v2) . La función point_to_line_distance(pt, v1, v2)
encuentra el punto más cercano al obstáculo para cada línea definida únicamente entre dos vértices,
y la función dist_obst_oi(oi, obst) calcula el punto más cercano en cada una de las líneas
que forman el polígono y dentro de todos los puntos calculados encuentra la distancia mínima y las
coordenadas de pcl .

 Programa B.32: dist_obst_oi.m


function [rho_oi, p_cl] = dist_obst_oi(oi, obst)
nv = length(obst); % número de vértices

% se calcula la distancia mínima entre cada línea formada por un par de


% vértices y el origen oi
for i = 1:nv-1
v1 = obst(i,:);
v2 = obst(i+1,:);
[d(i), Pcl(:,i)] = point_to_line_distance(oi', v1', v2');
end

Luis Arturo García Delgado Control de Robots UNISON, MCE


241

v1 = obst(i+1,:);
v2 = obst(1, :);
[d(i+1), Pcl(:,i+1)] = point_to_line_distance(oi', v1', v2');

% calcula la mínima de las distancias


rho_oi = min(d);
index = find(d == rho_oi);
p_cl = Pcl(:,index(1));
end

function [distance, p_cl]=point_to_line_distance(pt, v1, v2)


%Calculate distance between a point and a line in 2D or 3D.
% syntax:
% distance = point_to_line(pt, v1, v2)
% pt is a nx3 matrix with xyz coordinates for n points
% v1 and v2 are vertices on the line (each 1x3)
% d is a nx1 vector with the orthogonal distances

%prepare inputs
v1=v1(:)';%force 1x3 or 1x2
v2=v2(:)';%force 1x3 or 1x2
if length(v1)==2,v1(3)=0; end%extend 1x2 to 1x3 if needed
if length(v2)==2,v2(3)=0; end%extend 1x2 to 1x3 if needed
if size(pt,2)==2,pt(1,3)=0;end%extend nx2 to nx3 if needed
v1_ = repmat(v1,size(pt,1),1);
v2_ = repmat(v2,size(pt,1),1);

%actual calculation
a = v1_ - v2_;
b = pt - v2_;
d = sqrt(sum(cross(a,b,2).^2,2)) ./ sqrt(sum(a.^2,2));

% Normalize couple of vectors


ae = a / norm(a);
be = b / norm(b);
% Two cross products give direction of perpendicular
h = cross(ae,cross(ae,be));
if norm(h)==0
he = h;
else
he = h / norm(h);
end
% Perpendicular is its base vector times length
perp = he*d;
intersec_with_line = pt + perp;

% se identifica el punto más cercano P_cl al obstáculo en dentro de la


% sección de línea delimitada por los vértices v1 y v2
dist_v1_pt = norm(v1-pt);
dist_v2_pt = norm(v2-pt);
dist_v1_v2 = norm(v1-v2);
dist_v1_int = norm(v1 - intersec_with_line);
dist_v2_int = norm(v2 - intersec_with_line);
max_int = max(dist_v1_int, dist_v2_int);

if max_int>dist_v1_v2
distance = min(dist_v1_pt, dist_v2_pt);
else
distance = min(min(dist_v1_pt, dist_v2_pt), d);
end
switch distance
case dist_v1_pt

UNISON, MCE Control de Robots Luis Arturo García Delgado


242

p_cl = v1;
case dist_v2_pt
p_cl = v2;
otherwise
p_cl = intersec_with_line;
end
end
 
La energía potencial repulsiva (B.20) se puede programar en una función en MATLAB como
en el programa B.33, donde se reciben como parámetros oi que es oi (q), obst que son las
coordenadas de los vértices que forman el polígono del obstáculo, rho0 que es la distancia de
acción repulsiva del obstáculo ρ0 y por último eta que denota la constante ηi . La función entrega
como resultado el potencial repulsivo U .

 Programa B.33: Urep.m


function U = Urep(oi, obst, rho0, eta)
[rho_oi, p_cl] = dist_obst_oi(oi, obst);
if rho_oi < rho0
U = 0.5*eta*(1/rho_oi - 1/rho0)^2;
else
U = 0;
end
end
 
La fuerza repulsiva (??) se puede programar en una función en MATLAB como en el programa
B.34, donde se reciben los mismos parámetros que en el programa B.33. La función entrega como
resultado la fuerza repulsiva F .

 Programa B.34: Frep.m


function F = Frep(oi, obst, rho0, eta)
[rho_oi, p_cl] = dist_obst_oi(oi, obst);
if length(oi)==2, p_cl = p_cl(1:2); end
dif_obst_oi = oi - p_cl;
nabla_rho = dif_obst_oi/rho_oi;
if rho_oi < rho0
F = eta*(1/rho_oi - 1/rho0)*(1/rho_oi^2)*nabla_rho;
else
F = 0*oi;
end
end
 
Para comprobar que el funcionamiento de los programas creados, o tembién, para visualizar
gráficamente el concepto de campo potencial y la fuerza definida, puede ejecutar las siguiente

Programa B.35: Programa para visualizar los campos potenciales y la dirección de los vectores de
fuerza
clear all
% se define Obstáculo 1
Obs1 = [1.5 1; % vértice 1
2 2; % vértice 2
1 2]; % vértice 3

% parámetros de funciones potenciales


d = 2;
zeta = 0.5;
eta = 0.5;
rho0 = 0.4;

Luis Arturo García Delgado Control de Robots UNISON, MCE


243

o_f = [-1; 1]; % posición meta


[X,Y] = meshgrid(-2.2:.1:2.2);
for i = 1:length(X)
for j = 1:length(Y)
o_2 = [X(i,j); Y(i,j)];
Z(i,j) = Uatt(o_2, o_f, zeta, d) + Urep(o_2, Obs1, rho0, eta);
if Z(i,j) > 4, Z(i,j) = 4; end % saturación del campo potencial
F = Fatt(o_2, o_f, zeta, d) + Frep(o_2, Obs1, rho0, eta);
cota_F = 1.2; % cota para saturar la fuerza y apreciar las flechas
if (norm(F) > cota_F) % Saturación de la fuerza
magF = norm(F);
F = cota_F*(F/magF);
end
DX(i,j) = F(1);
DY(i,j) = F(2);
end
end

figure
surf(X,Y,Z) % grafica el campo en tres dimensiones
axis equal
xlabel('x'); ylabel('y'); zlabel('U')
title('Campo potencial')

figure
contour(X,Y,Z) % grafica los contornos equipotenciales
hold on
quiver(X,Y,DX,DY) % grafica los vectores de fuerza
fill(Obs1(:,1), Obs1(:,2),'r') % dibuja el obstáculo poligonal

xlabel('x'); ylabel('y')
title('Fuerzas en el espacio de trabajo')
 
Al ejecutar el programa B.35, se visualizan las gráficas que se muestran en la Figura B.23.
Observe que en el Programa B.35 se limitó en amplitud (saturó) el campo potencial, esto se hizo
para poder apreciar adecuadamente la gráfica del campo potencial B.23a), ya que en realidad el
campo repulsivo tiende a infinito en las fronteras del obstáculo. La saturación del campo se observa
en la gráfica B.23a) aplanando el potencial del obstáculo en forma de triángulo. Así mismo, se saturó
el vector de fuerza, para valores que superen la constante cota_F . Esto se hizo también para poder
apreciar las flechas de los vectores de fuerza tanto atractivas como repulsiva.

Planificación mediante Gradiente en Decenso


El torque articular artificial total que actúa en el brazo es la suma de los torques articulares
artificiales que resulta de todos los potenciales atractivos y repulsivos
X X
τ (q) = JoTi (q)Fatt,i (q) + JoTi (q)Frep,i (q) (B.22)
i i

El algoritmo del gradiente en decenso construye una secuencia de configuraciones, q 0 , q 1 , . . . , q m


tal que q 0 = qs y q m = qf , pero en este caso la k-ésima iteración está dada mediante

τ (q k )
q k+1 = q k + αk (B.23)
∥τ (q k )∥

donde el escalar αk determina el tamaño del paso en la k-ésima iteración, y el algoritmo termina
cuando ∥q k −qf ∥ < ϵ, donde seleccionamos que ϵ sea una constante suficientemente pequeña, basados
en los requerimientos de la tarea.

UNISON, MCE Control de Robots Luis Arturo García Delgado


244

(a) (b)

Figura B.23: a) Visualización gráfica del campo potencial del ejemplo del Programa B.35; b) vectores
de fuerza desarrollados en el Programa B.35.

Con el propósito de poner a prueba el algoritmo del planificador mediante gradiente en decenso,
se diseñará un programa donde se simule la planificación de ruta para llevar un manipulador plano
de dos eslabones desde una configuración inicial a una configuración final obtenida mediante la
cinemática inversa de los puntos x y y deseados para el origen del marco 2. En este programa se
definieron funciones anónimas de MATLAB para determinar el origen de cada marco en la configu-
ración actual, las fuerzas, pares y Jacobianos de cada marco en la configuración actual, es decir, que
dependen de q actual. En el programa se realiza una graficación en la que se van actualizando las
posturas de los eslabones y articulaciones de acuerdo al paso actual. Para el algoritmo planificador
del gradiente en decenso (B.23) que se implementó, se consideró una constante αk variable, en la que
entre más lejos esté la configuración actual de la deseada, será mayor el valor de la constante para
acercarse más rápido. Entre más cerca se encuentre la configuración actual de la final, se reducirá la
constante α para que el algoritmo converja al valor final. El Programa B.36 toma en cuenta todas
las consideraciones anteriores. Además despliega una gráfica de la configuración inicial, que se va
actualizando en cada paso de simulación hasta llegar a la configuración final. Cuando el algoritmo
termina, es decir, cuando ∥q k − qf ∥ < ϵ, se despliega una gráfica con los valores articulares desa-
rrollados durante la simulación. En la figura B.24a) se muestra un cuadro de la gráfica del robot
durante el proceso de simulación, observe que se señala con una × la posiciíon deseada en el espacio
de trabajo, que el bosquejo del manipulador se va actualizando en cada paso de simulación, pero la
ruta recorrida por el origen o2 se va quedando impresa en la gráfica. En la Figura B.24b) se muestra
el resultado de los valores articulares recorridos hasta alcanzar la configuración final.

Programa B.36: Planificador mediante decenso del gradiente para un manipulador plano de dos
eslabones en presencia de un obstáculo.
% Este programa es un planificador de ruta que utiliza campos potenciales
% artificales
clear all

% parámetros del robot


a1 = 1;
a2 = 1;

qs = [0; 0]; % configuración inicial

% resuelve la cinemática inversa para los puntos xd, yd

Luis Arturo García Delgado Control de Robots UNISON, MCE


245

xd = -1;
yd = 1;
D = (xd^2 + yd^2 - a1^2 - a2^2)/(2*a1*a2);
q2d = atan2(sqrt(1-D^2), D);
q1d = atan2(yd, xd) - atan2(a2*sin(q2d), a1+a2*cos(q2d));

qf = [q1d; q2d]; % Configuración deseada

% Se define el obstáculo 1
Obs1 = [1.6 1; % vértice 1
2.0 2; % vértice 2
1.2 2]; % vértice 3

% parámetros de funciones potenciales


d = 1;
zeta1 = 2;
zeta2 = 1;
eta1 = 1;
eta2 = 3;
rho01 = 0.4;

% Se definen los orígenes de los marcos DH


o0 = [0; 0];
o1 = @(q)([a1*cos(q(1)); a1*sin(q(1))]);
o2 = @(q)([a1*cos(q(1))+a2*cos(q(1)+q(2)); a1*sin(q(1))+a2*sin(q(1)+q(2))]);

% Se define la fuerza atractiva


Fatt1 = @(q) (Fatt(o1(q), o1(qf), zeta1, d));
Fatt2 = @(q) (Fatt(o2(q), o2(qf), zeta2, d));

% Se define la fuerza repulsiva


Frep1 = @(q) (Frep(o1(q), Obs1, rho01, eta1));
Frep2 = @(q) (Frep(o2(q), Obs1, rho01, eta2));

% Se definen las matrices Jacobianas


Jo1 = @(q) ([-sin(q(1)) 0; cos(q(1)) 0]);
Jo2 = @(q) ([-sin(q(1))-sin(q(1)+q(2)) -sin(q(1)+q(2)); ...
cos(q(1))+cos(q(1)+q(2)) cos(q(1)+q(2))]);

% Se definen los torques articulares atractivo y repulsivo


Tatt1 = @(q) (Jo1(q)'*Fatt1(q));
Tatt2 = @(q) (Jo2(q)'*Fatt2(q));
Trep1 = @(q) (Jo1(q)'*Frep1(q));
Trep2 = @(q) (Jo2(q)'*Frep2(q));
Tau = @(q) (Tatt1(q) + Tatt2(q) + Trep1(q) + Trep2(q));
tau = @(q, qf) Contr_PotField(q,qf);
% Configuración inicial de los eslabones
link1 = [o0 o1(qs)];
link2 = [o1(qs) o2(qs)];
h = figure();
ln1 = plot(link1(1,:), link1(2,:)); % ln1 es el manejador de la línea 1
axis([-2.2 2.2 -2.2 2.2])
grid on
hold on
ln2 = plot(link2(1,:), link2(2,:)); % ln2 es el manejador de la línea 2
joints = plot(link1(1,:), link1(2,:), 'o'); % manejador articulaciones
al = animatedline(link2(1,2), link2(2,2), 'Color', 'b', 'LineWidth', 1);
fill(Obs1(:,1), Obs1(:,2),'r') % dibuja obstáculo
plot(xd, yd, 'x')
pause(0.1)

q = qs;

UNISON, MCE Control de Robots Luis Arturo García Delgado


246

k = 1;
q1(k) = q(1);
q2(k) = q(2);
alfa(k) = 0.05;
epsilon = 0.01;
while norm(q - qf)>epsilon
k = k + 1;
% cálculo de alfa(k)
dist = norm(q - qf);
if dist > 2
alfa(k) = 0.05;
elseif dist > 1
alfa(k) = 0.03;
else
alfa(k) = 0.02;
end
q = q + alfa(k)*Tau(q)/norm(Tau(q));
q1(k) = q(1);
q2(k) = q(2);
link1 = [o0 o1(q)];
link2 = [o1(q) o2(q)];
[Link] = 'link1(1,:)';
[Link] = 'link1(2,:)';
[Link] = 'link2(1,:)';
[Link] = 'link2(2,:)';
[Link] = 'link1(1,:)';
[Link] = 'link1(2,:)';
refreshdata

addpoints(al, link2(1,2), link2(2,2));


drawnow limitrate % actualiza la graficación de nuevos datos
pause(0.001)
end

K = 1:k;
figure()
plot(K, q1, K, q2)
grid on
xlabel('paso')
ylabel('\theta_1, \theta_2')
 

Trabajo del alumno. El alumno debe desarrollar el algoritmo de planificación mediante gra-
diente en decenso para:

El manipulador esférico de tres eslabones

El manipulador SCARA

El manipulador cilíndrico

El manipulador cartesiano

El manipulador Stanford

Luis Arturo García Delgado Control de Robots UNISON, MCE


247

(a) (b)

Figura B.24: Simulación del planificador del gradiente en decenso para el manipulador plano de
dos eslabones. a) Simpulación en proceso; b) gráfica de los valores articulares desarrollados en la
simulación.

UNISON, MCE Control de Robots Luis Arturo García Delgado


248

B.11. Práctica 11. Control de Posición de Manipuladores en Modo


Par
Considere el modelo dinámico para un robot manipulador de n-grados de libertad de la forma
D(q)q̈ + C(q, q̇)q̇ + g(q) = τ
donde D(q) ∈ Rn×n es la matriz de masas e inercias, C(q, q̇)q̇ ∈ Rn es el vector de fuerzas centrífugas
y de Coriolis, g(q) ∈ Rn es el vector de pares gravitacionales y τ ∈ Rn es el vector de fuerzas y
torques externos aplicados en las articulaciones. Los vectores q, q̇, q̈ representan la posición, velocidad
y aceleración articular.
Para el presente modelo, las variables de estado son q, q̇, así que el modelo dinámico en variable
de estado se puede escribir
" # " #
d q q̇
= −1 [τ − C(q, q̇)q̇ − g(q)] (B.24)
dt q̇ D(q)
El objetivo del control de posición consiste en encontrar una ley de control τ tal que el vector
de posiciones articulares q tienda a alcanzar una posición deseada de referencia qd de forma estable.
Definimos la variable error de posición como
q̃(t) = qd − q(t)
por lo tanto, el objetivo de control se puede redefinir como, a través de la ley de control, lograr que
lı́m q̃(t) = 0
t→∞
El vector τ que es la entrada de fuerzas y pares al robot, debe calcularse de tal manera que
se logre el objetivo de control, por lo tanto, esta entrada también se puede conocer como entrada
de control, y existen infinidad de posibilidades de diseño de la entrada de control que es lo que se
conoce como ley de control. La Figura B.25 muestra un diagrama de bloques general para un control
de posición en lazo cerrado.

Figura B.25: Diagrama de bloques en lazo cerrado de un control de posición.

B.11.1. Modelo dinámico de un Manipulador Codo Plano


El modelo dinámico de la Ecuación (B.24), requiere el cálculo de las matrices D(q), C(q, q̇) y
el vector g(q). Para el caso del manipulador codo plano, estas matrices y vectores están definidas
como
" #
I1 + I2 + a21 m2 + 2a1 lc2 m2 c2 + lc1
2 m + l2 m
1
2
c2 2 I2 + a1 lc2 m2 c2 + lc2 m2
D(q) = 2 m 2 m (B.25)
I2 + a1 lc2 m2 c2 + lc2 2 I2 + lc2 2
" #
−m2 a1 lc2 s2 q̇2 −m2 a1 lc2 s2 (q̇1 + q̇2 )
C(q, q̇) = (B.26)
m2 a1 lc2 s2 q̇1 0
" #
(m1 lc1 + m2 a1 )gs1 + m2 lc2 gs12
g(q) = (B.27)
m2 lc2 gs12

Luis Arturo García Delgado Control de Robots UNISON, MCE


249

B.11.2. Parámetros físicos del modelo dinámico de un Manipulador Codo Plano


Para poder simular la dinámica de un sistema de forma muy aproximada, es necesario sustituir
los valores numéricos de los parámetros necesarios para calcular la matriz de masas e inercias, a
partir de los cuales se puede determinar también la matriz de fuerzas centrífugas y de Coriolis, así
como el vector de pares gravitacionales.
Como ejemplo de pruebas de un manipulador de configuración codo-plano, se utilizarán los
parámetros de un robot reportado en la literatura []. Se trata del robot CICESE de 2 grados-de-
libertad. Dichos parámetros se muestran en la Tabla B.2.

Tabla B.2: Tabla de parametros físicos manipulador codo plano.

Descripción Notación Valor Unidades


Longitud del eslabón 1 a1 0.45 m
Longitud del eslabón 2 a2 0.45 m
Distancia al centro de masa (eslabón 1) lc1 0.091 m
Distancia al centro de masa (eslabón 2) lc2 0.048 m
Masa del eslabón 1 m1 23.902 kg
Masa del eslabón 2 m2 3.88 kg
Inercia rel. al centro de masa (eslabón 1) I1 0.091 kg m2
Inercia rel. al centro de masa (eslabón 2) I2 0.048 kg m2
Aceleración de la gravedad g 9.81 m/s2

B.11.3. Control PD
La ley de control que permite un control proporcional derivativo (PD) de un manipulador de
n-grados de libertad está dada mediante
τ = Kp q̃ − Kv q̇ (B.28)
donde Kp , Kv ∈ Rn×n son matrices diagonales definidas positivas y son la matriz de ganancias de
control proporcional (ganancias de posición) y matriz de ganancias de control derivativo (ganancias
de velocidad), respectivamente. La Figura B.26 muestra el control PD de posición en forma de
diagrama de bloques.

Figura B.26: Diagrama de bloques en lazo cerrado de un control PD de posición.

B.11.4. Control PD con compensación de gravedad


Para robots manipuladores con término de gravedad, es decir, g(q) ̸= 0, la ley de control PD
de la Ecuación (B.28) no logra llevar el error q̃ a cero, quedando un error constante en estado
estacionario.
Una estrategia para seguir utilizando un controlador tipo PD que logre que q̃ tienda a cero
en estado estacionario, es sumar un lazo de realimentación del estado q que haga que el contro-
lador compense los términoa gravitacionales del modelo dinámico. Una de tales propuestas es el

UNISON, MCE Control de Robots Luis Arturo García Delgado


250

controlador PD con compensación de gravedad

τ = Kp q̃ + Kv q̃˙ + g(q) (B.29)

Note que, a diferencia del controlador PD (B.28) que no requiere ningún conocimiento de la es-
tructura del modelo del robot, el controlador PD con compensación de gravedad (B.29) necesita el
conocimiento de la construcción del vector g(q) para realimentar dicho término.

Figura B.27: Diagrama de bloques en lazo cerrado de un control PD de posición con compensación
de gravedad.

B.11.5. Programas para simulación


Para simular la dinámica de un sistema (en este caso un manipulador) expresado en modelo
de espacio de estado (B.24), con matrices y vectores expresados en las Ecuaciones (B.25)-(B.27),
con parámetros físicos expresados en la Tabla B.2, se debe generar una función que reciba como
entradas el estado actual del sistema q, q̇, la entrada de control τ y si es necesario alguna otra
variable necesaria para la solución del modelo dinámico, como en este caso la referencia de posición
qd . Como salida, el programa debe entregar las derivadas de las variables de estado, es decir, debe
regresar el vector " # " #
d q q̇
= (B.30)
dt q̇ q̈
El programa de MATLAB B.37 recibe como parámetro de entrada la señal de control τ , los
vectores de posición y velocidad articular q y q̇, así como el vector de posiciones articulares deseada
qd . El resultado que entrega el programa es el vector de derivadas de las variables de estado, como
el de la Ecuación (B.30).

 Programa B.37: Dinamics_Planar_Elbow.m


function [dq, dqp] = Dinamics_Planar_Elbow(tau, q, qp)
% constantes del robot
l1=0.450;
%l2=0.450;
lc1=0.091;
lc2=0.048;
m1=23.902;
m2=3.880;
i1=1.266;
i2=0.093;

% Se calcula matriz de inercias


d11 = m1*(lc1)^2+m2*((l1)^2+(lc2)^2+2*l1*lc2*cos(q(2)))+i1+i2;

Luis Arturo García Delgado Control de Robots UNISON, MCE


251

d12 = m2*((lc2)^2+l1*lc2*cos(q(2)))+i2;
d22 = m2*(lc2)^2+i2;
D = [d11 d12; d12 d22];

% Matriz de fuerzas centrífugas y de Coriolis


c11 = -m2*l1*lc2*sin(q(2))*qp(2);
c12 = -m2*l1*lc2*sin(q(2))*(qp(1)+qp(2));
c21 = m2*l1*lc2*sin(q(2))*qp(1);
C = [c11 c12; c21 0];

% matriz de fuerzas gravitacionales


g1 = 9.81*((m1*lc1+m2*l1)*sin(q(1))+m2*lc2*sin(q(1)+q(2)));
g2 = 9.81*m2*lc2*sin(q(1)+q(2));
g = [g1; g2];

% Modelo dinámico
dq = qp;
dqp = inv(D)*(tau - C*qp - g);
dx = [dq; dqp];
end
 

1er Enfoque de Simulación: Método discreto


El primer enfoque de simulación consiste en resolver las integrales de q̇ y q̈ del modelo de estado
(B.24) mediante el método de la integral discreta.
La integral discreta se puede explicar de la siguiente manera. Primero considere que la función
f (t) es el resultado de la integral continua de otra función g(t), integrando en un intervalo de tiempo
de 0 a t, Z t
f (t) = g(t)dt
0
Ahora suponga que la función en tiempo continuo se evalúa sólo en instantes discretos de tiempo
de período T (por lo tanto cada incremento posible en el tiempo es ∆T = T ), es decir, f (t) sólo se
evalúa en los tiempos f (kT ), para k = 0, 1, 2, . . ., entonces, la integral continua que es una suma de
elementos infinitesimales de g(t)dt, en el caso discreto se puede interpretar como una sumatoria de
elementos discretos g(kT )∆T , es decir,
k
X
f (kT ) = g(nT )∆T (B.31)
n=0

La aplicación de la Ecuación (B.31) requiere que cada vez que se desee un nuevo valor de la integral
discreta se deba realizar toda la sumatoria de elementos g(nT )∆T desde n = 0 hasta el tiempo
actual n = k, lo que requiere gran almacenamiento en memoria y mayor tiempo de cómputo entre
mayor sea el tiempo actual de integración. Afortunadamente, si se desea calcular la integral discreta
para tiempos incrementales adyacentes (es decir, calcular el siguiente valor de f (kT )), esto se puede
lograr de una manera recursiva sumando el valor anterior de la integral f ((k − 1)T ) de la siguiente
manera
f (kT ) = f ((k − 1)T ) + g(kT )∆T (B.32)
Mediante la aplicación de la fórmula de la integral discreta recursiva se puede obtener una
aceptable aproximación de la solución numérica del sistema dinámico de control de robots mani-
puladores. La estrategia consiste en que de manera recursiva se debe calcular la entrada de control
τ con los valores actuales de q y q̇. Mediante el Programa B.37 se debe calcular el valor nuevo de
q̇(kT ) y q̈(kT ), y utilizando el método de integral discreta se deben integrar q̇(kT ) y q̈(kT ) para
obtener el nuevo valor de q(kT ) y q̇(kT ).

UNISON, MCE Control de Robots Luis Arturo García Delgado


252

El programa B.38: prog:Control_Planar_Elbow_Discrete.m realiza la simulación del con-


trol de un manipulador codo-plano, mediante un control tipo PD, de la Ecuación (B.28), para los
valores de constantes Kp = diag(180, 80) y Kv = diag(35, 15). El programa utiliza la integral dis-
creta para simular la integral de las derivadas q̇ y q̈ obtenidas a partir del Programa B.37. Como
resultado de la ejecusión de este programa se obtienen cuatro gráficas, a saber, q1 -q1d , q2 -q2d , q̇1 y
q̇2 , como se ve en la Figura B.28.

 Programa B.38: Control_Planar_Elbow_Discrete.m


% Control de Robot Codo Plano
clear all
% Datos del controlador
Kp = [180 0; 0 80]; % Matriz de ganancias proporcionales
Kv = [35 0; 0 15]; % Matriz de ganancias derivativas
qd = [pi/2; pi/4]; % Vector de posiciones articulares deseadas (de referencia)

Ts = 0.01; % Período de muestreo


t = 0:Ts:2; % Tiempo de simulación
q = [0; 0]; % Valores iniciales de q (vector de posición articular)
qp = [0; 0]; % Valores iniciales de qp (vector de velocidad articular)

for i = 1:length(t)
eq = qd - q; % error de posición articular
tau = Kp*eq - Kv*qp; % controlador PD

[dq, dqp] = Dinamics_Planar_Elbow(tau, q, qp); % evaluar dinámica sist.


q = q + dq*Ts; % Integración discreta de qp, se obtiene q nueva
qp = qp + dqp*Ts; % Integración discreta de qpp, se obtiene qp nueva

% Se almacenan valores en vectores para posteriormente graficarlos


q_1(i) = q(1);
qd_1(i) = qd(1);
q_2(i) = q(2);
qd_2(i) = qd(2);
qp_1(i) = qp(1);
qp_2(i) = qp(2);
end

%%
figure()
subplot(2,2,1)
plot(t, q_1, t, qd_1)
title('Regulación de q_1')
ylabel('q_{1d} y q_1')
xlabel('tiempo (seg)');

subplot(2,2,2)
plot(t, q_2, t, qd_2)
title('Regulación de q_2')
ylabel('q_{2d} y q_2')
xlabel('tiempo (seg)');

subplot(2,2,3)
plot(t, qp_1)
title('Velocidad angular qp_1')
ylabel('qp_{1}')
xlabel('tiempo (seg)');

subplot(2,2,4)
plot(t, qp_2)
title('Velocidad angular qp_2')

Luis Arturo García Delgado Control de Robots UNISON, MCE


253

ylabel('qp_2')
xlabel('tiempo (seg)');
 

Figura B.28: Diagrama de bloques en lazo cerrado de un control PD de posición con compensación
de gravedad.

De la gráfica para q̇2 de la Figura B.28 se puede observar en la parte inicial de la gráfica cierta
oscilación en q̇2 . Dicha oscilación se debe a que la integración discreta no es muy precisa. Para
mejorar la aproximación de integral discreta se puede recurrir a la integral trapezoidal, o a métodos
numéricos más precisos. Entre los métodos más precisos de calcular integrales están los llamados
ODE solvers (solucionadores de Ecuaciones Diferenciales Ordinarias) que se discute a continuación.

2o Enfoque de Simulación: Método ODE

Una Ecuación Diferencial Ordinaria (ODE) contiene una o más derivadas de una variable de-
pendiente, y, con respecto a una sola variable, t, usualmente referida como tiempo. El orden de la
ODE es igual a la derivada de mayor órden de y que aparezca en la ecuación. [?]
Para poder resolver un sistema ODE, se necesitan agrupar todas las variables de estado del
modelo dinámico en una sola variable vectorial. Como utilizamos como variables de estado q y q̇,
hay que redefinir el programa de modelo dinámico. Para ello sustituya la primera línea del Programa
B.37 por
function dx = Dinamics_Planar_Elbow_ode(tau, q, qp)

y renombre el programa como Dinamics_Planar_Elbow_ode.m .


El programa para simular (o resolver) el control PD de la dinámica del manipulador expresa-
da mediante el Programa Dinamics_Planar_Elbow_ode.m , se muestra a continuación como el
Programa B.39, nombrado Control_Planar_Elbow_ode.m .

UNISON, MCE Control de Robots Luis Arturo García Delgado


254

 Programa B.39: Control_Planar_Elbow_ode.m


% Control de Robot Codo Plano
clear all
% Datos del controlador
Kp = [180 0; 0 80]; % Matriz de ganancias proporcionales
Kv = [35 0; 0 15]; % Matriz de ganancias derivativas
qd = [pi/2; pi/4]; % Vector de posiciones articulares deseadas (de referencia)
eq =@(q) qd - q; % error de posición articular
tau = @(q,qp) (Kp*eq(q) - Kv*qp); % controlador PD

q = @(X) X(1:2); % función para seleccionar q de todas las var de edo


qp = @(X) X(3:4); % función para seleccionar qp de todas las var de edo
% función de la dinámica del sistema
dqdt = @(t,X) Dinamics_Planar_Elbow_ode(tau(q(X),qp(X)), q(X), qp(X));

% Se definen los parámetros de simulación


tspan = [0 2]; % tiempo de simulación (segundos)
X0 = [0; 0; 0; 0]; % estado inical = [q1_0; q2_0; qp1_0; qp2_0]

[t, X] = ode45(@(t,X) dqdt(t,X), tspan, X0); % solución sistema ODE

q_1 = X(:,1);
qd_1 = qd(1)+0*q_1;
q_2 = X(:,2);
qd_2 = qd(2)+0*q_2;
qp_1 = X(:,3);
qp_2 = X(:,4);

%%
figure()
subplot(2,2,1)
plot(t, q_1, t, qd_1)
title('Regulación de q_1')
ylabel('q_{1d} y q_1')
xlabel('tiempo (seg)');

subplot(2,2,2)
plot(t, q_2, t, qd_2)
title('Regulación de q_2')
ylabel('q_{2d} y q_2')
xlabel('tiempo (seg)');

subplot(2,2,3)
plot(t, qp_1)
title('Velocidad angular qp_1')
ylabel('qp_{1}')
xlabel('tiempo (seg)');

subplot(2,2,4)
plot(t, qp_2)
title('Velocidad angular qp_2')
ylabel('qp_2')
xlabel('tiempo (seg)');
 

3er Enfoque de Simulación: Simulink

El paradigma de Simulink que consiste en simulación de sistemas dinámicos mediante diagramas


de bloques facilita bastante la implementación de simulaciones si se sabe interpretar en la lógica de
diagrama de bloques. En el caso de simular el control PD de un robot de n-grados de libertad, se

Luis Arturo García Delgado Control de Robots UNISON, MCE


255

Figura B.29: Diagrama de bloques en lazo cerrado de un control PD de posición con compensación
de gravedad.

puede implementar la simulación para un diagrama tal como el de la Figura B.26.


Para implementar el diagrama de bloques de simulación, abra Simulink y dentro de simulink abra
un modelo en blanco (Blank model) y guarde el modelo nuevo con el nombre “Control_Planar_Elbow_Simulink.slx”.
Después habra el Navegador de Librerías de Simulink (Simulink Library Browser). En el árbol de
librerías, dentro de las librerías Simulink, vamos a la sección User-Defined Functions y seleccione
el bloque Matlab Function, como el que aparece en la Figura B.30(a). El bloque Matlab Function

(a) (b)

Figura B.30: a) Bloque de Función de MATLAB; b) bloque de Función con programa implementado.

permite utilizar en Simulink una función guardada como archivo .m en MATLAB. Arrastre dicho
bloque y suéltelo dentro de la ventana de diseño (ventana de trabajo) de Simulink. Mediante este
bloque se puede ejecutar dentro de Simulink la Función Dinamics_Planar_Elbow.m del Progra-
ma B.37. Para ello de doble click sobre el bloque y se abre la ventana de edición de programas de
MATLAB con el siguiente código:
function y = fcn(u)

y = u;

UNISON, MCE Control de Robots Luis Arturo García Delgado


256

Reemplace dicho código con el código completo del programa Dinamics_Planar_Elbow.m . Al


oprimir el botón “guardar”, notará que el bloque en Simulink cambia como el de la Figura B.30(b).
En el bloque puede notar que se marcan con flechas las señales que necesita como entrada o que
resultan a la salida.
Como dicho sistema entrega como salida las señales dq/dt = q̇ y dq̇/dt = q̈, es necesario integrar-
las para obtener q y q̇. El bloque de integral lo encuentra en Buscador de Librerías de Simulink en
la Librería Simulink, la pestaña Continuous, y el bloque Integrator, como el que se ve en la Figura
B.31(a). Se agrega un bloque integrador por cada señal de salida del modelo dinámico, como se ve
en la Figura B.31(b). Dando doble click sobre un bloque integrador se pueden cambiar varias pro-
piedades, entre ellas la condición inicial, como aparece en la Figura B.31(c). Inserte en el modelo un

(a) (b) (c)

Figura B.31: a) Bloque integrador; b) Integradores a la salida del modelo dinámico; c) Condiciones
iniciales del bloque integrador.

bloque entrada (In1 ), dos bloqes salida (Out1 ), nómbrelas como “tau”, “q” y “qp”, respectivamente
y conecte todas las líneas como aparece en la Figura B.32(a). Convertiremos todos estos bloques en
un solo bloque “subsistema” del robot. Para convertir una selección de bloques en un subsistema
primero seleccione los bloques de interés, dar click derecho del mause y en el menú que se despliega
seleccionar la opción “Create subsistem from selection”, o simplemente teclee Ctrl+G. El bloque
subsistema del robot tendrá una entrada “tau” y dos señales de salida, “q” y “qp”, como se muestra
en la Figura B.32(b).

(a) (b)

Figura B.32: Diagrama de bloques en Simulink de un control PD en lazo cerrado de posición.

Debido a que para este ejemplo de simulación tanto la línea de señal “q”, como la de “qp”
contienen dos señales cada una, es decir, “q” se compone de q1 y q2 , para multiplicar cada señal por
una ganancia diferente se deben separar primero las dos señales de una misma línea en dos líneas
mediante un Demux. El siguiente paso es multiplicar cada señal por su correspondiente constante de
control y después volver a juntar las dos señales en una sola línea mediante un Mux. Para conservar
la estética del modelo de bloques se crea un subsitema para cada una de las multiplicaciones, donde
los bloques para las ganancias de posición Kp y las de velocidades articulares Kv se muestran en la
Figura B.33.

Luis Arturo García Delgado Control de Robots UNISON, MCE


257

(a) (b)

Figura B.33: a) Elementos internos del subsistema Kp; b) elementos internos del subsistema Kv .

Como siguiente paso se deben agregar los bloques de constante para indicar la referencia, suma-
dores, y se cierra el lazo de control, tal como aparece en la Figura B.34.

Figura B.34: Diagrama de bloques en Simulink de un control PD en lazo cerrado de posición.

Antes de correr la simulación cambie el tiempo de simulación a 2 segundos. Con esto ya está
listo para simular el sistema dinámico. El resultado de simulación se muestra en las gráficas de la
Figura B.35.

(a) (b)

Figura B.35: a) Gráfica del comportamiento de las posiciones articulares, q; b) gráfica del compor-
tamiento de las velocidades articulares, q̇.

UNISON, MCE Control de Robots Luis Arturo García Delgado


258

Otra forma de implementar el controlador, más sencilla de programar aunque más alejada del
diagrama de bloques, es mediante otra función de MATLAB. El diagrma de bloques se verá como el
de la Figura B.36. Mientras que el código del bloque de función de MATLAB del controlador debe
ser el siguiente:
function tau = Control_PD(qd, q, qp)
Kp = [180 0; 0 80]; % Matriz de ganancias proporcionales
Kv = [35 0; 0 15]; % Matriz de ganancias derivativas
eq = qd - q; % error de posición articular
tau = Kp*eq - Kv*qp; % controlador PD
end

Figura B.36: Diagrama de bloques en Simulink de un control PD en lazo cerrado de posición.

B.11.6. Trabajo del alumno.


Como trabajo para el alumno se deja simular en cada uno de los tres métodos el control PD con
conpensación de gravedad.

Luis Arturo García Delgado Control de Robots UNISON, MCE


Apéndice C

Referencias

259

También podría gustarte