Control de Robots Manipuladores: Notas de Clase
Control de Robots Manipuladores: Notas de Clase
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
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
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
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.)
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.
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.
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.)
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.
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
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.
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.
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.
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.
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.
Figura 1.9: Una pinza de dos dedos. (Foto cortesía de Robotiq, Inc.)
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.)
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.)
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.)
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.)
Figura 1.18: Ejemplo de robot plano de dos-eslabones. Cada capítulo del texto discute un concepto
fundamental aplicable a la tarea mostrada.
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.
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 )
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.
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.
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.
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.
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.
1.5. Problems
Notas y Referencias
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.
19
20
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
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.
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
R01 = (R10 )T
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
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(θ)
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
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)
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(θ)
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
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 .
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
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.
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
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:
3. Es un operador al tomar un vector y rotarlo para dar un nuevo vector en el mismo sistema de
coordenadas.
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 .
⋄
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.
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
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
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
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.
⋄
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
Ejemplo 2.8. Suponga que R está definida por la siguiente secuencia de rotaciones básicas de orden
especificado:
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
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.
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
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
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)
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.
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
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
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.
ST + S = 0 (2.52)
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
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)
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
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.
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)
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
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 ).
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
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
P 0 = H10 P 1 (2.70)
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
H20 = HH10
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.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 ∥.
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.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
Escriba el producto matricial que expresará la matriz de rotación resultante (no realice la multipli-
cación de matrices).
Escriba el producto matricial que expresará la matriz de rotación resultante (no realice la multipli-
cación de matrices).
Escriba el producto matricial que expresará la matriz de rotación resultante (no realice la multipli-
cación de matrices).
Escriba el producto matricial que expresará la matriz de rotación resultante (no realice la multipli-
cación de matrices).
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.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.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.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?
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.
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 .
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.
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.
Cinemática Directa
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
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
Entonces la posición y orientación del efector final en el marco inercial están dadas por
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)
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.
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.
Figura 3.2: Marcos de coordenadas que satisfacen las suposiciones DH1 y DH2.
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
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 .
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 .
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
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.
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 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 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.
0 0 0 1 0 0 0 1
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.
Eslabón ai αi di θi
1 a1 0 0 θ1∗
2 a2 0 0 θ2∗
∗ variable
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.
Eslabón ai αi di θi
1 0 0 d1 θ1∗
2 0 -90 d∗2 0
3 0 0 d∗3 0
∗ variable
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
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
Eslabón ai αi di θi
4 0 -90 0 θ4∗
5 0 90 0 θ5∗
6 0 0 d6 θ6∗
∗ variable
0 0 0 1 0 0 0 1 0 0 0 1
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
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.
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
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
donde
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
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
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
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
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
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
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
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
3.6 Considere el manipulador Cartesiano de tres eslabones de la Figura ??. Desarrolle las ecuaciones
de cinemática directa usando la convención DH
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
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.
Cinemática de Velocidad
ω = θ̇k (4.1)
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.
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
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
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
S(a)p = a × p (4.7)
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
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
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 .
⋄
Tomando las derivadas de ambos lados de la Ecuación (4.20) con respecto al tiempo da
Ṙ20 = S(ω0,2
0
)R20 (4.22)
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
ω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
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)
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
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
el término que define el vector de velocidad angular ωn0 del efector final, y sea
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)
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.
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.
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
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)
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
y
r = on − o : i − 1 (4.53)
Entonces, para una articulación rotatoria obtenemos
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
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 .
⋄
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.
⋄
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
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
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
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,
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
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
" #
d˙
Ẋ = = 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 ψ̇
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
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:
En las singularidades, velocidades acotadas del efector final pueden corresponder a velocidades
articulares desacotadas.
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.
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
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
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.
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)
Vemos de la Ecuación (4.98) que el manipulador codo está en una configuración singular cuando
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.
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
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
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
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 π.
⋄
τ = J T (q)F (4.104)
δw = F T δX − τ T δq (4.106)
δ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.
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
⋄
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
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
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)
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
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)
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.3 Demuestre la afirmación dada en la Ecuación (4.9) de que R(a×b) = Ra×Rb, para R ∈ SO(3).
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 .
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).
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.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.
Cinemática Inversa
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
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,
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.
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
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 .
θ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)
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)
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 .
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.
Figura 5.5: Configuración singular para un manipulador codo en la cual el centro de la muñeca cae
sobre el eje z0 .
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)
Figura 5.7: Configuración brazo izquierdo (a la izquierda) y brazo derecho (a la derecha) para un
manipulador codo con un offset.
θ1 = α + β
α = atan2(yc , xc )
β = γ+π
p
γ = atan2(−d, − r2 − d2 )
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
Figura 5.9: Cuatro soluciones de la cinemática inversa de posición para el manipulador PUMA
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 ecuación a ser resuelta para las tres variables finales es por lo tanto
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
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
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
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)
θ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)
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
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.
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
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.
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.
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.
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.
5.2 Repita el Problema 5.1 para el brazo plano de tres eslabones con articulación prismática de la
Figura 5.14
5.3 Resuelva la cinemática inversa de posición para el manipulador cilíndrico de la Figura 5.15
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.
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.
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.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
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.
mÿ = f − mg (6.1)
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̇
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
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
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
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
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
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
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.
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
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).
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.
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)
É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
Figura 6.7: Un sólido rectangular con densidad de masa uniforme y marco de coordenadas unido al
centro geométrico del sólido.
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
Pi = mi g T rci (6.54)
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.
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
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
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.
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.
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
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
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
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)
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 ))
∂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
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
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 ∂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
g1 = m1 (ℓc1 + m2 ℓ1 )g cos p1
g2 = m2 ℓc2 g cos p2
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
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
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
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
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.
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
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
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
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).
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.
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)
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 )
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.
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)
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
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
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
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,
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,
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.
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
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
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
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.
y use las Ecuaciones (6.148) y (6.149) para calcular fi y τi Para i decrementando desde n a 1.
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:
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
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.
f2 = m2 ac,2 − m2 g2 (6.174)
τ2 = I2 α2 + ω2 × (I2 ω2 ) − f2 × ℓc2 i (6.175)
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.
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
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
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
También obtuvimos cotas para la matriz de inercia para un manipulador de n-eslabones como
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.
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
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:
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
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
∂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.
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.
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.
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
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.
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
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.
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 .
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.
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
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.,
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.
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 ′ )
′
También podemos generalizar el concepto de aristas de Voronoi como el conjunto de puntos míni-
mamente equidistantes de dos características,
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.,
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′ .
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.
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.
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.
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.
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.
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.
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 ).
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)
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.
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.
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.
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
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 )).
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.
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).
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.
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
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
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. ⋄
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 ).
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.
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 .
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.
Pn 2
Norma-2 en Q ∥q ′ − q∥ = ′
i=1 (qi − qi ) 2
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.
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.
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.
q(t0 ) = q0 (7.9)
q̇(t0 ) = v0 (7.10)
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)
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.
q(t) = a0 + a1 t + a2 t2 + a3 t3 (7.15)
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
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
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
a0 = q0
a1 = 0
a2 + a3 = qf − q0
2a2 + 3a3 = 0
a2 = 3(qf − q0 )
a3 = −2(qf − q0 )
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.
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.
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.
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
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
q(t) = q(tb ) + V (t − tb )
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.
Figura 7.21: (a) trayectoria LSPB. (b) Perfil de velocidad para la trayectoria LSPB. (c) Perfil de
aceleración para la trayectoria LSPB.
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
qf − q0
= αts
ts
La Figura 7.22 muestra la posición, velocidad y aceleración para dicha trayectoria de tiempo mínimo.
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.
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 ) = a0 + a1 (t − t0 ) + a2 (t − t0 )2 + a3 (t − t0 )3 (7.25)
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.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.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.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.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.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.
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.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.
Fundamentos Matemáticos
A.1. Trigonometría
A.1.1. Relaciones trigonométricas básicas
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
183
184
cosecante.
1
csc θ =
sin θ
secante.
1
sec θ =
cos θ
cotangente
1
cot θ =
tan θ
semiverseno
versin θ
semiversin θ =
2
coverseno
coversin θ = 1 − sin θ
semicoverseno
coversin θ
semicoversin θ =
2
exsecante
exsec θ = sec θ − 1
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
3π
atan2(−1, 1) = +
4
⋄
sin( π2 + θ) = cos θ
cos(−θ) = cos θ
tan(−θ) = − tan θ
tan( π2 + θ) = − cot θ
tan(θ − π) = tan θ
tan2 θ + 1 = sec2 θ
xT y = y T x
La norma de un vector x ∈ Rn es
Desigualdad de Cauchy-Schuartz
|xT y| ≤ ∥x∥∥y∥
xT y = ∥x∥∥y∥ cos θ
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
x = x1 i + x2 j + x3 k
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.
x × y = −y × x
x × (y + z) = x × y + x × z
α(x × y) = (αx) × y = x × (αy)
d dx dy
⟨x, y⟩ = , y + x,
dt dt dt
d dx dy
(x × y) = ×y+x×
dt dt dt
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
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
A.3. Problemas
A.1 Encontrar el ángulo θ en la Figura A.5
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
(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)
Prácticas
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
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.
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.
(a) (b)
Figura B.4: (a) Sistema de coordenadas en las gráficas de MATLAB; (b) sistema de coordenadas
VRML.
(a)
(b)
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)
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.
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.
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.
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
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.
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.
(a) (b)
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
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.
Manipulador Stanford.
Manipulador SCARA.
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
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)]
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'
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)])
x·y
−
θ = cos 1
∥x∥∥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.
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
d
f (x) = 12x3 + 2x
dx
mientras que la derivada temporal de f (x) es
d
f (x) = 12x3 ẋ + 2xẋ
dt
dx
donde ẋ = dt .
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)
1. A^-1
2. inv(A)
Con tal propósito podemos generar las funciones de los Programas B.1, B.2, B.3.
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)]
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
axis equal
axis([-1 1 -1 1 -1 1])
view(135, 45)
6. Realizar las rotaciones anteriores, pero esta vez con respecto al marco del mundo (no al marco
actual).
Ángulos de Euler
Matriz de rotación roll-pitch-yaw
Representación eje-ángulo
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.
ϕ = atan2(r21 , r11 )
ψ = 0
ϕ = atan2(−r21 , −r11 )
ψ = 0
y con ello
El resultado anterior se puede programar dentro de una función de MATLAB como la del
Programa B.7.
phi =
0.5236
theta =
1.0472
psi =
0.7854
La matriz de rotación Rrpy de la Ecuación (B.6) se puede programar en una función mediante
el Programa B.8.
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
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
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.
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
y
r − r23
1 32
k= r13 − r31
2sθ
r21 − r12
lo cual se puede programar como en el código B.11.
theta =
0.7854
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
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.
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:
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.
% 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)
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.
Eslabón ai αi di θi
1 a1 α1 d1 θ1∗
2 a2 α2 d2 θ2∗
.. ..
. .
n an αn dn θn∗
∗ articulación variable
% 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
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));
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
if (d_var(1))
art_pris(II)
else
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
if (d_var(i))
art_pris(T0(:,:,i-1))
else
art_rot(T0(:,:,i-1))
end
end
% 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];
% 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];
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)
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.
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 Stanford
Manipulador SCARA
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.
ξ = 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̇
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
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.
for i = 1:r
z(:,i) = T(1:3, 3, i);
o(:,i) = T(1:3, 4, i);
end
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 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
ans =
-a2*a3*(a2*cos(q2)*sin(q3) - a3*sin(q2) + a3*cos(q3)^2*sin(q2)
+ a3*cos(q2)*cos(q3)*sin(q3))
a3 s2 s3 + a3 c2 c3 = a3 c23
Trabajo del alumno. El alumno debe calcular el Jacobiano de 6 × 3 y las singularidades del
brazo para:
El manipulador SCARA
El manipulador cilíndrico
El manipulador cartesiano
El manipulador Stanford
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.
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 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.
% DESACOPLE CINEMÁTICO
% 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
% 4 | 0 | -90 | 0 | teta4
% 5 | 0 | 90 | 0 | teta5
% 6 | 0 | 0 | d6 | teta6
A1 = [c1 0 s1 0;
s1 0 -c1 0;
0 1 0 d1;
0 0 0 1];
% 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
A1 = [c1 0 s1 0;
s1 0 -c1 0;
0 1 0 d1;
0 0 0 1];
A4 = [c4 0 -s4 0;
s4 0 c4 0;
0 -1 0 0;
0 0 0 1];
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)
θ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
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
d ∂L ∂L
− = τk , k = 1, . . . , n (B.10)
dt ∂ q̇k ∂qk
L=K−P
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
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
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;']);
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
% 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.
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
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
Ti = 1;
for i = 1:link_i
A = ADH(a(i), alfa(i), d(i), teta(i));
Ti = Ti*A;
end
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))
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.
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 .
Obtenga las ecuaciones de Euler-Lagrange para el robot plano RPR de la Figura 5.14.
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 .
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 .
v1 = obst(i+1,:);
v2 = obst(1, :);
[d(i+1), Pcl(:,i+1)] = point_to_line_distance(oi', v1', v2');
%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));
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
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.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
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.
τ (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.
(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
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));
% 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
q = qs;
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
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 SCARA
El manipulador cilíndrico
El manipulador cartesiano
El manipulador Stanford
(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.
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.
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.
d12 = m2*((lc2)^2+l1*lc2*cos(q(2)))+i2;
d22 = m2*(lc2)^2+i2;
D = [d11 d12; d12 d22];
% Modelo dinámico
dq = qp;
dqp = inv(D)*(tau - C*qp - g);
dx = [dq; dqp];
end
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 ).
for i = 1:length(t)
eq = qd - q; % error de posición articular
tau = Kp*eq - Kv*qp; % controlador PD
%%
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)');
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.
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)
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)');
Figura B.29: Diagrama de bloques en lazo cerrado de un control PD de posición con compensación
de gravedad.
(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;
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)
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.
(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.
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̇.
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
Referencias
259