matlab aplicado a robótica y mecatrónica
TRANSCRIPT
www.fullengineeringbook.net
www.fullengineeringbook.net
APLICADO A ROBÓTICAMATLAB
Y MECATRÓNICA
FERNANDO REYES CORTÉS
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Datos catalográficosReyes Cortés, FernandoMATLAB aplicado a Robótica y Mecatrónica Primera Edición
Alfaomega Grupo Editor, S.A. de C.V., México
ISBN: 978-607-707-357-4
Formato: 17 x 23 cm Páginas: 460
MATLAB aplicado a Robótica y MecatrónicaFernando Reyes CortésDerechos reservados © Alfaomega Grupo Editor, S.A. de C.V., México.
Primera edición: Alfaomega Grupo Editor, México, enero 2012
© 2012 Alfaomega Grupo Editor, S.A. de C.V.Pitágoras 1139, Col. Del Valle, 03100, México D.F.
Miembro de la Cámara Nacional de la Industria Editorial MexicanaRegistro No. 2317
Pág. Web: http://www.alfaomega.com.mxE-mail: [email protected]
ISBN: 978-607-707-357-4
Derechos reservados:Esta obra es propiedad intelectual de su autor y los derechos de publicación en lengua española han sido legalmente transferidos al editor. Prohibida su reproducción parcial o total por cualquier medio sin permiso por escrito del propietario de los derechos del copyright.Esta obra fue compuesta por el autor en LateX usando el compilador de PcTex 6.0.
Nota importante:La información contenida en esta obra tiene un fin exclusivamente didáctico y, por lo tanto, no está previsto su aprovechamiento a nivel profesional o industrial. Las indicaciones técnicas y programas incluidos, han sido elaborados con gran cuidado por el autor y reproducidos bajo estrictas normas de control. ALFAOMEGA GRUPO EDITOR, S.A. de C.V. no será jurídicamente responsable por: errores u omisiones; daños y perjuicios que se pudieran atribuir al uso de la información comprendida en este libro, ni por la utilización indebida que pudiera dársele.
Impreso en México. Printed in Mexico.
Empresas del grupo:
México: Alfaomega Grupo Editor, S.A. de C.V. – Pitágoras 1139, Col. Del Valle, México, D.F. – C.P. 03100.Tel.: (52-55) 5575-5022 – Fax: (52-55) 5575-2420 / 2490. Sin costo: 01-800-020-4396E-mail: [email protected]
Colombia: Alfaomega Colombiana S.A. – Carrera 15 No. 64 A 29, Bogotá, Colombia,Tel.: (57-1) 2100122 – Fax: (57-1) 6068648 – E-mail: [email protected]
Chile: Alfaomega Grupo Editor, S.A. – Dr. La Sierra 1437, Providencia, Santiago, ChileTel.: (56-2) 235-4248 – Fax: (56-2) 235-5786 – E-mail: [email protected]
Argentina: Alfaomega Grupo Editor Argentino, S.A. – Paraguay 1307 P.B. Of. 11, C.P. 1057, Buenos Aires, Argentina, – Tel./Fax: (54-11) 4811-0887 y 4811 7183 – E-mail: [email protected]
EditorFrancisco Javier Rodríguez [email protected]
Director EditorialMarcelo Grillo [email protected]
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Acerca del autorDr. Jose Fernando Reyes Cortes. Es profesor investigador
titular C de la Facultad de Ciencias de la Electronica, Universidad
Autonoma de Puebla. En 1984 obtuvo la Licenciatura en Ciencias
de la Electronica en la Facultad de Ciencias Fısico Matematicas de
la Universidad Autonoma de Puebla. En 1990 obtuvo la Maestrıa en
Ciencias con Especialidad en Electronica en el Instituto Nacional de
Astrofısica, Optica y Electronica (INAOE). Bajo la asesorıa del Dr. Rafael Kelly,
en 1997 culmino el Doctorado en Ciencias con Especialidad en Electronica y
Telecomunicaciones en el Centro de Investigacion Cientıfica y de Educacion Superior
de Ensenada (CICESE).
Es miembro del Sistema Nacional de Investigadores desde 1993 a la fecha.
Actualmente es nivel I. Es autor de mas de 150 artıculos nacionales e internacionales.
Ha dirigido 30 proyectos cientıficos. Ha graduado a mas de 100 tesistas de los niveles
de ingenierıa, maestrıa y doctorado.
Es autor del libro Robotica. Control de robots manipuladores editado por
Alfaomega donde se presenta la dinamica de robots manipuladores y la tecnica
moderna de moldeo de energıa para disenar nuevos algoritmos de control.
Como catedratico ha impartido mas de 50 cursos del area de control y robotica a
nivel licenciatura y posgrado. Fundador del Laboratorio de Robotica y Control de
la Facultad de Ciencias de la Electronica donde ha puesto a punto 30 prototipos de
mecatronica y robotica. Es Premio Estatal de Tecnologıas y Ciencias de la Ingenierıa
en noviembre 2000 por el Gobierno del Estado de Puebla. Premio en Ingenierıa y
Tecnologıa de la Ciudad de Puebla en abril 2010.
Ha sido Secretario de Investigacion y Estudios de Posgrado de la Facultad de Ciencias
de la Electronica desde febrero del 2002 a la fecha. Fundador y responsable del
Cuerpo Academico de Robotica y Control en 2001. Fue responsable de la creacion
de la Ingenierıa Mecatronica, y de los Posgrado de Ciencias de la Electronica e
Ingenierıa Electronica e ingreso de ambos posgrados al PNPC de CONACyT.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
A la persona que me dio la vida: Alicia CortesCastillo; por su apoyo y paciencia a mi esposaSilvia y mis tesoros Luis Fernando y Leonardo.Por la formacion transmitida de Angela Cas-tillo Merchant, Luis Manuel Cortes Castillo,Chela, Lety y Jorge.
Por la ayuda brindada de la maestra Viky.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Mensaje del EditorUna de las convicciones fundamentales de Alfaomega es que los conocimientos son
esenciales en el desempeno profesional, ya que sin ellos es imposible adquirir las
habilidades para competir laboralmente. El avance de la ciencia y de la tecnica
hace necesario actualizar continuamente esos conocimientos, y de acuerdo con esto
Alfaomega publica obras actualizadas, con alto rigor cientıfico y tecnico, y escritas
por los especialistas del area respectiva mas destacados.
Conciente del alto nivel competitivo que debe de adquirir el estudiante durante su
formacion profesional, Alfaomega aporta un fondo editorial que se destaca por sus
lineamientos pedagogicos que coadyuvan a desarrollar las competencias requeridas
en cada profesion especıfica.
De acuerdo con esta mision, con el fin de facilitar la comprension y apropiacion del
contenido de esta obra, cada capıtulo inicia con el planteamiento de los objetivos
del mismo y con una introduccion en la que se plantean los antecedentes y una
descripcion de la estructura logica de los temas expuestos, asimismo a lo largo de
la exposicion se presentan ejemplos desarrollados con todo detalle y cada capıtulo
concluye con un resumen y una serie de ejercicios propuestos.
Ademas de la estructura pedagogica con que estan disenados nuestros libros,
Alfaomega hace uso de los medios impresos tradicionales en combinacion con
las Tecnologıas de la Informacion y las Comunicaciones (TIC) para facilitar el
aprendizaje. Correspondiente a este concepto de edicion, todas nuestras obras de
la Serie Profesional a la que pertenece este tıtulo tienen su complemento en una
pagina Web en donde el alumno y el profesor encontraran lecturas complementarias,
codigo fuente de los programas desarrollados ası como la solucion y la respuesta de
los problemas propuestos.
Los libros de Alfaomega estan disenados para ser utilizados en los procesos de
ensenanza-aprendizaje, y pueden ser usados como textos en diversos cursos o como
apoyo para reforzar el desarrollo profesional, de esta forma Alfaomega espera
contribuir ası a la formacion y al desarrollo de profesionales exitosos para beneficio
de la sociedad y del mundo del conocimiento.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Contenido
Plataforma de contenidos interactivos XV
Simbologıa e iconografıa utilizada XVI
Prologo XVIII
Parte I Programacion1
Capıtulo 1
Conceptos basicos 3
1.1 Introduccion 5
1.2 Componentes 7
1.2.1 Herramientas de escritorio y ambiente de desarrollo 9
1.2.2 Librerıas 9
1.2.3 Lenguaje 10
1.2.4 Graficos 10
1.2.5 Interfaces externas/API 10
1.3 Inicio 11
1.4 Lenguaje 15
1.4.1 Variables 15
1.4.2 Numeros 17
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
viii
1.4.3 Formato numerico 18
1.4.4 Operadores 21
1.5 Matrices y arreglos 26
1.5.1 Arreglos 41
1.6 Graficas 43
1.7 Funciones 49
1.7.1 Funciones archivo 51
1.8 Programacion 58
1.8.1 if 59
1.8.2 if, else, elseif 60
1.8.3 for 61
1.8.4 while 71
1.8.5 switch, case 72
1.8.6 break 73
1.8.7 return 73
1.8.8 continue 74
1.9 Formato para datos experimentales 76
1.10 Resumen 80
Capıtulo 2
Metodos numericos 81
2.1 Consideraciones computacionales 83
2.2 Sistemas de ecuaciones lineales 84
2.2.1 Regla de Cramer 91
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Contenido ix
2.3 Diferenciacion numerica 92
2.3.1 Funcion diff 97
2.4 Integracion numerica 99
2.4.1 Regla trapezoidal 102
2.4.2 Regla de Simpson 108
2.4.3 Funciones de cuadratura 113
2.4.4 Metodo de Euler 114
2.5 Sistemas dinamicos de primer orden 117
2.5.1 Metodo de Runge-Kutta 118
2.5.2 Simulacion de sistemas dinamicos x = f(x) 124
2.6 Resumen 133
Parte I Referencias selectas 134
Parte I Problemas propuestos 135
Parte II Cinematica139
Capıtulo 3
Preliminares matematicos 141
3.1 Introduccion 143
3.2 Producto interno 144
3.3 Matrices de rotacion 148
3.3.1 Matriz de rotacion alrededor del eje z0 151
3.3.2 Matriz de rotacion alrededor del eje x0 161
3.3.3 Matriz de rotacion alrededor del eje y0 163
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
x
3.4 Reglas de rotacion 164
3.5 Transformaciones de traslacion 171
3.6 Transformaciones homogeneas 173
3.7 Librerıas para matrices homogeneas 174
3.7.1 Matriz de transformacion homogenea HRx(θ) 175
3.7.2 Matriz de transformacion homogenea HRy(θ) 176
3.7.3 Matriz de transformacion homogenea HRz(θ) 177
3.7.4 Matriz de transformacion homogenea HTx(d) 178
3.7.5 Matriz de transformacion homogenea HTy(d) 178
3.7.6 Matriz de transformacion homogenea HTz(d) 179
3.7.7 Matriz de transformacion DH 180
3.8 Resumen 181
Capıtulo 4
Cinematica directa 183
4.1 Introduccion 185
4.2 Cinematica inversa 186
4.3 Cinematica diferencial 187
4.4 Clasificacion de robots industriales 189
4.5 Convencion Denavit-Hartenberg 192
4.5.1 Algoritmo Denavit-Hartenberg 196
4.6 Resumen 198
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Contenido xi
Capıtulo 5
Cinematica directa 199
5.1 Introduccion 201
5.2 Brazo robot antropomorfico 202
5.3 Configuracion SCARA (RRP) 234
5.4 Robot esferico (RRP) 245
5.5 Manipulador cilındrico (RPP) 254
5.6 Configuracion cartesiana (PPP) 264
5.7 Resumen 273
Parte II Referencias selectas 277
Parte II Problemas propuestos 278
Parte III Dinamica283
Capıtulo 6
Dinamica 285
6.1 Introduccion 287
6.2 Estructura matematica para simulacion 288
6.3 Sistema masa-resorte-amortiguador 291
6.4 Sistema lineal escalar 295
6.4.1 Estimador de velocidad y filtrado 296
6.5 Centrıfuga 301
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
cartesiana
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
xii
6.6 Pendulo 305
6.7 Robot de 2 gdl 310
6.8 Robot de 3 gdl 315
6.9 Robot cartesiano 321
6.10 Resumen 327
Capıtulo 7
Identificacion parametrica 329
7.1 Introduccion 331
7.2 Metodo de mınimos cuadrados 332
7.2.1 Linealidad en los parametros 332
7.3 Librerıa de mınimos cuadrados 334
7.3.1 Caso escalar 334
7.3.2 Caso multivariable 336
7.4 Ejemplos 338
7.5 Modelos de regresion del pendulo 346
7.5.1 Modelo dinamico del pendulo 346
7.5.2 Modelo dinamico filtrado del pendulo 350
7.5.3 Modelo de energıa del pendulo 353
7.5.4 Modelo de potencia del pendulo 355
7.5.5 Modelo de potencia filtrada 356
7.5.6 Analisis comparativo de esquemas de regresion 359
7.6 Modelos de regresion del robot de 2 gdl 360
7.6.1 Modelo de regresion dinamico del robot de 2 gdl 361
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Contenido xiii
7.6.2 Modelo de energıa del robot de 2 gdl 366
7.6.3 Modelo de potencia del robot de 2 gdl 369
7.6.4 Analisis comparativo de resultados de regresion 372
7.7 Robot cartesiano de 3 gdl 373
7.7.1 Modelo de regresion dinamico del robot cartesiano 374
7.7.2 Modelo de potencia del robot cartesiano de 3 gdl 378
7.7.3 Analisis comparativo de identificacion 381
7.8 Resumen 382
Parte III Referencias selectas 383
Parte III Problemas propuestos 385
Parte IV Control389
Capıtulo 8
Control de posicion 391
8.1 Introduccion 393
8.2 Control proporcional-derivativo (PD) 395
8.2.1 Control PD de un pendulo 397
8.2.2 Control PD de un brazo robot de 2 gdl 403
8.2.3 Control PD de un brazo robot de 3 gdl 408
8.2.4 Control PD de un robot cartesiano de 3 gdl 413
8.3 Control PID 417
8.3.1 Control PID de un robot de 2 gdl 418
8.4 Control punto a punto 422
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
xiv
8.4.1 Control tangente hiperbolico 422
8.4.2 Control arcotangente 426
8.5 Resumen 429
Parte IV Referencias selectas 430
Parte IV Problemas propuestos 431
Indice analıtico 433
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
xv
Plataforma de contenidos
interactivos
Para tener acceso al codigo fuente de los programas de ejemplos y ejercicios presenta-
dos en MATLAB Aplicado a Robotica y Mecatronica, siga los siguientes pasos:
1) Ir a la pagina
http://virtual.alfaomega.com.mx
2) Registrarse como usuario del sitio.
3) En el catalogo identificar este libro y descargar el material adicional.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
xvi Simbologıa e iconografıa utilizada
Simbologıa e iconografıautilizada
Diversos recursos didacticos estan presentes en esta obra; particularmente se resaltan
las siguientes herramientas:
Librerıas
La sintaxis de las librerıas que se desarrollan son representadas como:
x=robot(t, x)
Los ejemplos ilustrativos se presentan de la siguiente manera:
♣ ♣ Ejemplo 5.1
El enunciado de cada ejemplo se encuentra dentro de un recuadro con fondo gris.
Los ejemplos son presentados por nivel de complejidad, para el nivel simple o
basico se emplea la marca ♣, ejemplos del nivel intermedio ♣♣ y complejos son
denotados por ♣♣♣
Solucion
Se detalla la respuesta de cada ejemplo por ecuaciones y programas en codigo fuente.
Adicionalmente, todos los ejemplos incluyen un numero de referencia que identifica
al capıtulo donde fue definido.
Todos los programas de esta obra han sido implementados en lenguaje MATLAB
version 11. El codigo fuente se identifica por el siguiente recuadro:
5.1.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
xvii
Codigo Fuente 5.1 robot.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Simulacion de robots manipuladores
robot.m
clc;1
clear all;2
close all;3
format short g4
ti=0; h=0.001; tf = 10;%vector tiempo5
t=ti:h:tf;%tiempo de simulacion6
ci=[0; 0; 0; 0];7
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);8
[t,x]=ode45(’robot’,t,ci,opciones);9
plot(x(:,1),x(:,2))10
Para representar una idea general de una instruccion de programacion, se emplea
pseudo-codigo como el siguiente:
Estructura de codigo 5.1
Pseudo codigo
while k<1000qp(k)=(q(k)-q(k-1))/h;
if q(k)>100
for j=1:1000qpp(j)=robot(q(j),qp(j));
end
end
k=k+1;
otro grupo de instrucciones;
end
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Prologo
Robotica y mecatronica representan en la actualidad areas estrat´
ıs que aspire a la modernidad y bienestar, ya que su impacto no solo
repercute en aspectos polıticos y economicos, tambien forma parte importante de la
vida cotidiana, educacion, cultura, y en todos los ambitos de la sociedad.
La simulacion es una herramienta imprescindible para reproducir los fenomenos
fısicos de un robot o de un sistema mecatronico, permite estudiar y analizar a
detalle los aspectos practicos que intervienen en tareas especıficas que debe realizar
un robot industrial. La simulacion es un proceso previo a la etapa experimental
donde es posible entender los conceptos claves de la robotica y mecatronica. Bajo
este escenario se ubica la presente obra a traves de la propuesta de un conjunto
de librerıas para MATLAB que permitan realizar estudio, analisis, simulacion y
aplicaciones de robots manipuladores y sistemas mecatronicos.
Esta obra presenta la propuesta y desarrollo de una clase particular de librearıas
toolbox para robotica y mecatronica. Las librerıas son funciones en codigo fuente para
MATLAB que permiten modelar la cinematica directa e inversa, transformaciones
homogeneas (rotacion y traslacion), dinamica, identificacion parametrica, control de
robots manipuladores. El contenido y material incluido en el libro esta dirigido a
estudiantes de ingenierıa en electronica, sistemas, computacion, industrial, robotica
y mecatronica. No obstante, tambien puede ser adecuado para nivel posgrado.
La organizacion de este libro consta de cuatro partes: la Parte I Programacion
incluye dos capıtulos. El Cap tulo 1 Conceptos basicos de programacion del
lenguaje de MATLAB tiene la finalidad de que el lector adquiera los conocimientos
necesarios para adquirir solvencia en programar aplicaciones en codigo fuente. El
capıtulo 2 Metodos numericos presenta aspectos relacionados con las tecnicas de
metodos numericos enfocados a resolver problemas de diferenciacion e integracion
numerica de sistemas dinamicos.
La Parte II Cinematica esta relacionada con el analisis cinematico de las
principales clases de robots manipuladores. Se componen de tres capıtulos; el
egicas y claves
para todo pa
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Prologo xix
capıtulo 3 Preliminares matematicos contiene las bases de las reglas de las
matrices de rotacion, traslacion y transformaciones homogeneas. En el capıtulo
4 Cinematica directa se detalla la metodologıa de Denavit-Hartenberg para
describir la cinematica directa; asimismo se describe la cinematica inversa,
cinematica diferencial y jacobianos. Un compendio de librerıas se desarrollaron con
variables simbolicas y aplicaciones numericas para los principales tipos de robots
manipuladores en el capıtulo 5 Cinematica directa cartesiana.
La Parte III Dinamica describe la tecnica de simulacion para sistemas dinamicos
e identificacion parametrica. Formada por el capıtulo 6 Dinamica donde se realiza
simulacion de sistemas mecatronicos y robots manipuladores con la estructura de
una ecuacion diferencial ordinaria de primer orden descrita por variables de estado.
El capıtulo 7 Identificacion parametrica presenta cinco esquemas de regresion
con la tecnica de mınimos cuadrados. Se proponen extensos ejemplos para ilustrar
el procedimiento para encontrar el valor numerico de los parametros del robot.
Finalmente, la Parte IV capıtulo 8 Control de posicion contiene la simulacion
de algoritmos clasicos como el control PD y PID; ası como simulacion de nuevas
estrategias de control con mejor desempeno que pertenecen a la filosofıa de diseno
moderno conocida como moldeo de energıa. Aplicaciones de control punto a punto
se ilustran para describir la tecnica de simulacion.
La realizacion de esta obra no hubiera sido posible sin el apoyo de la Benemerita
Universidad Autonoma de Puebla (BUAP), particularmente agradezco a la
Facultad de Ciencias de la Electronica por todas las facilidades brindadas. El
autor desea agradecer principalmente al Dr. Jaime Cid, M. C. Fernando Porras,
Dra. Aurora Vargas, Dr. Sergio Vergara, Dra. Amparo Palomino y al M. C. Pablo
Sanchez, ası como al programa de financiamiento de proyectos de investigacion de
la Vicerrectorıa de Investigacion y Estudios de Posgrado (VIEP), especialmente a la
Dra. Rosa Graciela Montes y al Dr. Pedro Hugo Hernandez Tejeda.
Fernando Reyes CortesH. Puebla de Z., a 3 de diciembre de 2011
Facultad de Ciencias de la Electronica
Benemerita Universidad Autonoma de Puebla
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte I
Programacion
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
La Parte I de la presente obra esta destinada a estudiar el lenguaje de programacion
de MATLAB y la implementacion de metodos numericos aplicados a la robotica
y mecatronica. Esta primera parte se compone de dos capıtulos. El capıtulo 1
Conceptos basicos presenta los aspectos basicos del lenguaje MATLAB y tiene
la finalidad de que el lector adquiera los conocimientos fundamentales para adquirir
solvencia en programar en codigo fuente. El capıtulo 2 Metodos numericos
presenta aspectos relacionados con las tecnicas de metodos numericos enfocados
a resolver problemas de modelado y control de las areas de robotica y mecatronica.
Capıtulo 1 Conceptos basicos
Descripcion de los principales componentes del ambiente de programacion de
MATLAB. Sintaxis y programacion, declaracion de variables, tipo de datos,
operadores, programacion, manipulacion numerica de matrices y arreglos, fun-
ciones, graficas, funciones importantes, matrices, operadores, instrucciones, la-
zos de programacion, etcetera. Un conjunto de ejemplos se desarrollan para
ilustrar los temas presentados.
Capıtulo 2 Metodos numericos
Conocer los principales metodos de diferenciacion e integracion numerica que
se aplican en robotica y mecatronica. Sistemas de ecuaciones lineales, metodo
de Euler e integracion numerica (trapezoidal, Simpson). Simulacion de sistemas
dinamicos con la tecnica de Runge-Kutta.
La parte I concluye con referencias selectas y un conjunto de problemas para mejorar
las habilidades y conocimientos de los capıtulos tratados.
Referencias selectas
Problemas propuestos
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Capıtulo
1 Conceptos basicos
1.1 Introduccion
1.2 Componentes
1.3 Inicio
1.4 Lenguaje
1.5 Matrices y arreglos
1.6 Graficas
1.7 Funciones
1.8 Programacion
1.9 Formato para datos experimentales
1.10 Resumen
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Objetivos
Presentar la plataforma y ambiente de programacion de MATLAB con
los fundamentos y bases de su lenguaje enfocado para adquirir solvencia
y dominio en la implementacion de algoritmos con aplicaciones en
mecatronica y robotica.
Objetivos particulares:
Aprender el Lenguaje MATLAB.
Conocer los operadores.
Programar con matrices y arreglos.
Manejar funciones e instrucciones.
Graficar funciones y datos en 2D y 3D.
Desarrollar formatos para manejar datos experimentales.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.1 Introduccion 5
1.1 Introduccion
Hoy en dıa, MATLAB es un lenguaje de programacion matematico de alto
nivel integrado con entorno grafico amigable, visualizacion de datos, funciones,
graficas 2D y 3D, procesamiento de imagenes, video, computacion numerica para
desarrollar algoritmos matematicos con aplicaciones en ingenierıa y ciencias exactas.
Particularmente, en ingenierıa es una herramienta muy poderosa para realizar
aplicaciones en mecatronica, robotica, control y automatizacion.
MATLAB es un acronimo que proviene de matrix laboratory (laboratorio
matricial) creado por el profesor y matematico Cleve Moler en 1970. La primera
version de MATLAB fue escrita en lenguaje fortran la cual contemplo la idea de
emplear subrutinas para los cursos de algebra lineal y analisis numerico de los
paquetes LINPACK y EISPACK; posteriormente se desarrollo software de matrices
para acceder a esos paquetes sin necesidad de usar programas en fortran. La
empresa The Mathworks (http://www.mathworks.com), propietaria de MATLAB
fue fundada por Jack Little y Cleve Moler en 1984. El actual paquete de MATLAB se
encuentra escrito en lenguaje C, y su primera version en este lenguaje fue escrita por
Steve Bangert quien desarrollo el interprete parser. Steve Kleiman implemento los
graficos, las rutinas de analisis, la guıa de usuario, mientras que la mayorıa de los
archivos.m fueron escritos por Jack Little y Cleve Moler. Actualmente, el lenguaje
de programacion de MATLAB proporciona un sencillo acceso a algoritmos numericos
que incluyen matrices.
Las versiones recientes del lenguaje MATLAB se caracterizan por ser multiplatafor-
ma, es decir se encuentra disponible para sistemas operativos como Unix, Windows
y Apple Mac OS X. MATLAB posee varias caracterısticas computacionales y vi-
suales, entre las que sobresalen la caja de herramientas (toolbox) la cual representa
un amplio compendio de funciones y utilerıas para analizar y desarrollar una am-
plia gama de aplicaciones en las areas de ingenierıa y ciencias exactas. Un rasgo
distintivo de MATLAB es que ofrece un entorno grafico de programacion amigable
al usuario a traves de herramientas y utilerıas para realizar simulacion de sistemas
dinamicos, analisis de datos, procesamiento de imagenes y video, graficas y metodos
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6 Capıtulo 1: Conceptos basicos
de visualizacion, desarrollo de interfaces de usuario (GUI); tambien permite reali-
zar interfaces para sistemas electronicos, por ejemplo adquisicion de datos con una
versatilidad de tarjetas de instrumentacion electronica comerciales con plataforma
de microprocesadores, DSP’s, PIC’s, FPGA’s, manejo de puertos como USB, COM,
paralelo y disenos electronicos propios.
MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones:
plataforma de simulacion multidominio Simulink y GUIDE editor de interfaces
de usuario. Se recomienda al lector visitar:
www.mathworks.com/products/matlab
en ese sitio WEB se pueden encontrar productos actuales de MATLAB, manuales,
notas tecnicas, cursos, aplicaciones y foros internacionales, ası como sociedades de
desarrollo. Actualmente, MATLAB se ha convertido en un referente de computo
a nivel internacional, debido que en la mayorıa de las universidades, centros de
investigacion e industria lo utilizan para desarrollar y llevar a cabo proyectos de
ciencia y tecnologıa.
Especıficamente en el area de ingenierıa MATLAB permite realizar simulaciones
de sistemas mecatronicos y robots manipuladores. El proceso de simulacion resulta
importante cuando no se dispone de una adecuada infraestructura experimental.
Sin embargo, la simulacion depende de un buen modelo matematico que permita
reproducir fielmente todos los fenomenos fısicos del sistema real. La simulacion es
flexible ya que permite detectar posibles deficiencias en el diseno del modelado. Una
vez depurado el modelo dinamico, entonces la simulacion facilita el proceso para
analizar, estudiar y comprender el comportamiento de la dinamica del sistema. Esta
etapa es fundamental para el diseno de algoritmos de control. Cuando el modelo
matematico del sistema mecatronico o robot manipulador es lo suficientemente
completo entonces la simulacion proporciona un medio virtual del sistema real.
El proposito de este capıtulo se ubica en preparar al lector para conocer mejor
el entorno de programacion, programar y manejar en forma solvente el lenguaje
de MATLAB. En otras palabras, proporcionar todos los elementos necesarios de
programacion (variables, datos, instrucciones y funciones) para realizar diversas
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.2 Componentes 7
aplicaciones para las areas de robotica y mecatronica.
1.2 Componentes
El ambiente de programacion de MATLAB es amigable al usuario, y
esta compuesto por una interface grafica con varias herramientas distribuidas
en ventanas que permiten programar, revisar, analizar, registrar datos, utilizar
funciones, historial de comandos y desarrollar diversas aplicaciones. La forma
de iniciar el paquete MATLAB es realizando doble click sobre el icono
colocado en el escritorio de Windows (Windows desktop). La pantalla principal de
MATLAB se presenta en la figura 1.1 la cual contiene la interface grafica de usuario
con varias ventanas como la de comandos (Command Window fx >>), manejo
de archivos, espacio de trabajo (Workspace), historial de comandos (Command
History), directorio de trabajo y aplicaciones como Simulink.
Figura 1.1 Ambiente de programacion de MATLAB.
Es recomendable personalizar el ambiente de programacion de MATLAB para una
facil interaccion con manejos de archivos, datos y herramientas de programacion.
Por ejemplo, para integrar la ventana del editor dentro del ambiente grafico se logra
oprimiendo el icono del editor de texto colocado en la esquina superior izquierda,
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8 Capıtulo 1: Conceptos basicos
justo abajo de la opcion File del menu principal, posteriormente se hace click sobre
la flecha colocada en la esquina superior derecha de la ventana del editor. La figura
1.2 muestra el ambiente configurado.
Figura 1.2 Editor de texto integrado en el ambiente de programacion.
Generalmente el usuario registra sus archivos en una carpeta o directorio predefinido;
para dar de alta dicho directorio al momento de simular aparecera el mensaje que
se muestra en la figura 1.3. Seleccionar Add to Path para que MATLAB realice la
simulacion desde esa trayectoria de trabajo, de esta forma las trayectorias de otros
directorios que esten habilitadas no se perderan, por lo que la trayectoria del usuario
se anade a las ya existentes.Las componentes principales del ambiente de programacion de MATLAB son:
Herramientas de escritorio y ambiente de desarrollo.
Librerıas.
Lenguaje MATLAB.
Graficas.
Interfaces externas/API.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.2 Componentes 9
Figura 1.3 Habilitacion del directorio de trabajo de usuario.
1.2.1.1.2.1 Herramientas de escritorio y ambiente de desarrollo
MATLAB tiene un conjunto de herramientas que facilitan el uso de funciones,
comandos, programas, datos, variables y archivos (desktop tools and development
environment). La mayorıa de las herramientas son interfaces graficas donde el usuario
interacciona con comandos, funciones, editor de texto, variables y datos. Por ejemplo
MATLAB desktop, Command Windows, Simulink, ayuda en lınea, analizador de
codigo, navegador de archivos, etcetera.
1.2.2.1.2.2 Librerıas
Las librerıas de MATLAB son un conjunto muy grande de funciones y algoritmos
matematicos que van desde funciones trigonometricas, operaciones basicas con
matrices hasta funciones complejas como analisis de regresion, inversa de matrices,
funciones Bessel, transformada rapida de Fourier, Laplace, programacion de DSP’s,
microprocesadores, procesamiento de imagenes, video y tarjetas de instrumentacion
electronica, entre otras ventajas.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
10 Capıtulo 1: Conceptos basicos
1.2.3.1.2.3 Lenguaje
El lenguaje de programacion de MATLAB es de alto nivel y permite programar
matrices, arreglos e incorporar instrucciones de control de flujo del programa,
funciones, comandos y estructura de datos.
MATLAB contiene una diversidad en comandos que facilitan al usuario la
implementacion del problema a simular. Los comandos son funciones muy especıficas
que tienen un codigo depurado y que no se encuentra disponible al usuario.
El lenguaje de programacion de MATLAB contiene todos los elementos de progra-
macion necesarios para desarrollar aplicaciones en realidad virtual, programacion de
robots manipuladores, analisis de regresion y estadısticos de senales experimenta-
les, procesamiento y extraccion de rasgos distintivos de imagenes y video, ası como
varias aplicaciones mas en ingenierıa y ciencias exactas.
1.2.4.1.2.4 Graficos
MATLAB contiene un enorme numero de funciones que facilitan la representacion
grafica y visualizacion de variables, funciones, vectores, matrices y datos que pueden
ser graficados en 2 y 3 dimensiones. Incluye tambien funciones de alto nivel para el
analisis y procesamiento de graficas, datos experimentales o de simulacion, video e
imagenes, animacion y presentacion de solidos, ası como el desarrollo de aplicaciones
con interface grafica para incluir menus con botones, barras deslizadoras, diagramas
a bloques, instrumentos de medicion y ventanas para seleccionar opciones o
herramientas de la aplicacion.
1.2.5.1.2.5 Interfaces externas/API
Hay varias herramientas especiales para escribir programas en lenguaje C, C++,
fortran y Java que interactuen con programas en lenguaje MATLAB facilitando el
proceso de llamada a rutinas desde MATLAB y pase de parametros, ası como la
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.3 Inicio 11
programacion de puertos (USB, COM, paralelo y serial) que permiten conectar
tarjetas de instrumentacion electronica para adquisicion de datos y evaluacion
experimental de algoritmos de control.
1.3 Inicio
Una vez instalado MATLAB, la forma mas simple de interaccionar con este
paquete es introduciendo expresiones directamente en la venta de comandos,
por ejemplo iniciando con el tradicional letrero “Hola mundo...” sobre el prompt:
fx >> disp(’Hola mundo...’) ←↩
Hola mundo...
fx >> 9+9 oprimir la tecla Enter ←↩
ans=
18
fx >> sin(10) oprimir Enter ←↩
ans=
−0.5440
Cuando no se especifique el nombre de la variable, MATLAB usara el nombre por
default ans que corresponde a un nombre corto de answer. Al especificar una variable
el resultado se desplegara con el nombre de esa variable, por ejemplo:
fx >> z=9+9 Enter ←↩z=
18
fx >> y=sin(10) Enter ←↩
y=
−0.5440
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
12 Capıtulo 1: Conceptos basicos
MATLAB funciona como calculadora, sobre el prompt de la ventana de comandos se
pueden escribir expresiones aritmeticas mediante los operadores “+”,“-”,“/”, “*”,
“∧” para la suma, resta, division, multiplicacion y potencia, respectivamente. La
tabla 1.1 contiene los operadores aritmeticos basicos.
Por ejemplo, similar a una calculadora se pueden evaluar expresiones como:
fx >> (10.3+8*5/3.33)∧5 ←↩
ans=
5.5296e + 006
fx >> ans∧2 ←↩
ans=
3.0576e + 013
Tabla 1.1 Operadores aritmeticos basicos
Adicion +
Sustraccion -
Multiplicacion *
Division /
Division left \
Potencia ∧
Evaluacion ( )
MATLAB utiliza el operador ; para deshabilitar la opcion de desplegado en la
ventana de comandos. Por ejemplo,
fx >> z=9+9; ←↩
fx >>
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.3 Inicio 13
es decir, con el operador ; MATLAB no exhibira ningun valor de variable o funcion.
El lenguaje MATLAB permite insertar comentarios usando el operador % el cual
debera emplearse por cada lınea de comentarios. Por ejemplo:
fx >> w=10+20%Suma de dos enteros. ←↩
w=
30
fx >> sign(-8999.4)%Obtiene el signo de un numero. ←↩
ans=
−1
Observese que al ejecutarse la instruccion o la sentencia el comentario no se despliega.
Los comentarios sirven para documentar aspectos tecnicos de un programa.
Herramienta de ayuda de MATLAB
MATLAB tiene una extensa gama de herramientas para solicitar ayuda en lınea
(help), ya sea de manera general o en forma especıfica buscar informacion para una
instruccion comando o funcion, ası como sus principales caracterısticas y ejemplos
didacticos (demos).
En la ventana de comandos puede solicitar ayuda de la siguiente forma:
fx >> help ←↩
fx >> helpwin ←↩
fx >> help general ←↩
fx >> helpdesk ←↩
fx >> help if ←↩
fx >> help demo ←↩
La ayuda en lınea del programa MATLAB tambien proporciona informacion sobre
los demos y tutoriales que facilitan el aprendizaje del paquete.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
14 Capıtulo 1: Conceptos basicos
Para suspender la ejecucion de un programa
Cuando MATLAB se encuentra realizando la ejecucion de un programa o calculo
computacional en la esquina inferior izquierda aparecera un icono que indica busy.
Sin embargo, hay ocasiones que toma mucho tiempo la ejecucion del programa debido
a que se encuentra realizando operaciones complicadas, funciones discontinuas o con
numeros muy grandes, en cuyo caso despliega Inf, que significa infinito.
fx >> sinh(1345e34)%Obtiene el seno hiperbolico de un numero. ←↩
ans=
Inf
La siguiente expresion genera un lazo infinito de ejecucion. Es decir el programa se
quedara de manera indefinida en ejecucion.
fx >> while 1 end%Genera un ciclo infinito de ejecucion del programa.
←↩
En este caso, hay ocasiones donde es recomendable interrumpir el proceso mediante
la combinacion de teclas CRTL C (presionar simultaneamente CONTROL y la tecla C).
Para que tenga efecto CRTL C es muy importante que se encuentre sobre la
ventana de comandos; si no es el caso primero haga click sobre dicha ventana,
y posteriormente CRTL C. De lo contrario no tendra efecto la accion de suspender
programa.
Finalizar la sesion de MATLAB
Para finalizar MATLAB simplemente escribir en la ventana de comandos lo siguiente:
fx >> quit ←↩fx >> exit ←↩
Tambien se pueden usar las siguientes opciones para finalizar la sesion con MATLAB:
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.4 Lenguaje 15
Desde el teclado, presionar simultaneamente CRTL Q o CONTROL con q
Presionar simultaneamente las teclas ALT F y despues la opcion Exit
Con el mouse sobre el menu de MATLAB click sobre File y click en Exit.
1.4 Lenguaje
El lenguaje de programacion de MATLAB esta compuesto por un conjunto
de reglas gramaticales y sintaxis para escribir correctamente las variables,
constantes, operadores, expresiones, funciones y todos los elementos que forman
parte de la programacion.
Las variables, constantes, operadores y funciones forman una expresion la cual
sera procesada por un analizador lexico y sintactico antes de ser ejecutada por
la computadora. A diferencia de otros lenguajes, las expresiones en MATLAB
involucran matrices.
1.4.1.1.4.1 Variables
En el lenguaje de MATLAB las variables no requieren ningun tipo de declaracion
o definicion. Esto tiene varias ventajas ya que facilita la programacion. Cuando
MATLAB encuentra el nombre de una nueva variable, automaticamente crea la
variable y le asigna una localidad de memoria. Por ejemplo,
fx >> error posicion=20
esta variable es vista por MATLAB desde el punto de vista de programacion como
una matriz de dimension 1× 1.
Los nombres usados para referenciar a las variables, funciones y otro tipo de objetos
o estructuras definidos por el usuario se les conocen como identificadores. Los
nombres de identificadores constan de una letra del idioma castellano como caracter
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
16 Capıtulo 1: Conceptos basicos
inicial (con excepcion de la letra n y sin acentos) seguido de cualquier
numero de letras, dıgitos, y tambien se puede usar el guion bajo (underscore ).
MATLAB distingue las letras mayusculas de las minusculas; por ejemplo la variable
A es diferente a la variable a. La longitud de los nombres de las variables puede
ser cualquier numero de caracteres. Sin embargo, MATLAB usa los primeros 63
caracteres del nombre (namelengthmax=63) e ignora los restantes. Por lo tanto,
para distinguir variables es importante escribir los nombres de las variables con un
maximo de 63 caracteres.
La funcion genvarname es util para crear nombres de variables que son validas
y unicas. Por ejemplo, cadena=genvarname({’A’, ’A’, ’A’, ’A’}) produce la
siguiente salida: cadena = ’A’ ’A1’ ’A2’ ’A3.
MATLAB puede trabajar con varios tipos de variables: en punto flotante, flotante
doble, enteros, enteros dobles, enteros cortos o tipo char, cadenas de caracteres,
expresiones simbolicas, etc. Los diversos tipos de variables son interpretados como
matrices.
Para saber que tipos de variables estamos usando podemos utilizar el comando whos
como en los ejemplos siguientes, primero se declaran las variables y posteriormente
se usa la funcion whos:
fx >> i=9 ←↩i=
9
fx >> x=3.35 ←↩
x=
3.3500
fx >> cadena= ’esta es una cadena de caracteres’ ←↩
cadena=
’esta es una cadena de caracteres’
fx >> A=[2 3; 3 4] ←↩
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.4 Lenguaje 17
A=
2 3
3 4
fx >> whos ←↩
=
Name Size Bytes Class Attributes
A 2× 2 32 double
cadena 1× 32 64 char
i 1× 1 8 double
x 1× 1 8 double
La columna Size indica la cantidad de memoria asignada a esa variable, mientras
que la columna Bytes Class indica el tipo de variable. Observese que MATLAB
trata a todas las variables como matrices para propositos de programacion.
Al terminar una sesion, o cuando ya no se usen la variables debido a que se
desea trabajar con otro programa es recomendable limpiar todas las variables para
liberar memoria. Para realizar lo anterior, se puede hacer con cada variable, por
ejemplo clear i, posteriormente clear x y finalmente clear cadena. Otra forma
de realizarlo es limpiando simultaneamente las tres variables a traves de: clear i x
cadena o cuando hay una gran cantidad de variables, entonces es conveniente usar
clear all.
1.4.2.1.4.2 Numeros
La notacion convencional que usa MATLAB para la representacion de numeros
es la decimal con un punto decimal, signo ± y un numero determinado de dıgitos
despues del punto decimal, esto depende del tipo de formato numerico empleado (ver
format). En la notacion cientıfica se usan potencias de diez. Tambien se emplean
constantes tales como e, π. Los numeros complejos o imaginarios emplean i o j. Todos
los numeros son almacenados internamente utilizando el formato long en notacion
estandar de la IEEE para punto flotante con precision finita de 16 dıgitos decimales
y un rango finito de 10−308 a 10308.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
18 Capıtulo 1: Conceptos basicos
Algunos ejemplos de numeros son:
2.33 −105 0.005
9.999 8.345e88 9 + i3.2
3.1416 8e5i 90180
eπ sen(π)√
2
La tabla 1.2 muestra algunas de las constantes mas usadas en el area de la ingenierıa.
Tabla 1.2 Constantes utiles
pi 3.141592653589793.
Numero imaginario i√−1
j Igual que el numero imaginario i
eps Punto flotante con precision relativa, ε = 2−52
realmin El numero en punto flotante mas pequeno, 2−1022
realmaxEl numero mas grande en punto flotante, (2−ε)1023
inf Infinito ∞NaN No es un numero
1.4.3.1.4.3 Formato numerico
La forma para desplegar funciones, variables y cualquier tipo de dato por MATLAB
se realiza a traves del comando format la cual controla el formato numerico de los
valores desplegados. Es decir, modifica el numero de dıgitos para el desplegado de
los datos. Este comando solo afecta a los numeros que son desplegados, no al proceso
de computo numerico o al registro de las variables o datos.
fx >> format short ←↩
fx >> x= [ 9/8 8.3456e-8] ←↩
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.4 Lenguaje 19
x=
1.1250 0.0000
Observe que en el caso de la constante 8.3456e-8 lo despliega con 0.0000 debido a
los lımites del formato corto format short.
Ahora note la diferencia con format short e
fx >> format short e ←↩
fx >> x ←↩
x=
1.1250e + 000 8.3450e− 008
Es posible eliminar el formato extendido para desplegar el resultado de 9/8 y al
mismo tiempo mantener la caracterıstica de desplegado para la segunda componente
de la variable x de la siguiente forma:
fx >> format short g ←↩
fx >> x ←↩
x=
1.1250 8.3450e− 008
Para desplegar la informacion de x con mayor numero de dıgitos sin utilizar la
notacion cientıfica, entonces
fx >> format long ←↩x=
1.125000000000000 0.000000083450000
Para saber que tipo de format esta actualmente activo se usa el comando get:
fx >> get(0,’format’) ←↩ans=
long
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
20 Capıtulo 1: Conceptos basicos
El formato numerico que por default emplea MATLAB es el formato corto (short):
format short. Sin embargo, es posible utilizar otros tipos de formatos como:
extendido, notacion cientıfica, punto fijo, punto flotante, formato de ingenierıa, etc.
Los formatos numericos que contiene el comando format se encuentran resumidos
en la tabla 1.3.
Tabla 1.3 Opciones del comando format
Tipo Descripcion
shortFormato por default. Despliega 4 dıgitos despues del punto decimal. Por ejemplo
3.1416
long
Formato para punto fijo con 15 dıgitos despues del punto decimal para variables
tipo doble y 7 dıgitos para variables tipo simple. Por ejemplo x=4.123456789012345
ShortE
Formato para punto flotante con 4 dıgitos despues del punto decimal. Por ejemplo:
1.4567e+000.
Variables enteras que almacenan numeros flotantes con mas de 9 dıgitos no seran
desplegados en la notacion cientıfica.
longE
Punto flotante con 15 dıgitos despues del punto decimal para datos tipo doble y 7
dıgitos despues del punto decimal para variables tipo simple.
Ejemplo x=4.123456789012345+e000.
Variables enteras que almacenan numeros flotantes con mas de 9 dıgitos no seran
desplegados en notacion cientıfica.
shortGFormato para punto fijo o punto flotante, 4 dıgitos despues del punto decimal.
Ejemplo 3.1416.
longG
Formato para punto flotante o fijo con 14 o 15 dıgitos despues del punto decimal
para variables tipo doble y 6 o 7 dıgitos despues del punto decimal para variables
tipo simple. Ejemplo 8.01234567891234.
shortEng Formato para ingenierıa tiene 4 dıgitos despues del punto decimal y una potencia
que es multiplo de tres. Ejemplo 3.1416e+000.
longEngFormato para ingenierıa tiene 16 dıgitos despues del punto decimal y una potencia
que es multipo de tres. Ejemplo 3.14159265358979e+000.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.4 Lenguaje 21
El comando format tambien proporciona representacion hexadecimal, tipo propor-
cion ab y de tipo bancaria como se explica en la tabla 1.4.
Tabla 1.4 Opciones del comando format
Tipo Descripcion
rat Despliega en forma de proporcion de numeros enteros. Ejemplo 17/50
hex Representacion en formato hexadecimal. Ejemplo a0fcbdf34
bank Despliega tipo cantidad bancaria (pesos y centavos). Ejemplo 3.14
1.4.4.1.4.4 Operadores
Los operadores en MATLAB juegan un papel determinante ya que manipulan a las
variables y funciones. Adicional a los operadores aritmeticos de la tabla 1.1, hay
operadores especıficos para funciones, operaciones logicas, relacionales, estructuras
de datos, uniones y matrices.
A continuacion se presentan diversos tipos de operadores de utilidad en MATLAB.
Operador colon :
El operador colon : (dos puntos verticales) es uno de los operadores mas importantes
para programar, se emplea para diferentes formas, como por ejemplo en MATLAB
tecnicamente se conoce como vectorizacion al proceso de generar una secuencia de
numero usando 1:10.
fx >> 1:10 ←↩
ans =
1 2 3 4 5 6 7 8 9 10
En este caso el incremento es de uno en uno. Si se requiere un paso de incremento
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
22 Capıtulo 1: Conceptos basicos
especıfico, por ejemplo 2, entonces se procede de la siguiente forma
fx >> 1:2:10 ←↩
ans=
1 3 5 7 9 10
El valor del paso de incremento tambien puede ser menor que 1, por ejemplo
fx >> 1:0.1:2 ←↩
ans=
1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2
En ocasiones es conveniente que sea negativo
fx >> 10:-1:2 ←↩
ans=
10 9 8 7 6 5 4 3 2
En otras aplicaciones es util realizar una variacion desde -8 a 8 con incrementos de
pasos de 0.5, por ejemplo
fx >> -8:0.5:8 ←↩
ans=−8 −7.5 −7 −6.5 −6 −5.5 −5 −4.5 −4 −3..5 −3 −2.5 −2
−1.5 −1 −0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
5 5.5 6 6.5 7 7.5 8
Operador ()
Los operadores parentesis () son utilizados en diversas operaciones matematicas, por
ejemplo: evaluar funciones como en el caso de y=sin(t). Tambien para referenciar
a elementos de matrices A(2, 3). En expresiones aritmeticas indican precedencia
y la forma de agrupar variables x=3*(y+j)*r-i*(4+r). Resultan de utilidad para
evaluar condiciones logicas if (x>3) x=3 end. Cuando se trata de evaluar potencias
los parentesis determinan los niveles de jerarquıa para realizar operaciones desde las
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.4 Lenguaje 23
mas internas hasta las externas (7 + (r ∗ (x2 + 8))6 − j + sen(t3)5)3.
Operador semicolon ;
El operador punto y coma alineados en forma vertical o mejor conocido como
semicolon ; tiene varias funciones. Una de ellas se encuentra relacionada con el
desplegar el resultado que tienen las variables, constantes, funciones o graficas.
Cuando se inserta al final de la expresion, instruccion o comando se inhabilita el
desplegado. Por ejemplo:
fx >> w=sin(pi/2); ←↩
fx >>
Si el operador ; no se coloca al final de la instruccion, entonces se produce el
desplegado del valor de la variable w
fx >> w=sin(pi/2) ←↩
w=
1
Otra funcionalidad del operador ; es generar renglones en matrices. Por ejemplo,
fx >> A=[ 19 3; 4 5 ] ←↩
A=
19 3
4 5
El operador ; que precede al numero 3 y antecede al numero 4 genera un renglon
de esta matriz. En este caso el primer renglon lo forman los numeros 19 y 3, y
para el segundo renglon formado por 4 y 5. Observese que despues del corchete ]
no se inserta el operador ; ya que en este caso afecta el desplegado, mientras que
dentro de los corchetes [ ; ] significa que genera un renglon en la matriz. Es decir
el operador ; tiene dos funciones muy diferentes. Por cada ; dentro de corchetes se
generara un renglon de la matriz. Es muy importante que quede claro la aplicacion
de este operador para evitar problemas de programacion.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
24 Capıtulo 1: Conceptos basicos
Si en el anterior ejemplo, en la matriz A no se insertara el operador ; entonces el
resultado quedarıa de la siguiente forma:
fx >> A=[ 19 3 4 5 ] ←↩
A=
19 3 4 5
Para ver mas detalles del operador ; referirse a la seccion de Matrices y arreglos.
Operador ,
El operador coma , tiene mas de una funcion en MATLAB. Por ejemplo, cuando
se emplea en funciones indica la separacion de los argumentos como en el caso
de y=sin(t,x) o en w=sinh(t,x,y,z,p). Para referenciar a los elementos de una
matriz se especifica el numero de renglon y de la columna separados por una coma
A(3,4). En matrices indica la separacion de los elementos de un renglon A=[ 5,6,7,8;
8,3,0,2].
Operador ’
El operador ’ se relaciona con el manejo de datos tipo char o cadena de caracteres.
Tambien representa la transpuesta de una matriz.
En relacion a caracteres se emplea de la siguiente forma:
fx >> dato char= ’a’ ←↩
dato char=
aPara almacenar una cadena de caracteres, se procede de la siguiente forma:
fx >> cadena= ’una cadena de letras’ ←↩
cadena=
una cadena de letras
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.4 Lenguaje 25
El operador ’ es ampliamente utilizado en funciones donde el pase de parametros es
a traves de cadenas de texto como en disp(’Hola, mundo...’).
En matrices el operador ’ representa la matriz transpuesta, es decir A’=AT . Para
mayor detalle de este operador en matrices ver la seccion de Matrices y arreglos.
Operador %
En el lenguaje de MATLAB se pueden insertar comentarios usando el operador%.
Los comentarios son importantes en todo programa ya que permiten la documenta-
cion tecnica del algoritmo o aplicacion a implementar. Por ejemplo,
clc ; %limpia la pantalla de la ventana de comandos\
clear ; %limpia espacio de trabajo\
; %ası como todas las variables que ocupen memoria
t=0:0.1:t; %genera base de tiempo
y=sin(t); %genera el vector senoidal
plot(t,y) %grafica onda senoidal
Operador ˜
El operador tilde ˜ se emplea para deshabilitar una variable de salida de una funcion.
Es muy util cuando la funcion retorna mas de una variable y no se requiere usar
todas las variables; supongase que la funcion control robot retorna dos variables
(error y par) y la sintaxis es: [error, par ]=control robot(q). No se requiere usar
la variable error, unicamente par, entonces se usa de la forma siguiente:
[~ , par]= control robot(q).
Tambien se emplea como negacion en operadores logicos, por ejemplo en ˜ = que
significa no es igual a.
En las siguientes secciones se iran explicando otros tipos de operadores que se
encuentran directamente relacionados con matrices y en general con la programacion
del lenguaje de MATLAB.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
26 Capıtulo 1: Conceptos basicos
1.5 Matrices y arreglos
En MATLAB una matriz es un arreglo rectangular de datos o numeros, tienen n
renglones por p columnas; la notacion matematica mas comun para representar
a una matriz es: A ∈ IRn×p. Matrices con una sola columna o renglon significan
vectores para MATLAB, por ejemplo x ∈ IRn×1 o y ∈ IR1×n, respectivamente.
Especial significado representan los escalares cuya interpretacion para propositos de
programacion corresponde a una representacion de matriz del tipo IR1×1.
Las entradas de la matriz se conocen como elementos y pueden ser numeros reales,
numeros complejos, funciones, operadores, inclusive tambien pueden ser matrices de
menor dimension. Es importante destacar que una matriz es un objeto matematico
por sı misma, esto es, no representa un numero o un escalar. Sin embargo, en lenguaje
MATLAB es posible trabajar a una matriz como un escalar, por ejemplo α ∈ IR1×1.
La matrices tienen operaciones y propiedades bien definidas. Las operaciones entre
matrices producen una matriz, en contraste operaciones entre vectores pueden
producir un escalar, vector o matriz.
En la figura 1.4 se muestra la representacion clasica de una matriz rectangu-
lar de n renglones por p columnas (matriz n por p). Las columnas son arre-
glos verticales. Por ejemplo, la segunda columna esta formada por los ele-
mentos A(1, 2), A(2, 2), · · · , A(n, 2) mientras que los renglones son filas horizon-
tales dentro del arreglo rectangular; el segundo renglon esta compuesto por
A(2, 1), A(2, 2), · · · , A(2, p). Las columnas se incrementan de izquierda a derecha,
mientras que los renglones se incrementan de arriba hacia abajo.
Columna�
Renglon�
A =
⎡⎢⎢⎢⎣
A(1, 1) A(1, 2) · · · A(1, p)
A(2, 1) A(2, 2) · · · A(2, p)...
. . ....
A(n, 1) A(n, 2) · · · A(n, p)
⎤⎥⎥⎥⎦
Figura 1.4 Componentes de una matriz: elementos A(i, j), renglones y columnas.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.5 Matrices y arreglos 27
Los elementos de una matriz se denotan en MATLAB por A(i, j) donde i = 1 . . .n
representa el i-esimo renglon y j = 1 . . . p denota la j-esima columna. Por ejemplo,
en la matriz A ∈ IR5×5 el elemento A(2, 5) significa la componente del segundo
renglon y quinta columna, el cual se muestra en la siguiente expresion:
A =
⎡⎢⎢⎢⎢⎢⎢⎣
A(1, 1) A(1, 2) A(1, 3) A(1, 4) A(1, 5)
A(2, 1) A(2, 2) A(2, 3) A(2, 4) A(2,5)
A(3, 1) A(3, 2) A(3, 3) A(3, 4) A(3, 5)
A(4, 1) A(4, 2) A(4, 3) A(4, 4) A(4, 5)
A(5, 1) A(5, 2) A(5, 3) A(5, 5) A(5, 5)
⎤⎥⎥⎥⎥⎥⎥⎦ .
En esta matriz en particular los pivotes pueden adquirir valores para referenciar a
los elementos de la matriz A(i, j). Para los renglones i = 1, 2, · · · , 5 y en las columnas
j = 1, 2 · · · , 5.
Para los propositos de identificar los elementos de una matriz, estos pueden ser vistos
sobre un sistema de referencia cartesiano planar cuyo origen se encuentra localizado
en la esquina superior izquierda. Las referencias a elementos se hace con A(i, j).
Es importante aclarar que dicho origen no inicia en A(0, 0); lo que serıa un error
de sintaxis. El origen inicia con los pivotes asignados en uno, como en A(1, 1); con
esta asignacion se hace referencia al primer elemento de la matriz, ubicado en el
primer renglon y primera columna. El elemento A(1, 1) representa el origen o punto
de partida para los pivotes (i, j) donde el ındice del i-esimo renglon esta dado antes
del j-esimo ındice de la columna. Los renglones de una matriz son numerados de
arriba hacia abajo y las columnas de izquierda a derecha.
Se debe tener claro que el lenguaje MATLAB no admite referencias a elementos de
una matriz con pivotes (i, j) asignados en cero, negativos, numeros reales o numeros
enteros de magnitud mayor a la dimension de la matriz. En otras palabras, en las
referencias a elementos de la matriz unicamente con numeros enteros o naturales
dentro de los lımites de la dimension de la matriz. Por ejemplo, los siguientes
elementos A(0, 0), A(0, 5),A(−5,−1), A(5, 0) son referencias invalidas de una matriz.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
28 Capıtulo 1: Conceptos basicos
Es muy comun cometer errores al referenciar los elementos o entradas de una
matriz. Por ejemplo las entradas A(i, j) de una matriz A ∈ IRn×p deben satisfacer
lo siguiente:
No usar en la referencia de las entradas de una matriz A la posicion A(0, 0)
o numeros negativos A(−3,−5), ni numeros reales como A(1.32, 2.67). En
todos estos ejemplos existe error de sintaxis y la ejecucion de un programa
no puede realizarse hasta no corregir dicho error.
Los pivotes i, j son numeros acotados por 0 < i ≤ n, 0 < j ≤ p. Por ejemplo
si A ∈ IR3×5, existe un error en la referencia del elemento A(4, 6), puesto
que i ≤ 3 y j ≤ 5
Los pivotes i, j son numeros enteros positivos (numeros naturales) i, j ∈ N .
Inicializando una matriz
La matriz se inicializa por corchetes A = [] directamente en la ventana de comandos
(Command Window) fx >> realizar los siguientes ejercicios:
Las entradas de una matriz puede ser de la siguiente forma: separando los
elementos de un renglon por espacios en blanco o por comas:
fx >> A=[2, 3, 4, 78.3, 45] ←↩
A=
2 3 4 78.3 45
Es posible emplear unicamente espacios en blanco
fx >> A=[2 3 4 78.3 45] ←↩
A=
2 3 4 78.3 45
Combinando comas y espacios en blanco es otra posibilidad de inicializar una
matriz
fx >> A=[2, 3 4, 78.3 45] ←↩
A=
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.5 Matrices y arreglos 29
2 3 4 78.3 45
Usar el operador semicolon ; para indicar el fin del renglon y generar otro mas
fx >> A=[2, 3 ,4 ; 5 6 8 ; 7, 8, 9] ←↩A=
2 3 4
5 6 8
7 8 9De tomarse en cuenta que el operador ; ademas de emplearse en matrices tiene
otra funcion cuando se inserta al finalizar una variable, constante o funcion
desactiva la opcion de desplegado.
Los elementos del i-esimo renglon o de la j-esima columna de una matriz A son
denotados como: A(i, j), la expresion A(3, 4) representa un elemento de la matriz
que se encuentra localizado en el tercer renglon y cuarta columna.
Considerese la siguiente matriz A ∈ IR4×4
A =
⎡⎢⎢⎢⎣
1 3 3 2
0 3 4 12
12 34 1 23
9 7 2 3
⎤⎥⎥⎥⎦
Se inicializa como:
fx >> A=[1,3,3,2; 0, 3, 4,12; 12,34,1,23;9,7,2,3] ←↩
Para sumar todos los elementos del cuarto renglon de A se procede de la siguiente
forma: A(4, 1) + A(4, 2) + A(4, 3) + A(4, 4) = 9 + 7 + 2 + 3 = 21, es decir
fx >> A(4,1)+A(4,2)+A(4,3)+A(4,4) ←↩
ans =
21
El resultado es diferente a sumar A(1, 4)+A(2, 4)+A(3, 4)+A(4, 4) = 2+12+23+3 =
40.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
30 Capıtulo 1: Conceptos basicos
fx >> A(1,4)+A(2,4)+A(3,4)+A(4,4) ←↩
=
40
En general A(i, j) �= A(j, i) o A �= AT . Si la matriz es simetrica, entonces se cumple
A(i, j) = A(j, i) o A = AT . En MATLAB el operador que representa la matriz
transpuesta es ’. Por ejemplo,
fx >> B=A ’ ←↩
B=
1 0 12 9
3 3 34 7
3 4 1 2
2 12 23 3
Debe tenerse cuidado con el empleo del operador ’, ademas de su uso en matrices
tambien se emplea en cadenas de caracteres.
El operador colon : se puede emplear en matrices para referenciar a una porcion de
la matriz. Por ejemplo, sea una matriz A ∈ IR5×5
A =
⎡⎢⎢⎢⎢⎢⎢⎣
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
⎤⎥⎥⎥⎥⎥⎥⎦
entonces las referencias A(1 : 5, 1), A(1 : 5, 2), A(1 : 5, 3), A(1 : 5, 4), A(1 : 5, 5)
representan los 5 renglones de las columnas j = 1 · · ·5, respectivamente
A(1 : 5, 1) =
⎡⎢⎢⎢⎢⎢⎢⎣
1
6
11
16
21
⎤⎥⎥⎥⎥⎥⎥⎦ A(1 : 5, 2) =
⎡⎢⎢⎢⎢⎢⎢⎣
2
7
12
17
22
⎤⎥⎥⎥⎥⎥⎥⎦
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.5 Matrices y arreglos 31
A(1 : 5, 3) =
⎡⎢⎢⎢⎢⎢⎢⎣
3
8
13
18
23
⎤⎥⎥⎥⎥⎥⎥⎦ A(1 : 5, 4) =
⎡⎢⎢⎢⎢⎢⎢⎣
4
9
14
19
24
⎤⎥⎥⎥⎥⎥⎥⎦
A(1 : 5, 5) =
⎡⎢⎢⎢⎢⎢⎢⎣
5
10
15
20
25
⎤⎥⎥⎥⎥⎥⎥⎦
Para obtener las 5 columnas de cada renglon se representa por A(1, 1 : 5), A(2, 1 :
5), A(3, 1 : 5), A(4, 1 : 5), A(5, 1 : 5)
A(1, 1 : 5) = [ 1 2 3 4 5 ] A(2, 1 : 5) = [ 6 7 8 9 10 ]
A(3, 1 : 5) = [ 11 12 13 14 15 ] A(4, 1 : 5) = [ 16 17 18 19 20 ]
A(5, 1 : 5) = [ 21 22 23 24 25 ]
Generando matrices basicas
Existen varias formas para generar matrices basicas en MATLAB, se pueden generar
con funciones especıficas, con funciones definidas por el usuario, o con el uso del
operador colon :. A continuacion se enlistan varias opciones para generar matrices
basicas en MATLAB:
Introduciendo una lista de elementos explıcitos: A = [2, 3, 67; 5.3, 3.3, 2.4; 2, 9, 1]
Cargando matrices de archivos de datos experimentales o externos en formato
de columnas: matriz=load(’datos.dat’)
Generando matrices usando funciones que retornan matrices: matriz=mi matriz(n,m)
Usando funciones de MATLAB por ejemplo: A=zeros(3,3).
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
32 Capıtulo 1: Conceptos basicos
La tabla 1.5 muestra las opciones mas comunes (funciones especiales y por asignacion
de datos) que permiten generar matrices basicas.
Tabla 1.5 Funciones especiales para generar matrices basicas
Nombre de la funcion Descripcion y caracterısticas
zeros(n,m)Genera una matriz IRn×m donde todos sus elementos son
cero.
ones(n,m)Genera una matriz IRn×m donde todos los elementos tienen
el valor 1.
rand(n,m)Genera una matriz IRn×m donde las entradas son elementos
aleatorios distribuidos de manera uniforme.
randn(n,m)Genera una matriz IRn×m donde las entradas son elementos
aleatorios distribuidos normalmente.
magic(n)
Retorna una matriz cuadrada IRn×n donde las entradas son
numeros enteros desde 1 hasta n2.
El numero n debe ser mayor o igual a 3. .
eye(n,m)
Genera una matriz rectangular IRn×m donde los elementos
con ındices (i, j) tal que i = j tienen el valor de 1, y para
entradas i �= j tienen valor de 0.
Si n = m, entonces la matriz es cuadrada y diagonal.
A(1:n, 1:m)=α
Genera una matriz rectangular IRn×m donde todos los
elementos de la matriz A adquieren el valor del escalar α.
Cuando n = m, entonces retorna una matriz cuadrada.
A=load
Genera una matriz rectangular desde un archivo ASCII o
de texto load(’nombre archivo.tex’); el archivo puede
tener datos experimentales y asignarlos a una matriz para
su procesamiento o analisis.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.5 Matrices y arreglos 33
Por ejemplo, en la ventana de comandos se puede comprobar lo siguiente:
fx >> A=zeros(3,3) ←↩
A=
0 0 0
0 0 0
0 0 0
fx >> B=10*ones(3,3) ←↩
B=
10 10 10
10 10 10
10 10 10
fx >> C=randn(3,3) ←↩
C=
0.5377 0.8622 −0.4336
1.8339 0.3188 0.3426
−2.2588 −1.3077 3.5784
Otra forma simple de generar matrices es por medio de la siguiente expresion:
fx >> D(1:3,1:3)=3.1416 ←↩
D=
3.1416 3.1416 3.1416
3.1416 3.1416 3.1416
3.1416 3.1416 3.1416
Por medio de un archivo con extension m es posible generar una matriz de la
siguiente forma. Crear en el editor de texto de MATLAB un archivo con la siguiente
informacion:
A = [ 8 3 7;
6 7.3 3.1416;
7.98 6.67 0.001];
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
34 Capıtulo 1: Conceptos basicos
salvar el archivo como datos.m en la carpeta del usuario, entonces sobre el
prompt de la ventana de comandos teclear:
fx >> datos ←↩
A=
8.0000 3.0000 7.0000
6.0000 7.3000 3.1416
7.9800 6.6700 0.0010
Otra forma de generar matrices es por medio de la funcion load la cual lee archivos
binarios y de texto. Por medio de un editor de texto generar un archivo de datos de
texto en arreglo rectangular separados con espacios en blanco. Por ejemplo, grabar en
la carpeta de trabajo del usuario un archivo de texto denominado datos1.dat
con la siguiente informacion:
datos1.dat
2.0000 3.0000 4.0000
5.0000 6.0000 7.0000
6.7000 8.3000 4.5450
Para generar la matriz con la informacion del archivo datos1.dat utilizar la
siguiente sentencia en el prompt de la ventana de comandos:
fx >> A=load(’datos1.dat’) ←↩
A=
2.0000 3.0000 4.0000
5.0000 6.0000 7.0000
6.7000 8.3000 4.5450
Observe que con esta asignacion en la matriz A, la informacion se encuentra lista para
ser procesada por cualquier operacion de matrices previamente vista. En robotica
y mecatronica es comun grabar archivos experimentales o resultados de simulacion
para ser analizados con MATLAB usando un procedimiento parecido al planteado.
El formato del archivo debe ser que los datos esten distribuidos en renglones y
columnas separadas por espacios en blanco.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.5 Matrices y arreglos 35
Concatenacion
Al proceso de unir pequenas matrices para hacer una mas grande se le denomina
concatenacion. Los sımbolos [ ], mejor conocidos como corchetes, representan en
MATLAB el operador concatenacion. Por ejemplo, se puede iniciar con una matriz
diagonal 4× 4 de la siguiente forma:
fx >> A=eye(4,4) ←↩
A=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Escribir en el prompt de la ventana de comandos la siguientes expresion para obtener
una matriz de dimension 8× 8.
fx >> B=[A A+10; A+20 A+30] ←↩
B=
1 0 0 0 11 10 10 10
0 1 0 0 10 11 10 10
0 0 1 0 10 10 11 10
0 0 0 1 10 10 10 11
21 20 20 20 31 30 30 30
20 21 20 20 30 31 30 30
20 20 21 20 30 30 31 30
20 20 20 21 30 30 30 31
Borrando columnas y renglones
MATLAB permite borrar renglones y columnas de una matriz usando el operador
concatenacion [ ]. Por ejemplo, para borrar la segunda columna de la matriz A
previamente definida en el apartado inmediato anterior se procede de la siguiente
forma:
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
36 Capıtulo 1: Conceptos basicos
fx >> A(:,2)=[] ←↩
A=
1 0 0
0 0 0
0 1 0
0 0 1
observese que por borrar la segunda columna, la nueva matriz resultante A adquiere
una dimension de 4× 3.
Ahora, si se desea borrar el primer renglon de la anterior matriz resultante A,
entonces
fx >> A(1,:)=[] ←↩
A=
0 0 0
0 1 0
0 0 1
resulta una matriz A∈ IR3×3.
Si un elemento de una matriz se quiere borrar, resulta un error, la expresion
A(1,1)=[] es invalida. Sin embargo, usando subındices borra un simple elemento
o una secuencia de elementos de la matriz y rehace los elementos restantes de la
matriz en un vector renglon.
Por ejemplo, para borrar el primer elemento de A se emplea la siguiente expresion
fx >> A(1:1)=[] ←↩
A=
0 0 0 1 0 0 0 1
Notese que los elementos restantes se quedan arreglados en la forma de un vector
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.5 Matrices y arreglos 37
renglon. Si en lugar de borrar el primer elemento, se desea borrar los 5 primeros
elementos, entonces se procede de la siguiente forma:
fx >> A(1:5)=[] ←↩
A=
0 0 0 1
Expansion de escalares
Los escalares pueden ser combinados con algunas operaciones con matrices. Por
ejemplo, en la sustraccion un escalar y una matriz A puede ser combinados como
A-3.3 de la siguiente manera:
fx >> A=[1 2; 5 6]; ←↩
fx >> B=A-3.3 ←↩
B=
−2.3000 −1.3000
1.7000 2.7000
es necesario resaltar que la expresion A-3.3 no produce error, es una operacion valida
de acuerdo a la sintaxis del lenguaje de MATLAB.
Ademas debe tomarse en cuenta que las operaciones entre escalares y matrices
respetan la propiedad conmutativa. Es decir, A-3.3=-3.3+A. De manera similar
para la suma, division y multiplicacion entre escalares y matrices: A+3.3=3.3+A,
A*3.3=3.3*A, A/3.3=1/3.3*A.
Usando la expansion de escalares, MATLAB asigna un escalar especıfico a todos
los ındices para el rango indicado en la matriz. Por ejemplo, la siguiente expresion
genera una matriz de dimension 3× 3 donde todos sus elementos tienen asignado el
valor 9:
fx >> B(1:3,1:3)=9 ←↩
Si la matriz ya existe, entonces esta expresion solo asigna el valor del escalar 9 a
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
38 Capıtulo 1: Conceptos basicos
los elementos de la matrices (renglones y columnas especificados) de acuerdo a los
ındices indicados. Si la matriz no existe, entonces genera una nueva matriz en este
caso de dimension 3× 3 donde todos sus elementos son iguales a 9.
Operaciones basicas con matrices
Hay varias operaciones elementales entre matrices que se realizan con frecuencia
en mecatronica y robotica. Hay que considerar que se deben respetar las reglas
del algebra de matrices. Por ejemplo, se debe satisfacer la compatibilidad entre el
numero de renglones y columnas de la matriz A con la matriz B:
1) Declarar las matrices por ejemplo: A=[ 2 3 4; 6 7 8; 9 0 9] y B=[ 3 0 1;
5 2 4; 7 8 1]
2) Usar el operador + para realizar la suma: A+B
3) La sustraccion se realiza con: A-B
4) La multiplicacion: A*B (el numero de columnas de la matriz A debe ser igual
al numero de renglones de la matriz B).
5) En general la multiplicacion no es conmutativa: B*A (el numero de columnas de
la matriz B debe ser igual al numero de renglones de la matriz A). Cuando las
matrices son diagonales, entonces se satisface la propiedad de conmutatividad
de la multiplicacion.
6) El determinante de una matriz se obtiene como: det(A)
7) La inversa de una matriz existe si su determinante es diferente a cero: inv(A)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.5 Matrices y arreglos 39
Debido a que las expresiones de programacion van creciendo, es conveniente que
el lector en lugar de seguir utilizando la ventana de comandos, utilice el editor de
texto para grabar todas las operaciones que realiza en nombre archivo.m (M-files)
el cual almacenara instrucciones, variables, operadores, comentarios, funciones,
etc. De esta forma el archivo queda grabado en el directorio del usuario y se
puede reproducir sin ningun problema. Por lo tanto, de aquı en adelante sera de
utilidad emplear el editor de texto que se encuentra integrado en el ambiente de
programacion de MATLAB.
♣ Ejemplo 1.1
Escribir un programa en MATLAB para realizar operaciones basicas entre
matrices (adicion , sustraccion, inversa, simetrica, antisimetrica, etc). Considere
las siguientes matrices A, B ∈ IR3×3:
A =
⎡⎢⎣ 2 3 4
6 7 8
9 0 9
⎤⎥⎦
B =
⎡⎢⎣
3 0 1
5 2 4
7 8 1
⎤⎥⎦
Solucion
El cuadro de codigo fuente 1.1 contiene las operaciones mas importantes que se
realizan en mecatronica y robotica usando matrices. Edite el programa que se
muestra a continuacion; se recomienda salvarlo como cap1 matrices1.m; y ejecutese
oprimiendo la tecla F5 o realizando click sobre el icono play que se encuentra
localizado en la parte superior del editor de texto.
Recuerde que para visualizar los resultados de las operaciones que le interesan al
final de la lınea correspondiente elimine el operador ;.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
40 Capıtulo 1: Conceptos basicos
Codigo Fuente 1.1 Operaciones basicas con matrices
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo cap1 matrices1.m
Operaciones basicas con matrices
%se definen las matrices de prueba1
A=[ 2 3 4;2
6 7 8;3
9 0 9];4
B=[ 3 0 1;5
5 2 4;6
7 8 1];7
A+B; % suma de matrices8
A-B; %resta de matrices9
%en general la multiplicacion no es conmutativa10
A*B;11
B*A;12
A’ % transpuesta de la matriz A13
(A’)’ % transpuesta de la transpuesta = A14
As=(A+A’)/2; % parte simetrica15
Ask=(A-A’)/2; % parte antisimetrica16
As+Ask % matriz original A17
A’*A%obtiene una matriz simetrica18
A∧(-1);%inversa de la matriz19
det(A) % determinante20
inv(A);%inversa de la matriz A21
A*inv(A);22
inv(A)*A;% matriz identidad23
eig(A)% valores propios de la matriz A24
norm(A)% norma de la matriz A25
p=poly(A)%retorna coeficientes del polinomio caracterıstico de A26
r=root(p); %retorna raıces del polinomio caracterıstico de A27
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.5 Matrices y arreglos 41
1.5.1.1.5.1 Arreglos
Las operaciones aritmeticas con arreglos o registros son realizadas elemento por
elemento. Es decir, la adicion y sustraccion son las mismas para arreglos y matrices,
pero la multiplicacion es diferente. MATLAB usa como parte de la notacion de
multiplicacion con arreglos un punto decimal.
La tabla 1.6 muestra la lista de operadores que se utilizan en operaciones con
arreglos.
Tabla 1.6 Operadores de arreglos
Suma +
Sustraccion -
Multiplicacion elemento por elemento .*
Division elemento por elemento ./
Division izquierda elemento por elemento .\Elevar a una potencia elemento por elemento .∧
Arreglo transpuesto .’
Como ejemplo ilustrativo de estos operadores considere lo siguiente:
fx >> A=[1 3; 4 5] ←↩
A=
1 3
4 5
fx >> A.*A ←↩
ans=
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
42 Capıtulo 1: Conceptos basicos
1 9
16 25
observese que cada elementos se multiplica por sı mismo, es decir los elementos de
la matriz resultante son el cuadrado de cada elemento. Lo mismo sucede para los
demas operadores:
fx >> A./A ←↩
ans=
1 1
1 1
fx >> A.∧A ←↩
ans=
1 27
256 3125
Las operaciones con arreglos son muy utiles para construir tablas. Por ejemplo:
fx >> x=(0:5) ’ ←↩
x=
0
1
2
3
4
5
fx >> [n, m]=size(x); ←↩
n=
6
fx >> tabla=[x x.∧2 x.∧n] ←↩
tabla=
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.6 Graficas 43
0 0 0
1 1 1
2 4 64
3 9 729
4 16 4096
5 25 15625
1.6 Graficas
La representacion grafica y visualizacion de resultados es una herramienta muy
importante en el analisis y diseno de esquemas de control y comportamiento
dinamico. Permite exhibir como el robot o el sistema mecatronico responde en sus
etapas transitoria y estacionaria cuando se encuentra bajo la accion de control de
una estructura matematica determinada. MATLAB tiene varios tipos de graficas
(plots): incluye desde la estandar con ejes lineales, logarıtmicas y semi-logarıtmicas,
barras, polares, en el espacio tridimensional (3D), contornos de superficies entre
otras. Las graficas se pueden formatear para tener una apariencia especıfica, es decir
con un tipo de lınea y colores. Tambien es posible utilizar una sola ventana con
varias graficas, ası como tıtulos y letreros sobre los ejes.
Para inicializar ventanas especıficas donde se despliegue resultados graficos se emplea
la funcion figure; la cual crea figuras y objetos graficos, para ser utilizados por
funciones como plot, subplot, plot3, mesh, etc. La informacion completa y
detallada de las funciones grafica se puede consultar en helpwin, help plot, help
figure, etc. Sin embargo, a continuacion se describe algunas funciones que de manera
particular se emplean en robotica y mecatronica.
plot
La funcion plot es utilizada para generar una grafica en dos dimensiones:
plot(t,x)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
44 Capıtulo 1: Conceptos basicos
Los argumentos t,y son vectores (arreglos de una dimension), ambos vectores deben
tener el mismo numero de elementos o dimension. Cuando el comando plot se
ejecuta genera automaticamente una simple curva de los datos de la variable x
(eje vertical o eje de ordenadas) vs t (eje horizontal o eje de las abscisas). Con la
funcion plot tambien se puede graficar diagramas de fase, respuesta transitoria y
estacionaria de robots manipuladores. De esta forma en forma grafica es mas facil
la interpretacion de las variables de estado.
♣ Ejemplo 1.2
Escribir un programa en MATLAB para graficar la curva de la siguiente funcion:
y = 9x5 + 3 sen(x3)
para el intervalo x ∈ [−10, 10].
Solucion
El codigo fuente que se presenta en el cuadro 1.2 contiene la forma de obtener
la evolucion en el tiempo de una funcion exponencial requerida para el intervalo
x ∈ [−10, 10]. En la lınea 1 se emplean las instrucciones clear all; close all;
clc; requeridas para liberar cualquier variable, figura, o archivo que ocupe espacio
de memoria.
En la lınea 3 se define el intervalo de la funcion con desplazamiento de una milesima.
La funcion a graficar y = 9x5+3 sen(x3) se encuentra implementada con operaciones
de arreglos.
En esta parte del codigo se destaca la ventaja que ofrece emplear operaciones con
arreglos, debido que la variable x es definida como un vector de un renglon y
n columnas, entonces la forma mas adecuada de realizar las operaciones con los
exponentes de la funcion y es a traves de la manipulacion de datos usando arreglos.
Finalmente, en la lınea 5 se grafica la funcion y = 9x5 + 3 sen(x3) por medio de
plot(x,y) tal y como se muestra en la figura 1.5.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.6 Graficas 45
Codigo Fuente 1.2 Grafica de la funcion 9x5 + 3 sen(x3)
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo cap1 grafica.m
Grafica de la funcion 9x5 + 3 sen(x3)
clear all; close all; clc;1
%vector del eje de ordenadas2
x=-10:0.001:10;%intervalo de graficado3
y=9*x.∧5+3*sin(x.∧3); y es el vector de las abscisas4
plot(x,y)5
Figura 1.5 Grafica de 9x5 + 3 sen(x3).
Mayor informacion de la funcion plot se puede consultar en:
fx >> help plot ←↩
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
46 Capıtulo 1: Conceptos basicos
fplot
El comando fplot grafica una funcion de la forma y=f(x) entre lımites especıficos.
La sintaxis del comando fplot es la siguiente:
fplot(’function’,limits,line)
function: es la funcion a graficar. Puede ser escrita como una cadena de
caracteres entre comillas. La funcion puede ser propia de MATLAB (built-
in) o definida por el usuario (M-file).
La funcion no puede incluir variables previamente definidas.
limits: puede ser de dos formas: la primera forma incluye un vector que
especifica el incio y termino del intervalo a graficar (el dominio de x): [xmin,
xmax]. La segunda forma cosiste de 4 parametros [xmin,xmax,ymin,ymax],
es decir los 2 primeros parametros indican el dominio de x, mientras que los 2
ultimos parametros representan los lımites del eje de las abscisas (eje vertical
y).
line: indica especificaciones del tipo de lınea son las mismas que el comando
plot.
♣ Ejemplo 1.3
Escribir un programa en MATLAB para graficar en lınea la funcion:
y = 9x5 + 3 sen(x3) x ∈ [−10, 10].
Solucion
El programa 1.3 contiene el codigo para obtener la grafica de la funcion solicitada,
reproduciendo la misma grafica de la figura 1.5.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.6 Graficas 47
Codigo Fuente 1.3 Grafica de ’9*x∧5+3* sen(x∧3)’
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo cap1 exponencial.m
Grafica de ’9*x∧5+3* sen(x∧3)’
clear all; close all; clc;1
fplot(’9*x∧5+3* sen(x∧3)’,[-10,10])2
subplot
La funcion subplot(m,n,p) divide una ventana en una matriz de m × n, p indica
la posicion de la grafica dentro de esa ventana.
plot3
La funcion plot3(x,y,z) grafica las coordenadas en el espacio tridimensional.
mesh
La funcion mesh genera superficies en el espacio tridimensional especificadas por las
coordenadas x, y, z. Un aspecto interesante de esta funcion es que la superficie de la
funcion la presenta con estilo de malla para resaltar el aspecto tridimensional. Hay
otras funciones para graficar superficies que se auxilian de mesh; como es el caso de
la funcion ezmesh.
♣ Ejemplo 1.4
Escribir un programa en MATLAB para graficar funciones en 3D
Solucion
El programa que se presenta en el cuadro 1.4 muestra la forma de usar las funciones
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
48 Capıtulo 1: Conceptos basicos
3D. Con el uso de la funcion figure (lınea 3) se abre una ventana para indicar las
graficas generadas con subplot(2,2,1)...subplot(2,2,4). Observe la diferencia
de presentacion entre las funciones surf(x,y,z) y plot3(x,y,z); la primera tiene
un aspecto de solido, mientras que la segunda usa lıneas suaves (ver figura 1.6).
Codigo Fuente 1.4 Funciones 3D.
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo cap1 graficas3D.m
Funciones 3D.
clc; clear all; close all;1
t=0:pi/10:2*pi;2
figure3
[x,y,z]=cylinder(4*cos(t));4
subplot(2,2,1); mesh(x,y,z)5
subplot(2,2,2); ezmesh(’x.*exp(-x.∧2-y.∧2)’,40);6
subplot(2,2,2); ezmesh(fh,40)7
[x,y,z] = sphere;8
subplot(2,2,3); plot3(x,y,z)9
subplot(2,2,4); surf(x,y,z)10
Figura 1.6 Graficas en 3D.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.7 Funciones 49
1.7 Funciones
Una de las principales caracterısticas de MATLAB es que provee un numero muy
grande de funciones matematicas. La lista completa de funciones matematicas se
puede consultar en la ventana de comandos escribiendo:
fx >> help elfun ←↩
Una lista de funciones matematicas avanzadas se puede ver en:
fx >> help specfun ←↩
fx >> help elmat ←↩
La gran mayorıa de las funciones matematicas acepta como argumento numeros
imaginarios, de esta forma cuando se calcula por ejemplo la raız cuadrada o logaritmo
de un numero negativo, no produce un error, automaticamente produce un numero
complejo o imaginario.
Algunas funciones tales como sqrt, sin, cos son funciones propias (built in) de
MATLAB ya que contienen un codigo muy eficiente, entonces no se encuentran
disponibles los detalles computacionales y codigo fuente. Otras funciones como
gamma, sinh son implementadas en archivos (M-files), por lo que el codigo fuente
esta disponible, y ademas se puede modificar.
Las funciones pueden generar o retornar infinity cuando ocurre una division entre
cero o tambien por generar un calculo matematico mas alla del lımite permitido por
la variable realmax, lo cual se le conoce tecnicamente como overflow. Como ejemplos
de este escenario considere los siguientes ejercicios:
fx >> z=pi*exp(log(realmax)) ←↩
z =
Inf
fx >> z=cos(0)/sin(0) ←↩
z =
Inf
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
50 Capıtulo 1: Conceptos basicos
fx >> z=cosh(12e10) ←↩
z =
Inf
Los nombres de las funciones no son reservados, es decir se puede utilizar para
asignarlo como nombre de una nueva variable, por ejemplo:
sin=1.2345
La funcion original sin puede ser restaurada con
clear sin
Funciones en lınea
Cuando se requiere simples calculos matematicos pueden ser usarse las funciones en
lınea (inline functions).
La funciones en lınea pueden ser generadas con el comando inline(’expresion
matematica en forma de cadena’). Por ejemplo:
fx >> z=inline(’x/(1+x∧2’)) ←↩
z =
inline function:
z(x)=x/(1+x∧2)
Entonces la funcion z(x) se puede evaluar numericamente
fx >> z(2) ←↩
ans
0.4000
Otra opcion para evaluar funciones en lınea es por medio del comando feval
fx >> feval(’sqrt’, 100) ←↩
ans
10
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.7 Funciones 51
El comando feval tambien puede evaluar funciones definidas por el usuario.
Cuando se requiere de complicadas funciones matematicas, programacion extensiva,
subprogramas, etc., lo adecuado son funciones archivo (M-file functions).
1.7.1.1.7.1 Funciones archivo
Las funciones archivo (M-file function) aceptan datos como argumentos de entrada
y retornan resultado a traves de la variable de salida. Las funciones archivo tienen
una estructura sintactica muy bien definida. Emplean la palabra reservada function
para indicar que es una funcion. En seguida, se especifica el nombre de la variable de
salida (por ejemplo w), seguida del signo =, a continuacion del nombre de la funcion
y entre parentesis los argumentos de entrada separados por comas. Posteriormente
viene el grupo de instrucciones que contenga la funcion, la variable de salida tiene
el conjunto de variables a retornar (w=[var1; var2]). Finalmente se inserta el
delimitador end.
La sintaxis de una funcion se ilustra en el codigo 1.1.
Estructura de codigo 1.1
Sintaxis de una funcion
function w=nombre funcion(x1, x2, x3,...,xn)var1=grupo de instrucciones1;
var2=grupo de instrucciones2;
w=[var1; var2];
end
Usando el editor de textos integrado en MATLAB se pueden desarrollar funciones
como la que se muestra en el cuadro 1.5.
Una funcion archivo M-file function tiene que ser salvada antes que pueda ser
usada. Es recomendable salvar al archivo con el mismo nombre de la funcion y
verificar que tenga extension m.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
52 Capıtulo 1: Conceptos basicos
Codigo Fuente 1.5 norma euclidiana de un vector
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo normaev.m
norma euclidiana de un vector
function y =normaev(x)1
%Norma euclidiana de un vector x ∈ IRn2
%hay varias formas para calcular la norma euclidiana3
% ‖x‖ =√
x21 + x2
2 + · · ·+ x2n4
%‖x‖ =√
xT x5
% ‖x‖ =√
x21 + x2
2 + · · ·+ x2n =
√∑n
i=1 x2i6
%en MATLAB se calcula como:7
y=norma(x,2);8
end9
Notese que se utiliza la palabra reservada function para definir una funcion,
despues se indica la variable donde regresa el valor (en este caso es la variable
y), posteriormente continua el signo igual (=) y el nombre de la funcion definida
por el usuario normaev entre parentesis el argumento de entrada x. Al finalizar el
codigo se inserta la palabra clave end para delimitar el grupo de instrucciones que
estara entre la palabras reservadas function y end.
MATLAB automaticamente ajustara la naturaleza del argumento de entrada,
ası como su salida. En otras palabras, el argumento x puede ser un escalar, vector
o matriz, de acuerdo al tipo de operaciones que se realizan dentro de la funcion la
naturaleza de la salida y se ajustara de manera adecuada. En el caso del codigo fuente
del cuadro 1.5 el argumento puede ser un vector o matriz y la salida correspondiente
es escalar. Algunas funciones pueden tener mas de un argumento de entrada y
tambien retornar varias variables de salida, como el caso que a continuacion se
presenta en el cuadro 1.6.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.7 Funciones 53
Codigo Fuente 1.6 cinematica directa robot de 2 gdl
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo cinematica directa robot2gdl.m
cinematica directa robot de 2 gdl
function [y, x]=cinematica directa robot2gdl(l1,l2,q1,q2)1
% convierte variables articulares a coordenadas cartesianas2
x=l1*cos(q1)+l2*cos(q1+q2);3
y=l1*sin(q1)+l2*sin(q1+q2);4
end5
Funciones anidadas
Una funcion anidada (nested function) es aquella funcion que se encuentra como
parte del codigo de cualquier funcion archivo (M-file function). En el siguiente
ejemplo la funcion B esta anidada en la funcion A:
Estructura de codigo 1.2
Funcion anidada
function y=A(x1,x2)
y=B(x1)+x2;
function w=B(x3)w=x3*x3*x3;
end
end
Variables locales y globales
Todas las variables que se definan en una funcion son locales por naturaleza, esto
significa que solo en esa funcion existen y no pueden ser reconocidas por alguna otra
funcion. Aun cuando dos funciones tengan variables con el mismo nombre, dichas
variables solo son reconocidas por sus respectivas funciones.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
54 Capıtulo 1: Conceptos basicos
Sin embargo, es posible lograr que una o mas variables comunes sean reconocidas
por varias funciones (variables globales) listando el nombre de las variables y
separadas por espacios en blanco en el comando global (global command) sin comas
intermedias. Usar la siguiente declaracion:
global X Y Z
Las variables han sido declaradas globales en cada funcion que el usuario quiere
que sean reconocidas. Las variables seran comunes solo en esas funciones.
El comando global debe aparecer antes que la variable sea usada. Es
recomendable usar la declaracion para ese comando al inicio del archivo.
Las variables globales estan separadas por espacios en blanco, si usar comas y
se recomienda que al final de la lınea no se inserte el operador ;.
El valor de las variables globales puede ser modificado, asignado o reasignado
en cualquiera de las funciones comunes.
Se debe tener mucho cuidado en el empleo de variables globales. Es
recomendable usar letras mayusculas o algun nombre que el usuario puede
identificar facilmente para las variables globales con la finalidad de no
confundirlas con variables regulares o locales.
Comparacion entre archivos scripts y archivos funciones
Con la finalidad de entender exactamente la diferencia entre archivos script
y funciones archivo (M-file function) se enlistan a continuacion las principales
caracterısticas entre ellos:
Ambos archivos: script y funciones son salvados con la misma extension .m por
lo cual se conocen como M-files.
La primera lınea de codigo en el archivo funcion es la lınea de definicion de
una funcion. Ejemplo: function y=reloj(t)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.7 Funciones 55
Las variables dentro de una funcion son locales.
Las variables en un archivo script son reconocidas en la ventana de comandos.
Los archivos script contienen una secuencia de comandos de MATLAB.
Los archivos funciones pueden aceptar datos a traves de la entrada de sus
argumentos y pueden retornar datos por medio de sus variables de salida.
Cuando una funcion archivo es salvada, entonces el nombre del archivo es el
mismo que el nombre de la funcion.
Los nombres de los archivos script pueden tener cualquier nombre ya que no
tienen funciones.
Usando una funcion archivo
Una funcion definida por el usuario en un archivo funcion (M-file function) se usa
en la misma forma que una funcion propia (built-in function) de MATLAB. Esto
significa que la funcion puede ser llamada desde la ventana de comandos (Command
Window), desde un archivo script o desde cualquier funcion. Si la funcion del usuario
se encuentra en algun directorio diferente al de trabajo de MATLAB, entonces debe
ser habilitado dicho directorio con la opcion add to path (ver pagina 9).
♣ ♣ Ejemplo 1.5
Escribir un programa principal para graficar la curva de un cırculo de radio r=0.25
m, con centro en x0 = 0.3m, y0 = 0.3m
x = x0 + r sen(t) y = y0 + r cos(t) z = t
donde t la variable tiempo.
Asimismo implementar la ecuacion del cırculo en una funcion.m; utilizar variables
globales para almacenar la coordenada z.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
56 Capıtulo 1: Conceptos basicos
Solucion
La funcion cırculo se encuentra descrita en el cuadro 1.7, los parametros de entrada
de esta funcion son las coordenadas del centro del cırculo x0, y0, el radio r y el vector
tiempo. Las variables de salida son las coordenadas cartesianas x, y del cırculo.
En la lınea 2 se encuentra definida la variable global altura, para almacenar las
coordenadas sobre el eje z. Esta misma variable global altura se encuentra en el
programa principal 1.8 (ver la lınea 3). La funcion cırculo y el programa principal
pueden reconocer a la variable altura, lo que representa una ventaja debido a que
cualquier de los dos programas puede manipular datos de esa variable.
Codigo Fuente 1.7 Funcion cırculo
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica funcion circulo.m
Funcion cırculo
function [x, y]=circulo(x0,y0,r,t)1
global altura % variable global que se emplea en el programa principal 1.82
%ecuacion del cırculo3
x=x0+r*sin(t);4
y=y0+r*cos(t);5
%coordenada sobre el eje z6
altura=t;7
end8
Observe que el programa principal 1.8 no es una funcion, puesto que no emplea la
palabra reservada function, entonces se puede salvar el codigo de este programa
con cualquier nombre, anadiendo la extension m; es decir: (nombre archivo.m).
Para ejecutar el programa principal se puede hacer con la tecla F5 o realizando click
sobre el icono play localizado en el menu superior del editor de texto. Las graficas
de x vs t, y vs t y (x ,y , z) se obtienen con las funciones subplot, plot y plot3
(lıneas 9 a la 13) cuyo resultado se encuentra en la figura 1.7.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.7 Funciones 57
Codigo Fuente 1.8 Programa principal del cırculo
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%archivo circulo simu.m
Programa principal del cırculo
clc; clear all; close all; %limpia area de memoria1
format short2
global altura % declaracion de la variable global3
ti=0;%tiempo inicial4
h=0.001;%incremento de una milesima de segundo5
tf = 10;%tiempo final6
t=ti:h:tf;%vector tiempo7
%se invoca a la funcion cırculo8
[x, y]=circulo(0.3,0.3,0.25,t);9
subplot(2,2,1); plot(t,x)% grafica de x vs t10
subplot(2,2,2); plot(t,y)%grafica de y vs t11
subplot(2,2,3); plot(x,y)% cırculo12
subplot(2,2,4); plot3(x,y,altura)%figura tridimensional13
Figura 1.7 Cırculo.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
58 Capıtulo 1: Conceptos basicos
1.8 Programacion
Un programa es una secuencia de instrucciones, expresiones, funciones,
comandos y declaraciones para realizar aplicaciones en ingenierıa mecatronica
y robotica. En MATLAB las instrucciones son ejecutadas una tras otra, en
forma secuencial, es decir en el mismo orden como van apareciendo. La secuencia
del programa depende de las instrucciones que controlan el flujo del programa,
dependiendo de ciertas condiciones se ejecuta un determinado conjunto de
instrucciones o bloque del programa.
Dentro de las condiciones que determinan el flujo del programa se encuentran
operadores logicos como los que se presentan en la tabla 1.7. A traves de ellos se
evalua expresiones para realizar un cierto bloque de codigo o funciones especıficas
de la aplicacion implementada.
Tabla 1.7 Operadores logicos
Igual a ==
No es igual a ˜ =
Menor que <
Mayor que >
Menor que o igual que <=
Mayor que o igual que >=
El lenguaje de programacion MATLAB es muy rico en instrucciones y funciones
toolbox, ya que cuenta con un amplio compendio de librerıas o funciones para diversas
areas de ingenierıa y ciencias exactas.
A continuacion se describen las instrucciones condicionales y lazos de programas
como if, for, while, switch que permiten programar una gran cantidad de
aplicaciones en robotica y mecatronica.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.8 Programacion 59
Instrucciones condicionales
Una instruccion condicional permite a MATLAB realizar decisiones para ejecutar
un grupo de funciones, comandos, etc. Si la condicion en la instruccion condicional
es verdadera, entonces realiza un grupo de expresiones del programa. Si la condicion
es falsa, entonces no ejecuta o salta ese grupo de expresiones.
1.8.1.1.8.1 if
La instruccion if evalua si una expresion logica es verdadera, entonces realiza un
conjunto de instrucciones o declaraciones del programa, de otra forma realiza la
ejecucion de otro bloque del programa. La estructura de esta instruccion condicional
consta de la palabra clave if, un conjunto de instrucciones o bloque de programa
delimitadas por la palabra clave end.
Si la condicion logica que se evalua por la instruccion if es falsa, el programa salta
ese bloque de instrucciones y continua con las instrucciones que se encuentran justo
despues de end.
La estructura de la instruccion condicional if se muestra en el codigo 1.3.
Estructura de codigo 1.3
Sintaxis de la instruccion if — end
if condicion verdadera ifinstrucciones 1;
................
instrucciones n;
end
otro grupo de instrucciones;
La figura 1.8 muestra el diagrama de flujo de la instruccion if.Es importante resaltar que en el entorno de programacion de MATLAB las palabras
claves if end aparecen en color azul. Ademas, las expresiones que aparecen como
el bloque de instrucciones de la instruccion if aparecen como texto con sangrıa
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
60 Capıtulo 1: Conceptos basicos
Figura 1.8 Diagrama de flujo de la instruccion if.
(indented), lo que resulta una facil lectura del codigo de programacion.
1.8.2.1.8.2 if, else, elseif
La instruccion if puede tener mas opciones dentro de su estructura if...end. Es
decir, se puede utilizar if con la palabra clave else para evaluar otro grupo de
instrucciones de la manera que se muestra en la estructura de codigo 1.4:
Estructura de codigo 1.4
Sintaxis de if...else...end
if condicion verdaderagrupo de instrucciones;
else
grupo de instrucciones;
end
Ademas de la opicon else en la instruccion if...end, tambien se puede combinar
con la palabra clave elseif; en este caso incluye una declaracion condicional
adicional para la ejecucion de mas grupos de instrucciones. Si en la instruccion if la
condicion es verdadera, entonces el programa ejecuta el grupo (1) de instrucciones
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.8 Programacion 61
y pregunta por una nueva expresion condicional elseif, si es verdadera entonces
ejecuta el grupo (2) de instrucciones y si es falsa se ejecuta el grupo (3) de
instrucciones.
La sintaxis de if...elseif...else...end se presenta en el codigo 1.5:
Estructura de codigo 1.5
Sintaxis de if...elseif...else...end
if condicion verdadera if
grupo de instrucciones 1; %grupo(1)
elseif condicion verdadera elseifgrupos de instrucciones 2; %grupo(2)
else
grupo de instrucciones 3; %grupo(3)
end
Debe tomarse en cuenta que tanto else, como elseif quedan dentro de la
instruccion if determinado por el delimitador end.
La figura 1.9 muestra el diagrama de flujo de la instruccion if...elseif...else...end.
1.8.3.1.8.3 for
La instruccion for genera lazos repetitivos (flujos o ciclos de instrucciones) para
repetirse un numero determinado de veces. La instruccion for requiere de una
variable contador para realizar n veces la iteracion, la condicion de salida se alcanza
cuando la variable contador ha llegado a la cuenta especificada.
La sintaxis de la instruccion for inicia con esa palabra clave, a continuacion la
inicializacion de una variable contador que determinara el numero de veces que
realizara el ciclo o flujo del grupo de instrucciones. Finalmente se incluye la palabra
clave end para delimitar la instruccion for.
El codigo 1.6 presenta la estructura de la instruccion for...end:
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
62 Capıtulo 1: Conceptos basicos
Figura 1.9 Diagrama de flujo de la instruccion if...elsefi...end.
Estructura de codigo 1.6
Sintaxis de la instruccion for
for contador=1:ninstruccion 1;
..............;
instruccion n;
end
Como un ejemplo sencillo para mostrar la utilidad de la instruccion for...end se
presenta en el codigo 1.7 un programa que despliega 10 veces el contador i y la
variable j que contiene el valor de una funcion trigonometrica.
Estructura de codigo 1.7
Ejemplo de iteraciones con la instruccion forj=0;
for i=1:10
disp(i,j)
j=sin(2*pi*i);
end
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.8 Programacion 63
En este caso for ejecuta 10 veces el incremento sobre la variable i. Inicia i con
el valor de 1 hasta llegar al valor de i=10, entonces la variable i realiza el papel
de contador, con incrementos unitarios. La funcion disp(i,j) despliega los valores
numericos de las variables i,j.
El siguiente ejemplo muestra el empleo de for usando incrementos en milesimas
para la variable t por medio del operador colon :. Esta aplicacion de la instruccion
for es muy util para graficar funciones como es el caso de la funcion seno dentro de
un intervalo de tiempo.
♣ Ejemplo 1.6
Escribir un programa en MATLAB para graficar una senal senoidal.
Solucion
El programa 1.9 presenta el codigo fuente en MATLAB para graficar una senal
senoidal. En la lınea 3 se inicializa el vector tiempo de 0 a 10 segundos con
incrementos de una milesima de segundo. El ciclo iterativo de la instruccion for
abarca las lıneas 3 a la 7. El lector puede realizar el paso del tiempo de simulacion
mas fino, por ejemplo en diezmilesimas. En la figura 1.10 se muestra la grafica que
genera el programa 1.9.
Figura 1.10 Funcion senoidal.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
64 Capıtulo 1: Conceptos basicos
Codigo Fuente 1.9 Grafica de una onda senoidal
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo senoide.m
Grafica de una onda senoidal
disp(’Programa para graficar una onda senoidal’)1
i=1;%inicializa pivote para registro2
for t=0:0.001:10 % incrementos de t en milesimas3
y(i)=sin(t);% arreglo de datos para la onda senoidal4
tiempo(i)=t;% arreglo de datos para el tiempo5
i=i+1;% incrementa pivote6
end7
disp(’valor de y’)8
y9
plot(tiempo,y)10
El empleo de instrucciones for con la estructura if...elseif...else...end
diversifica las aplicaciones de programacion. Como una aplicacion de este conjunto
de instrucciones se presenta la implementacion de la funcion signo la cual es
ampliamente utilizada en dinamica y esquemas de control de sistemas mecatronicos
y robots manipuladores; especıficamente se emplea en el modelado del fenomeno de
friccion de Coulomb. Tambien se usa en algunos algoritmos de control.
Una de las principales desventajas de la funcion signo es su discontinuidad que
presenta y debido a esta caracterıstica muy particularidad produce retardo en el
proceso de integracion numerica de sistemas dinamicos, por lo que no se recomienda
el emplear de esta funcion cuando se realice simulacion de la dinamica de robots
manipuladores.
Una posible forma de implementar la funcion signo es por medio del uso de for y
if elseif else end, el cuadro 1.10 presenta la funcion signo ( ).
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.8 Programacion 65
Codigo Fuente 1.10 Funcion signo
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo signo.m
Funcion signo
function y =signo(x)1
[n,m]=size(x);2
for i=1:n3
if x(i) >04
y(i) = 1;%si es positivo retorna 15
elseif x(i) == 06
y(i) = 0;%si es cero retorna 07
else8
y(i) = -1;% si es negativo retorna -19
end10
end11
end12
♣ Ejemplo 1.7
Escribir un programa en MATLAB para convertir una onda senoidal en onda
cuadrada (emplear la funcion signo() para realizar dicha conversion).
Solucion
Una forma de convertir una onda senoidal del tipo sen(t) a senal cuadrada (tren
de pulsos cuadrados) es por medio del uso de la funcion signo(x). Considere el
programa 1.11; el tiempo de simulacion es de 0 a 10 segundos, en la lınea 5 se
obtiene la onda senoidal y la conversion a onda cuadrada se realiza en la lınea 6. La
figura 1.11 contiene la conversion de la onda senoidal a onda cuadrada.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
66 Capıtulo 1: Conceptos basicos
Codigo Fuente 1.11 Aplicacion de la funcion signo
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo signo simu.m
Aplicacion de la funcion signo
clc; clear all;1
close all;2
format short3
ti=0;h=0.001; tf = 10;%parametros del tiempo de simulacion4
t=(ti:h:tf)’;%vector columna de tiempo5
y=sin(t); % onda senoidal y1=signo(y); % funcion signo6
plot(t,y1)7
Figura 1.11 Funcion signo().
Debido a que la funcion signo esta implementada bajo la estructura function es
necesario realizar un programa principal donde se pueda invocar con el adecuado
pase de parametros y su correcta sintaxis. Esta es la tarea que realiza el programa
principal 1.11
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.8 Programacion 67
Tambien es posible programar for anidados, es decir un for insertado dentro de otro
for. Este tipo de aplicaciones resulta de utilidad en esquemas de control, calculos
iterativos o recursivos, simulacion de sistemas dinamicos, procesamiento de senales,
etc.
El codigo 1.8 presenta la sintaxis gramatical para el caso de tener instrucciones for
anidadas. Observese que el for externo realizara un numero de veces determinado
por la variable contador 1 al grupo de instrucciones 1 y al segundo for. Por otro
lado, el grupo de instrucciones 2 sera realizado un numero de veces indicado por el
contador 2. El numero total de veces que se ejecutara el grupo (2) de instrucciones
es contador 1 * contador 2.
Para un correcto funcionamiento de las instrucciones for anidadas es necesario
ubicar adecuadamente los delimitadores end. Por ejemplo para la instruccion for
externa abarca el grupo (1) de instrucciones, ası como el for interno con su segundo
grupo de instrucciones.
Por lo tanto, estan delimitados por el for externo y la palabra clave end. Mientras
que para el segundo for el segundo grupo de instrucciones esta delimitado por la
palabra clave end correspondiente a la instruccion for del contador 2.
Estructura de codigo 1.8
Sintaxis para el caso de for anidados
for contador 1grupo de instrucciones 1;
for contador 2......................;
grupo de instrucciones 2;
......................;
end
end
Un ejemplo tıpico del empleo de for anidados es la aplicacion de suma de matrices
realizada en forma recursiva. Este algoritmo emplea dos instrucciones for, el primero
sirve para recorrer los renglones usando la variable i, mientras que el segundo for
accede a las columnas de las matrices a traves del pivote j.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
68 Capıtulo 1: Conceptos basicos
♣ Ejemplo 1.8
Escribir un programa en MATLAB para sumar dos matrices A, B ∈ IRn×p en
forma recursiva.
Solucion
El codigo fuente para sumar matrices en forma recursiva se presenta en el programa
1.12:
Codigo Fuente 1.12 Algoritmo para sumar matrices
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
%Archivo sumamatrices.m
Algoritmo para sumar matrices
disp(’Realiza la suma de dos matrices de orden n’)1
%Inicializacion de las matrices A, B dimension 3 x 32
A=[ 1 1 3; 2 4 5; 8 9 0];3
B=[3 2 5; 6 7 8; 9 0 0];4
%Algoritmo de suma de matrices.5
[ n p ] =size(A); % Obtiene orden de la matriz6
%Algoritmo para sumar matrices7
for i=1:n8
for j=1:p9
%Suma algorıtmica10
C(i,j)=A(i,j)+B(i,j);11
end12
end13
disp(’Resultado:’)14
C15
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.8 Programacion 69
♣ Ejemplo 1.9
Escribir un programa en MATLAB para encontrar el mınimo y maximo de la
siguiente funcion:
y = sen(t)− cos(πt)− 2 tanh(t) + 0.1 log(t3 + 1)
determinar los tiempos de ocurrencia.
Solucion
Para buscar el maximo y mınimo de la funcion indicada (ver figura 1.12) y tiempos
de ocurrencia puede usarse el codigo del programa 1.13.
Figura 1.12 Busqueda de mınimo y maximo.
La salida del programa tiene el siguiente resultado:
Max Tmax Min Tmin
0.3887 0.9800 −3.3539 4.0600
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
70 Capıtulo 1: Conceptos basicos
Codigo Fuente 1.13 Mınimos y maximos
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 1 Introduccion
%Editorial Alfaomega Fernando Reyes Cortes
archivo cap1 minimax.m
Mınimos y maximos
clc; clear all; close all;1
disp(’Encuentra mınimo y maximo de una funcion’)2
%variables para registrar maximo y mınimo3
max=0; min=0; t min=0; t max=0;4
%generacion del vector de tiempo5
t=[0:0.01:10]’;%tiempo de 0 a 10 segundos con incremento de 0.01 seg.6
[n m]=size(t); %dimension del arreglo7
y=zeros(n,m); %variables de registro8
%funcion de prueba para generar la grafica del proceso9
for i=1:n10
y(i)=sin(t(i))-cos(3.1416*t(i))-2*tanh(y(i))+0.1*log(t(i)∧3+1);11
end12
%grafica de la funcion del proceso13
plot(t,y)14
for i=1:n15
if (y(i)>= max)16
max=y(i);17
t max=t(i);18
elseif (y(i)<= min)19
min=y(i);20
t min=t(i);21
22
end23
end24
disp( ’Max Tmax Min Tmin’)25
Resultado=[max t max min t min ];26
disp(Resultado)27
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.8 Programacion 71
1.8.4.1.8.4 while
La instruccion while genera un lazo o ciclo de instrucciones que se repiten un numero
finito o infinito de veces dependiendo de la condicion logica especificada. A diferencia
de la instruccion for, while puede ejecutar un grupo de instrucciones de manera
indefinida. La instruccion while tambien tiene su delimitador end. La forma general
del lazo de programa while es:
Estructura de codigo 1.9
Sintaxis para el caso de for anidados
while condicion boleana verdadera
%grupo de instrucciones o sentencias
instruccion 1;
.............;
instruccion n;
end
grupo de instrucciones;
Un ejemplo de como utilizar la instruccion while se presenta a continuacion:
Estructura de codigo 1.10
Uso de la instruccion whilea=10;
b=15;
i=0;
while a>ii=i+1;
b=b-i;
if b>a
disp(’Robot activo’)
else disp(’Proceso desactivo’)
end
end
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
72 Capıtulo 1: Conceptos basicos
1.8.5.1.8.5 switch, case
La instruccion switch ejecuta un grupo de sentencias con base al valor de la variable
o expresion que emplea al lado derecho de su sintaxis. Para dividir los grupos de
sentencias se emplean las palabras claves case y othewise. La instruccion switch
finaliza con end.
En el siguiente codigo se ilustra la forma en que funciona la instruccion switch:
Estructura de codigo 1.11
Sintaxis de la instruccion switch
for i=1:3
switch i
case 1
disp(’caso 1’)
grupo de instrucciones;
case 2
disp(’caso 2’)
grupo de instrucciones;
case 3
disp(’caso 3’)
grupo de instrucciones;
otherwise
disp(’fuera de rango’)
grupo de instrucciones;
end
end
continua con otro grupo de instrucciones;
MATLAB distingue los diferentes grupos de instrucciones asociados a un respectivo
case. Por ejemplo, si entra a ejecutar el grupo de instrucciones del caso 1, se sale
de la instruccion switch cuando encuentra el caso 2 y continua con otro grupo de
instrucciones ya fuera de switch. Para el caso de otherwise el grupo de instrucciones
queda delimitado entre otherwise y el delimitador end perteneciente a switch.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.8 Programacion 73
1.8.6.1.8.6 break
La sentencia break permite abandonar o salirse del lazo generado por las
instrucciones for o while. El uso de break se puede ilustrar por medio del siguiente
ejemplo. Se genera un lazo usando while, como la condicion de salida es una
constante positiva, el lazo se generara de manera infinita. Sin embargo, la condicion
de salida queda determinada por if t==0.0 y break. En este ejemplo se realiza la
operacion sen(t)t
, la variable t se inicializa en -1 y se decrementa en 0.001 en cada
iteracion. Cuando t=0 se evita realizar una division entre cero usando break.
Estructura de codigo 1.12
Forma de usarse la instruccion breakt=-10;
while 1t=t+1;
% codigo correspondiente para detectar cruce por cero
if t==0
disp(’Advertencia division entre cero’)
break;
end
x= sin(t)/t;
end
disp(x)
Tambien es posible usar break en lazos anidados.
1.8.7.1.8.7 return
La expresion return termina la secuencia actual de comandos y retorna el control
a la funcion que invoco. Una llamada a funcion normalmente transfiere el control a
la funcion que la invoco cuando alcanza el fin de la funcion. Es posible insertar una
sentencia return para forzar la terminacion de la funcion y transferir el control a la
funcion que realizo la llamada.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
74 Capıtulo 1: Conceptos basicos
Estructura de codigo 1.13
Forma de usarse la instruccion return
function y =cap1 raiz(x)
if x<0
disp(’error: numero imaginario’);
y=i;
return;
else y=sqrt(x);
end
end
1.8.8.1.8.8 continue
La sentencia continue temporalmente interrumpe la ejecucion del lazo del programa
(for o while). A diferencia de break y return no causa una inmediata salida del
lazo de control, permanece ahı suspendiendo la ejecucion del programa hasta que la
condicion de salida del lazo del programa sea falsa.
Por ejemplo, en el siguiente codigo 1.14 la variable i se inicializa con cero y entra al
lazo while permaneciendo ahı mientras la condicion i<10 sea verdadera. Dentro de
este lazo se pregunta si la variable i ya tiene el valor de 8 ( por medio de if i==8),
si esta condicion es falsa, entonces continua incrementando la variable i con i=i+1.
Cuando la variable i es igual a 8, entonces se despliega en la ventana de comandos
la leyenda Robot activo; se asigna el valor i=20; para que la condicion de salida
de while sea falsa, el control del programa sale del lazo de while por medio de la
sentencia continue para ejecutar b=100 fuera de dicho lazo.
Observe que efectivamente la sentencia continue hace que el programa abandone
el lazo de while, ya que ya no pasara por la instruccion if (i>10) i=0; end, la
cual fue insertada intencionalmente para inicializar a la variable i en cero y provocar
que la condicion sea verdadera dentro del lazo while. Es necesario recalcar que la
sentencia continue suspendera el programa hasta que la condicion de salida del lazo
de control sea falsa, a diferencia con la forma de trabajar en break o return.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.8 Programacion 75
Estructura de codigo 1.14
Forma de usarse la instruccion continue en el lazo whilei=0;
while i<10
if i==8disp(’Robot activo’)
i=20; %condicion de salida del lazo while
continue;%continua en b=100
end
if i>9
i=0; %asegura condicion verdadera para permanecer
dentro del lazo while
end
i=i+1;
end
b=100
otro grupo de instrucciones;
El siguiente ejemplo 1.15 muestra el uso de la sentencia continue dentro del lazo
generado por for:
Estructura de codigo 1.15
Forma de usarse la instruccion continue en el lazo for
for t=-10:0.1:10y=sin(t);
if y==0.0
disp(’detecta cruce por cero’)
t=100;%condicion de salida de lazo for
% evita division entre cero
continue;%salta en b=300
end
x=(sin(t)∧2+cos(t)∧2)/sin(t);
end
b=300
otro grupo de instrucciones;
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
76 Capıtulo 1: Conceptos basicos
1.9 Formato para datos experimentales
En las areas de robotica y mecatronica es comun trabajar archivos que tengan
datos experimentales o de simulacion con informacion de variables como error
de posicion, velocidad, aceleracion y par aplicado. No hay un formato especıfico
para generar los archivos. No obstante, es recomendable que tengan forma tabular,
tipo matriz teniendo la primera columna destinada al tiempo, la segunda columna y
posteriores para la informacion de las variables. Puede haber tantas columnas como
variables se requiera registrar. Este formato para archivos de datos experimentales
permite portabilidad para todos de paquetes de computo de cualquier plataforma.
Los datos experimentales de robots manipuladores son importantes para elaborar
reportes tecnicos, artıculos cientıficos, tesis, memorias para congresos, etc.
¿Como generar un formato de archivo con datos experimentales?
MATLAB tiene las funciones fopen, fprintf, fclose, load y save para realizar
dicho formato. El procedimiento para generar archivos de datos experimentales
consiste en generar un archivo de tipo ASCII o texto, con la funcion fopen o con la
funcion save por medio del siguiente procedimiento:
Indicar la trayectoria donde se generara el archivo de texto, por ejemplo con
nombre robot.dat
fid = fopen(’c:\robot\experimentos\robot.dat’, ’wt’);
donde el atributo ’wt’ significa que se crea un nuevo archivo de texto para
escritura y lectura. La variable fid es un identificador o apuntador asociado
al archivo robot.dat
Agrupar en una matriz todas la variables que se desean grabar, por ejemplo:
datos=[t, q, qp, qpp]; donde t es el tiempo, posicion q, velocidad qp
y aceleracion qpp. Posteriormente usar la funcion fprintf para grabar las
variables:
datos=[t, q, qp, qpp];
fprintf(fid,’\%3.3f \%3.3f \%3.3f \%3.3f \n’,datos);
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.9 Formato para datos experimentales 77
El formato ’%3.3f %3.3f %3.3f %3.3f \n’ significa que se grabaran cuatro
columnas de datos en formato de punto flotante, manteniendo una precision
numerica de tres dıgitos con tres fracciones. Observe que para separar las
columnas de datos hay al menos un espacio en blanco. El comando \n se
usa para generar renglones, por cada dato t(i), q(i), qp(i), qpp(i), para
i = 1, 2, · · · , n.
Cerrar el archivo robot.dat de la siguiente forma:
fclose(fid);
Otra opcion para generar el archivo de datos experimentales es usando la
funcion save; por ejemplo:
save -ascii ’c:\robot\experimentos\robot.dat’ datos
Es recomendable que despues de salvar el archivo, se libere la memoria ocupada
por la variable datos, por medio de clear datos; de esta forma no se tendran
problemas de espacio.
Estructura de codigo 1.16
Generar formato de archivo con datos experimentales
clc; clear all; close all;
t=(0:0.001:10)’;%vector columna de la variable tiempo
q=sin(t);% posicion
qp=cos(t);% velocidad
qpp=-sin(t);%aceleracion
datos=[t, q, qp, qpp];
fid = fopen(’c:\robot\experimentos\robot.dat’, ’wt’);
fprintf(fid, ’ %3.3f %3.3f %3.3f %3.3f \n’,datos);fclose(fid);
...
clear datos;
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
78 Capıtulo 1: Conceptos basicos
Estructura de codigo 1.17
Opcion para generar formato del archivo experimental
clc; clear all; close all;
t=(0:0.001:10)’;%vector columna de la variable tiempo
q=sin(t);% posicion
qp=cos(t);% velocidad
qpp=-sin(t);%aceleracion
datos=[t, q, qp, qpp];
%una forma alterna para grabar los datos
save -ascii ’c:\robot\experimentos\robot.dat’ datos...
clear datos;
El programa que se muestra en la estructura de codigo 1.16 genera el formato
del archivo con datos experimentales. Mientras que en la estructura de codigo
1.17 se presenta otra opcion de generar el mismo formato. Para el caso especıfico
del archivo robot.dat el formato se indica en la tabla 1.8. Note que la primera
columna corresponde a la evolucion del tiempo, la posicion, velocidad y aceleracion
corresponden a la segunda, tercera y cuarta columna, respectivamente.
¿Como leer el archivo de datos experimentales?
Una vez generado un archivo con datos experimentales, se emplea la funcion load
para abrir y manipular su informacion.
A continuacion se describe el seguimiento procedimiento:
Usar la funcion load para cargar en memoria el archivo con datos
experimentales:
datos_experimentales=load(’c:\robot\experimentos\robot.dat});
t=datos_experimentales(:,1);
la primera columna tiene el tiempo y las demas columnas contienen
informacion de las variables de interes al usuario.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
1.9 Formato para datos experimentales 79
Tabla 1.8 Formato de datos experimentales para robotica y mecatronica
t q q q
0 0 1.0000 0
0.0010 0.0010 1.0000 −0.0010
0.0020 0.0020 1.0000 −0.0020
0.0030 0.0030 1.0000 −0.0030
0.0040 0.0040 1.0000 −0.0040...
......
...
0.0050 0.0050 1.0000 −0.0050
0.0060 0.0060 1.0000 −0.0060
0.0070 0.0070 1.0000 −0.0070
0.0080 0.0080 1.0000 −0.0080
0.0090 0.0090 1.0000 −0.0090
0.0100 0.0100 1.0000 −0.0100
0.0110 0.0110 0.9999 −0.0110...
......
...
El programa que se indica en la estructura de codigo 1.18 permite abrir y manipular
la informacion del archivo de prueba robot.dat.
Estructura de codigo 1.18
Abrir formato de archivo experimental
clc;
clear all;
close all;
datos experimentales=load(’c:\robot\experimentos\robot.dat’);t=datos experimentales(:,1);%tiempo
qe=datos experimentales(:,2);%posicion
qpe=datos experimentales(:,3);% velocidad
qppe=datos experimentales(:,4);%aceleracion
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
80 Capıtulo 1: Conceptos basicos
1.10 Resumen
Hoy en dıa, MATLAB es un ambiente de programacion amigable e interactivo
que se ha ubicado como un referente a nivel internacional en todas las
universidades, institutos de investigacion e industria.
El lenguaje MATLAB es una potente herramienta de diseno en simuladores de
sistemas mecatronicos y robots manipuladores. Contiene un amplio conjunto de
instrucciones y librerıas toolbox para estudiar en detalle todos los aspectos de
modelado dinamico, sistemas de control, identificacion parametrica, procesamiento
de imagenes, etcetera.
Particularmente, en los cursos de control automatico se emplea para caracterizar,
evaluar y desarrollar esquemas de control. MATLAB tiene una gran cantidad de
aplicaciones para las areas de robotica y mecatronica. Facilita el desarrollo de
la investigacion y fortalecer al mismo tiempo aspectos pedagogicos en docencia,
ası como la transmision del conocimiento. Por eso, resulta clave dominar y programar
con solvencia sobre todo en codigo fuente para realizar cualquier tipo de aplicacion.
En este capıtulo se ha presentado las principales funciones e instrucciones del
lenguaje MATLAB. Desde los aspectos basicos del entorno de programacion hasta
aspectos mas detallados donde se involucra declaracion de variables, manipulacion
de matrices y arreglos, manejo de operadores, graficas y funciones, ası como ejemplos
en codigo fuente que ilustran su inmediata aplicacion a control y dinamica de robots
manipuladores y sistemas mecatronicos.
Se propone un formato libre para archivos con datos de resultados experimentales
o de simulacion; es muy importante tener un metodo computacional para registrar
variables de estado e informacion relevante del robot. Para este proposito se explica
el procedimiento para generar este tipo de archivos compuesto por columnas y
renglones tipo matriz, tambien se describe el procedimiento para cargarlo a memoria
y extraer la informacion registrada, para su analisis e interpretacion.
Finalmente, se recomienda consultar periodicamente: www.mathworks.com/.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Capıtulo
2 Metodos numericos
I =
∫ t
0f(x)dx⇒ Ik = Ik−1 + hf(xk−1)
f = lım�t→0
f(t +�t) − f(t)
�t⇒ fk =
fk − fk−1
h
2.1 Consideraciones computacionales
2.2 Sistemas de ecuaciones lineales
2.3 Diferenciacion numerica
2.4 Integracion numerica
2.5 Sistemas dinamicos de primer orden
2.6 Resumen
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Objetivos
Presentar los metodos numericos mas utilizados en el area de ingenierıa
a traves de ejemplos didacticos y aplicaciones.
Objetivos particulares:
Sistemas de ecuaciones lineales.
Metodos de diferenciacion numerica (Euler, diff).
Metodos de integracion numerica: Trapezoidal, Simpson, Euler.
Sistemas dinamicos de primer orden (Runge-Kutta).
Funciones ode (ecuaciones diferenciales ordinarias).
Simulacion de sistemas dinamicos de primer orden.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.1 Consideraciones computacionales 83
2.1 Consideraciones computacionales
Resolver problemas de ingenierıa requiere del conocimiento solvente de
metodos numericos para su adecuada implementacion practica en simulacion,
analisis y estudio de los resultados experimentales.
Un simulador se caracteriza por reproducir fielmente todos los fenomenos fısicos
del sistema mecatronico o robot manipulador. Desarrollar el proceso de simulacion
es una etapa no trivial, involucra aspectos desde seleccionar el metodo numerico
mas adecuado tanto en exactitud de resultados como en desempeno computacional.
Tambien depende de las finalidades del problema a resolver, puede ser control en
tiempo real o un escenario donde analizara resultados experimentales fuera de lınea
(off-line). Este es el caso de algunos topicos de control y de automatizacion donde
interviene identificacion parametrica, caracterizacion de sensores y servomotores,
estimacion de senales usando la posicion articular por ejemplo, obtener velocidad y
aceleracion de movimiento.
Cuando se llega a la etapa de resolver numericamente un sistema dinamico (lineal
y no lineal), es importante seleccionar el metodo de integracion mas adecuado de
tal forma que no consuma muchos recursos computacionales (tiempo, eficiencia y
desempeno) y que tenga la exactitud adecuada en la solucion numerica para que esta
sea confiable para su correcta interpretacion de resultados. Con estas caracterısticas
del metodo de integracion, el esfuerzo de diseno se concentra en mejorar los atributos
y propiedades del esquema de control y posteriormente evaluar el desempeno en un
robot real. De esta forma, las potenciales aplicaciones del esquema de control son
mucho mas amplias, ası como su correcta ejecucion.
En el presente capıtulo se presentan los principales metodos numericos para abordar
problemas de control en sistemas mecatronicos y robots manipuladores. Se hace
un especial enfasis en determinar cuales son mas adecuadas para su utilizacion en
control de procesos en tiempo real y cuales son mas apropiadas para aspectos de
simulacion donde el grado de exactitud es el apropiado para analizar y estudiar
sistemas mecatronicos, ası como la dinamica compleja no lineal y multivariable de
robots manipuladores.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
84 Capıtulo 2: Metodos numericos
2.2 Sistemas de ecuaciones lineales
En el area de ingenierıa es muy comun encontrar sistemas de ecuaciones lineales,
en donde se involucran variables desconocidas que fundamentalmente definen
el problema a resolver; tambien participan matrices, ası como su matriz inversa y su
determinante.
Considerese un conjunto de n ecuaciones lineales con m incognitas dadas de la
siguiente forma:
y1 = a11x1 + a12x2 + · · ·+ a1nxn
y2 = a21x1 + a22x2 + · · ·+ a2nxn
... =... (2.1)
ym = am1x1 + am2x2 + · · ·+ amnxn
donde aij son coeficientes conocidos, con i = 1, 2 · · · , m, j = 1, 2, · · · , n; xj son las
incognitas, yi son variables conocidas. En forma compacta el sistema de ecuaciones
lineales 2.1 puede ser representado por:
y = Ax (2.2)
donde A ∈ IRm×n, x ∈ IRn, y ∈ IRm
entonces la solucion consiste en encontrar x = [x1, x2, · · · , xn]T en funcion de la
matriz A y de B, quedando de la siguiente forma:
x = A−1y. (2.3)
Observese que la solucion involucra la inversa de la matriz A. Por lo tanto, es
necesario primero abordar los aspectos computacionales a la inversion de matrices.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.2 Sistemas de ecuaciones lineales 85
Determinantes de matrices
El determinante de una matriz cuadrada A ∈ IRn×n es un numero o escalar y
tiene varias aplicaciones en ingenierıa: se utiliza en matrices inversas, solucion de
ecuaciones simultaneas; en robotica indica los valores numericos de las variables
articulares del robot para producir singularidades en su jacobiano, etc.
La sintaxis en MATLAB de la funcion determinante det de una matriz A ∈ IRn×n
es la siguiente:
det(A)
donde A es una matriz cuadrada de dimension n previamente definidas sus entradas.
♣ Ejemplo 2.1
Considere el siguiente sistema de ecuaciones con tres incognitas:
9 = 8x1 + 5x2 + x3
6 = −x1 + 4x2 − 10x3
0 = 5x1 + 7x2 + 2x3
este sistema de ecuaciones puede ser re-escrito de la siguiente forma:
B = Ax donde B =
⎡⎢⎣
9
6
0
⎤⎥⎦ A =
⎡⎢⎣
8 5 1
−1 4 −10
5 7 2
⎤⎥⎦ x =
⎡⎢⎣
x1
x2
x3
⎤⎥⎦
Obtener el determinante de la matriz A.
Solucion
En el cuadro 2.1 se presenta el codigo fuente para obtener el determinante de la
matriz A. El resultado es presentado en forma general usando variables simbolicas
para expresar el determinante analıtico de una matriz cuadrada de dimension 3. En
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
86 Capıtulo 2: Metodos numericos
varias aplicaciones de ingenierıa y para propositos didacticos es importante trabajar
con variables simbolicas; la funcion det tambien acepta representacion simbolica.
De las lıneas 12 a la 18, se asignan valores a las variables simbolicas de la matriz A
para mostrar el resultado en forma numerica.
Codigo Fuente 2.1 Determinante simbolico
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 detsim.m
Determinante simbolico
clear all;1
close all;2
clc;3
syms a11 a12 a13 a21 a22 a23 a31 a32 a334
% matriz simbolica5
Asim=[ a11, a12, a13;6
a21, a22, a23;7
a31, a32, a33];8
disp(’Determinante simbolico’)9
det sim=det(Asim)10
% se asignan valores a las variables simbolicas11
a11=8;12
a12=5;13
a13=1;14
a21=-1;15
a22=4; a23=-10;16
a31=5; a32=7;17
a33=2;18
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.2 Sistemas de ecuaciones lineales 87
Codigo Fuente 2.2 Determinante simbolico
% Continua programa 2.1
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 detsim.m
Determinante simbolico
%matriz numerica19
Anum=[ a11, a12, a13;20
a21, a22, a23;21
a31, a32, a33];22
disp(’Determinante numerico’)23
det num=det(Anum)24
El programa cap2 detsim.m produce el siguiente resultado:
det sim=
a11a22a33 − a11a23a32 − a12a21a33 + a12a23a31 + a13a21a32 − a13a22a31
det num=
357
Inversion de matrices
En mecatronica y robotica la representacion de una matriz inversa esta dada
por A−1. Una matriz A ∈ IRn×n tiene inversa si la matriz A es cuadrada y su
determinante es �= 0. En MATLAB hay varias formas de obtener la inversa de una
matriz cuadrada:
Ainv=inv(A) retorna la inversa de la matriz A
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
88 Capıtulo 2: Metodos numericos
Un mensaje de advertencia se despliega si la matriz A tiene si tiene una
singularidad (su determinante es un escalar muy pequeno o cercano a cero).
Ainv=A∧(-1)
La ecuacion lineal (2.3) considera los siguientes casos: m = n (A ∈ IRn×n matriz
cuadrada). Problema subdeterminado es cuando m < n el numero de ecuaciones
es menor que el numero de incognitas. Para el caso en que m > n el numero de
ecuaciones es mayor que el numero de incognitas se le conoce como problema sobre
determinado.
Para el caso m = n, la matriz A es cuadrada, entonces la solucion se encuentra dada
por:
x = A−1y. (2.4)
La solucion existe y es unica si el determinante de la matriz A es diferente de cero.
Una forma de verificar si la matriz A existe es analizando su determinante como en
el codigo 2.1:
Estructura de codigo 2.1
Caso 1: m = n
if det(A)~=0
x=inv(A)*y;
end
El codigo 2.1 no es unico. Otro tipo de expresiones que producen el mismo resultado
son:
x=A∧(-1)*y;
x=A\y; Esta forma es recomendable, ya que la solucion emplea eliminacion
gausiana, y por lo tanto no se utiliza la forma tradicional de obtener la inversa.
Usando la funcion: x=linsolve(A,y).
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.2 Sistemas de ecuaciones lineales 89
linsolve
La funcion linsolve representa una opcion para resolver un sistema lineal de
ecuaciones de la forma 2.3. La sintaxis de la funcion linsolve esta dada como:
y=linsolve(A,x)
donde A es la matriz del sistema de ecuaciones lineales y x es el vector incognita.
Mayor informacion de la funcion linsolve es proporcionada en:
fx >> help linsolve ←↩
♣ Ejemplo 2.2
Considere el siguiente sistema de ecuaciones:
1 = x1 + 4x2 + 3x3 (2.5)
4 = 8x1 + 5x2 + 9x3 (2.6)
6 = 3x1 + 2x2 + 4x3 (2.7)
Obtener la solucion del sistema x y compararla con los metodos:
x = inv(A)y, x = A−1y y x = A\y
Solucion
Para el sistema de ecuaciones planteado se tiene que la matriz A y el vector y estan
dados como:
A =
⎡⎢⎣
1 4 3
8 5 9
3 2 4
⎤⎥⎦ y =
⎡⎢⎣
3
2
4
⎤⎥⎦ .
El cuadro 2.3 contiene el codigo fuente para resolver el problema planteado y donde
se han implementado los metodos solicitados.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
90 Capıtulo 2: Metodos numericos
Codigo Fuente 2.3 Comparacion de soluciones SLE
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%cap2 sle
Comparacion de soluciones SLE
%matriz A1
A=[ 1 4 3;2
8 5 9;3
3 2 4];4
y=[1; 4; 6];5
% primera solucion6
x=inv(A)*y;7
% segunda solucion8
x1=A∧(-1)*y;9
% tercera solucion10
x2=A\y;11
% cuarta solucion12
x3= linsolve(A,y);13
% comparacion de todas las soluciones14
disp(’ x x1 x2 x3 ’)15
disp([x x1 x2 x3])16
La salida del programa cap2 sle arroja resultados identicos:
fx >>
x x1 x2 x3
−5.8667 −5.8667 −5.8667 −5.8667
−4.3333 −4.3333 −4.3333 −4.3333
8.0667 8.0667 8.0667 8.0667
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.2 Sistemas de ecuaciones lineales 91
2.2.1.2.2.1 Regla de Cramer
La regla de Cramer representa otra opcion para encontrar la solucion a sistemas de
ecuaciones lineales de la forma (2.3). El procedimiento de la regla de Cramer consiste
en obtener la solucion para cada componente xi del vector x a traves de calcular el
determinante i-esimo obtenido como por sustituir el vector y en la i-esima columna
de la matriz A vista como un determinante, y dividirlo entre el determinante de la
matriz A. Es decir:
x =
⎡⎢⎢⎢⎣
x1
x2...
xn
⎤⎥⎥⎥⎦ =
⎡⎢⎢⎢⎣
det1
det2...
detn
⎤⎥⎥⎥⎦ (2.8)
deti =
∣∣∣∣∣∣∣∣∣∣a11 · · ·
columnai︷︸︸︷... · · · a1n
a21 · · · y · · · a2n
an1 · · · ... · · · ann
∣∣∣∣∣∣∣∣∣∣det(A)
para i = 1 · · ·n.
♣ Ejemplo 2.3
Considere nuevamente el sistema (2.5) del ejemplo 2.2. Obtener la solucion para
x usando el metodo de Cramer.
Solucion
De acuerdo con el procedimiento de la regla de Cramer se establece que:
det1 =
∣∣∣∣∣∣∣1 4 3
4 5 9
6 2 4
∣∣∣∣∣∣∣∣∣∣∣∣∣∣1 4 3
8 5 9
3 2 4
∣∣∣∣∣∣∣= −5.8667 det2 =
∣∣∣∣∣∣∣1 1 3
8 4 9
3 6 4
∣∣∣∣∣∣∣∣∣∣∣∣∣∣1 4 3
8 5 9
3 2 4
∣∣∣∣∣∣∣= −4.3333
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
92 Capıtulo 2: Metodos numericos
det3 =
∣∣∣∣∣∣∣1 4 1
8 5 4
3 2 6
∣∣∣∣∣∣∣∣∣∣∣∣∣∣1 4 3
8 5 9
3 2 4
∣∣∣∣∣∣∣= 8.0667.
Por lo tanto la solucion esta dada por:
x =
⎡⎢⎣
x1
x2
x3
⎤⎥⎦ =
⎡⎢⎣
det1
det2
det3
⎤⎥⎦ =
⎡⎢⎣−5.8667
−4.3333
8.0667
⎤⎥⎦ .
2.3 Diferenciacion numerica
Diferenciacion numerica es la tecnica de aproximar a la derivada de una
funcion. La derivada es una operacion matematica sobre funciones o variables
de estado, y que tiene una diversidad de aplicaciones en ingenierıa. La derivada
de una funcion representa la razon de cambio con respecto al tiempo; se utilizan
en esquemas de control y en procesos de automatizacion. Por ejemplo, en el area
de control de posicion de robots manipuladores, los algoritmos incluyen un termino
denominado accion de control derivativo con la finalidad de generar amortiguamiento
o freno mecanico y con dicha accion se pretende mejorar la respuesta transitoria del
robot. Para lograr esto, se inyecta la velocidad de movimiento, la cual representa la
variacion temporal de la posicion.
La friccion viscosa y de Coulomb es uno de los fenomenos fısicos que se encuentra
presente en los sistemas mecanicos, la derivada de la posicion forma parte de
este fenomeno. El modelado dinamico de sistemas mecatronicos y robots incluye
derivadas de las variables de estado para conformar la estructura matematica
adecuada para estudiar y analizar todos los fenomenos fısicos del sistema. La teorıa
de estabilidad de sistemas dinamicos es otro ejemplo donde se utilizan derivadas; por
ejemplo, la derivada de la energıa (potencia) se emplea para llevar a cabo el analisis
de estabilidad del punto de equilibrio. Hoy en dıa, la derivada se ha convertido en
una herramienta imprescindible para realizar automatizacion de sistemas.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.3 Diferenciacion numerica 93
La notacion de la derivada de una funcion f(t) con respecto al tiempo es definida
como f(t), la cual es igual a la razon de cambio de f con respecto al tiempo t.
Matematicamente la derivada de una funcion se define como:
f(t) =d
dtf(t) = lım
�t→0
f(t +�t) − f(t)
�t(2.9)
donde �t es un infinitesimo intervalo de tiempo.
En mecatronica hay varios procesos donde se requiere medir la razon de cambio de
las variables del robot. Por ejemplo la razon de cambio de la posicion es la velocidad
de movimiento; el cambio temporal de la velocidad es la aceleracion.
Por otro lado, la integral de la aceleracion es la velocidad, y la integral de la velocidad
es la posicion. Es decir, existe una relacion muy cercana entre la integral y la
derivada; se puede considerar que son operaciones inversas una de la otra. La integral
de una derivada:∫ t
0f(t)dt =
∫ t
0
df(t)
dtdt =
∫ t
0df(t) = f(t)
∣∣∣∣t0
= f(t)− f(0)
retorna la funcion original f(t) mas una constante que depende de las condiciones
iniciales.
La derivada de una integral
d
dt
∫ t
0f(t)dt = f(t)
retorna la funcion original.
Geometricamente, la derivada f puede ser descrita como la pendiente de la lınea
tangente en la funcion f(t) del punto especıfico t. La lınea tangente esta especificada
por la pendientef(t+�t)−f(t)
�t (ver figura 2.3.)
Debido a esto, la derivada de una constante es cero, puesto que la lınea tangente es
horizontal (no hay variacion temporal). Los puntos donde la derivada de la funcion
f es cero se llaman puntos crıticos y pueden representar regiones horizontales de
la funcion f o puntos extremos (puntos que son maximo o mınimo local o tambien
globales). Si evaluamos la derivada de la funcion en varios puntos y observamos que
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
94 Capıtulo 2: Metodos numericos
Figura 2.1 Lınea tangente de la funcion f en el punto tk.
el signo de la derivada cambia, entonces un mınimo o maximo local ocurre en ese
intervalo. La segunda derivada de la funcion f(t) determina cuando el punto crıtico es
mınimo o maximo. Si la segunda derivada en un punto extremo es positiva, entonces
el valor de la funcion en el punto extremo es un mınimo local. Por otro lado, si la
segunda derivada de la funcion en un punto extremo es negativo, entonces la funcion
evaluada en el punto extremo es un maximo local (ver figura 2.2).
Figura 2.2 Puntos extremos: mınimo y maximo local (global).
Las tecnicas de diferenciacion numerica estiman la derivada de una funcion f en
un punto tk aproxima la pendiente de la lınea tangente en tk usando valores de la
funcion en puntos cercanos a tk. Si denotamos al intervalo de tiempo �t como la
diferencia entre dos puntos consecutivos, �t = tk − tk−1 = h, donde h es la longitud
de �t, (ver figura 2.3).
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.3 Diferenciacion numerica 95
Figura 2.3 Lınea tangente de la funcion f en el punto tk.
En control digital y sistemas discretos la longitud del intervalo h se mantiene
constante (periodo de muestreo) y se toman datos cada determinado tiempo
h, igualmente espaciadas, esto significa que el tiempo discreto transcurre como
multiplos del periodo de muestreo tk = t + h; para n muestras se tiene que el
tiempo discreto se puede expresar como tk = kh, donde k = 1, 2, 3, · · · , n.
Una forma ampliamente usada es el metodo de Euler (diferenciacion numerica)
f(tk) f(tk)− f(tk−1)
tk − tk−1=
f(tk)− f(tk−1)
h
particularmente esta aproximacion es conocida como diferenciacion con un paso
atras (backward difference).
Tambien se puede obtener la aproximacion de la derivada por computar la
pendiente entre f(tk) y f(tk+1) conocida como diferenciacion hacia adelante (forward
difference):
f(tk) f(tk+1)− f(tk)
tk+1 − tk=
f(tk+1)− f(tk)
h
la figura 2.4 ilustra ambos metodos.
Evidentemente la calidad de la derivada depende de la distancia entre esos puntos o
del periodo de muestreo h = tk − tk−1 = tk+1 − tk. De esta forma se puede obtener
la aceleracion por diferenciacion numerica de la velocidad:
f(tk) =f(tk)− f(tk−1)
h=
f(tk)− 2f(tk−1) + f(tk−2)
h2
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
96 Capıtulo 2: Metodos numericos
Figura 2.4 Diferenciacion numerica: backward y forward.
♣ Ejemplo 2.4
Emplear el metodo de Euler para convertir la siguiente ecuacion diferencial en su
equivalente expresion por diferenciacion numerica.
αu(t) = a2y(t) + a1y(t) + a0y(t) (2.10)
Solucion
Empleando el metodo de Euler, la velocidad y aceleracion toman la siguiente forma:
y(t) y(tk) =y(tk)− y(tk−1)
h
y(t) y(tk) =y(tk)− y(tk−1)
h=
y(tk)−y(tk−1)h
− y(tk−1)−y(tk−2)h
h
y(tk) =y(tk)− 2y(tk−1) + y(tk−2)
h2
Por lo tanto la ecuacion diferencial 2.10 queda como:
αu(tk) = a2y(tk) + a1y(tk) + a0y(tk)
αu(tk) = a2 [y(tk)−2y(tk−1)+y(tk−2)
h2 ] + a1y(tk)− y(tk−1)
h+ a0y(tk).
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.3 Diferenciacion numerica 97
La solucion para y(tk) esta dada por:
y(tk) = [ a0 + a1
h+ a2
h2 ]−1 [αu(tk) + [ 2a2
h2 + a1
h] y(tk−1)− a2
h2 y(tk−2) ] .
Para implementar la solucion discreta y(tk) de la ecuacion (2.10) se requieren
los estados y(tk−1) y y(tk−2) y el periodo de muestre h. El metodo de Euler
es ampliamente utilizado para resolver ecuaciones diferenciales lineales, usando el
procedimiento de este ejemplo se obtiene la solucion en forma discreta de sistemas
dinamicos lineales.
2.3.1.2.3.1 Funcion diff
MATLAB tiene la funcion diff la cual realiza la diferenciacion numerica entre
valores adyacentes de un vector x.
La sintaxis de la funcion diff es la siguiente:
y= diff(x)
diff
Retorna un nuevo vector y conteniendo la diferencia-
cion entre valores adyacentes del vector de entrada x
La funcion diff tambien se aplica a matrices, entonces opera en cada columna de
la matriz, y retorna una matriz con el mismo numero de columnas, en este caso la
sintaxis es:
B= diff(A)
diff
Retorna una nueva matriz B conteniendo la diferen-
ciacion entre valores adyacentes de cada columna de
la matriz de entrada A.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
98 Capıtulo 2: Metodos numericos
♣ Ejemplo 2.5
Aproximar la derivada con respecto al tiempo de la funcion sen(t) mediante
diferenciacion.
Solucion
Para obtener la derivada temporal por diferenciacion numerica de la funcion sen(t)
se hace uso de diff. El intervalo de diferenciacion numerica se selecciona de 0
a 10 segundos, con incrementos de un milisegundo. El metodo analıtico conduceddt sen(t) = cos(t). Por lo tanto, se comparara la solucion aproximada con la solucion
analıtica.
El programa que contiene el codigo fuente para resolver este problema se presenta
en el cuadro 2.5. El resultado de dicho programa se exhibe en la figura 2.5 donde se
han superpuesto ambas graficas: por diferenciacion numerica y el metodo analıtico.
Figura 2.5 Comparacion del metodo analıtico y por diferenciacion numerica.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.4 Integracion numerica 99
Codigo Fuente 2.4 Diferenciacion numerica
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 diffnum.m
Diferenciacion numerica
clc;1
clear all;2
close all;3
% intervalo de tiempo4
t=0:0.001:10;5
% funcion a derivar6
f=sin(t);7
% derivada de la funcion sen(t) con respecto al tiempo.8
% es decir se obtiene f(tk) = df(tk)dtk
9
dfdt = diff(f)./diff(t);10
% el vector df tiene dimension n-111
t1=0:0.001:9.999;% nueva base de tiempo con dimension n-112
%compara la derivada aproximada con el metodo analıtico13
plot(t1,dfdt,t1,cos(t1))14
2.4 Integracion numerica
Integracion numerica es la tecnica de aproximar integrales de funciones. La
integracion de funciones es un topico especial y de interes en aplicaciones
practicas para ingenierıa mecatronica y robotica. Desde el punto de vista analıtico y
experimental las integrales representan una herramienta fundamental en el analisis y
diseno de algoritmos de control, desarrollo y construccion de robots manipuladores.
La aplicacion inmediata de integracion numerica se encuentra en el diseno de
simuladores, la calidad de los resultados depende en gran medida de la exactitud
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
100 Capıtulo 2: Metodos numericos
para aproximar a una integral de funcion.
Esquemas de control bien conocidos que se emplean en robots manipuladores como
es el caso del proporcional integral derivativo (PID) involucra la integral del error
de posicion para mejorar las caracterısticas operativas de la estrategia de control
τ = Kpq(t) + Ki
∫ t
t0
q(t) dt−Kvq(t)
La accion de control integral almacena energıa (area bajo la curva del error de
posicion), y mediante una adecuada sintonıa en la ganancia integral influye sobre
la cantidad de energıa aplicada al robot, repercutiendo en la respuesta transitoria y
reduciendo el error en estado estacionario.
Es necesario remarcar que en el caso del esquema PID, la accion de control integral se
realiza en cada instante de tiempo conforme el tiempo evoluciona. Es decir, para cada
valor de t se calcula la integral, de tal forma que no significa realizar la integral una
sola vez, mas bien es un calculo continuo, uno tras otro como el tiempo evolucione.
En contraste con otros metodos, el calculo de la integral solo se requiere una vez,
tal es el caso de la medicion de desempeno de reguladores usando la norma L2[q],
cuya expresion matematica esta dada por:
L2[q] =
√1
T
∫ T
0‖q(t)‖2 dt
donde T representa el tiempo de experimentacion o simulacion (intervalo de
integracion).
Una magnitud pequena en la norma L2 significa alto desempeno del esquema
de control. Esto significa que el area bajo la curva del error de posicion no fue
significativa debido a que el robot se posiciono de manera inmediata, logrando la
convergencia hacia cero del error de posicion q(t) → 0. Por lo tanto, en el periodo
de integracion el transitorio fue rapido, sin sobretiros y el desempeno del algoritmo
de control es muy bueno. En contra parte, un alto valor de la norma L2 representa
pobre desempeno. La norma L2 es muy util cuando se compara varios algoritmos
de control, entonces se determina cual de ese conjunto de esquemas tiene mejores
prestaciones y por lo tanto determina la seleccion para una aplicacion especıfica.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.4 Integracion numerica 101
La adecuada interpretacion de resultados experimentales, analıticos y funcionamien-
to cualitativo de estrategias de control requiere del buen entendimiento de topicos
especıficos de calculo integral y diferencial. Mas aun, como implementar una integral,
o seleccionar el metodo numerico mas adecuado son conocimientos fundamentales
que se ven reflejados en la exactitud de posicionamiento de un robot manipulador y
en el desempeno del esquema de control.
La integral definida de una funcion f(x) sobre un intervalo finito [a, b] es interpretada
como el area sobre la curva de f(x) como se muestra en la figura 2.6. Para varias
funciones la integral se puede obtener en forma analıtica. Sin embargo, para un tipo
de funciones su integral no se puede obtener por medios analıticos, y por lo tanto se
requiere de metodos numericos para estimar su valor.
Figura 2.6 La integral de f(x) significa el area bajo la curva.
Hay varias tecnicas para aproximar la integral de una funcion f(x); la evaluacion
numerica de una integral se le denomina cuadratura cuyo nombre proviene de un
problema geometrico ancestral.
A continuacion se presentan dos metodos geometricos ampliamente conocidos:
metodo trapezoidal y regla de Simpson.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
102 Capıtulo 2: Metodos numericos
2.4.1.2.4.1 Regla trapezoidal
Cuando el area bajo la curva de la funcion f(x) es representada por trapezoides y
el intervalo [a, b] es dividido en n secciones del mismo tamano, entonces el area de
f(x) puede ser aproximada por la siguiente expresion:
IT =b− a
2n[f(x0) + 2f(x1) + 2f(x2) + · · ·+ 2f(xn−1) + f(xn)] (2.11)
donde los valores xi representan los valores finales de los trapecios, para i = 1, 2, · · · ,n− 1; x0 = a y xn = b.
MATLAB tiene la funcion trapz para aproximar la integral de una funcion f(x)
por el metodo trapezoidal, cuya sintaxis es la siguiente:
y=trapz(f)
y=trapz(x,f)
y=trapz(x,f,dim)
La funcion trapz(f) calcula la aproximacion numerica de la integral de la funcion
f por el metodo trapezoidal.
Si f es un vector, entonces y=trapz(f) es la integral de f. Cuando f representa a una
matriz y=trapz(f) retorna un vector renglon con la integral sobre cada columna.
Cuando la funcion trapz tiene la sintaxis y=trapz(x,f) realiza la integral de f con
respecto a x.
Para el caso y=trapz(x,f, dim), dim es un escalar que indica la dimension de la
funcion f. En ambos casos, el vector x debe tener la misma dimension dim.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.4 Integracion numerica 103
♣ Ejemplo 2.6
Calcular la integral de la funcion sen(x) por el metodo trapezoidal para el
intervalo x ∈ [0, π]
Itrapz =
∫ π
0sen(x) dx.
Solucion
El programa 2.5 contiene el codigo fuente para calcular la integral de la funcion
f(x) = sen(x) en el intervalo [0, π]. De la lınea 4 a la 7 se define el intervalo de
tiempo de integracion. El incremento del paso de integracion es cada π1000. En la
lınea 8 se define la funcion sen(x) y en la lınea 9 se realiza la integracion numerica
usando la funcion y=trapz(x,f). Este resultado se compara con el valor analıtico, es
decir Itrapz =∫ π
0 sen(x)dx = 1− cos(π) = 2. El resultado que genera el programa
2.5 es: Itrapz = 2.0.
Codigo Fuente 2.5 Integracion numerica trapezoidal
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 trap.m
Integracion numerica trapezoidal
clc;1
clear all;2
close all;3
tini=0;4
tinc=pi/1000;5
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
104 Capıtulo 2: Metodos numericos
Codigo Fuente 2.6 Integracion numerica trapezoidal
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 trap.m Continua 2.5
Integracion numerica trapezoidal
tfinal=pi;6
x=tini:tinc:tfinal;7
f=sin(x);8
I trapz= trapz(x,f);9
I a= 1-cos(pi);10
disp(’Resultado’)11
%despliega los resultados comparativos12
%del metodo trapezoidal con el analıtico.13
disp([I trapz I a])14
En este ejemplo se ha calculado el area bajo la curva sobre el intervalo [0, π].
El calculo se realiza una sola vez. Sin embargo, hay aplicaciones en control
de robots manipuladores donde se requiere realizar el calculo de la integral de
manera sistematica conforme el tiempo evoluciona. A continuacion se muestra un
procedimiento recursivo donde se obtiene la integral por el metodo trapezoidal para
pequenos intervalos del tamano de π1000 sobre un intervalo amplio [0, 2π].
♣ ♣ Ejemplo 2.7
Calcular la integral de la funcion sen(x) por el metodo trapezoidal para cada
valor de intervalo π1000 contenido en el intervalo [0, 2π]
Itrapz =
∫ 2π
0sen(x) dx.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.4 Integracion numerica 105
Solucion
La idea es obtener un barrido de la integral de sen(x) para cada intervalo π1000, que
pertenece al intervalo [0, 2π]. Es decir, x ∈ [0, π1000, 2
π1000, 3
π1000, · · · , 2π]. En otras
palabras, el intervalo va evolucionando por incrementos de π1000 , hasta llegar a 2π,
con esto se requieren 2000 iteraciones para alcanzar el valor de 2π.
El programa que se presenta en el cuadro de codigo 2.7 contiene la forma de
implementar el metodo trapezoidal para aproximar la integral de una funcion
f(x) = sen(x) en el intervalo [0, 2π]. De la lınea 4 a la 9 se define el intervalo
de tiempo de integracion. El incremento del paso de integracion es cada π1000 .
En la lınea 10 se obtiene la dimension del vector de tiempo, con esa informacion se
realizara el algoritmo recursivo, es decir el numero de veces (2000) que se realizara el
ciclo for para abarcar el intervalo [0, 2π] el cual se presenta de las lıneas 11 a la 21.
En la lınea 12 se exploran los registros de la base de tiempo t(k); cuando k=1
entonces se realiza el primer paso de integracion del intervalo [0, pi1000] cuyo codigo
abarca las lıneas 13 a la 16. Este codigo es necesario por razones tecnicas del
lenguaje de MATLAB debido a que el primer elemento del vector de tiempo
t(1) es cero, ts=0, entonces no se podrıa llevar a cabo el primer intervalo de
integracion x=0:tinc:0, marcando un error de programacion. En su lugar se realiza
x=0:tinc:tinc.
Para el segundo incremento del tiempo de integracion y posteriores incrementos
se ubica en las lıneas 17 a la 21 sobre intervalo [ π1000, · · · , 2π]. En la lınea 23 se
asigna la funcion sen(x) para el correspondiente k-esimo intervalo de integracion
[(k − 1) pi1000, k
pi1000]. La lınea 24 tiene la funcion I trapz(k)=trapz(x,f). Este
procedimiento se realiza un numero de veces (2000) hasta igualar la dimension del
vector de tiempo t.
En la lınea 28 se grafica la integral de la funcion sen(x) por el metodo trapezoidal
y se compara con el metodo analıtico:
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
106 Capıtulo 2: Metodos numericos
Itrapz =
∫ 2π
0sen(x) dx
= − cos(x)|2π0
= 1− cos(x), x ∈ [0, 2π]
Codigo Fuente 2.7 Metodo de integracion trapezoidal
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 trapezoidal.m
% calcula la integral de la funcion sen(x)
% el calculo se realiza por medio de
%integracion iterativa (2000 iteraciones)
%con incrementos de π1000
% para el intervalo [0, 2π].
Metodo de integracion trapezoidal
clc;1
clear all;2
close all;3
% intervalo de integracion4
tini=0;% tiempo inicial de integracion5
tinc=pi/1000;% pasos de incremento del tiempo de integracion6
tfinal=2*pi;% tiempo final de integracion7
% base de tiempo de integracion8
t=tini:tinc:tfinal;9
[m,n]=size(t);% dimension del vector de tiempo10
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.4 Integracion numerica 107
Codigo Fuente 2.8 Metodo de integracion trapezoidal
%Continua programa 2.7
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 trapezoidal.m
Metodo de integracion trapezoidal
for k=1:n11
% registro de la base de tiempo12
ts=t(k);13
if k==114
% para el primer paso de integracion15
% se integra desde 0 a π1000 .16
x=0:tinc:tinc;17
else18
% para el segundo paso de integracion y posteriores19
% se integra desde x = 0 hasta el tiempo actual ts.20
x=0:tinc:ts;21
end22
f=sin(x);% funcion a integrar23
I trapz(k)= trapz(x,f);% integracion por metodo trapezoidal24
end25
% grafica comparativa entre los metodos26
% analıtico y trapezoidal27
plot(x,I trapz,x,1-cos(x))28
La figura 2.7 muestra el resultado comparativo entre el metodo trapezoidal y el
analıtico para la integral de la funcion sen(x) que genera el programa 2.7. Observese
que el metodo trapezoidal es una aproximacion muy buena comparada con el exacto
o metodo analıtico, de tal forma que el resultado trapezoidal se superpone a la grafica
del metodo analıtico (cos(x)-1) en el intervalo [0, 2π].
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
108 Capıtulo 2: Metodos numericos
Figura 2.7 Comparacion entre los metodos trapezoidal y analıtico.
2.4.2.2.4.2 Regla de Simpson
Cuando el area bajo la curva de la funcion f(x) es representada sobre areas de
secciones cuadraticas y si el intervalo [a, b] es dividido en 2n secciones iguales,
entonces el area de f(x) puede ser aproximada por la regla de Simpson cuya expresion
esta dada de la siguiente manera:
Isimp =b− a
6n[f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + · · ·+ 2f(x2n−2)
+4f(x2n−1) + f(x2n)] (2.12)
donde xi representan los valores finales de cada seccion, para i = 1, 2, · · · , n − 1;
x0 = a, y x2n = b.
En MATLAB, la regla de Simpson se implementa en forma adaptiva por medio de
la funcion quad; la tabla 2.1 muestra su sintaxis.
quad(f,a,b) aproxima la integral de una funcion f(x) dentro de los lımites finitos
[a, b], usando un algoritmo recursivo adaptable de cuadratura de Simpson, donde
a, b ∈ IR. El error de integracion numerica que usa es 1e-06. La funcion f(x) puede
ser escalar o vectorial. En el caso vectorial quad retorna un vector de salida donde
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.4 Integracion numerica 109
Tabla 2.1 Funciones de cuadratura
quad(’nombre funcion’,a,b)
Retorna el area de la funcion en el
intervalo comprendido entre a y b
usando la regla de Simpson.
q = quad(fun,a,b,tol)
Emplea un error absoluto de tole-
rancia tol en lugar del valor por de-
fault 1e-06 sobre el intervalo [a, b].
Valores grandes de tol producen in-
tegracion numerica muy rapida, pe-
ro con menor exactitud.
cada componente tiene la integral de la correspondiente componente de la funcion
vectorial f(x). La funcion quad puede ser menos eficiente (pobre exactitud) con
funciones no suaves.
♣ Ejemplo 2.8
Calcular la integral por el metodo de Simpson de la funcion raız cuadratica
f(x) =√
x para intervalos no negativos [a, b].
Solucion
La funcion raız cuadrada f(x) =√
x puede ser integrada analıticamente sobre el
intervalo [a, b], a, b ∈ IR+ de la siguiente forma:
I =
∫ b
a
√x dx =
2
3(b
3
2 − a3
2 ). (2.13)
Este procedimiento sirve de referencia para comparar el valor numerico que calcula
el metodo de Simpson.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
110 Capıtulo 2: Metodos numericos
El cuadro 2.9 contiene el programa para calcular la integral de la funcion f(x) =√
x
por el metodo de Simpson sobre un intervalo no negativo [a, b] especificado por
el usuario, y el resultado es comparado con el metodo analıtico (2.13) el cual se
encuentra implementado en la lınea 17.
Por precaucion, sobre los datos del intervalo definido por el usuario se inserta la
instruccion if para verificar que los extremos del intervalo sean positivos y ademas
que cumplan a < b.
Se hace la aclaracion que dentro del lenguaje de programacion de MATLAB la
funcion sqrt acepta valores negativos y retorna numeros complejos. Sin embargo,
en modelado dinamico y control de robots manipuladores usando moldeo de energıa
(estabilidad de Lyapunov) no se requiere la teorıa de numeros complejos.
Codigo Fuente 2.9 Integracion Simpson
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 simpson1.m
%Funcion quad para calcular la integral de la
%funcion raız cuadrada por el metodo de Simpson.
%El resultado se compara con la integral analıtica.
%El intervalo de integracion es definido por el usuario.
Integracion Simpson
clc;1
clear all;2
close all;3
disp(’Metodo de Simpson’)4
% los valores del intervalo [a, b] son proporcionados5
% por el usuario desde el teclado6
a=input(’Introduzca el valor inicial del intervalo de integracion: ’);7
b=input(’Introduzca el valor final del intervalo de integracion: ’);8
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.4 Integracion numerica 111
Codigo Fuente 2.10 Integracion Simpson
% Continuacion del programa 2.9
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 simpson1.m
Integracion Simpson
if a>=0 && b>= 09
if a>b10
disp(’Error: el intervalo positivo [a,b] debe cumplir a<b.’)11
return12
end13
% regla de Simpson14
% la funcion raız cuadrada (sqrt) es indicada como15
% cadena de caracteres en la funcion quad16
I simp=quad(’sqrt’,a,b);17
% metodo analıtico18
I a=2/3*(b∧(3/2)-a∧(3/2));19
fprintf(’Valor analıtico=%f \n Simpson:%f \n’,I a,I simp)20
else% Para el caso de valores negativos21
disp(’Error en los valores del intervalo de integracion.’)22
disp(’El intervalo [a,b] con a<b debe contener unicamente valores positivos.’)23
end24
La salida del programa cap2 simpson1.m produce resultados identicos entre el
metodo de Simpson con el analıtico:
Valor analıtico=33.333333
Simpson=33.333333
corresponde al intervalo a=0 y b=10.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
112 Capıtulo 2: Metodos numericos
♣ Ejemplo 2.9
Calcular la integral de la funcion f(x) = x5 por el metodo de Simpson.
Solucion
La integral de la funcion f(x) = x5 esta dada por:
I =
∫ b
a
x5dx =1
6(b6 − a6). (2.14)
El cuadro 2.11 contiene el codigo fuente para aproximar la integral de la funcion
cuadratica f(x) = x2 por el metodo de Simpson sobre un intervalo de [0, 10]. En la
lınea 6, la funcion cuadratica es utilizada a traves de un manejador de funciones:
f=@(x)x.∧5; e incorporada la funcion quad(f,a,b) en la lınea 7.
Codigo Fuente 2.11 Metodo de Simpson
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 simpson.m
Metodo de Simpson
clc;1
clear all;2
close all;3
a=0; b=10;4
x=a:b;5
f= @(x)x.∧5; %funcion cuadratica6
I simp=quad(f,a,b);7
I a= (1/6)*(b∧6-a∧6);% metodo analıtico8
% comparacion entre el metodo analıtico y el de Simpson9
fprintf(’Valor analıtico=%f \n Simpson:%f \n’,I a,I simp)10
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.4 Integracion numerica 113
La salida del programa cap2 simpson.m es la siguiente:
Valor analıtico=166666.666667
Simpson=166666.666667
corresponde al intervalo [0, 10].
2.4.3.2.4.3 Funciones de cuadratura
MATLAB tiene varias funciones que calculan la integral de funciones por metodos
numericos conocidas como funciones de cuadratura. Adicional a la regla de Simpson
quad, existen mas opciones que se presentan a continuacion:
quad8
La funcion quad8(’nombre funcion’,a,b) retorna el area de la funcion en el
intervalo [a, b] usando la regla de Newton-Cotes 8 panel.
quadl
q = quadl(f,a,b) aproxima la integral de la funcion f en un intervalo finito [a, b]
dentro de un error 1e-06 usando el algoritmo recursivo adaptable de cuadratura de
Lobatto. La sintaxis de quadl requiere que la funcion f sea una funcion manejador.
quadl acepta funciones vectoriales y retorna un vector con la integral de cada
componente. quadl puede ser mas eficiente (alta exactitud) que la funcion quad
con funciones suaves.
quadgk
La funcion quadgk tiene buena eficiencia para funciones oscilatorias, y soporta
intervalos de integracion infinitos, ası como manejar moderadamente valores
singulares. Una ventaja de esta funcion es que soporta integracion de contorno a lo
largo de trayectorias continuas por trozos. Si el intervalo de integracion es infinito,
es decir [a,∞], entonces para que la integral de f(x) exista, f(x) debe caer como
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
114 Capıtulo 2: Metodos numericos
x → ∞. Esta es una condicion para poderse utilizar quadgk, particularmente para
funciones oscilatorias sobre intervalos infinitos, f(x) debe caer muy rapida.
Una ventaja que tiene la funcion quadgk es que integrara funciones que tienen
puntos singulares no muy fuertes. Si la funcion tiene puntos singulares dentro del
intervalo (a, b), entonces lo recomendable es escribir la integral como la suma de
integrales sobre subintervalos con puntos singulares como puntos finales, computar
cada integral con quadgk y sumar los resultados.
quadv
La funcion quadv vectoriza a quad para una funcion vectorial.
2.4.4.2.4.4 Metodo de Euler
Un metodo ampliamente utilizado en robotica y sistemas mecatronicos es la
integracion numerica discreta, la cual se puede establecer directamente del metodo
de Euler.
Por ejemplo al derivar con respecto al tiempo la integral I(t) de la funcion f(t) se
obtiene lo siguiente:
I(t) =
∫ t2
t1
f(t)dt ⇒ I(t) = f(t) ∀t ∈ [t1, t2]. (2.15)
Partiendo de la definicion matematica de la derivada se tiene:
I(t) = lım�t→0
I(t +�t) − I(t)
�t(2.16)
(2.17)
donde �t = t2 − t1, representa un infinitesimo intervalo de tiempo.
Si aproximamos a la derivada I(t) en su forma discreta I(t) I(tk) entonces el
tiempo discreto esta dado por tk = kh, k = 1, 2, · · · , n y h es el periodo de muestreo.
De esta forma se cumple tk−1 = (k − 1)h y �tk = tk − tk−1 = kh− (k − 1)h = h.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.4 Integracion numerica 115
Por lo tanto la derivada discreta I(tk) se puede realizar por diferenciacion numerica
de la posicion I(tk) de la siguiente forma:
I(tk) =I(tk)− I(tk−1)
tk − tk−1=
I(tk)− I(tk−1)
h= f(tk). (2.18)
La expresion 2.18 se conoce como metodo de Euler y sirve para estimar la velocidad
por diferenciacion numerica de la posicion.
Despejando I(tk) de la expresion (2.18), la integral discreta adquiere la siguiente
forma:
I(tk) = I(tk−1) + hf(tk) (2.19)
La expresion (2.19) es muy simple, se convierte en una sumatoria y es adecuada para
poderse implementar como algoritmo recursivo.
♣ Ejemplo 2.10
Calcular la integral de la funcion f(t) = sen(t) por el metodo de Euler en forma
recursiva para el periodo de integracion t ∈ [0, 10] segundos. El incremento del
tiempo es por pasos de un milisegundo.
Solucion
En el cuadro 2.12 se presenta el codigo fuente que implementa el metodo de Euler
para integrar la funcion f(t) = sen(t). El intervalo de integracion es de 0 a 10
segundos, con incremento de un milisegundo. Este mismo incremento se toma como
el valor del periodo de muestreo h = 0.001. Para propositos de comparacion el
resultado generado por el metodo de Euler se compara con el metodo trapezoidal.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
116 Capıtulo 2: Metodos numericos
Codigo Fuente 2.12 Metodo de Euler
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 euler.m
Metodo de Euler
clc;1
clear all;2
close all;3
h=0.001;% periodo de muestreo4
t=0:h:10;% intervalo de integracion5
f=sin(t); % funcion a integrar6
I e=0; % condicion inicial de la integral por7
% metodo de Euler8
% metodo comparativo trapezoidal9
I trap=trapz(t,f);10
% metodo comparativo regla de Simpson11
I simp=quad(’sin’,0,10);12
[m, n]=size(t); % Orden del vector de tiempo13
for k=1:n14
I e=I e+h*f(k);15
end16
fprintf(’Metodo Euler= %f \n Metodo Trapezoidal=%f \n Regla de Simpson =%f17
\n’,I e,I trap, I simp)
La salida del programa cap2 euler.m produce el siguiente resultado.
Metodo Euler= 1.838799
Metodo Trapezoidal= 1.839071
Regla de Simpson= 1.839072
Los resultados corresponden al intervalo [0, 10], con incrementos de 0.001.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.5 Sistemas dinamicos de primer orden 117
Observese que existe un mayor error de integracion del metodo de Euler con
respecto a los metodos trapezoidal y el de Simpson. Sin embargo, en robotica se
utiliza el metodo de Euler para estimar la velocidad de movimiento del robot por
diferenciacion numerica de la posicion.
2.5 Sistemas dinamicos de primer orden
Los sistemas dinamicos estan formados por ecuaciones diferenciales, ya que
representan la estructura matematica fundamental para modelar la dinamica
de los robots manipuladores y de cualquier sistema mecatronico. A traves de estas
ecuaciones es posible estudiar en detalle todos los fenomenos fısicos que se encuentran
presentes en la estructura mecanica de los robots.
Particularmente la ecuacion diferencial ordinaria de primer orden:
x = f(x) (2.20)
representa la base matematica del modelado dinamico y control de robots
manipuladores. Donde x ∈ IRn es la solucion de la ecuacion diferencial (2.20);
tambien representa la variable de estado, la cual proporciona informacion sobre
la dinamica del sistema, por esta razon x es que es una funcion continua del tiempo
x = x(t). En otras palabras dentro de las propiedades intrınsecas de las variables de
estado se encuentra que es una funcion implıcita del tiempo. La variable x representa
los cambios de estado dinamicos x(t) en el tiempo.
La ecuacion 2.20 es un sistema dinamico autonomo para modelar dinamica lineal
y no lineal de sistemas mecatronicos y roboticos. Este tipo de ecuacion dinamica
se emplea en la simulacion, diseno de algoritmos de control, analisis y estudio de
fenomenos fısicos y construccion de sistemas mecatronicos.
Practicamente cualquier sistema dinamico autonomo (que no depende de manera
explıcita del tiempo) cuyo modelo matematico este caracterizado por ecuaciones
diferenciales de cualquier orden puede ser convertido mediante un adecuado cambio
de variables de estado a la forma de la ecuacion 2.20, entonces se puede simular
mediante un adecuado procedimiento de integracion numerica.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
118 Capıtulo 2: Metodos numericos
2.5.1.2.5.1 Metodo de Runge-Kutta
Uno de los metodos mas importante para integracion numerica de ecuaciones
diferenciales de primer orden (2.20) son los metodos de Runge-Kutta. Dichos
metodos se basan en aproximar la solucion a traves de series de Taylor. El metodo
mas simple, el denominado metodo de primer orden, usa una serie de expansion de
Taylor de primer orden, el metodo de segundo orden usa la serie de expansion de
Taylor de segundo orden, y ası sucesivamente (el metodo de Euler es equivalente al
de primer orden de Runge-Kutta). MATLAB tiene funciones del metodo de Runge-
Kutta para los ordenes segundo, tercero, cuarto y quinto.
La serie de Taylor para evaluarla en el tk-esimo tiempo a la funcion x(tk) esta dada
por la siguiente expresion:
x(tk) = x(tk−1) + (tk − tk−1)x(tk−1) +(tk − tk−1)
2
2!x(tk−1) + · · ·+
(tk − tk−1)n
n!x
n derivadas︷ ︸︸ ︷· · · · · ·(tk−1) + · · ·
(2.21)
El termino tk − tk−1 representa un pequeno intervalo el cual sera representado por
h = tk − tk−1 = kh − (k − 1)h, entonces la serie de Taylor queda de la siguiente
forma:
x(tk) = x(tk−1) + hx(tk−1) +h2
2!x(tk−1) + · · ·+ hn
n!x
n derivadas︷ ︸︸ ︷· · · · · ·(tk−1) + · · ·
(2.22)
Metodo de Runge-Kutta de primer orden
La integracion numerica de la ecuacion 2.20 por el metodo de Runge-Kutta de primer
orden esta dado de la siguiente manera:
x(tk) = x(tk−1) + hx(tk−1) = x(tk−1) + hf(tk−1) (2.23)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.5 Sistemas dinamicos de primer orden 119
La interpretacion geometrica de la ecuacion (2.23) significa que el valor de estimacion
de x(tk) es igual a la lınea tangente que la une con el valor x(tk−1) como se muestra
en la figura 2.8. Este es un proceso iterativo para todos los puntos x(tk), con
k = 1, 2, · · · , n. El primer metodo de Runge-Kutta es muy simple, ya que aproxima
Figura 2.8 Calculo de x(tk) usando el primer el metodo de Runge-Kutta primer
orden.
la funcion con una serie de Taylor corta que une los puntos tk y tk−1 con lıneas
tangentes, por lo cual la exactitud es pobre si el paso h = tk − tk−1 es grande o si la
pendiente de la funcion cambia rapidamente.
Metodo de Runge-Kutta de orden mayor
Los metodos de Runge-Kutta de orden mayor (dos, tercero, cuarto, y quinto) se usan
para aproximar funciones desconocidas; la aproximacion se realiza a traves de varias
lıneas tangentes, por lo tanto la exactitud es mejorada. Por ejemplo, en el metodo de
integracion de cuarto orden usa la serie de Taylor con las primeras cuatro derivadas,
es decir la estimacion de la funcion x(tk) es a traves de 4 lıneas tangentes.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
120 Capıtulo 2: Metodos numericos
Funciones ode
MATLAB tiene las funciones para integrar la solucion numerica de ecuaciones
diferenciales ordinarias de primer orden llamadas ode.
ode45
La sintaxis de la funcion ode45 es la siguiente:
[t,x]=ode45(’nombre funcion’,ts,cond iniciales,opciones)
La funcion ode45 utiliza los metodos de Runge-Kutta de cuarto y quinto orden.
nombre funcion representa una funcion M-File donde esta implementado el sistema
dinamico en la estructura matematica x = f(x).
La funcion ode45 retorna la solucion del sistema x = f(x), es decir x, ası como
el vector de tiempo t. El tiempo de simulacion o el intervalo de integracion se
encuentra especificado por ts = [tinicial, tf inal], por ejemplo se puede especificar
como un intervalo [0, 10]. Tambien es valido expresarlo como: ts = 0 : 0.001 : 10, el
cual incluye incrementos de tiempo de un milisegundo. Las condiciones iniciales
se encuentran determinadas por cond iniciales, su forma depende del orden
del sistema. Por ejemplo, para un sistema escalar cond inciales=0; para el caso
vectorial x(0) ∈ IR3, tenemos cond inciales=[0;0;0].
El cuarto parametro de opciones es muy importante debido a que contiene las
propiedades de integracion numerica, y de eso depende la simulacion del sistema.
Para tal efecto se emplea la funcion odeset de la siguiente forma:
opciones=odeset(’RelTol’,1e-3,’AbsTol’,1e-6,’InitialStep’,1.0e-3,’MaxStep’,1.0e-3)
Error de integracion
En cada i-esimo paso de integracion se estima un error local de la i-
esima componente de la solucion; este error debe ser menor o igual
que el error aceptable, el cual es una funcion de la tolerancia relativa
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.5 Sistemas dinamicos de primer orden 121
RelTol y de la tolerancia absoluta AbsTol. La expresion para e(i)
satisface la siguiente condicion: |e(i)| = max(RelTol|x(i), AbsTol(i)|).
RelTol
RelTol representa el error relativo de tolerancia que se
aplica a todas las componentes xi del vector solucion
x ∈ IRn.Este parametro tambien controla el numero
correcto de dıgitos en todas las componentes xi. El
valor tıpico RelTol= 1e-3, el cual corresponde al 0.1%
de exactitud.
AbsTol
Error absoluto de tolerancia que se aplica a todas
las componentes individuales xi del vector solucion x.
Tambien determina la exactitud cuando la solucion se
aproxima a cero.
Si AbsTol es un vector, entonces su dimension debe ser
la misma del vector x. El valor de cada componente
de AbsTol se aplica a la correspondiente componente
xi.
Si AbsTol es un escalar, ese valor se aplica a todas las
componentes xi del vector solucion x.
Generalmente, el valor tıpico que se le asigna a AbsTol
es: AbsTol= 1e-6.
NormControl
NormControl significa la norma del error relativo. Es-
ta opcion solicita a la funcion ode45 que el error
de integracion en cada paso cumpla con la siguiente
condicion: ‖e‖ ≤ max(RelTol‖x‖, AbsTol). Se habili-
ta/deshabilita como: on (off). Para funciones sua-
ves, la funcion ode45 entrega un error equivalente a la
exactitud solicitada. La exactitud es menor para pro-
blemas donde el intervalo de integracion es grande y
para problemas moderadamente inestables.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
122 Capıtulo 2: Metodos numericos
Paso de integracion
InitialStep
Especifica el valor inicial del paso de integracion.
Representa una cota superior en la magnitud del
primer paso. En caso de no especificarlo, entonces el
tamano del paso se obtiene como la pendiente de la
solucion en el tiempo inicial. Si la pendiente de todas
las componentes de la solucion es cero, entonces el
procedimiento puede generar un tamano de paso muy
grande. Por lo tanto, es recomendable iniciar con un
valor adecuado esta opcion.
MaxStep
Representa una cota superior del tamano del paso,
es un valor escalar positivo que se obtiene de la
siguiente forma: 0.1|tinicial − tf inal|. La ecuacion
diferencial tiene soluciones o coeficientes periodicos,
es recomendable inicializar MaxStep=14 del periodo.
La funcion ode45 es la que presenta mayor exactitud en el metodo de integracion
para el sistema x = f(x). Sin embargo, debido a esto tambien puede tomar mas
tiempo en dicho proceso.
A continuacion se describe otras opciones de funciones para resolver ecuaciones
diferenciales ordinarias de primer orden, cuya sintaxis es exactamente la misma que
la funcion ode45. Sin embargo, tienen otras caracterısticas operativas.
ode23
La funcion ode23 utiliza el segundo y tercer metodo de integracion. Tiene menor
exactitud comparada con la funcion ode45. Sin embargo, puede realizar mas rapido
el proceso de integracion numerica. La sintaxis esta dada por:
[t,x]=ode23(’nombre funcion’,ts,cond iniciales,opciones)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.5 Sistemas dinamicos de primer orden 123
ode113
[t,x]=ode113(’nombre funcion’,ts,cond iniciales,opciones)
Esta funcion se recomienda para resolver sistemas dinamicos complicados; mantiene
un error de integracion riguroso. La funcion ode113 es un metodo de integracion de
orden variable propuesto por Adams-Bashforth-Moulton.
ode15s
[t,x]=ode15s(’nombre funcion’,ts,cond iniciales,opciones)
Para el caso en que el proceso de integracion de la funcion ode45 sea muy lento
debido a la rigidez del sistema dinamico, entonces es recomendable usar la funcion
ode15s. Esta funcion es de orden variable, multi pasos basada en diferenciacion
numerica (backward o metodo Gear).
ode23s
[t,x]=ode23s(’nombre funcion’,ts,cond iniciales,opciones)
Es muy util para sistemas dinamicos masa-resorte con alta rigidez en que el resorte
la matriz de masas es constante. La funcion ode23s se basa en el metodo modificado
de segundo orden de Rosenbrock. Debido a que el proceso de integracion es por
pequenos pasos, puede ser mas eficiente que la funcion ode15s para tolerancias
pequenas en el error de integracion. Ademas es mucho mas efectivo en sistemas
dinamicos con rigidez donde ode15s no lo es.
ode23t
[t,x]=ode23t(’nombre funcion’,ts,cond iniciales,opciones)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
124 Capıtulo 2: Metodos numericos
La funcion ode23t emplea el metodo trapezoidal usando una interpolacion libre. Es
recomendable para resolver sistemas dinamicos moderados en la rigidez del resorte,
sin utilizar amortiguamiento. La exactitud en la integracion es baja.
ode23tb
[t,x]=ode23tb(’nombre funcion’,ts,cond iniciales,opciones)
La funcion ode23tb es una combinacion de metodos de Runge-Kutta y diferenciacion
numerica (backward) de segundo orden. Para sistemas dinamicos con alta rigidez del
resorte y errores de integracion muy pequenos, la exactitud de integracion es baja.
2.5.2.2.5.2 Simulacion de sistemas dinamicos x = f(x)
A continuacion se presenta una serie de ejemplos ilustrativos cuya finalidad es
mostrar el empleo de las funciones ode en simulacion de sistemas mecatronicos y
robots manipuladores.
♣ Ejemplo 2.11
Considere un sistema dinamico lineal escalar dado de la siguiente forma:
x(t) = −ax(t) + bu(t)
y(t) = cx(t)
donde x es la solucion del sistema dinamico y representa la variable de estado.
La entrada del sistema es u(t) y la respuesta es y. Los parametros estan dados
por a, b, c ∈ IR+.
Realizar la simulacion del sistema usando integracion numerica a traves de la
funcion ode45. Para una entrada u = 1, y parametros a = 1.33, b = 2.6 y c = 1.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.5 Sistemas dinamicos de primer orden 125
Solucion
El sistema dinamico lineal escalar tiene una funcion de transferencia (control clasico)
dada por:
x
u=
b
s + a
y = cx =cb
s + a
donde s = jw, j representa la parte imaginaria o compleja, y w ∈ IR+ es la frecuencia
en rad/seg. El parametro a ∈ IR+ es el ancho de banda del sistema y b ∈ IR+ significa
la ganancia del sistema. Por otro lado, c ∈ IR+ es una ganancia de un amplificador
operacional que acopla de manera adecuada la impedancia entre la variable de estado
x y la respuesta del sistema y.
Para obtener la ecuacion diferencial (modelo dinamico) a partir de la funcion de
transferencia, entonces s no representa frecuencia, en este caso se interpreta como
un operador s = ddt :
x
u=
b
s + a⇒ sx + ax = bu
⇒ x = −ax + bu
y = cx
donde se ha empleado que sx = ddt
x = x.
La figura 2.9 muestra el diagrama a bloques del sistema dinamico lineal.
Figura 2.9 Diagrama a bloques de un sistema dinamico lineal.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
126 Capıtulo 2: Metodos numericos
El programa que implementa al sistema dinamico lineal o planta de estudio se
encuentra contenido en el cuadro 2.13 archivo cap2 ejemplo26 (M-File). Para
resolver el sistema dinamico, se emplea la funcion de integracion numerica ode45.
Por facilidad, se emplea una entrada constante de magnitud unitaria. Los valores de
los parametros de la planta son a = 1.33 y b = 2.6. La ganancia del amplificador es
unitaria c = 1.
Para ejecutar correctamente la funcion cap2 ejemplo26 se requiere del programa
simuejemplo26 que se encuentra listado en el cuadro 2.13, donde se definen las
propiedades de integracion usando la funcion odeset, las cuales son incorporadas en
la funcion ode45. El tiempo de simulacion es de 0 a 10 segundos con incrementos de
una milesima de segundo.
La salida del programa 2.13 se presenta en la figura 2.10, observe que la respuesta a
una entrada constante de magnitud unitaria no produce sobre impulso para sistemas
lineales de primer orden. En estado estacionario, la salida x(t) llega a un valor de
1.9549 (frecuencia cero o DC: s = 0) debido a que la funcion de transferencia adquiere
la forma ba
= 1.9549.
Figura 2.10 Respuesta a una entrada constante unitaria del sistema lineal escalar.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.5 Sistemas dinamicos de primer orden 127
Codigo Fuente 2.13 Sistema lineal escalar
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 ejemplo26
% Simulacion de un sistema lineal escalar
% de la forma x = −ax + bu
%Entradas de la funcion: t tiempo
% x vector de estados
% x (xp) es la velocidad del estado x
% u es la entrada al sistema
% a, b son los parametros
% Salida derivada de la variable de estados: xp
% Para su correcta ejecucion requiere del archivo
%cap2 simuejemplo26
Sistema lineal escalar
function xp =cap2 ejemplo26(t,x)1
%parametros del sistema: a, b.2
%el parametro a representa el ancho de banda3
%del sistema dinamico lineal.4
a=1.33;5
%la proporcion ba
es la ganancia6
%de la funcion de transferencia en frecuencia cero.7
b=2.6;8
%senal de entrada unitaria9
u=1;10
%sistema dinamico lineal escalar11
xp=-a*x+b*u;12
%fin de funcion13
end14
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
128 Capıtulo 2: Metodos numericos
Codigo Fuente 2.14 Simulacion del ejemplo 2.11
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 simuejemplo26
% Realiza la simulacion de un sistema dinamico lineal escalar
% Requiere del archivo cap2 ejemplo26.m
Simulacion del ejemplo 2.11
clc;1
clear all;2
close all;3
%tiempo de simulacion4
ti=0;%tiempo inicial5
tf = 10;% tiempo de simulacion (segundos)6
h=0.001;% incremento de un milisegundo7
ts=ti:h:tf;% vector de tiempo8
cond iniciales=0;9
%opciones del proceso de integracion numerica10
opciones=odeset(’RelTol’,h, ’AbsTol’,1e-06,’InitialStep’,h,’MaxStep’,h);11
% funcion ode45 para integracion numerica12
% solucion del sistema x(t) por integracion numerica Runge-Kutta de cuarto y13
quinto orden:
disp(’Simulacion de un sistema lineal escalar’)14
[t,x]=ode45(’cap2 ejemplo26’,ts,cond iniciales,opciones);15
% ganancia del amplificador que acopla impedancia de la variable de estados x(t)16
con la salida.
c=1;17
%salida del sistema18
y=c*x;19
% grafica del sistema lineal escalar20
plot(t,y)21
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.5 Sistemas dinamicos de primer orden 129
♣ ♣ Ejemplo 2.12
Considere un sistema dinamico lineal de segundo orden, dado por la siguiente
ecuacion:
x(t) =
[0 1
−ω2n −2ρωn
]x(t) +
[0
ωn
]u(t)
y(t) = [ 1 0 ] x(t)
donde x ∈ IRn es el vector solucion del sistema dinamico y representa la variable
de estado. La entrada del sistema es u(t) y la respuesta es y. Los parametros estan
dados por: ωn ∈ IR+ es la frecuencia natural del sistema, ρ ∈ IR+ es el factor de
amortiguamiento (damping) y s = jw, j es la componente imaginaria o compleja,
w es la frecuencia en rad/seg, t es la evolucion del tiempo.
Solucion
El sistema dinamico lineal de segundo orden puede ser deducido de la siguiente
funcion de transferencia
y
u=
ωn
s2 + 2ρωns + ω2n
.
Manipulando la funcion de transferencia y considerando que s = ddt , s2 = d2
dt2,
s2y(t) = y(t), sy(t) = y(t), se obtiene lo siguiente:
y
u=
ωn
s2 + 2ρωns + w2n
⇒ s2y(t) + 2ρωnsy(t) + ω2ny(t) = ωnu(t)
⇒ y(t) + 2ρωny(t) + ω2ny(t) = ωnu(t).
Ahora se realiza un cambio adecuado de variable. Sea x1(t) = y(t), x2(t) = x1(t) =
y(t), entonces
x2(t) + 2ρωnx2(t) + ω2nx1(t) = ωnu(t).
Por lo tanto, el sistema dinamico de la forma x(t) = Ax(t) + Bu(t) esta dado de la
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
130 Capıtulo 2: Metodos numericos
siguiente forma:
d
dt
[x1
x2
]︸ ︷︷ ︸
x
=
[0 1
−ω2n −2ρωn
]︸ ︷︷ ︸
A
[x1
x2
]︸ ︷︷ ︸
x
+
[0
ωn
]︸ ︷︷ ︸
B
u
y = cT x = [ 1 0 ]
[x1
x2
].
El programa que implementa al sistema dinamico lineal de segundo orden se
encuentra descrito en el cuadro 2.15 que corresponde al archivo cap2 ejemplo27
(M-File). Para resolver el sistema dinamico por integracion numerica, se emplea la
funcion ode45. Por facilidad, se emplea una entrada constante unitaria para estudiar
la respuesta del sistema para varios valores de amortiguamiento ρ y frecuencia de
resonancia ωn.
Para ejecutar correctamente la funcion cap2 ejemplo27 se requiere del programa
simuejemplo27 que se encuentra listado en el cuadro 2.15, donde se definen las
propiedades de integracion usando la funcion odeset, las cuales son incorporadas en
la funcion ode45. El tiempo de simulacion es de 0 a 10 segundos con incrementos de
una milesima de segundo.
La salida del programa 2.15 se presenta en la figura 2.11, observe que la respuesta
a una entrada constante de magnitud unitaria puede generar varios sobre impulsos,
esto depende del valor que tome ρ. Por ejemplo, para valores de 0 < ρ < 1 se le
conoce como sub-amortiguado, se caracteriza por presentar una etapa transitoria
muy abrupta, rapida y compuesta por varios sobre impulsos y oscilaciones. Cuando
ρ = 1 se le conoce como amortiguamiento crıtico, disminuye considerablemente
las oscilaciones. Sobre amortiguado es para valores de ρ > 1 el cual no presenta
oscilaciones, es muy lento para llegar a la etapa transitoria.
La figura 2.11 fue obtenida variando los valores de ρ = 0.2, 0.4, 0.6, 0.8, 1, 2, para
generar la respuesta sub-amortiguada, amortiguamiento crıtico y sobre amortiguada.
Se puede observar las oscilaciones muy pronunciadas que presenta en la etapa sub-
amortiguada y a medida que ρ va aumentando su valor, entonces las oscilaciones
gradualmente van disminuyendo hasta desaparecer completamente para ρ > 1.
Cuando ρ = 0, el sistema oscila a la frecuencia natural de resonancia ωn.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.5 Sistemas dinamicos de primer orden 131
Codigo Fuente 2.15 Sistema lineal de segundo orden
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 ejemplo27
%Sistema dinamico lineal de segundo orden
%Para su correcta ejecucion requiere del
%programa cap2 simuejemplo27
%Entradas: t tiempo
% x vector de estados
% Salida xp=Ax+Bu
% la matriz A esta formada por ρ factor
% de amortiguamiento y ωn la frecuencia natural
% de resonancia mecanica.
Sistema lineal de segundo orden
function xp =cap2 ejemplo27(t,x)1
% frecuencia natural de resonancia2
wn=1;3
% factor de amortiguamiento4
rho=1;5
A=[ 0, 1;6
-wn∧2, -2*rho*wn];7
%matriz B8
B=[0;9
wn];10
%senal de entrada11
u=1;12
%sistema dinamico lineal13
xp=A*x+B*u;14
end15
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
132 Capıtulo 2: Metodos numericos
Codigo Fuente 2.16 Simulacion del ejemplo 2.12
%MATLAB Aplicado a Robotica y Mecatronica
%Capıtulo 2 Metodos numericos
%Editorial Alfaomega
%Fernando Reyes Cortes
%Archivo cap2 simuejemplo27
% Simulacion: sistema dinamico lineal de primer orden
% requiere del archivo cap2 ejemplo27.m
Simulacion del ejemplo 2.12
clc; clear all; close all;1
% parametros de simulacion:2
ti=0; tf = 10; h=0.001;3
% intervalo de simulacion4
ts=ti:h:tf;5
cond iniciales=[0;0];6
opciones=odeset(’RelTol’,h, ’AbsTol’,1e-06,’InitialStep’,h,’MaxStep’,h);7
disp(’Simulacion de un sistema lineal de segundo orden’)8
[t,x]=ode45(’cap2 ejemplo27’,ts,cond iniciales,opciones);9
y=x(:,1);%salida del sistema10
plot(t,y)11
Figura 2.11 Respuesta a una entrada escalon.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
2.6 Resumen 133
2.6 Resumen
Metodos de integracion y diferenciacion numerica representan una herramien-
ta poderosa de computo en la implementacion practica para analisis y estu-
dios de esquemas de control en simulacion y en evaluacion practica de sistemas
mecatronicos y robots manipuladores.
Existen varios metodos practicos para resolver una integral, entre los mas
importantes se encuentran trapezoidal, Simpson, Euler recursivo, Runge-Kutta. Sin
embargo, dependiendo de la naturaleza del problema, la seleccion de un metodo
influye directamente en el desempeno, calidad y fidelidad del proceso de simulacion
o experimentacion.
Por ejemplo, el metodo recursivo de Euler es muy rapido y puede ser incluido en el
codigo del experimento para realizarse en tiempo real. Sin embargo, la exactitud con
que aproxima la integral es pobre en contraste con otros metodos como el trapezoidal
o el de Simpson, que pudieran ser mejores opciones para propositos de simulacion.
Para el caso de esquemas de control de robots manipuladores donde se involucre
alguna integral como el caso del algoritmo proporcional integral derivativo, el metodo
recursivo de Euler puede ser una buena opcion a pesar de que la exactitud en la
aproximacion de dicha integral no sea bueno. Esta caracterıstica no es importante
debido a que el desempeno del algoritmo de control depende de la sintonıa de las
ganancias y por lo tanto la pobre exactitud queda absorbida por la ganancia integral.
Para el estudio y analisis de la dinamica en sistemas mecatronicos o robots
manipuladores es importante convertir mediante un adecuado cambio de variables
de estado (variables fase) el modelo dinamico a la forma de una ecuacion diferencial
de primer orden x = f(x).
La simulacion de estos sistemas dinamicos se realiza por medio de la funcion ode45
(metodo de Runge-Kutta para orden cuarto y quinto), con pasos de integracion de un
milisegundos. Las propiedades del metodo de integracion, ası como las condiciones
iniciales del vector x(0) se configuran con la funcion odeset.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
134 Capıtulo 2: Metodos numericos
Parte I referencias selectas
Existe una extensa literatura sobre los aspectos basicos de MATLAB,
ası como metodos numericos. A continuacion se presenta literatura selecta
correspondiente a la Parte I donde el lector puede profundizar sobre los topicos
presentados.
Capıtulo 1 Conceptos basicos
http://www.mathworks.com
Delores M. Etter. “Engineering problem solving with MATLAB”.
Second edition. Prentice-Hall. 1997.
Shoichiro Nakamura. “Analisis numerico y visualizacion grafica
con MATLAB ”. Pearson Eduacion. 1997.
Ashish Tewari. “Modern control design with MATLAB and Simulink”.
John Wiley & Sons, LTD. 2002.
The MathWorks. “Matehmatics: The language of technical computing”.
The MathWorks. 2005.
The MathWorks “Getting started with MATLAB 7 ”. The Math-
Works. 2007.
David Baez Lopez & Ofelia Cervantes Villagomez.
“ MatLab con aplicaciones a la ingenierıa, fısica y finanzas”.
2da edicion Alfaomega, diciembre 2011.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte I problemas propuestos 135
Capıtulo 2 Metodos numericos
Tom M. Apostol. ‘Calculus’. Reverte. 2da. ed., vols. I y II, 2006.
Norman B. Hasser, Joseph P. La Salle, Joseph A. Sullivan.
‘Analisis matematico’. Trillas, 1970.
Watson Fulks. ‘Calculo avanzado’. Limusa. 1983.
Adrian Biran & Moshe Breiner. ‘MatLab for engineers’. Addison
Wesley, 1997.
William H Press, Saul A. Teukoisky, William T. Vetterling,
& Brian P. Flannery. ‘Numerical recipes in C++’. Cambridge
university Press. 2002.
Parte I problemas propuestos
En esta seccion se presentan una serie de ejercicios con la finalidad que el lector
mejore sus conocimientos sobre metodos numericos.
Capıtulo 1 Conceptos basicos
1.1 Considere el programa 1.13, realizar los cambios necesarios en el codigo fuente
para encontrar los mınimos y maximos locales de la funcion.
1.2 Dado la siguiente secuencia de numeros:
datos = {1, 4,−3, 8, 12, 7, 2, 5,−12, 5, 7, 1, 0, 2, 22, 15, 4, 6, 2,−1,−3, 11}Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
136 Capıtulo 2: Metodos numericos
escribir un programa donde se use instrucciones if, for, while para realizar
lo siguiente:
(a) Ordenar los numeros de menor a mayor.
(b) Ordenar los numeros de mayor a menor.
(c) Encontrar el mınimo y maximo.
1.3 Calcular la norma euclidiana de los siguientes vectores:
x =
⎡⎢⎢⎢⎢⎢⎢⎣
1
−0.888
4.35
3
4
⎤⎥⎥⎥⎥⎥⎥⎦ y =
⎡⎢⎢⎢⎣
4
6
5.67
−0.90
⎤⎥⎥⎥⎦ z =
⎡⎢⎢⎢⎢⎢⎢⎣
0.001
4
7
−12.33334
⎤⎥⎥⎥⎥⎥⎥⎦ .
Para todos los vectores x ∈ IR5, y ∈ IR4, z ∈ IR5, obtener la norma euclidiana
a traves de los siguientes metodos.
(a) ‖x‖ =√
xT x.
(b) ‖x‖ =√∑n
i=1.
(c) ‖x‖ =√
x21 + x2
2 + x23 + x2
4 + x25.
(d) ‖x‖ =norma(x,2).
1.4 En referencia del ejercicio inmediato anterior considere los vectores x, y;
implementar la multiplicacion y division entre las componentes de los vectores
a traves operaciones con arreglos.
1.5 Obtener la grafica de las siguientes funciones:
(a) f(x) = x2, −10 < x < 10.
(b) f(x) = tan(x), −15 < x < 15.
(c) f(x) = x1+x2 , −100 < x < 100.
(d) f(x) = [ 1− e−0.01∗x ] senh(x), −3 < x < 3.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte I problemas propuestos 137
Capıtulo 2 Metodos numericos
2.1 Considere los siguientes sistemas de ecuaciones lineales:⎡⎢⎣
2
4
9
⎤⎥⎦ =
⎡⎢⎣
2x1 + 3.33x2 + 4.56x3
8x1 + 12.56x2 + 8.12x3
−3x1 + 8.45x2− 7.12x3
⎤⎥⎦
⎡⎢⎢⎢⎢⎢⎢⎣
6
−3
10.44
6.12
0
⎤⎥⎥⎥⎥⎥⎥⎦ =
⎡⎢⎢⎢⎢⎢⎢⎣
1.11x1 + 8.13x2 + 2.14x3 + 6.73x4 + 12.55x5
−4x1 +−8.34x2 + 4.67x3 + 4.10x4 + 2.48x5
1.2x1 +−5.6x2 + 2.12x3 +−3.24x4 + 12.55x5
2.35x1 + 4.5x2 + 5.89x3 + 0.78x4 + 0.34x5
0.67x1 + 1.21x2 +−0.98x3 + 0.34x4 + 16.12x5
⎤⎥⎥⎥⎥⎥⎥⎦ .
Resuelva el sistema de ecuaciones usando los siguientes metodos
(a) x = A−1y.
(b) x=inv(A)y.
(c) x=A\y.
(d) x=linesolve(A,y).
(e) Regla de Cramer.
2.2 ¿Que argumentos puede utilizar para obtener la derivada de la funcion |t|?2.3 ¿Como puede obtener la derivada con respecto al tiempo de una funcion
discontinua como la funcion signo(t)?
2.4 Aproximar la derivada con respecto al tiempo por diferenciacion numerica de
las siguientes funciones:
f1(t) = t7
f2(t) = |t|f3(t) = signo(t)
f4(t) = tanh(t)
f5(t) = atan (t)
Comparar los resultados con el correspondiente metodo analıtico.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
138 Capıtulo 2: Metodos numericos
2.5 Calcular la integral de las siguientes funciones:
I1 =
∫ μ
μi
x7dx I2 =
∫ μ
μi
|x|dx
I3 =
∫ μ
μi
signo(x)dx I4 =
∫ μ
μi
tanh(x)dx
I5 =
∫ μ
μi
atan (x) dx
considere el intervalo de integracion μ ∈ [−10, 10].
Realice el calculo de la integral para cada funcion utilizando los siguientes
metodos:
(a) Trapezoidal.
(b) Simpson.
(c) Euler.
comparar y analizar los resultados.
2.6 Utilizar el programa del ejemplo 2.7 para calcular la integral de la siguientes
funciones
(a) e−x
(b) cos(x)
(c) x6
realizando un barrido del intervalo de integracion por pasos de 0.001 para
x ∈ [−10, 10]. Comparar los resultados obtenidos con su respectivo metodo
analıtico.
2.7 Realizar la simulacion de los siguientes sistemas dinamicos (t ∈ [0, 10]):
(a)
x =
[x1
x2
]=
[sen(x2)
x31
](b)
x =
[x1
x2
]=
[atan (x1 + x2)
cos(x2x1)
]
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte II
Cinematica
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
La Parte II esta dedicada al estudio de la cinematica directa de robots
manipuladores y sistemas mecatronicos, y se componen de tres capıtulos. El capıtulo
3 incluye Preliminares matematicos para apoyar la representacion de matrices
homogeneas. El capıtulo 4 Cinematica directa cubre los temas de cinematica
directa e inversa, cinematica diferencial y jacobiano de robots manipuladores,
ası como la metodologıa Denavit-Hartenberg. El capıtulo 5 Cinematica directa
cartesiana esta destinado para analizar el modelo que relaciona las coordenadas
cartesianas con las coordenadas articulares para las principales configuraciones de
los robots industriales (sin tomar en cuenta la orientacion de la herramienta de
trabajo).
Capıtulo 3 Preliminares matematicos incluye
los temas de producto punto entre vectores, matrices ortogonales y sus
propiedades matematicas, reglas de rotacion, matrices de transformacion
homogenea para traslacion y rotacion, ası como la presentacion de varios
ejemplos ilustrativos y el desarrollo de librerıas para MATLAB.
Capıtulo 4 Cinematica directa presenta los conceptos de
cinematica directa, cinematica inversa, cinematica diferencial y el jacobiano del
robot. Tambien explica la metodologıa de Denavit-Hartenberg la cual usa un
grupo de parametros geometricos para determinar la matriz de transformacion
homogenea que caracteriza al modelo cinematico de robots manipuladores
industriales.
Capıtulo 5 Cinematica directa cartesianarealiza un analisis detallado de la cinematica cartesiana de las principales
configuraciones de robots industriales. Un conjunto de librerıas se desarrollan
para llevar a cabo simulacion con robots manipuladores.
La parte II concluye con:
Referencias selectas
Problemas propuestos
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Capıtulo
3 Preliminaresmatematicos
H ii−1 =
[Ri
i−1 dii−1
0T 1
]
3.1 Introduccion
3.2 Producto interno
3.3 Matrices de rotacion
3.4 Reglas de rotacion
3.5 Transformaciones de traslacion
3.6 Transformaciones homogeneas
3.7 Librerıas para matrices homogeneas
3.8 Resumen
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Objetivos
Presentar los preliminares matematicos para la cinematica directa de
robots manipuladores y sistemas mecatronicos, asimismo desarrollar li-
brerıas en lenguaje MATLAB (toolbox) para las matrices de transforma-
cion homogenea de rotacion y traslacion.
Objetivos particulares:
Producto interno de vectores.
Matrices de rotacion y traslacion.
Transformaciones homogeneas.
Librerıas de matrices homogeneas para MATLAB.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.1 Introduccion 143
3.1 Introduccion
El posicionamiento del extremo final del robot en el espacio tridimensional
(pose) requiere de 6 coordenadas: 3 coordenadas para la posicion cartesiana
y 3 coordenadas para la orientacion de la herramienta de trabajo. A la relacion que
existe entre las coordenadas articulares del robot con las coordenadas cartesianas y
la orientacion de la herramienta de trabajo colocada en el extremo final del robot se
le denomina cinematica directa.
Como parte de la representacion matematica de la cinematica directa de robots
manipuladores se encuentra el uso de transformaciones homogeneas para representar
orientacion y traslacion de la herramienta de trabajo, con respecto al sistema de
referencia fijo ubicado generalmente en la base del robot.
Como preambulo al tema de matrices de transformacion homogenea estan los
conceptos de producto punto o escalar entre vectores y matrices ortogonales.
El producto punto permite utilizar proyecciones de ortogonalidad de los ejes
principales de un sistema de referencia Σ1(x1, y1, z1) relativo a otro sistema
de referencia Σ0(x0, y0, z0). Otro de los temas de prerrequisito es el de las
matrices ortogonales para modelar la orientacion y traslacion de la herramienta
de trabajo respecto al sistema fijo del robot Σ0(x0, y0, z0). Resaltan las propiedades
matematicas de las matrices ortogonales que facilitan el analisis y descripcion de
movimientos de rotacion y traslacion. En funcion de las propiedades matematicas
de las matrices ortogonales se generan diferentes reglas de rotacion.
Las matrices homogeneas incluyen estos conceptos para ofrecer una representacion
compacta de la matriz de rotacion, que determina la orientacion relativa de un
sistema de referencia Σ1(x1, y1, z1) con respecto a un sistema de referencia fijo
Σ0(x0, y0, z0) y del vector de coordenadas o de traslacion x0 = [x0, y0, z0 ]T .
Con la estructura matematica de la transformacion homogenea se desarrolla un
conjunto de librerıas para propositos de simulacion de cinematica directa de robots
manipuladores y sistemas mecatronicos.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
144 Capıtulo 3: Preliminares matematicos
3.2 Producto interno
Para modelar la orientacion de la herramienta de trabajo del robot se encuentra
el producto escalar o producto interno, tambien conocido como producto punto
(dot product), el cual permite utilizar los conceptos de la geometrıa euclidiana
tradicionales como longitudes, angulos, proyecciones geometricas, ortogonalidad en
dos y tres dimensiones de los sistemas de referencia asociados al robot y de la
herramienta de trabajo.
El termino espacio euclidiano se denomina ası en honor del matematico y filosofo
griego Euclides, y se utiliza para distinguirlo de otro tipo de espacios como los
espacios curvos de la geometrıa no euclidiana y la teorıa de la relatividad de Einstein.
El espacio euclidiano es un tipo de espacio geometrico donde se satisfacen los axiomas
de la geometrıa de Euclides. Como casos particulares del espacio euclidiano se
encuentran la recta real, el plano y el espacio tridimensional, que corresponden a las
dimensiones 1, 2 y 3, respectivamente.
El concepto abstracto de espacio euclidiano geometrico se generaliza para el caso
general de espacio euclidiano n-dimensional, el cual tambien se considera como un
espacio vectorial n-dimensional real.
Al producto interno x ·y es una operacion definida sobre dos vectores x, y ∈ IRn de
un espacio euclidiano cuyo resultado es un numero o escalar (los espacios vectoriales
que incluyen al producto interno reciben el nombre de espacios prehilbertianos).
Considere los siguientes vectores x, y ∈ IRn, el producto interno vectorial se define
como:
x · y = xTy =
n∑i=1
xiyi = x1y1 + x2y2 + · · ·+ xnyn. (3.1)
El producto punto se le llama producto escalar debido a que tambien se puede
realizar como: x · y = xT y.
En un espacio euclidiano real, el producto interno (3.1) tambien acepta una definicion
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.2 Producto interno 145
geometrica dada por:
x · y = ‖x‖‖y‖ cos(θ) (3.2)
donde θ es el angulo que forman los vectores x y y (ver figura 3.1), y las
normas euclidianas se encuentran definidas por ‖x‖ =√
x21 + x2
2 + · · ·+ x2n, ‖y‖ =√
y21 + y2
2 + · · ·+ y2n, respectivamente.
Geometricamente ‖y‖ cos(θ) representa la proyeccion del vector y sobre la direccion
del vector x, como se presenta en la figura 3.1. El concepto de proyeccion geometrica
se usa particularmente en las matrices rotacionales para modelar la orientacion del
sistema de referencia de la herramienta de trabajo del robot.
Figura 3.1 Producto interno vectorial x · y.
Considere x, y, z ∈ IRn, y α ∈ IR; el producto interno tiene las siguientes
propiedades:
Conmutativa: x · y = y · x.
Distributiva: z · (x + y) = z · x + z · y.
Asociativa: αx · y = x · αy = x · yα.
La expresion geometrica del producto escalar permite calcular el coseno del
angulo θ existente entre los vectores x y y de la siguiente manera:
cos(θ) =x · y‖x‖‖y‖ =
x1y1 + x2y2 + · · ·+ xnyn√x2
1 + x22 + · · ·+ x2
n
√y21 + y2
2 + · · ·+ y2n
.
Vectores ortogonales: x · y = 0⇒ x ⊥ y, θ = π2 rad (90 grados).
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
146 Capıtulo 3: Preliminares matematicos
Vectores paralelos o con la misma direccion si el angulo que forman es 0 rad
(0 grados) o π rad (180 grados): x · y = ‖x‖‖y‖.
x · x = 0⇐⇒ x = 0 ∈ IRn.
Si x �= 0⇒ x · x > 0.
La norma euclidiana de un vector x se puede expresar como: ‖x‖ =√
x · x =√xTx =
√∑ni=1 x2
i =√
x21 + x2
2 + · · ·+ x2n.
MATLAB contiene la funcion dot(x,y) para realizar la operacion producto interno
x · y de los vectores x, y ∈ IRn, con la siguiente estructura de sintaxis:
x · y = dot(x,y)
x · y = dot(x,y,n)
x · y=dot(x,y,n) retorna el producto escalar de los vectores x, y con dimension n.
Nota: el producto punto x · y equivale a realizar la operacion en MATLAB:
x · y=x’*y.
La norma euclidiana ‖x‖ de un vector x ∈ IRn, tambien conocida como norma 2, se
puede calcular utilizando la funcion norm con la siguiente sintaxis:
‖x‖=norm(x,2)
♣ Ejemplo 3.1
Sean x, y ∈ IR2 con las siguientes componentes respectivamente:
x =
[2
4
]y =
[8
−3
]
obtener el producto punto x ·y y el angulo θ que forman entre los vectores x, y.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.2 Producto interno 147
Solucion
Puesto que los vectores x, y ∈ IR2 estan formados por x = [ 2 4 ]T y y = [ 8 −3 ]T ,
y tomando en cuenta la definicion del producto punto se obtiene lo siguiente:
x · y = x1y1 + x2y2 = 2 (8)− 4 (3) = 16− 12 = 4.
El angulo que forman los vectores x y y se obtiene como:
cos(θ) =x · y‖x‖‖y‖ =
x1y1 + x2y2√x2
1 + x22
√y21 + y2
2
=4√
22 + 42√
82 + (−3)2=
4
(4.4721)(8.544)= 0.1046
lo que significa que θ =1.465 rad (83.99 grados).
Observe que evidentemente se cumple:
x · y = ‖x‖‖y‖ cos(θ) =√
20√
73 cos(1.465) = (4.472135)(8.544003)(0.1046) = 4.
El cuadro 3.1 presenta el codigo fuente para realizar el desarrollo del ejemplo 3.1.
Codigo Fuente 3.1 Producto interno o escalar
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %Programa cap3 prodint.m
Producto interno o escalar
clc; clear all; close all;1
disp(’Producto interno o escalar de vectores’)2
x = [2; 4 ];%vector columna de dos renglones x ∈ IR23
y = [8; -3];%vector columna de dos renglones y ∈ IR24
xdoty=dot(x,y)%producto interno x · y usando la funcion dot5
xdoty m=x’*y%forma matematica del producto interno x · y6
theta=acos(x’*y/(norm(x,2)*norm(y,2)))%angulo que forman los vectores7
x, y ∈ IR2
%forma geometrica del producto interno: x · y = ‖x‖‖y‖ cos(θ)8
xdoty geometrica=norm(x,2)*norm(y,2)*cos(theta)9
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
148 Capıtulo 3: Preliminares matematicos
3.3 Matrices de rotacion
La figura 3.2 muestra dos sistemas de referencia cartesianos, asociados a
un cuerpo rıgido, representados por Σ0 ( x0, y0, z0 ) y Σ1 (x1, y1, z1 ), ambos
sistemas comparten el mismo origen. El sistema de referencia Σ1 (x1, y1, z1 )
mantiene una orientacion relativa al sistema de referencia fijo Σ0 ( x0, y0, z0 ).
Figura 3.2 Sistemas de referencia fijo Σ0 y rotado Σ1.
Considerese un punto p sobre el cuerpo rıgido, con respecto al sistema Σ0 (x0y0z0 )
tiene coordenadas p0 = [x0, y0, z0]T , el mismo punto p se representa como p1 =
[x1, y1, z1]T con respecto al sistema de referencia Σ1 ( x1, y1, z1 ). El problema que
se plantea es encontrar la relacion que hay entre las coordenadas de un punto
p1 en el sistema de referencia Σ1 (x1, y1, z1 ) con el vector p0 definido en el
sistema de referencia Σ0 (x0, y0, z0 ). Considere vectores bases para cada sistema
de referencia Σ0 y Σ1. Sean {i0, j0, k0} vectores unitarios a lo largo de los
ejes x0, y0, z0, respectivamente. Es decir, i0 = [ 1, 0, 0]T , j0 = [ 0, 1, 0]T , k0 =
[ 0, 0, 1]T . Similarmente se definen los vectores unitarios {i1, j1, k1} para el sistema
Σ1 (x1, y1, z1 ).
Un vector que va desde el origen comun para ambos sistemas hasta el punto p, puede
ser expresado en funcion de cualquiera de las dos bases de vectores unitarios de la
siguiente forma:
p0 = p0xi0 + p0yj0 + p0zk0 con respecto al sistema Σ0 (3.3)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.3 Matrices de rotacion 149
p1 = p1xi1 + p1yj1 + p1zk1 con respecto al sistema Σ1 (3.4)
Los vectores p0, p1 representan al mismo punto p. Tomando en cuenta las ecuaciones
(3.3) y (3.4) la relacion que hay entre sus componentes adquiere la siguiente forma:
p0x = p0 · i0 = p1 · i0
= p1xi1 · i0 + p1yj1 · i0 + p1zk1 · i0 (3.5)
p0y = p0 · j0 = p1 · j0
= p1xi1 · j0 + p1yj1 · j0 + p1zk1 · j0 (3.6)
p0z = p0 · k0 = p1 · k0
= p1xi1 · k0 + p1yj1 · k0 + p1zk1 · k0. (3.7)
Estas ecuaciones pueden ser escritas de manera compacta como:
p0 = R10p1 (3.8)
donde R10 representa la siguiente matriz
R10 =
⎡⎢⎣
i1 · i0 j1 · i0 k1 · i0i1 · j0 j1 · j0 k1 · j0
i1 · k0 j1 · k0 k1 · k0
⎤⎥⎦ . (3.9)
La matriz R10 ∈ IR3×3 es la matriz de transformacion de las coordenadas del
punto p del sistema de referencia Σ1 (x1, y1, z1 ) hacia las coordenadas del sistema
Σ0 (x0, y0, z0 ). En otras palabras, dado un punto p1 en el sistema Σ1 ( x1, y1, z1 ),
entonces R10p1 representa el mismo vector expresado con respecto al sistema de
referencia Σ0 (x0, y0, z0 ).
Observese que las columnas de R10 son los cosenos directores de los ejes coordenados
x1, y1, z1 respecto de los ejes coordenados x0, y0, z0. Por ejemplo, la primera columna
[i1 · i0, i1 · j0, i1 · k0]T especifica la direccion del eje x1 relativa al sistema de referencia
Σ0.
Similarmente se puede obtener el punto p1 en funcion del punto p0:
p1x = p1 · i1 = p0 · i1= p0xi0 · i1 + p0yj0 · i1 + p0zk0 · i1
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
150 Capıtulo 3: Preliminares matematicos
p1y = p1 · j1 = p0 · j1
= p0xi1 · j1 + p0yj1 · j1 + p0zk1 · j1
p1z = p1 · k1 = p0 · k1
= p0xi1 · k1 + p0yj1 · k1 + p0zk1 · k1
p1 = R01p0 (3.10)
R01 =
⎡⎢⎣
i0 · i1 j0 · i1 k0 · i1i0 · j1 j0 · j1 k0 · j1
i0 · k1 j0 · k1 k0 · k1
⎤⎥⎦ . (3.11)
La matriz R01 ∈ IR3×3 (3.11) representa la matriz inversa de la transformacion R1
0
(3.9). Debido a que el producto interno de vectores unitarios cumple la propiedad
conmutativa, entonces i1 · j1 = j1 · i1, i0 · j0 = j0 · i0, etc., por lo que resulta:
R01 =
(R1
0
)−1=(R1
0
)T(3.12)
La matriz R10 cuya inversa es su transpuesta se denomina matriz ortogonal. La
norma de los vectores columna de R10 son de magnitud unitaria y mutuamente
ortogonales, el determinante de R10 es ±1. Si el sistema de referencia se selecciona
de acuerdo con la regla de la mano derecha, entonces el determinante de R10 es 1.
La matriz R10 se denomina matriz de rotacion y pertenece a la clase de matrices
ortogonales que se denotan como SO(3).
Notacion
La matriz R10 representa la orientacion del sistema Σ1 (x1, y1, z1 ) respecto al sistema
Σ0 (x0, y0, z0 ). R21 representa la orientacion del sistema Σ2 (x2, y2, z2 ) respecto al
sistema Σ1 (x1, y1, z1 ), y ası sucesivamente. Mientras que la transformacion inversa
R01 significa la orientacion del sistema de referencia Σ0 ( x0, y0, z0 ) relativa al sistema
de referencia Σ1 (x1, y1, z1 ). De manera analoga, R12 es la transformacion inversa de
coordenadas del sistema de referencia Σ1 ( x1, y1, z1 ) hacia el sistema Σ2 (x2, y2, z2 ).
Hay varios metodos para expresar la orientacion del sistema de referencia
Σ1(x1, y1, z1) con respecto al sistema de referencia fijo Σ0(x0, y0, z0), entre los mas
usuales se encuentra la rotacion con respecto a uno de los ejes principales x0, y0, y0.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.3 Matrices de rotacion 151
A continuacion se tratan los casos de rotacion alrededor de un eje principal.
3.3.1.3.3.1 Matriz de rotacion alrededor del eje z0
Considere que el sistema de referencia Σ1 ( z1, y1, z1 ) el cual se encuentra rotado un
angulo θ alrededor del eje z0 del sistema Σ0 ( z0, y0, z0 ). Obtener la matriz resultante
de transformacion R10.
Como se muestra en la figura 3.3, los ejes z0 y z1 son paralelos. El signo del angulo
θ esta dado por la regla de la mano derecha. Por convencion, un angulo positivo es
aquel cuyo sentido de rotacion es contrario al movimiento de las manecillas del reloj.
Figura 3.3 Rotacion de un angulo θ alrededor del eje z.
De la figura 3.3 se obtienen las siguientes ecuaciones:
i1 · i0 = cos(θ) j1 · i0 = − sen(θ)
j1 · j0 = cos(θ) i1 · j0 = sen(θ)
k0 · k1 = 1
todos los demas productos punto son cero, puesto que el angulo que existe entre los
vectores unitarios i0, i1, j0, y j1 con k0 y k1 es de 90 grados, excepto entre ellos
mismos, puesto que k0 y k1 forman un angulo de 0 grados: k1 · i0 = cos(π2 ) =
0, k1 · j0 = cos(π2 ), i1 · k0 = cos(π
2 ) = 0, y j1 · k0 = cos(π2 ) = 0.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
152 Capıtulo 3: Preliminares matematicos
Notacion
La matriz (3.13) se conoce como matriz de rotacion alrededor del eje z y es
representada por Rz(θ).
Rz(θ) =
⎡⎢⎣
cos(θ) − sen(θ) 0
sen(θ) cos(θ) 0
0 0 1
⎤⎥⎦ . (3.13)
La matriz de rotacion Rz(θ) se interpreta como una matriz que especifica la
orientacion del sistema de referencia Σ1 ( x1, y1, z1 ) relativo al sistema de referencia
Σ0 (x0, y0, z0 ).
p0 = Rz(θ)p1 =
⎡⎢⎣ cos(θ) − sen(θ) 0
sen(θ) cos(θ) 0
0 0 1
⎤⎥⎦p1. (3.14)
Por convencion considerese que el angulo θ es positivo en el sentido contrario al
movimiento de las manecillas del reloj.
La relacion inversa que determina la orientacion del sistema Σ0 (x0, y0, z0 ) con
respecto al sistema Σ1 (x1, y1, z1 ) esta dada por:
p1 = RTz ( θ )p0 =
⎡⎢⎣
cos(θ) sen(θ) 0
− sen(θ) cos(θ) 0
0 0 1
⎤⎥⎦p0. (3.15)
Por lo tanto, un punto p0 en el sistema Σ0 (x0, y0, z0 ) es transformado hacia un
punto p1 en el sistema Σ1 (x1, y1, z1 ) incluyendo su orientacion relativa.
Otra forma de obtener la matriz Rz( θ ) que relaciona la orientacion θ del sistema
de referencia Σ1 ( z1, y1, z1 ) con respecto al eje z0 del sistema de referencia
Σ0 ( z0, y0, z0 ) es por medio de una proyeccion geometrica, es decir, analizando la
proyeccion de los ejes x1, y1 sobre los ejes x0, y0 como se ve en la figura 3.4.
Los ejes z1 y z0 son paralelos entre sı, el plano x1−y1 se encuentra rotado un angulo
θ con respecto al plano x0−y0, entonces la proyeccion del punto p1 = [p1x, p1y, p1z]T
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.3 Matrices de rotacion 153
Figura 3.4 Rotacion θ grados del plano x1 − y1 con respecto al plano x0 − y0.
sobre los ejes del sistema Σ0 son:
p0x = p1x cos(θ) − p1y sen(θ)
p0y = p1x sen(θ) + p1y cos(θ)
p0z = p1z
p0 = Rz(θ)p1 =
⎡⎢⎣ cos(θ) − sen(θ) 0
sen(θ) cos(θ) 0
0 0 1
⎤⎥⎦p1.
Propiedades de la matriz de rotacion Rz(θ)
La matriz de rotacion Rz(θ) tiene varias propiedades importantes que a continuacion
se presentan:
Rz( 0 ) = I , I ∈ IR3×3 es la matriz identidad.
Rz( θ )Rz( β ) = Rz(β )Rz( θ ) = Rz( θ + β ) = Rz(β + θ ).
Rz( θ )−1 = Rz(−θ ).
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
154 Capıtulo 3: Preliminares matematicos
Rz( θ )T = Rz( θ )−1.
Rz( θ )Rz( θ )T = Rz( θ )T Rz( θ ) = I .
det[Rz( θ )] = 1 si el sistema de referencia cartesiano Σ ( z, y, z ) es seleccionado
por la regla de la mano derecha, en otro caso det[Rz( θ )] = −1.
Funcion matriz de rotacion Rz( θ )
La funcion matriz de rotacion Rz( θ )
Rz( θ ) =
⎡⎢⎣ cos(θ) − sen(θ) 0
sen(θ) cos(θ) 0
0 0 1
⎤⎥⎦
tiene la siguiente sintaxis:
R=Rz(θ)
donde θ ∈ IR es el angulo de rotacion alrededor del eje z, y representa el argumento
de entrada. Retorna la matriz de rotacion R.
El cuadro 3.2 contiene el programa en codigo fuente para evaluar en forma simbolica
las propiedades matematicas de la matriz de rotacion Rz( θ ). Para simplificar el
algebra simbolica es recomendable utilizar la funcion simplify.
Para expresiones matematicas con variables simbolicas, la funcion simplify
resulta importante para obtener un resultado matematico compacto, es decir
factorizado y reducido.
Cuando un programa se encuentra combinando calculos numericos con variables
simbolicas, se recomienda usar la funcion vpa con una precision de tres dıgitos a
traves de digits(3).
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.3 Matrices de rotacion 155
Codigo Fuente 3.2 Funcion Rz(θ)
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %Archivo Rz.m
Funcion Rz(θ)
function R=Rz(theta)1
dato=whos(’theta’);2
if strcmp(dato.class, ’sym’)%para variables simbolicas3
R=simplify([cos(theta), -sin(theta), 0;4
sin(theta), cos(theta), 0;5
0, 0, 1]);6
else%calculos numericos7
digits(3);8
R=simplify([ double(cos(theta)), double(-sin(theta)), 0;9
double(sin(theta)), double(cos(theta)), 0;10
0, 0, 1]);11
end12
end13
♣ ♣ Ejemplo 3.2
Escribir un programa en MATLAB para comprobar las propiedades de la matriz
de rotacion Rz(θ)
Solucion
En el cuadro 3.5 se presenta el programa en codigo fuente para MATLAB de las
propiedades de la matriz de rotacion Rz( θ ).
Para que el resultado simbolico sea compacto o simplificado se emplea la funcion
simplify.
Para visualizar los resultados de las propiedades matematicas de la matriz Rz( θ ) es
necesario no insertar en cada lınea el operador ;).
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
156 Capıtulo 3: Preliminares matematicos
Cuando se trabaja unicamente con variables simbolicas es importante
utilizar la funcion simplify para obtener resultados algebraicos compactos.
Cuando hay una combinacion entre variables simbolicas y calculos numericos
es recomendable usar la funcion double como en el cuadro del codigo 3.2
de la matriz Rz( θ ). Otras opciones que se pueden usar son la funcion vpa
y digits(3) (ver el codigo 3.8).
Codigo Fuente 3.5 Propiedades de la matriz de rotacion Rz(θ)
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %Archivo cap3 propiedadesRz.m
Propiedades de la matriz de rotacion Rz(θ)
clc;1
clear all;2
close all;3
syms a b real4
%resultados simbolicos5
simplify(Rz(a)*Rz(b)) %Rz( a )Rz( b )6
simplify(Rz(b)*Rz(a)) %Rz( b )Rz( a )7
simplify(inv(Rz(a))) %Rz( a )−1
8
simplify(Rz(-a)) %Rz( a )−1
= Rz(−a )9
simplify(Rz(a)’) %Rz( a )T
= Rz( a )−1
10
simplify(Rz(a)’*Rz(a)) %Rz( a )TRz( a ) = I11
simplify(Rz(a)*Rz(a)’) %Rz( a )Rz( a )T
= I12
simplify(det(Rz(a))) %det[Rz( a )]=113
%calculo numerico14
theta=90*pi/180; θ = π215
Rz(theta) %Rz( θ )16
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.3 Matrices de rotacion 157
♣ Ejemplo 3.3
Escribir un algoritmo en lenguaje MATLAB que realice la rotacion de 90 grados
alrededor del eje z0 de una imagen de prueba (flecha).
Solucion
El programa 3.4 contiene el codigo para realizar la rotacion de la imagen de prueba.
El vector p0 = [ px0, py0, pz0 ]T tiene las coordenadas de la imagen de prueba definidas
en el sistema de referencia Σ0(x0, y0, z0). El angulo de rotacion θ es de 90 grados con
respecto al eje z0. El sistema Σ1(x1, y1, z1) tiene la imagen rotada con respecto
al sistema Σ0(x0, y0, z0). La matriz de rotacion Rz0( π
2 ) relaciona la orientacion
que tiene la imagen rotada definida en Σ1(x1, y1, z1) en relacion al sistema fijo
Σ0(x0, y0, z0).
En la figura 3.5 se muestra el resultado del programa en ambos sistemas de referencia
Σ0(x0, y0, z0) y el sistema de referencia rotado Σ1(x1, y1, z1).
Figura 3.5 Rotacion de 90 grados alrededor del eje z0.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
158 Capıtulo 3: Preliminares matematicos
Codigo Fuente 3.4 Rotacion alrededor del eje z0
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %Archivo cap3 rotacionRz.m
Rotacion alrededor del eje z0
clc;1
clear all;2
close all;3
%coordenadas del vector p0 =
⎡⎢⎣ px0
py0
px0
⎤⎥⎦
4
pxo=[0,0,0,0,0,6,7,7, 8, 8, 9,9, 10,10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 13, 14,14,5
14, 14, 14, 14, 14, 14,14, 14, 15, 15, 16,16, 17,17,18,19,20,21];
pyo=[0,0,0,0,0,9,9,10,9, 11, 9,12, 1, 2, 3, 4, 5, 6,7, 8, 9, 12, 12, 12, 12,1, 2, 3, 4, 5,6
6, 7, 8, 9, 12, 9, 12, 9, 11, 9, 10, 9,0,0,0 ];
pzo=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,7
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
theta=90*3.1416/180.0;8
%matriz de rotacion Rz( θ )9
R ztheta=[ cos(theta), -sin(theta), 0;10
sin(theta), cos(theta), 0;11
0, 0,1];12
%conversion de coordenadas del sistema Σ0(x0, y0, z0) al sistema Σ1(x1, y1, z1)13
% p1 = Rz( θ )p014
Sigma1=R ztheta*[pxo; pyo; pzo];15
% p1 =
⎡⎢⎣ px1
py1
pz1
⎤⎥⎦
16
px1=Sigma1(1,:);17
py1=Sigma1(2,:);18
pz1=Sigma1(3,:);19
%puntos graficados en los sistemas p0 ∈ Σ0(x0, y0, z0) y p1 ∈ Σ1(x1, y1, z1)20
plot3(pxo,pyo,pzo,’.’,px1,py1,pz1,’x’)21
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.3 Matrices de rotacion 159
♣ Ejemplo 3.4
Considere un punto p1 = [p1x, p1y, p1z]T = [0.8, 0.5, 1]T en el sistema de referencia
Σ1 ( z1, y1, z1 ), el cual mantiene una orientacion relativa de 90 grados alrededor
del eje z0 del sistema fijo Σ0 ( z0, y0, z0 ). Obtener la proyeccion del punto p1 en el
sistema fijo Σ0.
Solucion
El punto p1 = [p1x, p1y, p1z]T = [0.8, 0.5, 1]T se encuentra en el sistema de referencia
Σ1 ( z1, y1, z1 ), la conversion de coordenadas al sistema de referencia fijo se realiza a
traves de: p0 = R(z, θ)p1, obteniendo lo siguiente:
p0 =
⎡⎢⎣
cos(π2 ) − sen(π
2 ) 0
sen(π2 ) cos(π
2 ) 0
0 0 1
⎤⎥⎦⎡⎢⎣
0.8
0.5
1
⎤⎥⎦
=
⎡⎢⎣−0.5
0.8
1
⎤⎥⎦ .
Notese que el punto p0 en el sistema de referencia fijo Σ0 ( z0, y0, z0 ) se puede
convertir al punto p1 en el sistema de referencia rotado Σ1 ( z1, y1, z1 ), a traves
de la siguiente relacion:
p1 =
⎡⎢⎣
cos(π2 ) sen(π
2 ) 0
− sen(π2 ) cos(π
2 ) 0
0 0 1
⎤⎥⎦⎡⎢⎣−0.5
0.8
1
⎤⎥⎦
=
⎡⎢⎣
0.8
0.5
1
⎤⎥⎦ .
La figura 3.6 muestra la descripcion geometrica del punto p1 y su proyeccion sobre
el sistema de referencia Σ0 ( z0, y0, z0 ). Observe que los ejes z0 y z1 se mantienen
paralelos entre sı.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
160 Capıtulo 3: Preliminares matematicos
Figura 3.6 Rotacion relativa de 90 grados del sistema Σ1 alrededor del eje z0.
♣ Ejemplo 3.5
Considere un paralelepıpedo rectangular definido en el sistema de referencia
Σ0 ( z0, y0, z0 ); rotar el poliedro 180 grados alrededor del eje z0. Describir la
proyeccion del sistema de referencia rotado Σ1 ( z1, y1, z1 ) en el sistema de
referencia fijo.
Solucion
Sea p0 = [p0x, p0y, p0z]T un punto sobre el paralelepıpedo rectangular, al rotar este
punto p0 180 grados con respecto al eje z0 se mueve rıgidamente junto con todo el
solido quedando en el punto p1 = [p1x, p1y, p1z]T .
Todos los puntos que pertenecen al poliedro estan sujetos a la siguiente
transformacion: p1 = Rz(π )p0, es decir los puntos p0 definidos en el sistema
Σ0(x0, y0, z0) son transformados a coordenadas p1 en el sistema Σ1(x1, y1, z1) por
medio de la matriz de rotacion Rz(π ). La interpretacion geometrica de la rotacion
del poliedro 90 grados alrededor del eje z0 se presenta en la figura 3.7.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.3 Matrices de rotacion 161
Figura 3.7 Rotacion de 180 grados alrededor del eje z0 de un paralelepıpedo
rectangular.
3.3.2.3.3.2 Matriz de rotacion alrededor del eje x0
Considere el sistema de referencia Σ1 ( z1, y1, z1 ) el cual esta rotado un angulo θ
alrededor del eje x0 del sistema Σ0 ( z0, y0, z0 ); obtener la matriz resultante de
rotacion.
En la figura 3.8 se muestra la rotacion del sistema Σ1 ( z1, y1, z1 ) con respecto al eje
x0 del sistema fijo Σ0 ( z0, y0, z0 ); el angulo de rotacion θ gira alrededor del eje x0
en sentido positivo (contrario a las manecillas del reloj).
En este caso el angulo de rotacion que existe entre los ejes x0 y x1 es cero,
puesto que son ejes paralelos. Para la primera columna [ i1 · i0 i1 · j0 i1 · k0 ]T
de la matriz de rotacion R10(θ) ecuacion (3.9) tiene las siguientes componentes:
i1 · i0 = cos(0) = 1, i1 · j0 = cos(π2 ) = 0; i1 · k0 = cos(π
2 ) = 0. La segunda
columna [ j1 · i0 j1 · j0 j1 · k0 ]T adquiere la siguiente forma: j1 ·i0 = cos(π2 ) = 0,
j1 · j0 = cos(θ) y j1 · k0 = cos(θ − π2 ) = sen(θ).
Finalmente, la tercera columna [ k1 · i0 k1 · j0 k1 · k0 ]T se encuentra definida
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
162 Capıtulo 3: Preliminares matematicos
Figura 3.8 Rotacion de un angulo θ alrededor del eje x0.
como: k1 · i0 = cos(π2 ) = 0, k1 · j0 = cos(θ + π
2 ) = − sen(θ) y k1 · k0 = cos(θ).
Por lo tanto, la matriz correspondiente de rotacion esta dada por:
R10(θ) =
⎡⎢⎣
1 0 0
0 cos(θ) − sen(θ)
0 sen(θ) cos(θ)
⎤⎥⎦ . (3.16)
Observe que los ejes x0 y x1 coinciden entre sı, y el plano z1 − y1 se desplaza un
angulo θ de derecha a izquierda con respecto al plano x0 − y0.
Notacion
La matriz (3.16) cuyo angulo de rotacion θ se realiza alrededor del eje x se denota
por Rx( θ ) y su estructura matematica es:
Rx( θ ) =
⎡⎢⎣
1 0 0
0 cos(θ) − sen(θ)
0 sen(θ) cos(θ)
⎤⎥⎦ . (3.17)
Las propiedades de la matriz de rotacion Rx( θ ) son las mismas para Rz( θ ).
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.3 Matrices de rotacion 163
3.3.3.3.3.3 Matriz de rotacion alrededor del eje y0
Considere los sistemas de referencia Σ1 ( z1, y1, z1 ) y Σ0 ( z0, y0, z0 ), el sistema
Σ1 ( z1, y1, z1 ) se encuentra rotado un angulo θ alrededor del eje y0 del sistema fijo
Σ0 ( z0, y0, z0 ). Obtener la matriz resultante de rotacion.
De la figura 3.9 se puede obtener la matriz que relaciona la orientacion relativa
del sistema de referencia Σ1 ( z1, y1, z1 ) con respecto al sistema de referencia fijo
Σ0 ( z0, y0, z0 ). El angulo de rotacion θ es alrededor del eje y0.
La matriz R10(θ) adquiere la siguiente expresion:
R10(θ) =
⎡⎢⎣
cos(θ) 0 sen(θ)
0 1 0
− sen(θ) 0 cos(θ)
⎤⎥⎦ (3.18)
Figura 3.9 Rotacion de un angulo θ del sistema Σ1 alrededor del eje y0 del sistema
Σ0.
Observe que la rotacion del angulo θ alrededor del eje y0 mueve el plano z1 − x1.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
164 Capıtulo 3: Preliminares matematicos
Notacion
La matriz de rotacion (3.18) describe la orientacion relativa del sistema
Σ1 ( z1, y1, z1 ) con respecto al sistema de referencia fijo Σ0 ( z0, y0, z0 ) usando una
rotacion alrededor del eje y0, la cual se denota por:
Ry( θ ) =
⎡⎢⎣
cos(θ) 0 sen(θ)
0 1 0
− sen(θ) 0 cos(θ)
⎤⎥⎦ (3.19)
Las propiedades de Ry( θ ) son las mismas que Rz( θ ).
3.4 Reglas de rotacion
Generalmente la descripcion de la orientacion del sistema de referencia de la
herramienta de trabajo del robot colocada en el extremo final del robot con
respecto al sistema de referencia fijo en la base del robot involucra varias rotaciones
sucesivas (composicion de rotaciones). Existen varios metodos que permiten definir
el orden o reglas de las rotaciones consecutivas.
Composicion de rotaciones para sistemas de referencia sucesivos
Considere tres sistemas de referencia cartesianos definidos por Σ0 (x0, y0, z0 )
(sistema fijo), Σ1 (x1, y1, z1 ) tiene una rotacion relativa al sistema fijo y sea el
sistema de referencia Σ2 (x2, y2, z2 ) cuya orientacion relativa es con respecto al
sistema de referencia Σ1 (x1, y1, z1 ). Todos los sistemas de referencia cartesianos
comparten el mismo origen como se presenta en la figura 3.10.
El problema que se plantea es encontrar la expresion matematica que relaciona la
orientacion del sistema de referencia Σ2 ( x2, y2, z2 ) relativo al sistema de referencia
fijo Σ0 (x0, y0, z0 ).
Puesto que los tres sistemas de referencia tienen el mismo origen, entonces un punto
p puede ser representado en funcion de las coordenadas p0, p1, p2 de la siguiente
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.4 Reglas de rotacion 165
Figura 3.10 Composicion de rotaciones.
forma:
p0 = R10p1 (3.20)
p1 = R21p2 (3.21)
donde la matriz R10 representa la orientacion del sistema de referencia Σ1 (x1, y1, z1 )
con respecto al sistema de referencia Σ0 (x0, y0, z0 ), y la matriz R21 describe
la orientacion del sistema de referencia Σ2 ( x2, y2, z2 ) respecto al sistema
Σ1 (x1, y1, z1 ).
Por lo tanto, la relacion que hay entre un punto p0 ∈ Σ0 (x0, y0, z0 ) con las
coordenadas p2 ∈ Σ2 (x2, y2, z2 ) esta determinada por la siguiente expresion:
p0 = R10R
21p2 (3.22)
donde R10R
21 representa la orientacion del sistema de referencia Σ2 (x2, y2, z2 )
respecto al sistema fijo Σ0 (x0, y0, z0 ), y significa una regla de composicion para
establecer el orden para transformar un punto p desde su representacion en el sistema
Σ2 (x2, y2, z2 ) a su correspondiente representacion en el sistema Σ0 (x0, y0, z0 ).
La regla de transformacion R10R
21 establece que el primer paso es transformar el
punto p2 en coordenadas del sistema Σ1 (x1, y1, z1 ) por medio de R21, posteriormente
al punto p0 por medio de R10. La regla de composicion de rotaciones sucesivas se
establece como:
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
166 Capıtulo 3: Preliminares matematicos
R20 = R1
0R21 (3.23)
La regla de composicion de rotaciones (3.23) puede ser interpretada de la siguiente
manera: supongase que inicialmente los tres sistemas Σ1, Σ2 y Σ3 coinciden. Primero
se rota el sistema de referencia Σ1 (x1, y1, z1 ) relativo a Σ0 ( x0, y0, z0 ) de acuerdo
a la transformacion R10. Ahora con los sistemas de referencia coincidentes Σ1 y
Σ2, se rota el sistema Σ2 (x2, y2, z2 ) relativo a Σ1 (x1, y1, z1 ) de acuerdo a la
transformacion R21. El sistema de referencia Σ2 ( x2, y2, z2 ) tiene una orientacion
con respecto al sistema de referencia Σ0 ( x0, y0, z0 ) dado por la matriz R10R
21 como
se muestra en la figura 3.11.
Figura 3.11 Regla de composicion de rotaciones sucesivas.
La regla de composicion de rotacion sucesivas (3.23) se basa en generar nuevos
sistemas de referencia consecutivos. Por ejemplo, se forma el sistema de referencia
Σ1 ( x1, y1, z1 ) como consecuencia de rotar un angulo determinado alrededor de
uno de los ejes principales del sistema Σ0 (x0, y0, z0 ), seguido por otra rotacion
ahora alrededor del eje y1 del sistema actual Σ1 (x1, y1, z1 ) para obtener el sistema
de referencia Σ2 (x2, y2, z2 ). Realizando giros en diferente orden, se obtienen otros
tipos de representaciones.
Es importante subrayar que la multiplicacion de matrices de rotacion no es
conmutativa, en consecuencia el orden de las rotaciones no es conmutativo.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.4 Reglas de rotacion 167
♣ Ejemplo 3.6
Considere el procedimiento de rotacion que se muestra en la figura 3.12; obtener la
matriz resultante que define la rotacion del sistema de referencia Σ2 con respecto
al sistema de referencia Σ0.
Solucion
En la figura 3.12 se pueden observar los tres sistemas de referencia Σ0, Σ1 y Σ2.
Todos los sistemas de referencia comparten el mismo origen.
Figura 3.12 Rotacion con respecto al sistema actual.
En el esquema izquierdo de la figura 3.12 se encuentran definidos los sistemas de
referencia Σ0 ( x0, y0, z0 ) y Σ1 (x1, y1, z1 ). Los ejes y0 y y1 son paralelos entre sı;
existe una rotacion por un angulo φ alrededor del eje y0 que se representa por la
matriz Ry0,φ. Posteriormente, continua una rotacion por un angulo θ alrededor del
eje z1 para generar el sistema de referencia Σ2 (x2, y2, z2 ) (parte central de la figura
3.12), los ejes z1 y z2 son paralelos entre sı. La orientacion relativa del sistema Σ2
con respecto al sistema de referencia Σ1 esta determinada por la matriz Rz1( θ ).
El esquema derecho de la figura 3.12 muestra la orientacion del sistema de referencia
Σ2 con respecto al sistema de referencia Σ0, cuya matriz de rotacion se encuentra
dado por:
R20 = R1
0R21 = Ry0
(φ ) Rz1( θ )
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
168 Capıtulo 3: Preliminares matematicos
=
⎡⎢⎣
cos(φ) 0 sen(φ)
0 1 0
− sen(φ) 0 cos(φ)
⎤⎥⎦⎡⎢⎣
cos(θ) − sen(θ) 0
sen(θ) cos(cos(θ)) 0
0 0 1
⎤⎥⎦
=
⎡⎢⎣
cos(ψ) cos(θ) − cos(ψ) sen(θ) sen(ψ)
sen(θ) cos(θ) 0
− sen(φ) cos(θ) sen(φ) sen(θ) cos(φ)
⎤⎥⎦
donde R10 = Ry0
( φ ) y R21 = Rz1
( θ ).
Para mostrar que el orden de las rotaciones es importante, considere el caso donde
las rotaciones se realizan en orden inverso: R20 = R2
1R10 = Rz1
( θ )Ry0( φ ). Es decir,
primero la rotacion alrededor del eje z1, seguida por una rotacion alrededor del eje
y0. Entonces, la matriz resultante esta dada por:
R20 = Rz1
( θ ) Ry0(φ )
=
⎡⎢⎣ cos(θ) − sen(θ) 0
sen(θ) cos(cos(θ)) 0
0 0 1
⎤⎥⎦⎡⎢⎣ cos(φ) 0 sen(φ)
0 1 0
− sen(φ) 0 cos(φ)
⎤⎥⎦
=
⎡⎢⎣ cos(θ) cos(ψ) − sen(θ) cos(θ) sen(ψ)
sen(θ) cos(ψ) cos(θ) sen(θ) sen(ψ)
− sen(ψ) 0 cos(ψ)
⎤⎥⎦
Observe que es importante el orden de rotaciones: R20 = R1
0R21. Es decir, en general
R20 �= R2
1R10.
♣ ♣ Ejemplo 3.7
Considere una figura de prueba (flecha) que se encuentra definida en el sistema
de referencia Σ0(x0, y0, z0). Realizar rotaciones sucesivas por un angulo θ = π2
alrededor de los eje z0, del sistema resultante Σ1(x1, y1, z1) realizar una rotacion
θ = π2 alrededor del eje x1, y finalmente del sistema generado Σ2(x2, y2, z2) rotar
alrededor del eje y2 por θ = π2 .
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.4 Reglas de rotacion 169
Solucion
La figura de prueba es una flecha cuyas coordenadas se encuentran definidas en
el sistema de referencia Σ0(x0, y0, z0), cada coordenada de la figura de prueba se
encuentra especificada por un punto p0 = [ px0, py0, pz0 ]T . Un observador en el
sistema de referencia Σ0(x0, y0, z0) vera a la figura de prueba sin ningun efecto
de rotacion. Sin embargo, despues de realizar la rotacion Rz0( π
2 ) un observador
colocado en el sistema de referencia Σ0(x0, y0, z0) vera a dicha figura rotada 90
grados en el nuevo sistema generado Σ1(x1, y1, z1). Las coordenadas de la flecha en
el sistema Σ1(x1, y1, z1) son p1 = Rz0( π
2 )p0. Posteriormente se realiza una nueva
rotacion de 90 grados alrededor del eje x1, dada por: Rx1( π
2 ), con esto se genera
el sistema Σ2(x2, y2, z2). Las coordenadas de la flecha en este sistema Σ2(x2, y2, z2)
estan especificadas por p2 = Rx1( π
2 )p1. La ultima rotacion consiste en girar a la
imagen de prueba (flecha) 90 grados alrededor del eje y2. Esta rotacion genera el
sistema de referencia Σ3(x3, y3, z3) con coordenadas de la imagen p3 = Ry2( π
2 )p2.
La relacion del sistema de referencia Σ3(x3, y3, z3) con el sistema de referencia
Σ0(x0, y0, z0) es: p3 = Ry2( π
2 )Rx1( π
2 )Rz0( π
2 )p0 o p0 = [Ry2( π
2 )Rx1( π
2 )Rz0( π
2 ) ]T p3.
La figura 3.13 muestra la sucesion de rotaciones.
Figura 3.13 Rotaciones sucesivas de la figura de prueba alrededor de los ejes
z0, x1, y2.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
170 Capıtulo 3: Preliminares matematicos
Codigo Fuente 3.5 Rotaciones alrededor de los ejes z0, x1, y2
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %Archivo cap3 rotacion.m
Rotaciones alrededor de los ejes z0, x1, y2
clc; clear all; close all;1
pzo=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,2
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
pyo=[0,0,0,0,0,9,9,10,9, 11, 9,12, 1, 2, 3, 4, 5, 6,7, 8, 9, 12, 12, 12, 12,1, 2, 3, 4, 5,3
6, 7, 8, 9, 12, 9, 12, 9, 11, 9, 10, 9,0,0,0 ];
pxo=[0,0,0,0,0,6,7,7, 8, 8, 9,9, 10,10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 13, 14,14,4
14, 14, 14, 14, 14, 14,14, 14, 15, 15, 16,16, 17,17,18,19,20,21];
theta=90*3.1416/180.0;5
R ztheta=[ cos(theta), -sin(theta), 0; sin(theta), cos(theta), 0; 0, 0,1];6
R xtheta=[ 1, 0, 0; 0, cos(theta), -sin(theta); 0, sin(theta), cos(theta)];7
R ytheta=[ cos(theta), 0, sin(theta); 0, 1, 0; -sin(theta), 0, cos(theta)];8
%
⎡⎢⎣x1
y1
z1
⎤⎥⎦ = Rz(θ)
⎡⎢⎣ x0
y0
z0
⎤⎥⎦
T
9
Sigma1=R ztheta*[pxo; pyo; pzo];10
px1=Sigma1(1,:);py1=Sigma1(2,:); pz1=Sigma1(3,:);11
%
⎡⎢⎣x2
y2
z2
⎤⎥⎦ = Rx(θ)
⎡⎢⎣ x1
y1
z1
⎤⎥⎦
12
Sigma2=R xtheta*[px1; py1; pz1];13
px2=Sigma2(1,:); py2=Sigma2(2,:); pz2=Sigma2(3,:);14
%
⎡⎢⎣x3
y3
z3
⎤⎥⎦ = Ry(θ)
⎡⎢⎣ x2
y2
z2
⎤⎥⎦
15
Sigma3=R ytheta*[px2; py2; pz2];16
px3=Sigma3(1,:); py3=Sigma3(2,:); pz3=Sigma3(3,:);17
plot3(pxo,pyo,pzo,’.’,px1,py1,pz1,’x’,px2,py2,pz2,’o’,px3,py3,pz3,’o’)18
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.5 Transformaciones de traslacion 171
3.5 Transformaciones de traslacion
Considere el sistema de referencia cartesiano fijo Σ0 (x0, y0, z0 ) y el sistema de
referencia Σ1 (x1, y1, z1 ), donde sus respectivos orıgenes son no coincidentes.
El origen del sistema de referencia Σ1 se encuentra desplazado una distancia d10 con
respecto al origen del sistema Σ0, como se muestra en la figura 3.14.
Figura 3.14 Transformaciones de traslacion y rotacion del sistema Σ1 con respecto
al sistema Σ0.
El vector d10 esta expresado en coordenadas del sistema Σ0: d1
0 = [ d10x, d
10y, d
10z ]T ,
entonces cualquier punto p tiene representacion p0 y p1. La relacion general entre
los sistemas de referencia Σ0 (x0, y0, z0 ) y Σ1 (x1, y1, z1 ) incluyendo la matriz de
rotacion R10 y el vector de traslacion d1
0 es:
p0 = d10 + R1
0p1 (3.24)
=
⎡⎢⎣
d10x
d10y
d10z
⎤⎥⎦ + R1
0
⎡⎢⎣
p1x
p1y
p1z
⎤⎥⎦ .
Para el caso de tres sistemas de referencia cartesianos Σ0(x0y0z0), Σ1(x1y1z1) y
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
172 Capıtulo 3: Preliminares matematicos
Σ2(x2y2z2) (ver figura 3.15) se obtienen las siguientes expresiones:
p0 = d10 + R1
0p1 (3.25)
p1 = d21 + R2
1p2 (3.26)
Figura 3.15 Traslacion y rotacion de Σ1 y Σ2 con respecto al sistema Σ0.
Sustituyendo la ecuacion (3.26) en (3.25) se tiene:
p0 = d10 + R1
0d21 + R1
0R21p2. (3.27)
Por lo tanto, la regla de transformacion de traslacion y orientacion de un punto p2
en el sistema Σ2(x2y2z2) hacia un punto p0 en el sistema Σ0(x0y0z0) adquiere la
siguiente estructura:
p0 = d20 + R2
0p2 (3.28)
donde
R20 = R1
0R21
d20 = d1
0 + R10d
21
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.6 Transformaciones homogeneas 173
3.6 Transformaciones homogeneas
La notacion mas comun para representar la transformacion de traslacion y
rotacion en forma compacta se conoce como transformacion homogenea.
Por ejemplo, para representar el caso de traslacion y rotacion del sistema Σ1(x1y1z1)
con respecto al sistema Σ0(x0y0z0)
p0 = d10 + R1
0p1
la transformacion homogenea se realiza con la siguiente notacion:
H10 =
[R1
0 d10
0T 1
](3.29)
=
⎡⎢⎢⎢⎢⎣
Matriz de
rotacion
...Vector de
traslacion
· · · ... · · ·0T 1
⎤⎥⎥⎥⎥⎦
donde R10 ∈ SO(3) y d1
0 ∈ IR3. Para propositos de acoplamiento en dimensiones, el
vector 0T y el numero 1 aparecen en el ultimo renglon.
La representacion inversa que relaciona el punto p1 en funcion del punto p0 adquiere
la siguiente forma:
p1 = −R10Td1
0 + R10Tp0
entonces, la transformacion homogenea inversa esta determinada por:
H10−1
=
[R1
0T −R1
0Td1
0
0T 1
](3.30)
Las matrices de rotacion permiten modelar la orientacion de la herramienta de
trabajo colocada en el extremo final del robot, y junto con las transformaciones
homogeneas dentro de una sola matriz incluye la orientacion y posicion de la
herramienta de trabajo, formando la estructura del modelo cinematico directo.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
174 Capıtulo 3: Preliminares matematicos
3.7 Librerıas para matrices homogeneas
En esta seccion se presentan las librerıas de transformacion homogenea de
rotacion y traslacion con respecto a los ejes principales x, y, z.
Matrices de transformacion homogenea de rotacion
Las matrices de transformacion homogenea de rotacion con respecto a los ejes x, y, z,
respectivamente, tienen la siguiente estructura:
HRx(θ) =
⎡⎣
24
1 0 0
0 cos(θ) − sen(θ)
0 sen(θ) cos(θ)
35
24
0
0
0
35
[ 0 0 0 ] 1
⎤⎦ HRy(θ) =
⎡⎣
24
cos(θ) 0 sen(θ)
0 1 0
− sen(θ) 0 cos(θ)
35
24
0
0
0
35
[ 0 0 0 ] 1
⎤⎦
HRz(θ) =
⎡⎣
24
cos(θ) − sen(θ) 0
sen(θ) cos(θ) 0
0 0 1
35
24
0
0
0
35
[ 0 0 0 ] 1
⎤⎦
Matrices de transformacion homogenea de traslacion
Las matrices de transformacion homogenea de traslacion con respecto a los ejes
x, y, z respectivamente tienen la siguiente estructura:
HTx(d) =
[ 24
1 0 0
0 1 0
0 0 1
35
24
d
0
0
35
[ 0 0 0 ] 1
]HTy(d) =
[ 24
1 0 0
0 1 0
0 0 1
35
24
0
d
0
35
[ 0 0 0 ] 1
]HTz(d) =
[ 24
1 0 0
0 1 0
0 0 1
35
24
0
0
d
35
[ 0 0 0 ] 1
]
Matriz de transformacion homogenea Denavit-Hartenberg
La matriz de transformacion homogenea Denavit Hartenberg tiene la forma
siguiente:
H =
⎡⎢⎢⎣ R
⎡⎢⎣
x
y
z
⎤⎥⎦
0T 1
⎤⎥⎥⎦
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.7 Librerıas para matrices homogeneas 175
3.7.1.3.7.1 Matriz de transformacion homogenea HRx(θ)
La sintaxis de la funcion de transformacion homogenea de rotacion HRx(θ) alrededor
del eje x esta dada por:
RHx=HRx(θ)
donde θ es el angulo de rotacion alrededor del eje x y es la variable de la funcion
HRx(θ). Retorna la matriz de transformacion homogenea RHx.
Codigo Fuente 3.6 Funcion HRx(θ)
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %funcion HRx.m
Funcion HRx(θ)
function RHx=HRx(theta)1
dato=whos(’theta’);2
if strcmp(dato.class, ’sym’)%variables simbolicas3
RHx=[1, 0, 0, 0;4
0, cos(theta), -sin(theta), 0;5
0, sin(theta), cos(theta), 0;6
0, 0, 0, 1];7
else digits(3);%calculos numericos8
RHx=round([1, 0, 0, 0;9
0, vpa(cos(theta),3), vpa(-sin(theta),3), 0;10
0, vpa(sin(theta),3), vpa(cos(theta),3), 0;11
0, 0, 0, 1]);12
end13
end14
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
176 Capıtulo 3: Preliminares matematicos
3.7.2.3.7.2 Matriz de transformacion homogenea HRy(θ)
La sintaxis de la funcion de transformacion homogenea de rotacion HRy(q) alrededor
del eje y esta dada por:
RHy=HRy(θ)
donde θ es el angulo de rotacion alrededor del eje y y es la variable de la funcion
HRy(θ). Retorna la matriz de transformacion homogenea RHy.
Codigo Fuente 3.7 Funcion HRy(θ)
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %funcion HRy.m
Funcion HRy(θ)
function RHy=HRy(theta)1
dato=whos(’theta’); if strcmp(dato.class, ’sym’)%variables2
simbolicas
RHy=[cos(theta), 0, sin(theta), 0;3
0, 1, 0, 0;4
-sin(theta), 0, cos(theta), 0;5
0, 0, 0, 1];6
else digits(3);%calculos numericos7
RHy=round([ vpa(cos(theta),3), 0, vpa(sin(theta),3), 0;8
0, 1, 0, 0;9
vpa(-sin(theta),3), 0, vpa(cos(theta),3), 0;10
0, 0, 0, 1]);11
end12
end13
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.7 Librerıas para matrices homogeneas 177
3.7.3.3.7.3 Matriz de transformacion homogenea HRz(θ)
La sintaxis de la funcion de transformacion homogenea de rotacion HRz(θ) alrededor
del eje z esta dada por:
RHz=HRz(θ)
donde θ es el angulo de rotacion alrededor del eje z y es la variable de la funcion
HRz(θ). Retorna la matriz de transformacion homogenea RHz.
Codigo Fuente 3.8 Funcion HRz(θ)
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %funcion HRz.m
Funcion HRz(θ)
function RHz=HRz(theta)1
dato=whos(’theta’);2
if strcmp(dato.class, ’sym’)%variables simbolicas3
RHz=[cos(theta), -sin(theta), 0, 0;4
sin(theta), cos(theta), 0, 0;5
0, 0, 1, 0;6
0, 0, 0, 1];7
else digits(3);%calculos numericos8
RHz=round([ vpa(cos(theta),3), vpa(-sin(theta),3), 0, 0;9
vpa(sin(theta),3), vpa(cos(theta),3), 0, 0;10
0, 0, 1, 0;11
0, 0, 0, 1]);12
end13
end14
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
178 Capıtulo 3: Preliminares matematicos
3.7.4.3.7.4 Matriz de transformacion homogenea HTx(d)
La sintaxis de la funcion de transformacion homogenea de traslacion HTx(d) a lo
largo del eje x esta dada por:
THx=HTx(d)
donde d es el desplazamiento de traslacion sobre el eje x. Retorna la matriz de
transformacion homogenea THx.
Codigo Fuente 3.9 Funcion HTx(d)
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %funcion HTx.m
Funcion HTx(d)
function Tx=HTx(d)1
Tx=[ 1 0 0 d; 0 1 0 0; 0 0 1 0; 0 0 0 1];2
end3
3.7.5.3.7.5 Matriz de transformacion homogenea HTy(d)
La sintaxis de la funcion de transformacion homogenea de traslacion HTy(d) a lo
largo del eje y esta dada por:
THy=HTy(d)
donde d es el desplazamiento lineal de traslacion sobre el eje y. Retorna la matriz
de transformacion homogenea THy.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.7 Librerıas para matrices homogeneas 179
Codigo Fuente 3.10 Funcion HTy(d)
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %funcion HTy.m
Funcion HTy(d)
function Tz=HTy(d)1
Tz=[ 1 0 0 0; 0 1 0 d; 0 0 1 0; 0 0 0 1];2
end3
3.7.6.3.7.6 Matriz de transformacion homogenea HTz(d)
La sintaxis de la funcion de transformacion homogenea de traslacion HTz(d) a lo
largo del eje z esta dada por:
THz=HTz(d)
donde d es el desplazamiento lineal de traslacion sobre el eje z. Retorna la matriz
de transformacion homogenea THz.
Codigo Fuente 3.11 Funcion HTz(d)
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %funcion HTz.m
Funcion HTz(d)
function Tz=HTz(d)1
Tz=[ 1 0 0 0; 0 1 0 0; 0 0 1 d; 0 0 0 1];2
end3
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
180 Capıtulo 3: Preliminares matematicos
3.7.7.3.7.7 Matriz de transformacion DH
La funcion H DH(H) extrae de la matriz de transformacion homogenea H la matriz
de rotacion y el vector de coordenadas cartesianas.
La sintaxis de la funcion de transformacion homogenea DH esta dada por:
[R vect d vect cero c]=H DH(H)
donde H es la variable de entrada y representa la matriz de transformacion
homogenea. Retorna la matriz de rotacion R , el vector de coordenadas cartesianas
vect d, el vector vect cero=[0, 0, 0]T y la constante unitaria c=1.
Codigo Fuente 3.12 Funcion H DH
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 3 Cinematica %funcion H DH.m
Funcion H DH
function [R vect d vect cero c]=H DH(H)1
for i=1:32
for j=1:33
R(i,j)=H(i,j);4
end5
end6
%estructura de la matriz de transformacion homogenea7
vect d=[H(1,4); H(2,4); H(3,4)];8
vect cero=[0;0;0]’;9
c=1;10
end11
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
3.8 Resumen 181
3.8 Resumen
Cinematica de robots manipuladores y sistemas mecatronicos encuentra su
fundamento en una clase particular de matrices denominadas ortogonales.
Estos preliminares matematicos constituyen la base para desarrollar propiedades,
reglas y operaciones de traslacion y rotacion entre dos sistemas de referencia
Σ0(x0, y0, z0) y Σ1(x1, y1, z1) bajo una estructura matematica denominada matriz
de transformacion homogenea.
La matriz ortogonal R10 representa la orientacion del sistema de referencia
Σ0(x0, y0, z0) con respecto al sistema Σ1(x1, y1, z1). De particular interes son las
matrices de rotacion Rx( θ ), Ry( θ ), Rz( θ ) ya que representan la rotacion alrededor
de los ejes principales x, y, z, respectivamente. El orden como se realice la rotacion
determina la regla o procedimiento de orientar un sistema de referencia con respecto
a otro.
En este capıtulo se ha desarrollado un conjunto de librerıas para realizar operaciones
de traslacion y rotacion. La librerıa R=Rz(θ) realiza la rotacion del sistema de
referencia Σ1(x1, y1, z1) con respecto al sistema de referencia Σ0(x0, y0, z0). Esta
funcion puede trabajar con variables simbolicas y tambien para realizar aplicaciones
numericas. De manera analoga se puede implementar las funciones R=Rx(θ) y
R=Ry(θ).
Cuando hay combinacion de calculos numericos con variables simbolicas, como es
el caso de las matrices de transformacion homogenea (rotacion y traslacion) la
funciones vpa, round y double pueden ayudar a presentar el resultado numerico
de manera conveniente.
Por otro lado, para simplificar las expresiones simbolicas se recomienda usar la
funcion simplify, por lo que el lector puede modificar el codigo fuente de las
librerıas desarrolladas para presentar resultados simbolicos o numericos a su entera
conveniencia.
La tabla 3.1 contiene el resumen de las librerıas para realizar las matrices de
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
182 Capıtulo 3: Preliminares matematicos
transformacion homogenea de traslacion y rotacion.
Tabla 3.1 Matrices de transformacion homogenea
Funcion Sintaxis
Matriz de transformacion
homogenea de rotacion al-
rededor del eje x
RHx=HRx(θ) θ ∈ IR.
Matriz de transformacion
homogenea de rotacion al-
rededor del eje y
RHy=HRy(θ) θ ∈ IR.
Matriz de transformacion
homogenea de rotacion al-
rededor del eje z
RHz=HRz(θ) θ ∈ IR.
Matriz de transformacion
homogenea de traslacion
sobre el eje x
THx=HTx(d) d∈ IR.
Matriz de transformacion
homogenea de traslacion
sobre el eje y
THy=HTy(d) d∈ IR.
Matriz de transformacion
homogenea de traslacion
sobre el eje z
THz=HTz(d) d∈ IR.
Matriz de transformacion
homogenea Denavit-
Hartenberg
[R vect d vect cero c]=H DH(H)
R∈ SO(3) es la matriz de rotacion
vect d es el vector con coordenadas cartsianas:
[x y z ]T
vect cero=[ 0, 0, 0]T
c=1.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Capıtulo
4 Cinematica directa
li αi di
... βi θi
H ii−1 = HRzi
(θi)HTzi(di
... βi)HTxi(li)HRxi
(αi)
4.1 Introduccion
4.2 Cinematica inversa
4.3 Cinematica diferencial
4.4 Clasificacion de robots industriales
4.5 Convencion Denavit-Hartenberg
4.6 Resumen
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Objetivos
Presentar el modelo de cinematica directa de las principales configura-
ciones de robots industriales considerando los parametros geometricos y
desarrollar librerıas en lenguaje MATLAB (toolbox) que permitan realizar
aplicaciones en el area de cinematica directa de robots manipuladores.
Objetivos particulares:
Matrices de rotacion.
Transformaciones homogeneas.
Metodo de Denavit-Hartenberg.
Cinematica directa cartesiana.
Librerıas de analisis y diseno de cinematica de robots industriales.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
4.1 Introduccion 185
4.1 Introduccion
Cinematica es la parte de la fısica que estudia el movimiento de sistemas
mecanicos, sin tomar en cuenta las fuerzas que originan dicho movimiento,
por lo tanto no involucra ecuaciones diferenciales como en el caso de la dinamica.
Al estudio de la cinematica de sistemas mecatronicos y robots manipuladores se
le denomina cinematica directa, se refiere al estudio analıtico del movimiento
del robot con respecto a un sistema de referencia cartesiano fijo Σ0 (x0, y0, x0 )
relacionando la dependencia que existe entre las coordenadas articulares o
generalizadas q ∈ IRn, y los parametros geometricos (longitudes del i-esimo eslabon
li), con coordenadas cartesianas [ x, y, z ]T ∈ IR3 y la orientacion [ θ, φ, ψ ]T ∈ IR3 del
extremo final del robot a traves de una funcion vectorial fR continua y diferenciable
en la variable de estado q, generalmente no lineal.
Cinematica directa es una funcion vectorial fR(li, q) que relaciona las
coordenadas articulares q ∈ IRn y propiedades geometricas del sistema mecanico
li con las coordenadas cartesianas [x, y, z ]T ∈ IR3 del robot y la orientacion
[ θ, φ, ψ ]T ∈ IR3 de la herramienta colocada en el extremo final. Es decir fR :
IRn → IRm tal que: ⎡⎢⎢⎢⎢⎢⎢⎢⎢⎣
x
y
z
θ
φ
ψ
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎦
= fR(li, q) (4.1)
donde n indica el numero de grados de libertad y la dimension del vector
de coordenadas articulares q, m es la dimension conjunta de las coordenadas
cartesianas y la orientacion de la herramienta de trabajo.
De manera general, el posicionamiento del extremo final del robot en el espacio
tridimensional (pose) requiere de 6 coordenadas (m = 6): 3 coordenadas para la
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
186 Capıtulo 4: Cinematica directa
posicion cartesiana y 3 coordenadas para la orientacion de la herramienta de trabajo.
Dependiendo de la aplicacion del robot se pueden requerir menos coordenadas
de posicion y orientacion. Por ejemplo, un robot para pintura de armaduras
automotrices requiere las 6 coordenadas, en contraste con un robot que corta figuras
de plastico sobre un plano requiere 2 coordenadas cartesianas de posicion y ninguna
de orientacion. Cuando n > m se denomina robots redundantes. El empleo de la
cinematica directa resulta de utilidad en la planificacion de trayectorias y en el
control cartesiano. El papel fundamental de la cinematica directa, es computar la
posicion y orientacion del extremo final del robot manipulador como una funcion de
las variables articulares.
Un robot manipulador se considera como una serie de eslabones interconectados
a traves de articulaciones (servomotores) rotacionales o prismaticas en forma de
cadena cinematica abierta, es decir el extremo final donde se coloca la herramienta
no se encuentra conectada mecanicamente a la primera articulacion (base) del
robot. Desde el punto de vista topologico, la cadena cinematica se considera
abierta cuando los dos extremos de la cadena no se tocan. De otra manera la
cadena cinematica formarıa un lazo si sus dos extremos estan mecanicamente
unidos.
La estructura mecanica del robot manipulador se caracteriza por tener un numero
de grados de libertad, los cuales determinan en forma unica su configuracion.
Tıpicamente, cada grado de libertad esta asociado a una articulacion (variable
articular q).
4.2 Cinematica inversa
Dada la posicion del extremo final del robot en coordenadas cartesianas
[x, y, z]T y la orientacion [ψ, θ, φ]T , con respecto a un sistema de referencia fijo
Σ0(x0, y0, z0), ası como los parametros geometricos li, entonces surge la pregunta
natural: ¿pueden obtenerse las coordenadas articulares del robot q para que el
extremo final del robot se posicione en las coordenadas cartesianas solicitadas, con
la orientacion requerida?
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
4.3 Cinematica diferencial 187
El problema planteado se conoce como cinematica inversa y representa un area
de la robotica de mayor complejidad que la cinematica directa. Para un robot
manipulador siempre es posible encontrar el modelo de cinematica directa, mientras
que en la cinematica inversa pueden haber varias soluciones e inclusive no existir
solucion analıtica; si este es el caso, entonces como posibles formas de solucion pueden
proponerse redes neuronales, metodos numericos, iterativos, geometricos, etcetera.
La cinematica inversa es un problema no lineal que relaciona las coordenadas
articulares en funcion de las coordenadas cartesianas y la orientacion de la
herramienta del extremo final del robot manipulador
q = f−1R (x, y, z, li, θ, φ, ψ) (4.2)
donde f−1R (x, y, z, li, θ, φ, ψ) es funcion inversa de la ecuacion (4.1).
4.3 Cinematica diferencial
La cinematica diferencial directa es la derivada con respecto al tiempo de la
cinematica directa
d
dt[x y z θ φ ψ ]T =
[v
w
]=
d
dtfR(q) (4.3)
=∂fR(q)
∂qq = J(q)q.
Como se ve, esta relaciona la velocidad articular q ∈ IRn con la velocidad lineal
v = ddt
[x, y, z ]T = [ x, y, z ]T ∈ IR3 y la velocidad angular w = ddt
[ θ, φ, ψ ]T =
[ θ, φ, ψ ]T ∈ IR3, ademas el mapeo es descrito en terminos de una matriz J(q) =∂f
R(q)
∂q ∈ IR6×n denominada jacobiano del robot o jacobiano analıtico:
J(q) =
[Jv(q)
Jw(q)
]. (4.4)
Jv(q) ∈ IR3×n relaciona la velocidad articular q ∈ IRn con la velocidad lineal v ∈ IR3,
mientras que Jw(q) ∈ IR3×n relaciona la velocidad angular w ∈ IR3 con la velocidad
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
188 Capıtulo 4: Cinematica directa
articular q ∈ IRn, es decir:
[v
w
]= J(q)q =
[Jv(q)q
Jw(q)q
]. (4.5)
El jacobiano del robot representa una importante herramienta en robotica que sirve
para caracterizar a un robot manipulador, encontrar configuraciones singulares,
analizar redundancia, determinar la cinematica diferencial inversa, ası como describir
la relacion entre la fuerza aplicada y los pares o torques resultantes del extremo final.
Es indispensable para el analisis y diseno de algoritmos de control cartesiano.
Hay varias formas de seleccionar la orientacion de la herramienta del robot
manipulador: si de manera particular dicha orientacion es representada por los
angulos de Euler (un sistema de referencia asociado al extremo final del robot o
a la herramienta de trabajo), entonces la velocidad angular w = [ θ, φ, ψ ]T ∈ IR3
relaciona la matriz jacobiano analıtico, como se encuentra descrita en la ecuacion
(4.3). Otra posible forma de modelar la orientacion de la herramienta del robot es
expresarla directamente en un sistema de referencia especıfico, por ejemplo al origen
localizado en la base del robot, entonces a la matriz J(q) se le denomina jacobiano
geometrico que depende de la configuracion del robot manipulador. El jacobiano
analıtico difiere del jacobiano geometrico: basicamente la diferencia se encuentra en
como modelar la orientacion de la herramienta de trabajo del robot.
La cinematica diferencial inversa representa la relacion entre la velocidad articular
q con la velocidad lineal de movimiento v y la velocidad angular w, expresada en
terminos de la matriz inversa del jacobiano del robot:
q = J−1(q)
[v
w
](4.6)
donde J−1(q) ∈ IR6×n es la matriz inversa del jacobiano del robot, la cual existe si
es una matriz cuadrada y su determinante es diferente a cero.
Si el determinante del jacobiano del robot J(q) es cero, entonces se dice que no es
de rango completo y se presentan problemas de singularidades.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
4.4 Clasificacion de robots industriales 189
Singularidad significa que no es posible indicarle un movimiento arbitrario
al extremo final del robot, es decir para una velocidad lineal v y velocidad
angular w finitas puede corresponder una velocidad articular q infinita.
Puede existir un conjunto infinito de soluciones para la cinematica directa.
La cinematica inversa diferencial tiene un numero infinito de soluciones.
En control cartesiano la fuerza aplicada al robot puede provocar un par
infinito a las articulaciones del robot.
Dependiendo del tipo de robot, las singularidades pueden generar un numero
infinito de puntos de equilibrio en la ecuacion en lazo cerrado, formada por
la dinamica del robot y la estructura cartesiana de control.
4.4 Clasificacion de robots industriales
Un robot industrial esta compuesto por una serie consecutiva de eslabones y
articulaciones para formar una cadena en cinematica abierta, la cual es la
estructura mecanica basica de un robot industrial. La cadena en cinematica abierta
esta formada de la siguiente manera: la primera articulacion sirve para formar la
base; a continuacion siguen conexiones sucesivas entre articulaciones y eslabones, en
el extremo final del ultimo eslabon no hay articulacion, generalmente se destina a
colocar la herramienta de trabajo para llevar a cabo una aplicacion especıfica. El
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
190 Capıtulo 4: Cinematica directa
extremo final del robot no se encuentra conectado fısicamente a la base como se
muestra en la figura 4.1:
Figura 4.1 Cadena en cinematica abierta.
Las articulaciones se construyen por medio de un servomotor y representan la
interconexion entre dos eslabones consecutivos. Una articulacion puede realizar
solo un tipo de movimiento, ya sea lineal, tambien conocida como prismatica, y
rotacional. La figura 4.2 presenta el tipo de articulaciones:
Figura 4.2 Tipo de articulaciones: rotacional y lineal o prismatica.
La figura 4.3 muestra la analogıa entre el brazo humano y un brazo robot o robot
industrial. La articulacion de la base corresponde a la cintura. La articulacion
del hombro (shoulder) debe ser la de mayor capacidad con respecto a las otras
articulaciones, ya que es la que mueve y soporta el peso de la articulacion del codo
(elbow) y de la herramienta de trabajo, ası como la carga de objetos que realice
durante una determinada aplicacion.
Dependiendo del tipo de articulaciones (lineales o rotacionales) que se encuentran
incluidas en la estructura mecanica en cinematica abierta de la base, hombro y
codo del robot (sin incluir las articulaciones de la orientacion de la herramienta de
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
4.4 Clasificacion de robots industriales 191
Figura 4.3 Base, hombro y codo de un robot industrial.
trabajo), se desprende la clasificacion general de robots manipuladores industriales,
tambien conocidos como brazos robots: antropomorfico, esferico, cilındrico, SCARA
y cartesiano.
Tabla 4.1 Clasificacion de robots industriales
Robot Caracterısticas
Antropomorfico (RRR) 3 articulaciones rotacionales
SCARA (RRP) 2 articulaciones rotacionales y 1 prismatica
Esferico (RRP) 2 articulaciones rotacionales y 1 prismatica
Cilındrico (RPP) 1 articulacion rotacional y 2 prismaticas
Cartesiano (PPP) 3 articulaciones prismaticas
La nomenclatura empleada en robots industriales para representar el tipo de
movimiento que realizan sus articulaciones esta dada de la siguiente manera:
R significa articulacion tipo rotacional, mientras que la letra P representa una
articulacion prismatica. El orden en que se presentan corresponde a las articulaciones
de la base, hombro y codo, respectivamente. Por ejemplo, en la tabla 4.1 la notacion
robot cilındrico (RPP) significa que la base es una articulacion rotacional, mientras
que el hombro y codo corresponden a articulaciones prismaticas.
En la figura 4.4 se muestra la clasificacion de las 5 configuraciones de robots
industriales.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
192 Capıtulo 4: Cinematica directa
Figura 4.4 Clasificacion de los robots industriales.
4.5 Convencion Denavit-Hartenberg
El metodo de Denavit-Hartenberg es una herramienta ampliamente conocida en
el area de ingenierıa, ya que ofrece un procedimiento sencillo para obtener el
modelo cinematico directo cuya estructura queda en terminos de la transformaciones
homogeneas.
Jaques Denavit y Richard S. Hartenberg en 1955 presentaron un procedimiento
para obtener una representacion mınima de la orientacion y traslacion de robots
manipuladores. Consiste en determinar una tabla de parametros relacionados con
los eslabones del robot. La convencion Denavit-Hartenberg toma como referencia el
diagrama de un robot manipulador en cadena cinematica abierta como se muestra
en la figura 4.5.
Las variables articulares en la representacion Denavit-Hartenberg se denotan con θi
para el tipo rotacional, prismatica o lineal por di; este parametro di tambien hace
el papel de representar el ancho del servomotor de la articulacion rotacional mas el
espesor de la placa metalica del eslabon, en este caso se denota por el sımbolo βi; la
longitud del eslabon se representa con li y el angulo de separacion entre los ejes zi
y zi−1 se denota con αi.
El angulo θi es el angulo entre los ejes xi−1 y xi medido alrededor del eje zi−1; di es
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
4.5 Convencion Denavit-Hartenberg 193
Figura 4.5 Convencion Denavit-Hartenberg para un robot manipulador.
la distancia del origen del sistema de referencia i− 1 a la interseccion del eje xi con
el eje zi−1. Su medicion se realiza a lo largo del eje zi−1, como se indica en la figura
4.6. Adicionalmente a las variables articulares θi y di, hay 2 parametros constantes
que describen caracterısticas especıficas del eslabon i-esimo. Esos parametros son:
el parametro li se define como la distancia a lo largo del eje xi desde el origen del
sistema de referencia coordenado i−1 hasta la interseccion del eje zi−1 con el eje xi.
El otro parametro es el angulo entre los ejes zi y zi−1 se denota por αi, su medicion
es respecto a un plano normal a xi. Una medicion de angulo positivo para αi se toma
en direccion del eje zi−1 hacia zi. Por ejemplo, para un robot con 6 articulaciones
rotacionales se requieren de 24 elementos para describir completamente su modelo
cinematico (li, αi, βi, θi).
Seleccion de sistemas de referencia
En la metodologıa Denavit-Hartenberg, primero se describira la convencion para
asignar los sistemas de referencia cartesianos asociados a los eslabones del robot.
En este punto es necesario aclarar que en la literatura de robotica, la convencion
Denavit-Hartenberg no es unica, depende de la seleccion de los sistemas de referencia
cartesianos en las articulaciones y eslabones, ası como en sus eslabones adyacentes.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
194 Capıtulo 4: Cinematica directa
Figura 4.6 Convencion para medir θi y αi.
La cinematica directa del robot proporciona las coordenadas cartesianas del extremo
final del robot relativo a un sistema de referencia cartesiano fijo Σ0(x0, y0, z0); en la
figura 4.5 se muestra la asignacion de sistemas de referencia para las articulaciones
i− 1-esima, i-esima e i + 1 de un robot manipulador.
En general se tiene el siguiente procedimiento:
El eje zi se asigna rıgidamente a la articulacion i + 1. Es decir, z0 es el eje de
la articulacion 1, z1 es el eje de la articulacion 2, y ası sucesivamente.
Localizar el origen oi del sistema de referencia Σi (xi, yi, zi ) en la interseccion
del eje zi con la normal comun a los ejes zi−1 y zi.
Seleccionar el eje xi−1 sobre la normal que une los ejes zi−1 y zi en direccion
de la articulacion i− 1 hacia la articulacion i.
Definir el angulo de torsion αi, este es el angulo entre los ejes zi y zi−1 y se
mide con valor positivo en el sentido de las manecillas del reloj sobre el eje xi.
Seleccionar el eje yi por la regla de la mano derecha.
La convencion Denavit-Hartenberg proporciona una representacion no unica para
los siguientes casos:
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
4.5 Convencion Denavit-Hartenberg 195
Para el sistema de referencia Σ0 (x0, y0, z0 ) solo la direccion del eje z0 es
especificada, entonces su origen o0 y el eje x0 pueden ser seleccionados de
manera arbitraria.
Para el sistema de referencia Σn (xn, yn, zn ) no existe la articulacion n + 1,
entonces el eje zn no esta completamente definido, mientras que el eje xn es
normal al eje zn−1. Tıpicamente la n-esima articulacion es rotatoria, por lo
tanto zn se alinea en la direccion de zn−1.
Cuando dos ejes consecutivos zi y zi−1 son paralelos entre sı, la normal comun
entre ellos no es unica.
Cuando dos ejes consecutivos zi y zi−1 se interceptan, la direccion del eje xi
es arbitraria.
Cuando la articulacion i-esima es lineal o prismatica, entonces la direccion de
zi es arbitraria.
De acuerdo con esta convencion previamente descrita, a continuacion se resumen los
parametros del i-esimo eslabon:
1. li es la longitud del i-esimo eslabon, es la distancia del eje zi−1 hacia el eje zi
medida sobre el eje xi−1.
2. αi es el angulo de torsion, el cual representa el angulo entre los ejes zi−1 a zi
medido en el sentido de las manecillas del reloj sobre el eje xi.
3. di se emplea en articulaciones lineales o prismaticas y representa el desplazamien-
to lineal. Cuando la articulacion es rotacional, entonces representa el offset o
espesor del servomotor (la distancia de xi−1 a xi medido sobre el eje zi−1), se
denota por βi.
4. θi es el desplazamiento rotacional de xi−1 a xi medido alrededor del eje zi−1. El
signo positivo de θi es el sentido contrario a las manecillas del reloj.
Observese que li y βi siempre seran positivos puesto que corresponden a longitudes,
mientras que αi, di, θi representan cantidades con signo.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
196 Capıtulo 4: Cinematica directa
4.5.1.4.5.1 Algoritmo Denavit-Hartenberg
A continuacion se describe el procedimiento para encontrar la cinematica directa a
traves de la convencion Denavit-Hartenberg.
1. Localizar la direccion de los ejes z0, z1, · · · , zn−1.
2. Establecer el sistema de referencia cartesiano fijo Σ0 (x0, y0, z0 ) cuyo origen es
colocado sobre el sistema de referencia en la base del robot. Los ejes x0, y0 son
determinados de acuerdo con la regla de la mano derecha.
Una vez que el sistema de referencia Σ0 (x0, y0, z0 ) ha sido establecido, se inicia
un proceso iterativo en el cual se define el sistema de referencia Σi (xi, yi, zi )
usando el sistema de referencia Σi−1(xi−1,yi−1, zi−1), iniciando con el sistema
de referencia Σ1 (x1, y1, z1 ). En la figura 4.5 se muestra el procedimiento.
Llevar a cabo los pasos 3 al 5 para la articulaciones i = 1, · · · , n− 1.
3. Localizar el origen oi en la interseccion de la normal comun que une al eje zi con
el eje zi−1.
Si el eje zi intercepta al eje zi−1 colocar oi en la intercepcion.
Para el caso en que los ejes zi y zi−1 son paralelos:
Si la articulacion i-esima es rotacional, colocar el origen oi sobre la
articulacion i-esima, tal que di = 0.
Si la articulacion i-esima es prismatica, colocar el origen oi en un punto
lımite fısico de la articulacion i-esima, por ejemplo en un punto extremo.
4. Seleccionar el eje xi a lo largo de la normal comun que une a los ejes zi−1 y zi,
en direccion de la articulacion i− 1 hacia la articulacion i.
5. Determinar yi por la regla de la mano derecha.
6. Establecer el sistema de referencia del extremo final Σn (xn, yn, zn ).
Si la articulacion n-esima es rotatoria, entonces alinear el eje zn con el
eje zn−1
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
4.5 Convencion Denavit-Hartenberg 197
Si la articulacion n-esima es prismatica, entonces seleccionar el eje zn de
forma arbitraria. El eje xn debe cumplir el paso 4.
7. Establecer la tabla 4.2 de parametros de eslabones.
8. Obtener las matrices de transformaciones homogeneas (4.7):
H ii−1 para i = 1, 2, · · · , n− 1.
Tabla 4.2 Parametros Denavit-Hartenberg
Caracterısticas de eslabones
li Longitud del eslabon i-esimo.
di
Articulaciones lineales o prismaticas. Tambıen
representa el espesor del servomotor (βi).
αi Angulo entre los ejes zi−1 y zi medido con respecto al eje xi.
θi
articulaciones rotacionales; representa el angulo
entre los ejes xi−1 y xi medido alrededor del eje
zi−1.
En la representacion Denavit-Hartenberg cada transformacion homogenea H ii−1 se
representa por el producto de cuatro transformaciones basicas:
H ii−1 = HRzi−1
(θi)HTzi−1(di (βi))HTxi−1
(li)HRxi−1(αi) (4.7)
=
⎡⎢⎢⎢⎣
cos(θi) − sen(θi) 0 0
sen(θi) cos(θi) 0 0
0 0 1 1
0 0 0 1
⎤⎥⎥⎥⎦⎡⎢⎢⎢⎣
1 0 0 0
0 1 0 0
0 0 1 di (βi)
0 0 0 1
⎤⎥⎥⎥⎦
⎡⎢⎢⎢⎣
1 0 0 li
0 1 0 0
0 0 1 0
0 0 0 1
⎤⎥⎥⎥⎦⎡⎢⎢⎢⎣
1 0 0 0
0 cos(αi) − sen(αi) 0
0 sen(αi) cos(αi) 0
0 0 0 1
⎤⎥⎥⎥⎦
=
⎡⎢⎢⎢⎣
cos(θi) − sen(θi) cos(αi) sen(θi) sen(αi) li cos(θi)
sen(θi) cos(θi) cos(αi) − cos(θi) sen(αi) li sen(θi)
0 sen(αi) cos(αi) di (βi)
0 0 0 1
⎤⎥⎥⎥⎦
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
198 Capıtulo 4: Cinematica directa
La transformacion homogenea total se obtiene como Hn0 = H1
0H21 · · ·Hn−1
n−2Hnn−1.
La cinematica directa es la forma general de transformaciones homogeneas que
concatena los sistemas de referencia cartesianos asociados a los eslabones del robot,
todos relativos al sistema de referencia fijo Σ0.
4.6 Resumen
Cinematica directa relaciona las coordenadas articulares y propiedades
geometricas del sistema mecanico con las coordenadas cartesianas del robot
y la orientacion de la herramienta colocada en el extremo final. En este capıtulo
se ha presentado los conceptos de cinematica inversa, cinematica diferencial y la
importancia que presenta el jacobiano del robot en control cartesiano y en el tema
de singularidades. Para las finalidades de la presente obra, cuando se relaciona
las coordenadas articulares con las coordenadas cartesianas sin tomar en cuenta
la orientacion de la herramienta de trabajo, se denomina cinematica directa
cartesiana, la cual sera la base de analisis de las principales configuraciones de
robots industriales.
El procedimiento Denavit-Hartenberg permite obtener el modelo de cinematica
directa de robots manipuladores con eslabones en serie a traves de la siguiente tabla
de parametros 3.1:
Tabla 4.3 Parametros DH
Eslaboni li αi di θi
La formulacion Denavit-Hartenberg queda expresada en terminos de matrices
homogeneas con el estricto orden de transformaciones de traslacion y rotacion:
H ii−1 = HRzi
(θi+1)HTzi(di+1)HTxi
(li+1)HRxi(αi+1)
=
⎡⎢⎢⎢⎣
cos(θi) − sen(θi) cos(αi) sen(θi) sen(αi) li cos(θi)
sen(θi) cos(θi) cos(αi) − cos(θi) sen(αi) li sen(θi)
0 sen(αi) cos(αi) di
0 0 0 1
⎤⎥⎥⎥⎦
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Capıtulo
5 Cinematica directacartesiana
5.1 Introduccion
5.2 Brazo robot antropomorfico
5.3 Configuracion SCARA
5.4 Robot esferico
5.5 Manipulador cilındrico
5.6 Configuracion cartesiana
5.7 Resumen
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Objetivos
Presentar el analisis de cinematica directa cartesiana, cinematica inversa y
matriz jacobiano de las principales configuraciones de robots industriales
considerando los parametros geometricos y desarrollar librerıas en
lenguaje MATLAB (toolbox) que permitan realizar aplicaciones en el area
de cinematica directa de robots manipuladores.
Objetivos particulares:
Modelo de cinematica directa.
Modelo de cinematica inversa.
Jacobiano.
Librerıas de analisis y diseno de cinematica de robots industriales.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.1 Introduccion 201
5.1 Introduccion
Esta seccion analiza la cinematica directa cartesiana de las configuraciones mas
importantes en robotica industrial tales como el brazo robot (antropomorfico),
configuracion SCARA, esferico, cilındrico y cartesiano. El analisis cinematico que se
presenta es tomando en cuenta la relacion que existe entre las coordenadas articulares
con las coordenadas cartesianas del extremo final del robot (cinematica directa
cartesiana), no se incluye la orientacion de la herramienta de trabajo ubicada en
el extremo final del robot.
Para el analisis cinematico cartesiano se utiliza la metodologıa Denavit-Hartenberg,
y por lo tanto dicho modelo queda en funcion de transformaciones homogeneas.
El jacobiano analıtico del robot se deduce como la derivada parcial de la cinematica
directa cartesiana con respecto al vector de posicion articular; el jacobiano analıtico
del robot proporciona informacion sobre el problema de singularidades que puede
presentar el movimiento del robot en su espacio de trabajo. Esta informacion es muy
importante en aplicaciones donde interviene la inversa de la matriz jacobiana, ya que
una singularidad significa que el determinante es cero para un conjunto especıfico
de valores de las posiciones articulares.
Debido a la importancia que tiene la cinematica inversa en la programacion de tareas
en espacio cartesiano y la conversion al espacio articular, se presenta la solucion
geometrica en detalle para cada una de las configuraciones de robots industriales.
Un conjunto de librerıas en codigo fuente de MATLAB se desarrollan y documentan
de la matriz de transformacion homogenea, cinematica directa cartesiana, jacobiano
y su determinante, cinematica inversa, en variables simbolicas y aplicaciones
numericas de todas las configuraciones analizadas. El codigo fuente de los ejemplos,
aplicaciones y librerıas de cada robot manipulador se encuentra disponible en el sitio
WEB del libro:
http://virtual.alfaomega.com.mx
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
202 Capıtulo 5: Cinematica directa cartesiana
5.2 Brazo robot antropomorfico
Dentro de la clasificacion de robots industriales, el robot antropomorfico
o brazo robot es la configuracion que mas se utiliza debido a la destreza
que presenta el movimiento del extremo final como una consecuencia de sus
tres articulaciones rotacionales, lo cual lo hace ideal para un amplio espectro de
aplicaciones tales como: industriales, quirofanos robotizados, fisioterapia, asistencia
a personas con capacidades diferenciadas, maniobras submarinas y espaciales, etc.
La configuracion antropomorfica se divide en tres casos de estudio: pendulo robot,
robot planar de 2 grados de libertad y el brazo robot (movimiento tridimensional).
Pendulo robot
Como un caso particular del robot de 3 grados de libertad antropomorfico, se
encuentra el pendulo robot de 1 grado de libertad formado por un servomotor que
tiene acoplado mecanicamente una barra metalica de longitud l1 y esta sometido al
fenomeno de gravedad. El movimiento del pendulo se encuentra en el plano vertical
x0 − y0 como se indica en la figura 5.1.
Figura 5.1 Pendulo robot.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 203
Cinematica directa cartesiana del pendulo robot
El origen del sistema de referencia cartesiano Σ0(x0, y0, z0) se coloca sobre la
articulacion del pendulo (en el respaldo del estator del servomotor), el eje z0 se
alinea con el eje de giro del servomotor el cual es perpendicular al plano x0 − y0.
El servomotor del pendulo tiene un espesor de longitud β1 el cual ya incluye el
ancho de la barra metalica. El origen del sistema de referencia Σ1(x1, y1, z1) se
coloca en el extremo final de la barra y se mueve de manera conjunta al pendulo, el
origen Σ1 tiene las siguientes coordenadas con respecto al origen de Σ0(x0, y0, z0):
[l1 cos(q1), l1 sen(q1), β1]. Debido al espesor β1 el origen de Σ1 mantiene una distancia
β1 sobre el eje z0. Los ejes z1 y z0 son paralelos entre sı, por lo tanto el angulo α1
que existe entre ellos es α1 = 0.
El plano x1 − y1 tiene una rotacion de q1 grados con respecto al plano x0 − y0 del
sistema fijo Σ0(x0, y0, z0), y la matriz Rz0( q1 ) determina dicha rotacion:
R10 = Rz0
( q1 ) =
⎡⎢⎣
cos(q1) − sen(q1) 0
sen(q1) cos(q1) 0
0 0 1
⎤⎥⎦ .
Los parametros Denavit-Hartenberg correspondientes al pendulo-robot se encuen-
tran especificados en la tabla 5.1.
Tabla 5.1 DH del pendulo
Eslabon l α d θ
1 l1 0 β1 q1
La matriz de transformacion homogenea H10 se obtiene de la ecuacion (4.7), que para
el caso del pendulo-robot adquiere la siguiente forma:
H10 = HR(z0, q1)HT (z0, β1)HT (x0, l1)HR(x0, 0) (5.1)
=
⎡⎢⎢⎢⎣
cos(q1) − sen(q1) 0 l1 cos(q1)
sen(q1) cos(q1) 0 l1 sen(q1)
0 0 1 β1
0 0 0 1
⎤⎥⎥⎥⎦ . (5.2)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
204 Capıtulo 5: Cinematica directa cartesiana
Las coordenadas cartesianas del extremo final del pendulo robot (cinematica directa
cartesiana), es decir el origen del sistema Σ1(x1, y1, z1) con respecto al sistema fijo
Σ0(x0, y0, z0) se encuentra determinado por:
⎡⎢⎣
x0
y0
z0
⎤⎥⎦ =
⎡⎢⎣
l1 cos(q1)
l1 sen(q1)
β1
⎤⎥⎦ . (5.3)
Las coordenadas cartesianas del extremo final del pendulo dependen de la ubicacion
de la posicion de casa (home position), la cual es el punto de reposo u origen del
pendulo que corresponde a q1 = 0. Como se puede apreciar en la figura 5.1, la
posicion de casa esta colocada sobre el eje x0+. La matriz de rotacion Rz0
( q1 )
que determina la rotacion entre los sistemas de referencia fijo Σ0(x0, y0, z0) y
Σ1(x1, y1, z1) fue obtenida con respecto al primer cuadrante, es decir en el plano
x0+− y0+
.
Otra posibilidad para ubicar la posicion de casa del pendulo es colocar el origen
q1 = 0 sobre el lado negativo del eje y0 como se muestra en la figura 5.2.
Figura 5.2 Cambio de posicion de casa del pendulo sobre el eje y0−
.
En este caso, para poder obtener la matriz de rotacion resultante del pendulo en la
nueva ubicacion de la posicion de casa, la matriz Rz0( q1 ) debe ser precedida por
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 205
una rotacion de un angulo igual a -π2 alrededor del eje z0, es decir:
R10 = Rz0
(−π2 )
⎡⎢⎣
cos(q1) − sen(q1) 0
sen(q1) cos(q1) 0
0 0 1
⎤⎥⎦
=
⎡⎢⎣
0 1 0
−1 0 0
0 0 1
⎤⎥⎦⎡⎢⎣
cos(q1) − sen(q1) 0
sen(q1) cos(q1) 0
0 0 1
⎤⎥⎦
=
⎡⎢⎣
sen(q1) cos(q1) 0
− cos(q1) sen(q1) 0
0 0 1
⎤⎥⎦
La matriz de transformacion homogenea para el pendulo-robot (IV cuadrante)
esta determinada como:
H10 =
⎡⎢⎢⎣ Rz0
(−π2 )
⎡⎢⎣
cos(q1) − sen(q1) 0
sen(q1) cos(q1) 0
0 0 1
⎤⎥⎦
0T
Rz0(−π
2 )
⎡⎢⎣
l cos(q)
l sen(q)
β1
⎤⎥⎦
1
⎤⎥⎥⎦(5.4)
=
⎡⎢⎢⎢⎣
sen(q1) cos(q1) 0 l1 sen(q1)
− cos(q1) sen(q1) 0 −l1 cos(q1)
0 0 1 β1
0 0 0 1
⎤⎥⎥⎥⎦ . (5.5)
Las coordenadas del extremo final del pendulo respecto a la posicion de casa colocada
sobre el eje y0−
adquiere la siguiente forma:
⎡⎢⎣
x0
y0
z0
⎤⎥⎦ =
⎡⎢⎣
l1 sen(q1)
−l1 cos(q1)
β1
⎤⎥⎦ (5.6)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
206 Capıtulo 5: Cinematica directa cartesiana
Jacobiano del pendulo
Debido a que el pendulo robot es un sistema escalar, no tiene matriz jacobiana. Sin
embargo, se puede realizar la siguiente interpretacion partiendo de la cinematica
diferencial:
v =d
dt
[l1 cos(q1)
l1 sen(q1)
]=
∂fR(q1)
∂q1q1 =
[−l1 sen(q1)
l1 cos(q1)
]q1
=
[−l1 sen(q1) 0
0 l1 cos(q1)
]︸ ︷︷ ︸
J(q1)
[q1
q1
]︸ ︷︷ ︸
q
= J(q1)q (5.7)
el jacobiano J(q1) se puede pensar como esta expresado en la ecuacion (5.7). Notese
que existe una singularidad cuando la variable articular q1 = 0,±nπ, ya que su
determinante esta dado como: det[J(q1)] = −l21 sen(q1) cos(q1). Tambien existen
singularidades en q1 = ±nπ2 , esto ultimo puede verificarse en la cinematica inversa
(5.8), si q1 = ±nπ2 ⇒ x0 = 0, entonces se indefine la funcion arco-tangente (por
ejemplo division entre cero).
Cinematica inversa del pendulo
La cinematica inversa se obtiene despejando la variable q1 de la ecuacion (5.3),
obteniendo:
q1 = atan
(y0
x0
). (5.8)
Funcion transformacion homogenea del pendulo H10
La funcion transformacion homogenea del pendulo H10 se encuentra expresada como:
H10=H pendulo()
El codigo MATLAB de la funcion transformacion homogenea del pendulo se describe
en el cuadro 5.1. En la lınea 5 despliega la tabla 5.1 de parametros DH. La lınea 7
contiene el calculo de la matriz homogenea H10 = HRz0
(q1)HTz0(β1)HTx0
(l1)HRx0(0)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 207
y en la lınea 8 se emplea la funcion H DH(H10) para obtener la matriz de rotacion y
las coordenadas cartesianas.
Codigo Fuente 5.1 H pendulo.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
H pendulo.m
function H=H pendulo()1
syms l1 q1 beta1 real2
disp(’Parametros Denavit-Hartenberg del pendulo’)3
disp(’[ l alpha d q]’) dh=[l1, 0, beta1, q1];;4
disp(dh)5
%H10 = HRz0
(q1)HTz0(β1)HTx0
(l1)HRx0(0)6
H10=HRz(q1)*HTz(beta1)*HTx(l1)*HRx(0) ;7
[R10, cinemat pendulo, cero, c]=H DH(H10);8
H=[R10, cinemat pendulo;;9
cero, c];10
end11
Funcion cinematica directa cartesiana del pendulo
La funcion de cinematica directa cartesiana del pendulo tiene la siguiente sintaxis:
[x0, y0, z0]=cinematica pendulo(β1, l1, q1)
donde β1, l1, q1 representan el ancho del servomotor y espesor de la barra metalica,
longitud de la barra metalica y posicion articular del pendulo, respectivamente. Esta
funcion retorna las coordenadas cartesianas del extremo final del pendulo ubicadas
en el sistema Σ0(x0, y0, z0).
El codigo de la funcion de cinematica cartesiana del pendulo se encuentra en el
cuadro 5.2; se contempla el caso simbolico y numerico.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
208 Capıtulo 5: Cinematica directa cartesiana
Codigo Fuente 5.2 cinematica pendulo.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinematica pendulo.m
function [x0, y0, z0]=cinematica pendulo(beta1,l1,q1)1
dato1=whos(’beta1’); dato2=whos(’l1’); dato3=whos(’q1’);2
v1=strcmp(dato1.class, ’sym’); v2=strcmp(dato2.class, ’sym’);3
v3=strcmp(dato3.class, ’sym’); digits(3);4
if (v1 & v2 & v3) %caso simbolico5
x0=l1*cos(q1);6
y0=l1*sin(q1);7
z0=beta1;8
end9
else%caso numerico10
x0=double(simplify(vpa(l1*cos(q1),3)));11
y0= double(simplify(vpa(l1*sin(q1),3)));12
z0=double(simplify(vpa(beta1,3)));13
end14
Funcion cinematica inversa del pendulo
La funcion de cinematica inversa del pendulo se encuentra expresada como:
q1=cinv pendulo(x0, y0)
donde x0, y0 representan las coordenadas del extremo final del pendulo con respecto
al sistema Σ0(x0, y0, z0). Esta funcion retorna la posicion articular q1 del pendulo;
observe que el modelo de cinematica inversa no depende del grosor del servomotor
(β1).
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 209
El codigo de la funcion de cinematica inversa se encuentra en el cuadro 5.3.
Codigo Fuente 5.3 cinv pendulo.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinv pendulo.m
function q1=cinv pendulo(x0,y0)1
%cinematica inversa del pendulo2
q1=atan(y0/x0);3
end4
♣ Ejemplo 5.1
Desarrollar un programa para MATLAB que presente de manera simbolica los
parametros DH, cinematica cartesiana y el jacobiano del pendulo. Ademas,
contemple el analisis donde la posicion de casa se traslada del primer al cuarto
cuadrante.
Solucion
En el cuadro 5.4 se presenta el programa que permite desplegar en forma sımbolica
los parametros DH, cinematica cartesiana y el jacobiano del pendulo.
La lınea 7 obtiene la transformacion homogenea del pendulo H10 empleando la
funcion H10=H pendulo(). La lınea 9 deduce la matriz de rotacion R1
0 y la cinematica
cartesiana fR(q1) a traves de la funcion H DH(H10).
En la lınea 11 se realiza una rotacion HRz0(−π
2 ) (-90 grados alrededor del eje z0)
para trasladar la posicion de casa al cuarto cuadrante. De la lınea 13 a la 20 se
presenta un ejemplo numerico, para trasladar las coordenadas del extremo final en
la rotacion del primer al cuarto cuadrante.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
210 Capıtulo 5: Cinematica directa cartesiana
El programa 5.4 contiene la descripcion completa del modelo cinematico directo del
pendulo robot, el cual emplea las funciones de transformacion homogenea H10 incluye
la matriz de rotacion R10 que relaciona la rotacion del extremo final del eslabon con
respecto a la base del pendulo, ası como la cinematica directa cartesiana en variables
simbolicas como aplicacion numerica.
Codigo Fuente 5.4 cap5 pendulo.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cap5 pendulo.m
clc;1
clear all;2
close all;3
format short4
syms beta1 l1 q1 real5
%H10 = HRz0
(q1)HTz0(β1)HTx0
(l1)HRx0(0)6
H10=H pendulo() %H107
%obtiene la matriz de rotacion R10 y cinematica directa fr(q)8
[R10, frq pendulo, cero, c]=H DH(H10) %R10, fR(β1 , l1, q1)9
jac pendulo=jacobian(frq pendulo, q1)10
H10a=HRz(-pi/2)*H10 %H10a = HRz0
(−π2 )H1
011
%ejemplo numerico12
q1=55*pi/180; %posicion angular del pendulo13
beta1=0.1;%ancho del servomotor mas espesor de la barra14
l1=0.45; beta1=0.1; %longitud del pendulo y espesor del servomotor15
%cinematica cartesiana cuadrante I: fRI(β1, l1, q1)16
[x0,y0,z0]=cinematica pendulo(beta1,l1,q1)17
%cinematica directa en el cuadrante IV18
%fRIV(β1, l1, q1) = Rz(−π
2 )fRI(β1, l1, q1)19
Rz(-pi/2)*cinematica pendulo(beta1,l1,q1)20
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 211
Robot planar vertical de dos grados de libertad
La figura 5.3 muestra un robot de dos grados de libertad con articulaciones
rotacionales que se mueve en el plano vertical x0 − y0. El sistema de referencia
fijo Σ0(x0, y0, z0) se coloca en el respaldo del servomotor del hombro, de tal forma
que el eje z0 coincida con el eje de rotacion (perpendicular al plano de la hoja). El
ancho de cada servomotor y espesor de la barra metalica estan determinados por β1
y β2. Los ejes x0, y0 se seleccionan con la regla de la mano derecha.
Cinematica directa cartesiana del brazo robot de 2 gdl
El sistema de referencia Σ1(x1, y1, z1) se coloca en el extremo final del primer eslabon,
el eje z1 se coloca paralelo al eje z0 (α1 = 0). El origen del sistema Σ1(x1, y1, z1) se
ubica en la interseccion del eje x0 con el eje z1 (cuando q1 = 0) y esta a una distancia
β1 sobre el eje z0. El origen del sistema de referencia Σ2(x2, y2, z2) se coloca en el
extremo final del robot. El ancho del servomotor del codo y el espesor de la segunda
barra miden β2. Cuando q2 = 0 el origen de Σ2 se encuentra a una distancia l2 sobre
el eje x1 y a una distancia β2 sobre el eje z1. Los ejes xi, yi, con i = 1, 2 se seleccionan
con la regla de la mano derecha. Los ejes z1 y z2 son paralelos entre sı (α2 = 0).
Figura 5.3 Robot planar vertical de dos gdl.
En la tabla 5.2 se muestran los parametros de los eslabones para la convencion
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
212 Capıtulo 5: Cinematica directa cartesiana
Denavit-Hartenberg de un robot planar de dos grados de libertad.
Tabla 5.2 DH del robot de 2 gdl
Eslabon li αi di θi
1 l1 0 β1 q1
2 l2 0 β2 q2
Generalmente la posicion de casa para un robot de dos grados de libertad se
selecciona sobre el eje x0+, midiendo el angulo q1 en sentido contrario a las manecillas
del reloj, es decir del eje x0+hacia el eje y0+
, con esta consideracion se obtienen las
siguientes matrices de transformacion homogenea:
H10 = HRz0
( q1 )HTz0( β1 )HTx0
( l1 )HRx0( 0 ) (5.9)
=
⎡⎢⎢⎢⎣
cos(q1) − sen(q1) 0 l1 cos(q1)
sen(q1) cos(q1) 0 l1 sen(q1)
0 0 1 β1
0 0 0 1
⎤⎥⎥⎥⎦ (5.10)
H21 = HRz1
( q2 )HTz1( β2 )HTx1
( l2 )HRx1( 0 ) (5.11)
=
⎡⎢⎢⎢⎣
cos(q2) − sen(q2) 0 l2 cos(q2)
sen(q2) cos(q2) 0 l2 sen(q2)
0 0 1 β2
0 0 0 1
⎤⎥⎥⎥⎦ (5.12)
H20 = H1
0H21
=
⎡⎣ cos(q1 + q2) − sen(q1 + q2) 0 l1 cos(q1) + l2 cos(q1 + q2)
sen(q1 + q2) cos(q1 + q2) 0 l1 sen(q1) + l2 sen(q1 + q2)
0 0 1 β1 + β2
0 0 0 1
⎤⎦. (5.13)
La cinematica directa de las coordenadas cartesianas del extremo final del robot (sin
tomar en cuenta la orientacion de la herramienta de trabajo) esta dada por:⎡⎢⎣x0
y0
z0
⎤⎥⎦ = fR(q) =
⎡⎢⎣ l1 cos(q1) + l2 cos(q1 + q2)
l1 sen(q1) + l2 sen(q1 + q2)
β1 + β2
⎤⎥⎦ . (5.14)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 213
Observese que la coordenada z0 incluye el espesor de los dos servomotores con sus
respectivos espesores de las barras metalicas, de tal forma que el origen del sistema
Σ2(x2, y2, z2) se encuentra a una distancia β1 + β2 sobre el eje z0 del sistema fijo
Σ0(x0, y0, z0).
La posicion de casa de un robot manipulador planar de dos grados de libertad
tambien puede ser ubicada sobre el eje y0−
. Esto equivale a hacer una rotacion
alrededor del eje z0 por -90 grados para la articulacion del hombro, es decir:
HRz0(−π
2 )H10 y tambien para articulacion del codo HRz1
(−π2 )H2
1 . El angulo q1 se
mide del eje y0−
hacia el eje x0+(valor positivo en sentido contrario a las manecillas
del reloj) como se muestra en la figura 5.4.
Figura 5.4 Rotacion de la posicion de casa por -90 grados alrededor del eje z0.
H10 y0−
= HRz0
(−π
2
)H1
0
=
⎡⎣ 0 1 0 0
−1 0 0 0
0 0 1 0
0 0 0 1
⎤⎦⎡⎣ cos(q1) − sen(q1) 0 l1 cos(q1)
sen(q1) cos(q1) 0 l1 sen(q1)
0 0 1 β1
0 0 0 1
⎤⎦
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
214 Capıtulo 5: Cinematica directa cartesiana
=
⎡⎢⎢⎢⎣
sen(q1) cos(q1) 0 l1 sen(q1)
− cos(q1) sen(q1) 0 −l1 cos(q1)
0 0 1 β1
0 0 0 1
⎤⎥⎥⎥⎦
H21 y1−
= HRz1
(−π
2
)H2
1
=
⎡⎣ 0 1 0 0
−1 0 0 0
0 0 1 0
0 0 0 1
⎤⎦⎡⎣ cos(q2) − sen(q2) 0 l2 cos(q2)
sen(q2) cos(q2) 0 l2 sen(q2)
0 0 1 β2
0 0 0 1
⎤⎦
=
⎡⎢⎢⎢⎣
sen(q2) cos(q2) 0 l2 sen(q2)
− cos(q2) sen(q2) 0 −l2 cos(q2)
0 0 1 β2
0 0 0 1
⎤⎥⎥⎥⎦
H20 y0−
= H10 y0−
H21 y1−
=
⎡⎣ sen(q1 + q2) cos(q1 + q2) 0 l1 sen(q1) + l2 sen(q1 + q2)
− cos(q1 + q2) sen(q1 + q2) 0 −l1 cos(q1) − l2 cos(q1 + q2)
0 0 1 β1 + β2
0 0 0 1
⎤⎦
El mismo resultado se puede obtener premultiplicando la matriz homogenea de
rotacion HRz0(−π
2 ) a la matriz de transformacion homogenea H20 (5.13). Es decir,
H20 y0−
= HRz0(−π
2 )H20 .
Por lo que la cinematica directa de coordenadas cartesianas para un robot planar
de dos grados de libertad cuya posicion inicial es sobre el eje y0 negativo:
⎡⎢⎣x0
y0
z0
⎤⎥⎦ =
⎡⎢⎣ l1 sen(q1) + l2 sen(q1 + q2)
−l1 cos(q1)− l2 cos(q1 + q2)
β1 + β2
⎤⎥⎦ (5.15)
Debido a que la rotacion se realiza alrededor de los ejes z1 y z2, ambos paralelos al
eje z0, no existe ninguna modificacion de coordenadas de los parametros geometricos
β1 y β2. Por lo que el origen del sistema Σ2(x2, y2, z2) siempre tendra una distancia
β1 + β2 sobre el eje z0.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 215
Jacobiano del brazo robot de 2 gdl
El jacobiano analıtico del robot de 2 gdl se obtiene como:
J(q) =∂fR(β1, β2, l1, l2, q)
∂q
tomando en cuenta que los parametros geometricos β1, β2, l1, l2 son constantes, y
considerando la posicion de casa sobre el eje x0 (primer cuadrante):
J(q) =
[−l1 sen(q1)− l2 sen(q1 + q2) −l2 sen(q1 + q2)
l1 cos(q1) + l2 cos(q1 + q2) l2 cos(q1 + q2)
]∈ IR2×2 (5.16)
El determinante del jacobiano es det[J(q)] = l1l2 sen(q2), el cual es cero para
q2 = 0,±nπ y q1 cualquier valor. Por lo tanto, cuando la articulacion del codo
tiene alguno de esos valores para q2 el robot entra en una singularidad. Esto es
importante en aplicaciones donde interviene q = J(q)−1v.
Cinematica inversa del brazo robot de 2 gdl
La cinematica inversa (sin tomar en cuenta la orientacion de la herramienta
de trabajo) de un robot manipulador de dos grados de libertad se obtiene por
procedimiento geometrico (ver figura 5.5).
Figura 5.5 Cinematica inversa de un robot planar de dos grados de libertad.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
216 Capıtulo 5: Cinematica directa cartesiana
El angulo ϑ que se encuentra dentro del triangulo formado por los lados adyacente
l1 + l2 cos(q2), cateto opuesto l2 sen(q2) y la hipotenusa√
x20 + y2
0 , del teorema de
Pitagoras se obtiene la solucion para la variable articular q2:
x20 + y2
0 = [l1 + l2 cos(q2)]2 + l22 sen2(q2)
= l21 + l22�
��
��
��
��
���
1
[cos2(q2) + sen2(q2)] + 2l1l2 cos(q2)
= l21 + l22 + 2l1l2 cos(q2)
q2 = acos (x2
0+y2
0−l2
1−l2
2
2l1l2)
Observe que el angulo ϑ satisface:
ϑ = atan
(l2 sen(q2)
l1 + l2 cos(q2)
)
Ahora, tomando los angulos ϑ + q1 dentro del triangulo formado por los catetos
adyacente x0, opuesto y0 y la hipotenusa√
x20 + y2
0 se cumple la siguiente expresion:
ϑ + q1 = atan
(y0
x0
)
Entonces, la variable articular q1 adquiere la siguiente forma:
q1 = atan
(y0
x0
)− ϑ
= atan
(y0
x0
)− atan
(l2 sen(q2)
l1 + l2 cos(q2)
)
Por lo tanto, la cinematica inversa de un robot de 2 gdl no depende de β1 y β2
debido a que no hay proyecciones de estos parametros sobre el plano x0 − y0:
q2 = acos (x2
0+y2
0−l2
1−l2
2
2l1l2) (5.17)
q1 = atan
(y0
x0
)− atan
(l2 sen(q2)
l1 + l2 cos(q2)
)(5.18)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 217
Funcion transformacion homogenea del robot 2 gdl H20
La funcion transformacion homogenea H20 del robot planar vertical de 2 gdl se
encuentra expresada como:
H20=H r2gdl()
esta funcion retorna H20 la transformacion homogenea del robot planar vertical de 2
gdl. El codigo MATLAB de la funcion transformacion homogenea H20 del robot de
2 gdl se encuentra en el cuadro 5.5.
Codigo Fuente 5.5 H r2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
H r2gdl.m
function H=H r2gdl()1
syms q1 q2 beta1 beta2 l1 l2 alpha1 alpha2 real2
disp(’Parametros Denavit-Hartenberg del robot planar vertical de 2 gdl’)3
disp(’[ l alpha d q]’)4
dh=[l1, 0, beta1, q1; l2, 0, beta2, q2];5
disp(dh)6
%H10 = HRz0
(q1)HTz0(β1)HTx0
(l1)HRx0(0)7
H10=HRz(q1)*HTz(beta1)*HTx(l1)*HRx(0)8
%H21 = HRz0
(q2)HTz0(β2)HTx0
(l2)HRx0(0)9
H21=HRz(q2)*HTz(beta2)*HTx(l2)*HRx(0)10
H20=simplify(H10*H21);% H20 = H1
0H2111
[R20, cinemat r2gdl, cero, c]=H DH(H20)12
H=[R20, cinemat r2gdl; % R20(q1, q2), fR(q1, q2)13
cero, c];14
end15
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
218 Capıtulo 5: Cinematica directa cartesiana
Funcion cinematica directa del robot de 2 gdl
La funcion de cinematica directa de un robot de 2 gdl se encuentra dada por:
[x0, y0, z0]=cinematica r2gdl(β1, l1, q1, β2, l2, q2)
donde los argumentos de entrada son los parametros geometricos β1, l1, β2, l2 y
posiciones articulares q1, q2 del hombro y codo, respectivamente. Esta funcion retorna
las coordenadas cartesianas (x0, y0, z0) en el sistema Σ0(x0, y0, z0).
Codigo Fuente 5.6 cinematica r2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinematica r2gdl.m
function [x0, y0, z0]=cinematica r2gdl(beta1,l1,q1,beta2,l2,q2)1
dato1=whos(’beta1’); dato2=whos(’l1’); dato3=whos(’q1’);2
dato4=whos(’beta2’); dato5=whos(’l2’); dato6=whos(’q2’);3
v1=strcmp(dato1.class, ’sym’); v2=strcmp(dato2.class, ’sym’);4
v3=strcmp(dato3.class, ’sym’); v4=strcmp(dato4.class, ’sym’);5
v5=strcmp(dato5.class, ’sym’); v6=strcmp(dato6.class, ’sym’);6
digits(3);7
if (v1 & v2 & v3 & v4 &v5 & v6)%caso simbolico8
x0=simplify(vpa(l1*cos(q1)+l2*cos(q1+q2),3));9
y0=simplify(vpa(l1*sin(q1)+l2*sin(q1+q2),3));10
z0=vpa(beta1+beta2,3);11
else%caso numerico12
x0=l1*cos(q1)+l2*cos(q1+q2);13
y0=l1*sin(q1)+l2*sin(q1+q2);14
z0=beta1+beta2;15
end16
end17
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 219
Funcion cinematica inversa del robot de 2 gdl
La funcion de cinematica inversa de un robot de 2 gdl tiene la siguiente sintaxis:
[q1, q2]=cinv r2gdl(l1, l2, x0, y0)
donde los argumentos de entrada son los parametros geometricos l1, l2 y las
coordenadas cartesianas del extremo final x0, y0 en el sistema Σ0(x0, y0, z0). Esta
funcion retorna las coordenadas articulares del hombro q1 y codo q2.
Codigo Fuente 5.7 cinv r2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinv r2gdl.m
function [q1 q2]=cinv r2gdl(l1,l2,x0,y0)1
q2=acos((x0.*x0+y0.*y0-l1*l1-l2*l2)/(2*l1*l2));2
q1=atan(y0./x0)-atan((l2*sin(q2))./(l1+l2*cos(q2)));3
end4
♣ ♣ Ejemplo 5.2
Disenar un programa para MATLAB que permita desplegar en forma simbolica
los parametros DH, cinematica cartesiana y el jacobiano del robot vertical planar
de 2 gdl. Ademas, programar una aplicacion donde el extremo final del robot
trace un cırculo de radio r = 0.2m, con centro en [xc, yc ]T = [ 0.3,−0.3]T m, con
periodo de movimiento de 6.28 segundos.
Solucion
El programa 5.8 contiene el codigo fuente para MATLAB que soluciona el problema
planteado. En la lınea 4 se obtiene la matriz de transformacion homogenea H20 del
robot de 2 gdl y en la lınea 7 se obtiene la matriz de rotacion R20 y la cinematica
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
220 Capıtulo 5: Cinematica directa cartesiana
directa cartesiana fR(l1, q1, l2, q2). Las lıneas 12 y 13 despliegan en forma simbolica
el jacobiano y su determinante, respectivamente. La ecuacion del cırculo se encuentra
implementada en las lıneas 21 y 22:
[x
y
]=
[xc + r sen(t)
yc + r cos(t)
]
donde xc, yc representan el centro del cırculo, r es el radio.
La lınea 24 convierte las coordenadas cartesianas del cırculo en coordenadas
articulares (q1, q2) por medio de la funcion cinv r2gdl(l1, l2, x, y), y en la lınea
26 se transforman las coordenadas articulares (q1, q2) en las coordenadas cartesianas
del extremo final del robot en el sistema Σ0(x0, y0, z0). Se genera una base de tiempo
de 100 segundos con incrementos de 1 mseg. El periodo de trazo del cırculo es de
6.28 segundos ( sen(wt), con w = 2π f = 1, entonces t = 2π segundos).
La figura 5.6 muestra el cırculo generado por el extremo final del robot (ver lınea
27) durante una simulacion de 100 segundos, lo que significa que el robot traza 15
cırculos que se superponen en la misma figura.
Figura 5.6 Trayectoria circular que traza el robot de 2 gdl.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 221
Codigo Fuente 5.8 cap5 robot2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cap5 robot2gdl.m
clc; clear all ;close all;1
format short2
syms q1 q2 beta1 beta2 l1 l2 alpha1 alpha2 real3
H20=H r2gdl()4
disp(’Transformacion homogenea del robot 2 gdl’);5
disp(H20);6
[R20, cinemat r2gdl,cero, c]=H DH(H20) ;7
disp(’Matriz de rotacion’); disp(R20);8
disp(’cinematica directa’);9
disp(cinemat r2gdl);10
[x0, y0, z0]=cinematica r2gdl(beta1,l1,q1,beta2,l2,q2)11
jac r2gdl=jacobian([x0; y0], [q1;q2])12
det r2gdl=simplify(det(jac r2gdl)) % det[J]= l1l2 sen(q2)13
%ejemplo numerico14
t=0:0.001:100;%parametros del cırculo: [xc, yc ]T = [ 0.3,−0.3 ]T y radio r = 0.215
xc=0.3; yc=-0.3; r=0.20;16
l1=0.45; l2=0.45;17
beta1=0.1; beta2=0.1;18
q1=[]; q2=[];19
% ecuacion del cırculo20
x=xc+r*sin(t) ;21
y=yc+r*cos(t) ;22
% cinematica inversa23
[q1,q2]=cinv r2gdl(l1,l2,x,y) ;24
%coordenas cartesianas del extremo final del robot de 2 gdl25
[x0, y0, z0]=cinematica r2gdl(beta1,l1,q1,beta2,l2,q2) ;26
plot(x0,y0)27
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
222 Capıtulo 5: Cinematica directa cartesiana
Robot antropomorfico (RRR)
La gran mayorıa de los robots industriales tienen la configuracion antropomorfica
(brazos robots) ya que presentan mayor destreza en su espacio de trabajo debido a
que sus eslabones estan unidos por articulaciones rotacionales. El espacio de trabajo
de la configuracion antropomorfica corresponde a una esfera, cuyo radio corresponde
a la suma de longitudes de los eslabones. Por similitud con la forma anatomica con
el brazo humano, la segunda articulacion se conoce como hombro (shoulder) y
la tercera articulacion se llama codo (elbow). La figura 5.7 muestra ejemplos de
robots industriales antropomorficos de la companıa ABB y FANUC que se utilizan
en aplicaciones de traslado de objetos.
Figura 5.7 Robots industriales en configuracion antropomorfica: ABB y FANUC.
Cinematica directa cartesiana del brazo robot de 3 gdl
Considerese un robot manipulador antropomorfico de tres grados de libertad como
el que se presenta en la figura 5.8, donde el sistema de referencia fijo Σ0(x0, y0, z0)
se encuentra en la base del robot, el eje z0 coincide con el eje de rotacion de la
articulacion de la base. Los sistemas de referencia Σ1(x1, y1, z1), Σ2(x2, y2, z2) y
Σ3(x3, y3, z3) estan seleccionados de tal forma que sus ejes z1, z2 y z3 coincidan
con sus respectivos ejes de rotacion de cada articulacion. El eje z1 del sistema
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 223
Σ1(x1, y1, z1) se encuentra ortogonal al eje z0 (α1 = π2 ); el eje z1 es paralelo al
eje z2 (α2 = 0) y el eje z2 se ha considerado paralelo al eje zh de la herramienta de
trabajo (α3 = 0). Note que el plano x2 − y2 se encuentra rotado un angulo q3 con
respecto al plano x1 − y1.
Figura 5.8 Robot antropomorfico.
La tabla 5.3 contiene los parametros Denavit-Hartenberg para el robot antropomorfi-
co de tres grados de libertad.
Tabla 5.3 DH del robot de 3 gdl
Eslabon li αi di θi
1 0 π2 l1 + β1 q1
2 l2 0 β2 q2
3 l3 0 β3 q3
Los parametros geometricos de cada servomotor son: β1, β2, β3 representan el ancho
y espesor de las placas metalicas para la base, hombro y codo, respectivamente; l1
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
224 Capıtulo 5: Cinematica directa cartesiana
es la distancia que se encuentra la articulacion de la base con respecto al origen del
sistema fijo Σ0(x0, y0, z0); l2 y l3 son las longitudes de los eslabones del hombro y
codo, respectivamente.
Las matrices de transformaciones homogeneas para la configuracion antropomorfica
adquieren la siguiente forma:
H10 = HRz0
( q1 ) HTz0( l1 + β1 )HTx0
( 0 ) HRx0( π
2 ) (5.19)
=
⎡⎣ cos(q1) 0 sen(q1) 0
sen(q1) 0 − cos(q1) 0
0 1 0 l1 + β1
0 0 0 1
⎤⎦ (5.20)
H21 = HRz1
( q2 ) HTz1(β2 )HTx1
( l2 )HRx1( 0 ) (5.21)
=
⎡⎣ cos(q2) − sen(q2) 0 l2 cos(q2)
sen(q2) cos(q2) 0 l2 sen(q2)
0 0 1 β2
0 0 0 1
⎤⎦ (5.22)
H32 = HRz2
( q3 ) HTz2(β2 )HTx2
( l3 )HRx2( 0 ) (5.23)
=
⎡⎣ cos(q3) − sen(q3) 0 l3 cos(q3)
sen(q3) cos(q3) 0 l3 sen(q3)
0 0 1 β3
0 0 0 1
⎤⎦ (5.24)
Por lo tanto, la matriz homogenea del robot antropomorfico de 3 gdl moviendose en
su espacio tridimensional es:
H30 = H1
0H21H3
2 (5.25)
=
[cos(q1) cos(q2 + q3) − cos(q1) sen(q2 + q3) sen(q1) [ β2 + β3 ] sen(q1) + cos(q1) [ l2 cos(q2) + l3 cos(q2 + q3) ]
sen(q1) cos(q2 + q3) − sen(q1) sen(q2 + q3) − cos(q1) − [ β2 + β3 ] cos(q1) + sen(q1) [ l2 cos(q2) + l3 cos(q2 + q3) ]
sen(q2 + q3) cos(q2 + q3) 0 l1 + β1 + l2 sen(q2) + l3 sen(q2 + q3)
0 0 0 1
]
Las coordenadas cartesianas del extremo final del robot manipulador antropomorfico
de 3 gdl se encuentran relacionadas con las coordenadas articulares de la siguiente
forma:⎡⎢⎣x0
y0
z0
⎤⎥⎦ =
⎡⎢⎣ [β2 + β3 ] sen(q1) + cos(q1) [ l2 cos(q2) + l3 cos(q2 + q3) ]
− [β2 + β3 ] cos(q1) + sen(q1) [ l2 cos(q2) + l3 cos(q2 + q3) ]
l1 + β1 + l2 sen(q2) + l3 sen(q2 + q3)
⎤⎥⎦ (5.26)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 225
Cinematica inversa
La cinematica inversa del robot antropomorfico de 3 gdl consiste en obtener las
posiciones articulares en funcion de las coordenadas cartesianas de la ecuacion (5.26).
Una forma para resolver dicho planteamiento es utilizar el metodo geometrico, con
esta intencion considere la proyeccion de los eslabones del hombro y del codo sobre
el plano x0 − y0 (ver figura 5.8); dicha proyeccion se amplıa en la figura 5.9 para
llevar a cabo el analisis geometrico correspondiente a la variable q1.
Observe que existe proyeccion geometrica sobre el plano x0 − y0 de los parametros
β2 y β3 de los servomotores, debido a que los ejes z1 y z2 quedan paralelos a dicho
plano, lo que no sucede para los casos del pendulo y robot de 2 gdl.
Figura 5.9 Metodo geometrico de la cinematica inversa 3 gdl para obtener q1.
De la figura 5.9 tenemos que ϑ = ρ + q1 ⇒ q1 = ϑ− ρ. Observe que el angulo ϑ se
obtiene en funcion de las coordenadas cartesianas (x0, y0) satisface ϑ = atan(
y0
x0
).
Ademas, tomando en cuenta el triangulo con lınea punteada, el angulo ρ queda en
funcion del cateto opuesto (formado por el ancho de los servomotores β2 + β3) y el
cateto adyacente formado por la diferencia de la hipotenusa (r =√
x20 + y2
0) y del
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
226 Capıtulo 5: Cinematica directa cartesiana
cateto opuesto obtiene la siguiente forma:
ρ = atan
⎛⎝ β2 + β3√
x20 + y2
0 − (β2 + β3 )2
⎞⎠
Por lo tanto, la variable articular q1 adquiere la siguiente estructura:
q1 = ϑ− ρ = atan
(y0
x0
)− atan
⎛⎝ β2 + β3√
x20 + y2
0 − (β2 + β3 )2
⎞⎠ (5.27)
Para obtener la variable articular q3 considerese como referencia el angulo ϑ del
triangulo formado por el cateto adyacente l2 + l3 cos(q3), cateto opuesto l3 sen(q3)
y por la hipotenusa√
x20 + y2
0 + z20 (ver figura 5.10). Es importante recalcar que los
angulos ϑ y q2 se miden en direccion positiva con respecto al plano horizontal x0−y0
hacia el eje z0.
Figura 5.10 Metodo geometrico para obtener q2 y q3 de la cinematica inversa 3 gdl.
Empleando el teorema de Pitagoras se obtiene una posible solucion para q3 en
terminos de la funcion arco-tangente:
x20 + y2
0 + z20 = [l2 + l3 cos(q3)]
2 + l23 sen2(q3)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 227
= l22 + l23�
��
��
��
��
���
1
[cos2(q3) + sen2(q3)] + 2l2l3 cos(q3)
= l22 + l23 + 2l2l3 cos(q3)
cos(q3) =x2
0 + y20 + z2
0 − l22 − l232l2l3
sen(q3) =
√1−[x2
0 + y20 + z2
0 − l22 − l232l2l3
]2
q3 = atan
⎛⎜⎜⎝√
1−[
x2
0+y2
0+z2
0−l2
2−l2
3
2l2l3
]2x2
0+y2
0+z2
0−l2
2−l2
3
2l2l3
⎞⎟⎟⎠
En referencia a la figura 5.10, observese que el triangulo formado por los lados√x2
0 + y20, z0 y la hipotenusa
√x2
0 + y20 + z2
0 , tomando en cuenta que la tangente de
los angulos ϑ + q2 satisface: tan (ϑ + q2) = z0√x2
0+y2
0
, ademas tan (ϑ) = l3 sen(q3)l2+l3 cos(q3)
,
usando identidades trigonometricas de la funcion tangente se obtiene:
tan (ϑ + q2) =tan (q2) + tan (ϑ)
1− tan (q2) tan (ϑ)=
z0√x2
0 + y20
Realizando sencillos pasos algebraicos, para determinar la funcion tangente de q2:
tan (q2) + tanϑ =z0√
x20 + y2
0
− z0√x2
0 + y20
tan (q2) tan (ϑ)
tan (q2)[1 + z0√
x2
0+y2
0
tan (ϑ)]
=z0√
x20 + y2
0
− tanϑ
tan (q2) =
z0√x2
0+y2
0
− tan ϑ[1 + z0√
x2
0+y2
0
tan (ϑ)] =
z0√x2
0+y2
0
− l3 sen(q3)l2+l3 cos(q3)[
1 + z0√x2
0+y2
0
l3 sen(q3)l2+l3 cos(q3)
]=
[ l2 + l3 cos(q3) ] z0 − l3 sen(q3)√
x20 + y2
0√x2
0 + y20 [ l2 + l3 cos(q3) ] + z0l3 sen(q3)
Por lo tanto, la cinematica inversa que relaciona las coordenadas articulares q1, q2, q3
en funcion de las coordenadas cartesianas x0, y0, z0 del extremo final de un robot
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
228 Capıtulo 5: Cinematica directa cartesiana
antropomorfico de 3 gdl que se mueve en su espacio tridimensional, considerando el
espesor de los servomotores tiene la siguiente forma:
q1 = atan
(y0
x0
)− atan
⎛⎝ β2 + β3√
x20 + y2
0 − (β2 + β3 )2
⎞⎠ (5.28)
q2 = atan
([ l2 + l3 cos(q3) ] z0 − l3 sen(q3)
√x2
0 + y20√
x20 + y2
0 [ l2 + l3 cos(q3) ] + z0l3 sen(q3)
)(5.29)
q3 = atan
⎛⎝√
(2l2l3)2 −[x2
0 + y20 + z2
0 − l22 − l23]2
x20 + y2
0 + z20 − l22 − l23
⎞⎠ (5.30)
El jacobiano de un robot antropomorfico de tres grados de libertad esta dado por:
J(q) =
⎡⎢⎣ j11 j12 j13
j21 j22 j23
j31 j32 j33
⎤⎥⎦ (5.31)
j11 = [β2 + β3 ] cos(q1)− sen(q1) [ l2 cos(q2) + l3 cos(q2 + q3) ]
j12 = − cos(q1) [ l2 sen(q2) + l3 sen(q2 + q3) ]
j13 = −l3 cos(q1) sen(q2 + q3)
j21 = [β2 + β3 ] sen(q1) + cos(q1) [ l2 cos(q2) + l3 cos(q2 + q3) ]
j22 = − sen(q1) [ l2 sen(q2) + l3 sen(q2 + q3) ]
j23 = −l3 sen(q1) sen(q2 + q3)
j31 = 0, j32 = l2 cos(q2) + l3 cos(q2 + q3), j33 = l3 cos(q2 + q3)
Jacobiano del brazo robot de 3 gdl
El determinante del jacobiano del brazo robot de 3 gdl esta dado por:
det[J(q)] = −l22l3 cos(q2) sen(q3) − l2l2
3sen(q2) cos(q3)
2 − l2l23cos(q2) sen(q3) cos(q3) + l2l2
3sen(q2) (5.32)
existen un numero infinito de configuraciones singulares para q2 = 0 ± nπ y
q3 = 0± nπ. Sin embargo, el angulo q1 no interviene con los puntos singulares.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 229
Funcion transformacion homogenea del robot antropomorfico de 3 gdl H30
La funcion transformacion homogenea H30 del robot antropomorfico de 3 gdl tiene
la siguiente sintaxis:
H30=H r3gdl()
esta funcion retorna H30 la matriz de transformacion homogenea del brazo robot con
articulaciones rotacionales de 3 gdl. El codigo en lenguaje MATLAB de la funcion
transformacion homogenea H30 del robot de 3 gdl esta en el cuadro 5.9.
Codigo Fuente 5.9 H r3gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
H r3gdl.m
function H=H r3gdl()1
syms q1 q2 q3 beta1 beta2 beta3 l1 l2 l3 alpha1 alpha2 alpha3 real2
disp(’Parametros Denavit-Hartenberg del robot planar vertical de 3 gdl’)3
disp(’[ l alpha d q]’)4
dh=[l1, pi/2, l1+beta1, q1; l2, 0, beta2, q2; l3, 0, beta3, q3]; disp(dh)5
% H10 = HRz0
(q1)HTz0(l1 + β1)HTx0
(0)HRx0(π
2 )6
H10=simplify(HRz(q1)*HTz(l1+beta1)*HTx(0)*HRx(pi/2));7
% H21 = HRz1
(q2)HTz1(β2)HTx1
(l2)HRx1(0)8
H21=simplify(HRz(q2)*HTz(beta2)*HTx(l2)*HRx(0)) ;9
% H32 = HRz2
(q3)HTz2(β3)HTx2
(l3)HRx2(0)10
H32=simplify(HRz(q3)*HTz(beta3)*HTx(l3)*HRx(0));11
H30=simplify(H10*H21*H32,3); % H3
0= H1
0H2
1H3
212
[R30, cinemat r3gdl, cero, c]=H DH(H30);% R3
0, f
R(q1, q2, q3)13
H=[R30, cinemat r3gdl;14
cero, c];15
end16
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
230 Capıtulo 5: Cinematica directa cartesiana
Funcion cinematica directa del brazo robot de 3 gdl
La funcion de cinematica directa para las coordenadas cartesianas del extremo final
del brazo robot de 3 gdl se encuentra dada por:
[x0, y0, z0]=cinematica r3gdl(β1, l1, q1, β2, l2, q2, β3, l3, q3)
donde l1 es la distancia sobre el eje z0 donde se encuentra localizado el servomotor
de la articulacion de la base; l2, l3 son las longitudes del hombro y codo,
respectivamente; Ancho de los servomotores β1, β2, β3; q1, q2, q3 son las posiciones
articulares. Esta funcion retorna las coordenadas cartesianas (x0, y0, z0).
Codigo Fuente 5.10 cinematica r3gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinematica r3gdl.m
function [x0, y0, z0]=cinematica r3gdl(beta1,l1,q1,beta2,l2,q2,beta3,l3,q3)1
dato1=whos(’beta1’); dato2=whos(’l1’); dato3=whos(’q1’);2
dato4=whos(’beta2’); dato5=whos(’l2’); dato6=whos(’q2’);3
dato7=whos(’beta3’); dato8=whos(’l3’); dato9=whos(’q3’);4
v1=strcmp(dato1.class, ’sym’);v2=strcmp(dato2.class, ’sym’);5
v3=strcmp(dato3.class, ’sym’);v4=strcmp(dato4.class, ’sym’);6
v5=strcmp(dato5.class, ’sym’);v6=strcmp(dato6.class, ’sym’);7
v7=strcmp(dato7.class, ’sym’);v8=strcmp(dato8.class, ’sym’);8
v9=strcmp(dato9.class, ’sym’); digits(3);9
if (v1 & v2 & v3 & v4 & v5 & v6 & v7 & v8 & v9) %caso simbolico10
x0=simplify(vpa((beta2+beta3)*sin(q1)+cos(q1)*(l3*cos(q2 + q3) + l2*cos(q2)),3));11
y0=simplify(vpa(-(beta2+beta3)*cos(q1)+sin(q1)*(l3*cos(q2 + q3) + l2*cos(q2)),3));12
z0=simplify(vpa( l1 +beta1+ l3*sin(q2 + q3) + l2*sin(q2) ,3));13
x0=vpa(x0); y0=vpa(y0);14
else%caso numerico15
x0=(beta2+beta3)*sin(q1)+cos(q1).*(l3*cos(q2 + q3) + l2*cos(q2));16
y0=-(beta2+beta3)*cos(q1)+sin(q1).*(l3*cos(q2 + q3) + l2*cos(q2));17
z0=l1 +beta1+ l3*sin(q2 + q3) + l2*sin(q2);18
end19
end20
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 231
Funcion cinematica inversa del brazo robot de 3 gdl
La funcion de cinematica inversa del brazo robot de 3 gdl tiene la siguiente forma
sintactica:
[q1, q2, q3]=cinv r3gdl(β2, β3, l2, l3, x0, y0, z0)
donde los argumentos de entrada son los parametros geometricos del robot β1, β2, β3
representan espesor de los servomotores de la base, hombro y codo, respectivamente;
l1 es la distancia sobre el eje z0 donde se ubica la articulacion de la base; l2 y
l3 longitudes del hombro y codo, respectivamente. Las coordenadas cartesianas
del extremo final del robot x0, y0, z0 se encuentran expresadas en el sistema
Σ0(x0, y0, z0). Esta funcion retorna las coordenadas articulares (q1, q2, q3) de la base,
hombro y codo, respectivamente.
Codigo Fuente 5.11 cinv r3gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinv r3gdl.m
function [q1, q2, q3]=cinv r3gdl(beta2,beta3,l2,l3,x0,y0,z0)1
v1=sqrt(x0.*x0+y0.*y0-(beta2+beta3)∧2);2
%articulacion de la base q13
q1=atan(y0./x0)-atan((beta2+beta3)./v1);4
c3=(x0.*x0+y0.*y0+z0.*z0-l2∧2-l3∧2)./(2*l2*l3);5
s3=sqrt(1-c3.*c3);6
%articulacion del codo q37
q3=atan(s3./c3);8
s2=(z.*(l2+l3.*c3)-l3*s3.*sqrt(x0.*x0+y0.*y0))./(x0.*x0+y0.*y0+z0.*z0);9
c2=((l2+l3.*c3).*sqrt(x0.*x0+y0.*y0)+l3*s3.*z)./(x0.*x0+y0.*y0+z0.*z0);10
q2=atan(s2./c2);%articulacion del hombro11
end12
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
232 Capıtulo 5: Cinematica directa cartesiana
♣♣♣ Ejemplo 5.3
Disenar un programa en lenguaje MATLAB que permita desplegar en forma
simbolica los parametros DH, cinematica cartesiana y el jacobiano del robot
antropomorfico de 3 gdl. Asimismo programar una aplicacion donde el extremo
final del robot trace trayectorias circulares sobre el eje z0.
Solucion
El programa 5.12 presenta el codigo fuente en lenguaje MATLAB que despliega en
forma simbolica los parametros DH, cinematica cartesiana, matriz jacobiana y su
determinante (ver lıneas 6 a la 16).
De la lınea 23 a la 25 se encuentra la implementacion de la trayectoria circular con
barrido de 1 mm sobre el eje z0: [ x y z ]T = [xc + r sen(t) yc + r cos(t) t ],
siendo xc, yc el centro del cırculo, r es el radio, t es la evolucion del tiempo. En
la lınea 26 la trayectoria circular es convertida a coordenadas articulares usando la
cinematica inversa y en la lınea 27 se obtiene las coordenadas que el extremo final
del robot traza como se muestra en la figura 5.11.
Figura 5.11 Trazo que realiza el extremo final del brazo robot de 3 gdl.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.2 Brazo robot antropomorfico 233
Codigo Fuente 5.12 cap5 r3gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cap5 r3gdl.m
clc;1
clear all;2
close all;3
format short4
syms q1 q2 q3 beta1 beta2 beta3 l1 l2 l3 alpha1 alpha2 alpha3 real5
H30=H r3gdl() ;6
disp(’Tansformacion homogenea del robot antropomorfico de 3 gdl’);7
disp(H30);8
[R30, cinemat r3gdl,cero, c]=H DH(H30) ;9
disp(’Matriz de rotacion’);10
disp(R30);11
disp(’cinematica directa’);12
disp(cinemat r3gdl);13
[x0, y0,z0]= cinematica r3gdl(beta1,l1,q1,beta2,l2,q2,beta3,l3,q3); disp([x0; y0;z0])14
jac r3gdl=jacobian([x0; y0;z0], [q1;q2;q3])15
det r3gdl=simplify(vpa(det(jac r3gdl),3))16
%ejemplo numerico17
l1=0; l2=0.45; l3=0.45;18
t=0:0.001:100;19
xc=0.3; yc=-0.3; r=0.20;20
beta1=0.12; beta2=0.01; beta3=0.01;21
q1=[]; q2=[]; q3=[];22
x=xc+r*sin(t) ;23
y=yc+r*cos(t);24
z=t;25
[q1, q2, q3]=cinv r3gdl(beta2,beta3,l2,l3,x,y,z);26
[x0, y0,z0]=cinematica r3gdl(beta1,l1,q1,beta2,l2,q2,beta3,l3,q3);27
plot3(x0,y0,z0)28
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
234 Capıtulo 5: Cinematica directa cartesiana
5.3 Configuracion SCARA (RRP)
La configuracion SCARA (Selective Compliance Assembly Robot Arm)
representa una geometrıa especial de robots industriales; es un brazo planar
antropomorfico con dos articulaciones rotacionales y la tercera articulacion es
prismatica o lineal para manipular objetos. La figura 5.12 muestra un ejemplo de
un robot industrial en la configuracion SCARA. Esta configuracion aprovecha las
ventajas que proporciona el brazo robot antropomorfico de 2 gdl moviendose en el
plano horizontal; en este caso la energıa potencial es constante (par gravitacional
cero), la estructura mecanica es de alta rigidez para soportar cargas en forma vertical
y para control de fuerza. La configuracion SCARA es adecuada para tareas de
ensamble con pequenos objetos.
Figura 5.12 Robot KR 10 SCARA R600 (Companıa KUKA).
Cinematica directa cartesiana
El espacio de trabajo del robot SCARA es un cilindro que se describe en la figura
5.13, el radio del cilindro es igual a la suma de las longitudes de los eslabones
de las articulaciones rotacionales l2 + l3. El origen del sistema de referencia fijo
Σ0(x0, y0, z0) se coloca rıgidamente en el piso, de tal forma que sobre el eje z0 la
articulacion de la base del robot queda a una distancia l1 mas el ancho del servomotor
y espesor de la barra metalica representado por β1. El eje de rotacion de la primera
articulacion rotacional q1 (base) coincide con el eje z0. El sistema de referencia
Σ1(x1, y1, z1) se encuentra colocado rıgidamente en el extremo final del primer
eslabon, donde se intercepta al eje de rotacion de la segunda articulacion rotacional
q2 con el eje x0; las coordenadas del origen del sistema Σ1(x1, y1, z1) con respecto
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.3 Configuracion SCARA (RRP) 235
a Σ0(x0, y0, z0) son [ l2 cos(q1) l2 sen(q1), l1 + β1 ]T . Cuando q1 �= 0 significa que el
plano x1 − y1 mantiene una rotacion con referencia al plano fijo x0 − y0, entonces
la matriz R10 = Rz0
( q1 ) describe la rotacion del sistema Σ1(x1, y1, z1) con respecto
al sistema fijo Σ0(x0, y0, z0). Los ejes z0 y z1 son paralelos entre sı y mantienen la
misma direccion, por lo tanto el angulo que existe entre ellos es α1 = 0. El sistema
de referencia Σ1(x1, y1, z1) mide la variable articular q2 alrededor del eje z1. El plano
x1 − y1 tiene una rotacion por un angulo q1 con respecto al plano x0 − y0.
Figura 5.13 Espacio de trabajo del robot SCARA.
El sistema de referencia Σ2(x2, y2, z2) se coloca en la parte final del segundo
eslabon, justo en la interseccion del eje x1 con el desplazamiento lineal d3. Las
coordenadas del origen del sistema Σ2(x2, y2, z2) con respecto a Σ1(x1, y1, z1) son
[ l3 cos(q2) l3 sen(q2) l1 + β1 + β2 ]T , siendo β2 el ancho del segundo servomotor
mas el espesor de la segunda barra metalica. El angulo que hay entre los ejes x1 y x2
es q2. Cuando q2 = 0 se encuentran alineados dichos ejes, para el caso donde q2 �= 0,
la rotacion que hay entre los sistemas de referencia Σ1(x1, y1, z1) y Σ2(x2, y2, z2) es
descrita por la matriz R21 = Rz1
( q2 ). La medicion de la tercera articulacion lineal d3
se realiza sobre el eje z2, por lo tanto este eje esta alineado sobre su desplazamiento
lineal teniendo movimiento positivo en direccion hacia abajo, que corresponde a una
direccion negativa del eje z1 o z0 como se muestra en la figura 5.13. El sistema de
referencia Σ2(x2, y2, z2) se obtiene a partir del sistema Σ1(x1, y1, z1), rotando un
angulo α2 = π alrededor del eje x1, por lo tanto los ejes z2 y z1 son paralelos entre
sı, pero con direccion contraria.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
236 Capıtulo 5: Cinematica directa cartesiana
En la configuracion SCARA todos los ejes zi con i = 0, 1, 2 son paralelos entre sı,
pero debe notarse que el eje z2 mantiene una rotacion de 180 grados con respecto al
eje z1 o al eje z0. La razon por la cual el eje z2 mantiene un direccion positiva hacia
abajo es por aspectos tecnicos, es decir los objetos a manipular se encuentran frente
de la herramienta de trabajo. Se ha considerado que el eje z2 es paralelo al eje de la
herramienta (α3 = 0).
Con la anterior descripcion de los sistemas de referencia Σ0(x0, y0, z0) al Σ2(x2, y2, z2)
para la configuracion SCARA produce el siguiente conjunto de parametros Denavit-
Hartenberg que se presenta en la tabla 5.4:
Tabla 5.4 Parametros DH del robot SCARA
Eslabon li αi di θi
1 0 0 l1 + β1 q1
2 l2 π β2 q2
3 l3 0 d3 0
De acuerdo con la tabla 5.4 el robot SCARA tiene las siguientes matrices de
transformacion homogenea:
H10 = HRz0
( q1 )HTz0( l1 + β1 )HTx
( l2 ) HRx( 0 )
=
⎡⎢⎢⎢⎣
cos(q1) − sen(q1) 0 l2 cos(q1)
sen(q1) cos(q1) 0 l2 sen(q1)
0 0 1 l1 + β1
0 0 0 1
⎤⎥⎥⎥⎦ (5.33)
H21 = HRz1
( q2 )HTz1( β2 )HTx1
( l3 )HRx1(π )
=
⎡⎢⎢⎢⎣
cos(q2) sen(q2) 0 l3 cos(q2)
sen(q2) − cos(q2) 0 l3 sen(q2)
0 0 −1 β2
0 0 0 1
⎤⎥⎥⎥⎦ (5.34)
H32 = HRz2
( 0 )HTz2( d3 ) HTx2
( 0 )HRx2( 0 )
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.3 Configuracion SCARA (RRP) 237
=
⎡⎢⎢⎢⎣
1 0 0 0
0 1 0 0
0 0 1 d3
0 0 0 1
⎤⎥⎥⎥⎦ (5.35)
H30 = H1
0H21H3
2⎡⎣ cos(q1 + q2) sen(q1 + q2) 0 l2 cos(q1) + l3 cos(q1 + q2)
sen(q1 + q2) − cos(q1 + q2) 0 l2 sen(q1) + l3 sen(q1 + q2)
0 0 −1 l1 + β1 + β2 − d3
0 0 0 1
⎤⎦ (5.36)
El modelo de cinematica directa para el robot SCARA esta dada por la siguiente
expresion:
⎡⎢⎣
x0
y0
z0
⎤⎥⎦ = fR(q) =
⎡⎢⎣
l2 cos(q1) + l3 cos(q1 + q2)
l2 sen(q1) + l3 sen(q1 + q2)
l1 + β1 + β2 − d3
⎤⎥⎦ (5.37)
Funcion transformacion homogenea SCARA
El conjunto de ecuaciones que describen la rotacion y coordenadas cartesianas del
extremo final del robot SCARA (5.33)-(5.37) permiten desarrollar una librerıa con
variables simbolicas para MATLAB H SCARA() con la siguiente sintaxis:
H30= H SCARA()
esta funcion retorna la matriz de transformacion homogenea H30 la cual esta formada
con la matriz de rotacion R30 que relaciona la rotacion del extremo final del robot
con respecto al sistema fijo Σ0(x0, y0, z0) y la cinematica directa que relaciona las
coordenadas articulares con las coordenadas cartesianas fR(q). Ademas, tambien
despliega la tabla 5.4 con los parametros Denavit-Hartenberg del robot SCARA.
El programa 5.13 contiene el codigo MATLAB de la funcion transformacion
homogenea del robot SCARA:
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
238 Capıtulo 5: Cinematica directa cartesiana
Codigo Fuente 5.13 H SCARA.m
%Transformacion homogenea del robot SCARA H30
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
H SCARA.m
function H=H SCARA()1
syms q1 q2 q3 beta1 beta2 l1 l2 l3 d1 d2 d3 alpha1 alpha2 alpha3 real2
disp(’Transformacion Homogenea H30 del robot SCARA’)3
disp(’Parametros Denavit-Hartenberg del robot SCARA’)4
disp(’[ l alpha d q]’)5
%tabla de parametros DH del robot SCARA6
dh=[0, 0,l1+beta1, q1; l2, pi, beta2, q2; l3, 0, d3, 0];%despliega parametros7
DH del robot SCARA
disp(dh)8
%calculo de las matrices de transformacion homogenea de cada articulacion9
%H10 = HRz0
( q1 )HTz0( l1 + β1 )HTx
( l2 )HRx( 0 )10
H10=HRz(q1)*HTz(l1+beta1)*HTx(l2)*HRx(0);11
%H21 = HRz1
( q2 )HTz1(β2 ) HTx1
( l3 )HRx1(π )12
H21=HRz(q2)*HTz(beta2)*HTx(l3)*HRx(pi);13
%H32 = HRz2
( 0 )HTz2( d3 )HTx2
( 0 )HRx2( 0 )14
H32=HRz(0)*HTz(d3)*HTx(0)*HRx(0);15
%transformacion homogenea del robot SCARA16
%H30 = H1
0H21H3
217
H30=simplify(H10*H21*H32);18
%deduccion de la matriz de rotacion R3019
%ası como la cinematica directa cartesiana fR(q1, q2, d3) del robot SCARA20
[R30, cinemat scara, cero, c]=H DH(H30);21
%estructura de la matriz homogenea22
H=[R30, cinemat scara;23
cero, c];24
end25
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.3 Configuracion SCARA (RRP) 239
Funcion cinematica directa
La funcion cinematica directa del robot SCARA se define como:
[x0, y0, z0]=cinematica SCARA(β1, β2, l1, l2, l3, q1, q2, d3)
donde los argumentos de entrada son los parametros geometricos:β1, β2, l1, l2, l3 y
las variables articulares q1, q2, d3. Esta funcion retorna las coordenadas x0, y0, z0 en
espacio cartesiano del sistema de referencia fijo Σ0(x0, y0, z0).
En el cuadro 5.14 se presenta el codigo en lenguaje MATLAB de la cinematica
directa del robot SCARA.
Codigo Fuente 5.14 cinematica SCARA.m
%cinematica directa robot SCARA
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinematica SCARA.m
function [x0, y0, z0]=cinematica SCARA(beta1,beta2,l1,l2,l3,q1,q2,d3)1
x0=l2*cos(q1)+l3*cos(q1+q2);2
y0=l2*sin(q1)+l3*sin(q1+q2);3
z0=l1+beta1+beta2-d3;4
end5
Jacobiano del robot SCARA
El jacobiano del robot SCARA se encuentra de la siguiente forma:
J(q1, q2, d3) =∂fR(q)
∂q(5.38)
=
⎡⎢⎣−l2 sen(q1)− l3 sen(q1 + q2) −l3 sen(q1 + q2) 0
l2 cos(q1) + l3 cos(q1 + q2) l3 cos(q1 + q2) 0
0 0 −1
⎤⎥⎦
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
240 Capıtulo 5: Cinematica directa cartesiana
el determinante del jacobiano del robot SCARA tiene la siguiente forma:
det[J(q1, q2, d3)] = −l2l3 sen(q2) (5.39)
lo que significa que se presentan problemas de singularidad cuando q2 = 0,±nπ.
Cinematica inversa del robot SCARA
El ancho de los servomotores y espesor de las barras metalicas (β1, β2) no tienen
proyeccion sobre el plano x0 − y0; solo contribuyen en la coordenada z0, como en el
caso del pendulo y robot antropomorfico de 2 gdl, entonces la cinematica inversa del
robot SCARA toma la siguiente expresion:
q2 = acos (x2
0+y2
0−l2
2−l2
3
2l2l3) (5.40)
q1 = atan
(y0
x0
)− atan
(l3 sen(q2)
l2 + l3 cos(q2)
)(5.41)
d3 = l1 + β1 + β2 − z0 (5.42)
Funcion cinematica inversa del robot SCARA
La funcion cinematica inversa del robot SCARA tiene la siguiente sintaxis:
[d3, q2, q1]=cinv SCARA(β1, β2, l1, l2, l3, x0, y0, z0)
donde β1, β2, l1, l2, l3 son los parametros geometricos del robot SCARA, x0, y0, z0 son
las coordenadas en espacio cartesiano en el sistema fijo Σ0(x0, y0, z0); esta funcion
retorna las coordenadas articulares d3, q2, q1.
El programa 5.15 contiene el codigo fuente MATLAB de la cinematica inversa del
robot SCARA, para facilitar la implementacion de procedimientos recursivos con
pase de parametros escalares o vectoriales, la cinematica inversa es programada con
operaciones entre arreglos.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.3 Configuracion SCARA (RRP) 241
Codigo Fuente 5.15 cinv SCARA.m
%cinematica inversa robot SCARA
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinv SCARA.m
function [d3 q2 q1]=cinv SCARA(beta1,beta2,l1,l2,l3,x0,y0,z0)1
q2=acos((x0.*x0+y0.*y0-l2*l2-l3*l3)/(2*l2*l3));2
q1=atan(y0./x0)-atan((l3*sin(q2))./(l2+l3*cos(q2)));3
d3=l1+beta1+beta2-z0;4
end5
♣ ♣ Ejemplo 5.4
Realizar una aplicacion numerica del robot SCARA para que el extremo final
lleve a cabo el trazo de una rosa polar de radio r = 0.1 m y con centro en
las coordenadas cartesianas [x0 y0 z0 ]T = [ 0.3 −0.3 −0.5 ]T m. Asimismo
presentar en forma simbolica la matriz jacobiana, determinante y cinematica
directa.
Solucion
En el cuadro 5.16 se presenta el codi-
go en lenguaje MATLAB en variables
simbolicas de la matriz de transforma-
cion homogenea H30 del robot SCA-
RA usando la funcion H30=H SCARA()
(ver lınea 4). En la lınea 5 emplean-
do la funcion H DH(H30) se obtiene la
matriz de rotacion R30 a traves de la
funcion [R30, fR(q), 0T , 1]=H DH(H30).
La matriz jacobiano se obtiene en la
lınea 6 y su determinante en la lınea
7. La aplicacion numerica consiste en
que el extremo final del robot SCA-
RA trace una rosa polar de radio
r = 0.1 m, y con centro en las coor-
denadas cartesianas [x0 y0 z0 ]T =
[ 0.3 −0.3 −0.5 ]T m. La ecuacion
en coordenadas cartesianas de la rosa
polar (lineas 19 a la 21) esta dada por:
r = 0.1 sen(6t
7) x = xc + r sen3(t)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
242 Capıtulo 5: Cinematica directa cartesiana
y = yc + r cos3(t) z = −0.5
donde xc, yc representan el centro de la
flor, r es el radio de los petalos y t es
el tiempo.
El calculo de las coordenadas carte-
sianas de la rosa polar se realiza en
forma iterativa usando la instruccion
for· · ·end (lıneas 16 a la 24). En la
lınea 24 se convierten las coordena-
das cartesianas de la rosa polar a
coordenadas articulares del robot em-
pleando la funcion cinv SCARA(· · ·).En la lınea 27 se usa la funcion
cinematica SCARA(· · ·) para conver-
tir las coordenadas articulares del ro-
bot a coordenadas cartesianas, enton-
ces el extremo final del robot realiza
el trazo de la figura 5.14. El programa
que se presenta en el cuadro 5.17 reali-
za la misma funcion del programa 5.16;
la finalidad de mostrarlo es ilustrar el
calculo de las coordenadas cartesianas
de la rosa polar sin utilizar la forma re-
cursiva de la instruccion for, es decir
se emplean operaciones con arreglos en
lugar del proceso iterativo con escala-
res.
Observe que en las funciones
cinv SCARA y cinematica SCARA se
encuentran implementadas para so-
portar ambos tipos de pase de parame-
tros (recursivo y por arreglos), lo que
facilita la implementacion de varias
aplicaciones en control de robots ma-
nipuladores.
Es muy importante aclarar que el di-
bujo realizado por el robot SCARA (fi-
gura 5.14) no implica control del robot
o una simulacion de la dinamica del
mismo. Estos programas ilustran solo
el empleo de la cinematica inversa y su
conversion a coordenadas cartesianas
del extremo final del robot para trazar
una figura en su espacio de trabajo.
Figura 5.14 Trayectoria del robot SCARA.
Cuando las coordenadas articulares
del robot provienen de un sistema
dinamico como puede ser la ecuacion
en lazo cerrado (modelo dinamico del
robot y algoritmo de control), enton-
ces se trata de una simulacion de un
esquema de control. La cinematica no
reproduce los fenomenos fısicos del ro-
bot.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.3 Configuracion SCARA (RRP) 243
Codigo Fuente 5.16 SCARA.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
SCARA.m
clc; clear all; close all; format short1
syms theta l d alpha q real2
syms q1 q2 d3 beta1 beta2 l1 l2 l3 alpha1 alpha2 alpha3 real3
H30=H SCARA() ;4
[R30, frq scara, cero, c]=H DH(H30);5
jac scara=jacobian(frq scara, [q1;q2;d3]);6
det scara=simplify(det(jac scara))7
%ejemplo numerico8
%parametros geometricos del robot SCARA9
l1=0.45; l2=0.45; l3=0.45; beta1=0.1; beta2=0.1;10
t=0:0.001:100;11
%ecuacion de la figura centro en xc,yc y radio r12
xc=0.3; yc=-0.3;13
q1=[]; q2=[];z0=[]; d3=[];14
[n m]=size(t); % dimension del vector de tiempo15
for k=1:m%forma recursiva16
%ecuacion cartesiana de la figura rosa polar17
r=0.1*sin(6*t(k)/7);% radio de la figura18
x=xc+r*(sin(t(k)))∧3 ;19
y=yc+r*(cos(t(k)))∧3;20
z=-0.5 ;21
% conversion de coordenadas cartesianas de la rosa polar22
%a coordenadas articulares del robot SCARA23
[d3(k), q2(k), q1(k)]=cinv SCARA(beta1,beta2,l1,l2,l3,x,y,z) ;24
end25
%trayectoria del robot SCARA en el sistema Σ0(x0, y0, z0)26
[x0, y0, z0]=cinematica SCARA(beta1,beta2,l1,l2,l3,q1,q2,d3);27
plot3(x0,y0,z0)28
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
244 Capıtulo 5: Cinematica directa cartesiana
Codigo Fuente 5.17 SCARA1.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
SCARA1.m
clc; clear all; close all;1
format short2
syms theta l d alpha q real3
syms q1 q2 d3 beta1 beta2 l1 l2 l3 alpha1 alpha2 alpha3 real4
H30=H SCARA();5
[R30, frq scara, cero, c]=H DH(H30);6
jac scara=jacobian(frq scara, [q1;q2;d3]);7
det scara=simplify(det(jac scara))8
%ejemplo numerico9
%parametros geometricos del robot SCARA10
l1=0.45; l2=0.45; l3=0.45; beta1=0.1; beta2=0.1;11
t=0:0.001:100;12
%ecuacion de la rosa polar centro en xc,yc y radio r13
xc=0.3; yc=-0.3;14
q1=[]; q2=[];z0=[]; d3=[];15
[n m]=size(t); % dimension del vector de tiempo16
r=0.1*sin(6*t/7);%radio de la rosa polar17
%ecuacion cartesiana de la rosa polar18
x=xc+r.*(sin(t).∧3);19
y=yc+r.*(cos(t).∧3);20
z(1:m)=-0.5;%coordenada sobre el eje z021
% conversion de coordenadas cartesianas de la rosa polar22
%a coordenadas articulares del robot SCARA23
[d3, q2, q1]=cinv SCARA(beta1,beta2,l1,l2,l3,x,y,z);24
%trayectoria del robot SCARA en el sistema Σ0(x0, y0, z0)25
[x0, y0, z0]=cinematica SCARA(beta1,beta2,l1,l2,l3,q1,q2,d3);26
plot3(x0,y0,z0)27
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.4 Robot esferico (RRP) 245
5.4 Robot esferico (RRP)
La configuracion esferica de robots manipuladores presenta dos articulaciones
rotacionales (base y hombro) y la articulacion del codo corresponde al tipo
prismatica o lineal como se muestra en la figura 5.15. Los ejes de movimiento de las
articulaciones son mutuamente perpendiculares entre sı. Dentro de los ejemplares
de esta configuracion se encuentra el robot Standford, cuya principal aplicacion es
el mecanizado de piezas automotrices y la manipulacion de objetos sobre piso.
Figura 5.15 Robot manipulador en configuracion esferica.
Cinematica directa cartesiana
El espacio de trabajo de la configuracion esferica corresponde a una esfera hueca,
cuyo radio se encuentra en funcion del desplazamiento lineal d3 de la articulacion
prismatica del codo. El eje z0 se alinea con el eje de giro de la articulacion rotacional
de la base q1 y el origen del sistema de referencia fijo Σ0(x0, y0, z0) se ubica en
el piso de tal forma que la articulacion de la base esta a una altura l1 sobre el
eje z0. El ancho del servomotor de la base y el espesor de la placa metalica estan
representados por β1. Por otro lado, el eje z1 determina la medicion de la variable
articular q2 del hombro y se encuentra alineado con el eje de rotacion de esta
articulacion. Los ejes z1 y z0 son perpendiculares entre sı. El sistema de referencia
Σ1(x1, y1, z1) se coloca en el dorso del servomotor de la articulacion del hombro y las
coordenadas del origen de este sistema respecto al sistema fijo Σ0(x0, y0, z0) estan en:
[β1 cos(q1) β1 sen(q1) l1 + β1 ]T . El eje z2 se alinea con el desplazamiento lineal de
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
246 Capıtulo 5: Cinematica directa cartesiana
la articulacion prismatica d3 y las coordenadas del origen del sistema Σ2(x2, y2, z2)
con referencia al sistema Σ1(x1, y1, z1) se encuentran localizadas en: [ 0 0 β2 ]T .
Los ejes z0, z1 y z2 son perpendiculares entre sı.
Figura 5.16 Configuracion esferica.
La tabla 5.5 presenta los parametros de la convencion Denavit-Hartenberg para el
robot en la configuracion esferica.
Tabla 5.5 DH del robot esferico
Eslabon li αi di θi
1 0 -π2 l1 + β1 q1
2 0 π2 β2 q2
3 0 0 d3 0
Las matrices de transformacion homogenea para el robot en la configuracion esferica
tienen la siguiente estructura:
H10 = HRz0
( q1 )HTz0( l1 + β1 )HTx0
( 0 )HRx0(−pi
2 )
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.4 Robot esferico (RRP) 247
=
⎡⎢⎢⎢⎣
cos(q1) 0 − sen(q1) 0
sen(q1) 0 cos(q1) 0
0 −1 0 l1 + β1
0 0 0 1
⎤⎥⎥⎥⎦ (5.43)
H21 = HRz1
( q2 )HTz1( β2 )HTx0
( 0 )HRx1( π
2 )
=
⎡⎢⎢⎢⎣
cos(q2) 0 sen(q2) 0
sen(q2) 0 − cos(q2) 0
0 1 0 β2
0 0 0 1
⎤⎥⎥⎥⎦ (5.44)
H32 = HRz2
( 0 )HTz2( d3 ) HTx2
( 0 )HRx2( 0 )
=
⎡⎢⎢⎢⎣
1 0 0 0
0 1 0 0
0 0 1 d3
0 0 0 1
⎤⎥⎥⎥⎦ (5.45)
(5.46)
H30 = H1
0H21H3
2
=
⎡⎣ cos(q1) cos(q2) − sen(q1) cos(q1) sen(q2) −β2 sen(q1) + d3 sen(q2) cos(q1)
sen(q1) cos(q2) cos(q1) sen(q1) sen(q2) β2 cos(q1) + d3 sen(q2) sen(q1)
− sen(q2) 0 cos(q2) l1 + β1 + d3 cos(q2)
0 0 0 1
⎤⎦(5.47)
La cinematica directa de un robot manipulador en configuracion esferica es:
⎡⎢⎣x
y
z
⎤⎥⎦ =
⎡⎢⎣−β2 sen(q1) + d3 sen(q2) cos(q1)
β2 cos(q1) + d3 sen(q2) sen(q1)
l1 + β1 + d3 cos(q2)
⎤⎥⎦ (5.48)
El jacobiano del robot esferico tiene la siguiente forma:
J(q1, q2, d3) =
[−β2 cos(q1) − d3 sen(q1) sen(q2) d3 cos(q1) cos(q2) cos(q1) sen(q2)
d3 cos(q1) sen(q2) − β2 sen(q1) d3 cos(q2) sen(q1) sen(q1) sen(q2)
0 −d3 sen(q2) cos(q2)
](5.49)
Determinante det[J(q1, q2, d3)] = −d23 sen(q2)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
248 Capıtulo 5: Cinematica directa cartesiana
Funcion transformacion homogenea robot esferico
La funcion matriz de transformacion homogenea H esferico() del brazo robot en
la configuracion esferica tiene la siguiente sintaxis:
H30= H esferico()
esta funcion retorna la matriz de transformacion homogenea H30 integrada por la
matriz de rotacion R30 que describe la rotacion del extremo final del robot con
respecto al sistema fijo Σ0(x0, y0, z0) y la cinematica directa cartesiana fR(q) que
relaciona las coordenadas articulares. Ademas, tambien despliega en forma simbolica
la tabla 5.5 con los parametros Denavit-Hartenberg. El programa 5.18 contiene el
codigo MATLAB de la funcion transformacion homogenea del robot esferico.
Codigo Fuente 5.18 H esferico.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
H esferico.m
function H=H esferico()1
syms q1 q2 q3 beta1 beta2 l1 l2 l3 d1 d2 d3 alpha1 alpha2 alpha3 real2
disp(’Parametros Denavit-Hartenberg del robot SCARA’) disp(’[ l alpha d q]’)3
dh=[0, -pi/2, l1+beta1, q1; 0, pi/2, beta2, q2; 0, 0, d3, 0]; disp(dh)4
%H10 = HRz0
(q1)HTz0(l1 + β1)HTx0
(0)HRx0(−π
2)5
H10=HRz(q1)*HTz(l1+beta1)*HTx(0)*HRx(-pi/2);6
%H21 = HRz1
(q2)HTz1(β2)HTx1
(0)HRx1(π
2 )7
H21=HRz(q2)*HTz(beta2)*HTx(0)*HRx(pi/2);8
H32=HRz(0)*HTz(d3)*HTx(0)*HRx(0);%H3
2= HRz2
(0)HTz2(d3)HTx2
(0)HRx2(0)9
H30=simplify(H10*H21*H32);%H30 = H1
0H21H3
210
[R30, cinemat esferico, cero, c]=H DH(H30);11
H=[R30, cinemat esferico; cero, c];12
end13
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.4 Robot esferico (RRP) 249
Funcion cinematica directa del robot esferico
La funcion de cinematica directa que relaciona las coordenadas cartesianas del
extremo final con las coordenadas articulares del brazo robot en configuracion
esferica esta dada por la siguiente sintaxis (el codigo en lenguaje MATLAB se
encuentra en el cuadro 5.19):
[x0, y0, z0]=cinematica esferico(β1, β2, l1, q1, q2, d3)
Codigo Fuente 5.19 cinematica esferico.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinematica esferico.m
function [x0, y0,z0]=cinematica esferico(beta1,beta2,l1,q1,q2,d3)1
dato1=whos(’beta1’); dato2=whos(’beta2’); dato3=whos(’l1’);2
dato4=whos(’q1’); dato5=whos(’q2’); dato6=whos(’d3’);3
v1=strcmp(dato1.class, ’sym’); v2=strcmp(dato2.class, ’sym’);4
v3=strcmp(dato3.class, ’sym’); v4=strcmp(dato4.class, ’sym’);5
v5=strcmp(dato5.class, ’sym’); v6=strcmp(dato6.class, ’sym’);6
digits(3);7
if ( v1 & v2 & v3 & v4 & v5 &v6)% caso simbolico8
x0=simplify(vpa(-beta2*sin(q1)+d3*cos(q1)*sin(q2),3));9
y0=simplify(vpa(beta2*cos(q1) + d3*sin(q1)*sin(q2),3));10
z0=simplify(vpa(beta1 + l1 + d3.*cos(q2),3));11
x0=vpa(x0); y0=vpa(y0); z0=vpa(z0);12
else%caso numerico13
x0=-beta2*sin(q1)+d3.*cos(q1).*sin(q2);14
y0= beta2*cos(q1) + d3.*sin(q1).*sin(q2);15
z0=beta1 + l1 + d3.*cos(q2);16
end17
end18
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
250 Capıtulo 5: Cinematica directa cartesiana
donde l1 es la distancia sobre el eje z0 donde esta ubicada la articulacion de la base;
q1, q2, d2, d3 son las posiciones articulares de la base, hombro y codo, respectivamente.
Retorna las coordenadas cartesianas (x0, y0, z0) en el sistema Σ0(x0, y0, z0).
Cinematica inversa
Para obtener la cinematica inversa de la configuracion esferica se emplea el
metodo geometrico que se presenta a detalle en la figura 5.17. Los angulos ϑ + q1
satisfacen tan (ϑ + q1) = y0
x0. Note que el angulo ϑ queda ubicado en el interior
del triangulo formado por el cateto adyacente√
x20 + y2
0 − β22 , cateto opuesto β2
y la hipotenusa√
x20 + y2
0 , entonces tan (ϑ) = β2√x2
0+y2
0−β2
2
. La proyeccion del
movimiento de la articulacion d3 sobre el plano x0 − y0 es d3 cos(q2 − π2 ) =
d3 sen(q2) =√
x20 + y2
0 − β22. Ahora, tomando en cuenta la siguiente identidad
trigonometrica tan (ϑ + q1) = tan (ϑ)+tan (q1)1−tan (ϑ) tan (q1)
, se obtiene la expresion tan (q1) =
−x0β2+y0
√x2
0+y2
0−β2
y0β2+x0
√x2
0+y2
0−β2
2
. Por otro lado, se tiene que tan (q2 − π2 ) = z0−(l1+β1)√
x2
0+y2
0−β2
2
y para
d3 =√
x20 + y2
0 − β22 + [z0 − (l1 + β1)]2.
Figura 5.17 Cinematica inversa de la configuracion esferica.
La cinematica inversa de la configuracion esferica toma la siguiente forma:
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.4 Robot esferico (RRP) 251
q1 = atan
(−x0β2 + y0
√x2
0 + y20 − β2
y0β2 + x0
√x2
0 + y20 − β2
2
)(5.50)
q2 =π
2+ atan
(z0 − (l1 + β1)√
x20 + y2
0 − β22
)(5.51)
d3 =√
x20 + y2
0 − β22 + [z0 − (l1 + β1)]2 (5.52)
Funcion cinematica inversa robot esferico
La sintaxis de la funcion de cinematica inversa de la configuracion esferica es (ver
codigo en el cuadro 5.20); esta funcion retorna las coordenadas articulares.
[q1, q2, d3]=cinv esferico(β1, β2, l1, x0, y0, z0)
Codigo Fuente 5.20 cinv esferico.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinv esferico.m
function [q1, q2, d3]=cinv esferico(beta1,beta2,l1,x0,y0,z0)1
w1=y0.*sqrt(x0.*x0+y0.*y0-beta2*beta2)-x0*beta2;2
w2=x0.* sqrt(x0.*x0+y0.*y0-beta2*beta2)+y0*beta2;3
q1=atan(w1./w2);4
w3=z0-(l1+beta1);5
w4=sqrt(x0.*x0+y0.*y0-beta2*beta2);6
q2=pi/2+atan(w3./w4);7
d3=sqrt(x0.*x0+y0.*y0-beta2*beta2+(z0-(l1+beta1)).*(z0-(l1+beta1)));8
end9
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
252 Capıtulo 5: Cinematica directa cartesiana
♣♣♣ Ejemplo 5.5
Escribir un programa en lenguaje MATLAB que permita desplegar en forma
simbolica los parametros DH, matriz homogenea, cinematica cartesiana, jacobiano
y determinante del robot esferico. Ademas, programar una aplicacion donde el
extremo final del robot trace un conjunto de figuras circulares. El radio de cada
cırculo es r = 0.25 m, con centro en el plano (x0, y0) = (0.3,−0.3) m, cada cırculo
estara desplazado un milımetro sobre el eje z0 (de 0 a 100 mm).
Solucion
El programa que permite resolver el
problema planteado se encuentra en el
cuadro 5.21. La informacion simboli-
ca del robot esferico se encuentra en
las lıneas 4 a la 15 (parametros DH,
matriz homogenea, cinematica direc-
ta, jacobiano y determinante del robot
cilındrico).
La figura circular se encuentra imple-
mentada en la lınea 18 a la 24, con la
siguiente ecuacion:
x = xc + r sen(t)
y = yc + r cos(t)
z = kt
donde r es el radio del cırculo, t es la
evolucion del tiempo, k [mm/seg] es
una constante positiva que convierte
el tiempo a milımetros, las coordena-
das [xc, yc ]T = [ 0.3,−0.3]T m repre-
sentan el centro del cırculo en el plano
x0, y0 y el desplazamiento variable
esta dado por z. La lınea 25 convierte
las coordenadas cartesianas del cırcu-
lo a coordenadas articulares del ro-
bot usando la funcion cinv esferico.
La lınea 26 realiza la conversion de
coordenadas articulares a coordenadas
cartesianas del extremo final del ro-
bot (cinematica esferico). La figu-
ra 5.18 muestra el trazo realizado por
el extremo final del robot esferico (ver
lınea 27). .18
5.6.
Figura 5.18 Aplicacion del robot esferico.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.4 Robot esferico (RRP) 253
Codigo Fuente 5.21 cap5 esferico.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cap5 esferico.m
clc; clear all; close all;1
format short2
syms q1 q2 d3 beta1 beta2 l1 alpha1 alpha2 alpha3 real3
H30=H esferico();4
disp(’Transformacion homogenea del robot esferico’);5
disp(H30);6
[R30, cinemat esferico,cero, c]=H DH(H30);7
disp(’Matriz de rotacion’);8
disp(R30);9
disp(’cinematica directa’);10
disp(cinemat esferico);11
[x0, y0,z0]=cinematica esferico(beta1,beta2,l1,q1,q2,d3);12
disp([x0; y0;z0])13
jac esferico=jacobian([x0; y0;z0], [q1;q2;d3])14
det esferico=simplify(vpa(det(jac esferico),3))15
%ejemplo numerico16
l1=0.5; beta1=0.10; beta2=0.05;17
t=0:0.001:100; [n m]=size(t);18
%ecuacion del cırculo con centro en xc,yc y radio r19
xc=0.3; yc=-0.3; r=0.25;20
q1=[]; q2=[]; d3=[]; k=1;21
x=xc+r.*sin(t);22
y=yc+r.*cos(t);23
z=k*t;24
[q1, q2, d3]=cinv esferico(beta1,beta2,l1,x,y,z);25
[x0, y0,z0]=cinematica esferico(beta1,beta2,l1,q1,q2,d3);26
plot3(x0,y0,z0)27
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
254 Capıtulo 5: Cinematica directa cartesiana
5.5 Manipulador cilındrico (RPP)
La configuracion cilındrica tiene la articulacion de la base rotacional,
mientras que las articulaciones del hombro y codo son lineales o prismaticas.
Entre las aplicaciones mas importantes de los robots manipuladores en esta
configuracion se encuentran procesos para desbastar moldes, traslado de objetos,
ensamble de piezas en espacios horizontales y transporte de objetos. En la figura
5.19 se muestra la configuracion cilındrica.
Figura 5.19 Robot en configuracion cilındrica.
Cinematica directa cartesiana
El espacio de trabajo de la configuracion cilındrica que se muestra en la figura
5.21 tiene la forma de un cilindro hueco con radio directamente proporcional al
desplazamiento lineal d3 y altura variable d2. El origen del sistema de referencia
cartesiano fijo Σ0(x0, y0, z0) se ubica convenientemente en el piso, de tal forma que
la articulacion rotacional de la base se encuentra a una distancia l1 sobre el eje z0.
Este eje se alinea con el eje de rotacion del servomotor, de esta forma la variable
articular q1 gira alrededor del eje z0. El ancho del servomotor y espesor de las placas
metalicas que se utilizan para acoplar mecanicamente la siguiente articulacion se
encuentra expresado por el parametro geometrico β1. Note que el parametro l1
produce solo coordenadas positivas para z0, cuando este parametro es cero o el
origen de Σ0(x0, y0, z0) se coloca sobre la articulacion de la base, entonces puede
haber coordenadas negativas en z0.
El sistema Σ1(x1, y1, z1) sirve para medir la coordenada lineal d2 de la articulacion
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.5 Manipulador cilındrico (RPP) 255
del hombro, las coordenadas de Σ1(x1, y1, z1) con respecto al sistema Σ0(x0, y0, z0)
son: [ 0, 0, l1 + β1 ]T . El eje z1 se alinea con el desplazamiento lineal de la variable
d2 y los ejes z0 y z1 son paralelos entre sı. El sistema de referencia Σ1(x1, y1, z1) se
encuentra rotado un angulo q1 con respecto al sistema fijo Σ0(x0, y0, z0), la matriz
de rotacion que relaciona dicha rotacion entre estos dos sistemas de referencia es:
R10 = Rz0
( q1 ).
Figura 5.20 Espacio de trabajo del robot cilındrico.
La articulacion del codo tiene asociado el sistema de referencia Σ2(x2, y2, z2) para
medir el desplazamiento lineal de la variable d3. Este sistema se genera por rotar
un angulo −π2 radianes alrededor del eje x1, de tal forma que el eje z2 determina
el desplazamiento lineal d2. Note que una consecuencia de esta rotacion alrededor
del eje x1, es que el eje z2 queda alineado sobre el eje y1, de tal forma que para
q1 = 0, el desplazamiento lineal de d3 coincide sobre el eje y0. Debido a esto, para la
articulacion lineal del codo el angulo alrededor del eje z0 es q1 + π2 . Observe tambien
la direccion para coordenadas negativas del eje y2 coincide con la direccion positiva
de los ejes z0 y z1.
Las coordenadas del origen del sistema Σ2(x2, y2, z2) con respecto al sistema
Σ1(x1, y1, z1) son: [ 0, 0, l1 + β1 ]T . El eje z2 es perpendicular a los ejes z0 y z1. La
forma en que estan indicados los sistemas de referencia Σ0(x0, y0, z0), Σ1(x1, y1, z1)
y Σ2(x2, y2, z2) en la figura 5.21 determinan la posicion de casa del brazo robot en
configuracion cilındrica, es decir para esa configuracion de sistemas de referencia las
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
256 Capıtulo 5: Cinematica directa cartesiana
variables articulares tienen un valor de [ q1, d2, d3 ]T = [ 0, 0, l1 + β1 ]T . La variable
lineal de codo normalmente es calibrada para dar valor cero en z0 = l1 + β1,
desplazamientos mayores a esta longitud son positivos, o en caso contrario negativos.
Para otro tipo de posicion de casa, la cinematica directa del robot cilındrico adquiere
una forma cartesiana diferente.
Los parametros geometricos de espesor y ancho β2, β3 de los servomotores de las
articulaciones del hombro y codo son absorbidos como parte de las caracterısticas
mecanicas de sus articulaciones, por lo que no influyen directamente en la expresion
analıtica de la cinematica directa del brazo robot en configuracion cilındrica.
En la tabla 5.6 se muestran los parametros del robot manipulador en la configuracion
cilındrica.
Tabla 5.6 DH del robot cilındrico
Eslabon li αi di θi
1 0 0 l1 + β1 q1
2 0 -π2 d2 0
3 0 0 d3 0
Con la tabla 5.6 el robot en la configuracion cilındrica tiene las siguientes matrices
de transformacion homogenea:
H10 = HRz0
( q1 )HTz0(β1 + l1 ) HTx0
( 0 )HRx0( 0 )
=
⎡⎢⎢⎢⎣
cos(q1) − sen(q1) 0 0
sen(q1) cos(q1) 0 0
0 0 1 l1 + β1
0 0 0 1
⎤⎥⎥⎥⎦ (5.53)
H21 = HRz0
( 0 ) HTz0( d2 )HTx0
( 0 )HRx0(−pi
2 )
=
⎡⎢⎢⎢⎣
1 0 0 0
0 0 1 0
0 −1 0 d2
0 0 0 1
⎤⎥⎥⎥⎦ (5.54)
H32 = HRz0
( 0 ) HTz0( d3 )HTx0
( 0 )HRx0( 0 )
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.5 Manipulador cilındrico (RPP) 257
=
⎡⎢⎢⎢⎣
1 0 0 0
0 1 0 0
0 0 1 d3
0 0 0 1
⎤⎥⎥⎥⎦ (5.55)
H30 = H1
0H21H3
2
=
⎡⎣ cos(q1) 0 − sen(q1) − sen(q1)d3
sen(q1) 0 cos(q1) d3 cos(q1)
0 −1 0 l1 + β1 + d2
0 0 0 1
⎤⎦ (5.56)
El modelo de cinematica directa para el robot manipulador cilındrico esta dado de
la siguiente forma: ⎡⎢⎣
x
y
z
⎤⎥⎦ = fR(q) =
⎡⎢⎣−d3 sen(q1)
d3 cos(q1)
l1 + β1 + d2
⎤⎥⎦ (5.57)
Jacobiano del robot cilındrico
El jacobiano del brazo robot en configuracion cilındrica se expresa de la siguiente
forma:
J(q1, d2, d3) =∂fR(q)
∂q=
⎡⎢⎣− cos(q1)d3 0 − sen(q1)
−d3 sen(q1) 0 cos(q1)
0 1 0
⎤⎥⎦ (5.58)
cuyo determinante esta dado por:
det[J(q1, d2, d3)] = d3 (5.59)
la unica singularidad que presenta el brazo robot en configuracion cilındrica es
cuando la articulacion lineal del codo es d3 = 0, mientras que las variables q1, d2 ∈ IR
pueden tener cualquier valor. De ahı que es recomendable para algunas aplicaciones
donde se involucra la inversa de la matriz jacobiana que la variable articular lineal
d3 �= 0. En algunos robots este problema se evita insertando sensores, interruptores
o por programacion para deshabilitar el movimiento del robot cuando la articulacion
lineal d3 pasa por el origen del sistema Σ0(x0, y0, z0).
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
258 Capıtulo 5: Cinematica directa cartesiana
Funcion transformacion homogenea robot cilındrico
La funcion matriz de transformacion homogenea del brazo robot en configuracion
cilındrica tiene la siguiente sintaxis:
H30= H cilindrico()
retorna la matriz de transformacion homogenea H30 compuesta por la matriz de
rotacion R30 y la cinematica directa cartesiana fR(q) que relaciona las coordenadas
cartesianas del extremo final con las coordenadas articulares. Tambien despliega los
parametros Denavit-Hartenberg en forma simbolica que se muestran en la tabla 5.6.
El programa 5.22 contiene el codigo de la funcion transformacion homogenea.
Codigo Fuente 5.22 H cilindrico.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
H cilindrico.mfunction H=H cilindrico()1
syms q1 d2 d3 beta1 l1 alpha1 alpha2 alpha3 real2
disp(’Parametros Denavit-Hartenberg del robot cilındrico’);3
disp(’[ l alpha d q]’);4
dh=[0, 0, l1+beta1, q1; 0, -pi/2, d2, 0; 0, 0, d3, 0];5
disp(dh)6
%H1
0= HRz0
(q1)HTz0(l1 + β1)HTx0
(0)HRx0(0)7
H10=HRz(q1)*HTz(l1+beta1)*HTx(0)*HRx(0);8
%H2
1= HRz1
(0)HTz1(d2)HTx1
(0)HRx1(−π
2)9
H21=HRz(0)*HTz(d2)*HTx(0)*HRx(-pi/2);10
%H3
2= HRz2
(0)HTz2(d3)HTx2
(0)HRx2(0)11
H32=HRz(0)*HTz(d3)*HTx(0)*HRx(0);12
H30=simplify(H10*H21*H32); % H3
0= H1
0H2
1H3
213
[R30, cinemat cilindrico, cero, c]=H DH(H30);14
H=[R30, cinemat cilindrico;15
cero, c];16
end17
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.5 Manipulador cilındrico (RPP) 259
Funcion cinematica directa del robot cilındrico
La funcion de cinematica directa del brazo robot cilındrico esta por:
[x0, y0, z0]=cinematica cilindrico(β1, l1, q1, d2, d3)
donde q1, d2, d3 son las posiciones articulares de la base, hombro y codo,
respectivamente. Retorna las coordenadas cartesianas (x0, y0, z0) en el sistema
Σ0(x0, y0, z0). El cuadro 5.23 contiene el codigo en lenguaje MATLAB para la funcion
cinematica del robot cilındrico:
Codigo Fuente 5.23 cinematica cilindrico.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinematica cilindrico.m
function [x0, y0,z0]=cinematica cilindrico(beta1,l1,q1,d2,d3)1
dato1=whos(’beta1’); dato2=whos(’l1’); dato3=whos(’q1’);2
dato4=whos(’d2’); dato5=whos(’d3’); v1=strcmp(dato1.class, ’sym’);3
v2=strcmp(dato2.class, ’sym’); v3=strcmp(dato3.class, ’sym’);4
v4=strcmp(dato4.class, ’sym’); v5=strcmp(dato5.class, ’sym’); digits(3);5
if ( v1 & v2 & v3 & v4 & v5)% caso simbolico6
x0= -d3*sin(q1);7
y0= d3*cos(q1);8
z0=l1+beta1+d2;9
x0=vpa(x0); y0=vpa(y0); z0=vpa(z0);10
else%caso numerico11
x0= -d3.*sin(q1);12
y0= d3.*cos(q1);13
z0=l1+beta1+d2;14
end15
end16
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
260 Capıtulo 5: Cinematica directa cartesiana
Cinematica inversa
La cinematica inversa del brazo robot en configuracion cilındrica se obtiene de la
cinematica directa (5.57) de la siguiente forma: primero que nada, debe considerarse
que debido a que la posicion de casa [ q1, d2, d3 ]T = [ 0, 0, 0]T seleccionada para este
brazo robot se caracteriza por la articulacion del codo d3 esta alineada sobre el eje
y0 (los eje y0 y z2 coinciden cuando q1 = 0), entonces el desplazamiento rotacional
de la base alrededor del eje z0 es por un angulo q1 + π2 (ver figura 5.21). Por lo tanto,
se cumple: q1 + π2 = atan
(−x0
y0
).
La articulacion del hombro tiene un desplazamiento lineal sobre el eje z0, entonces
d2 = z0 − (l1 + β1). La articulacion del codo d3 proyecta su movimiento sobre el
plano x0 − y0, por lo que puede tomar dos posibles soluciones: d3 = ±√
x20 + y2
0.
Figura 5.21 Cinematica inversa del robot cilındrico.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.5 Manipulador cilındrico (RPP) 261
La cinematica inversa del brazo robot en configuracion cilındrica esta dada como:
q1 = −π
2+ atan
(−x0
y0
)(5.60)
d2 = z0 − (l1 + β1) (5.61)
d3 = ±√
x20 + y2
0 (5.62)
Funcion cinematica inversa robot cilındrico
La funcion de cinematica inversa del robot cilındrico convierte las coordenadas
cartesianas del extremo final (x0, y0, z0) en funcion de las coordenadas articulares
(q1, d2, d3) con la siguiente sintaxis:
[q1, d2, d3]=cinv cilindrico(β1, l1, x0, y0, z0)
donde β1, l1 son los parametros geometricos, x0, y0, z0 son las coordenadas
cartesianas del extremo final. Esta funcion retorna las coordenadas articulares
q1, d2, d3 de la base, hombro y codo, respectivamente. El cuadro 5.24 contiene la
implementacion de la funcion cinematica inversa del brazo robot cilındrico.
Codigo Fuente 5.24 cinv cilindrico.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinv cilindrico.m
function [q1, d2,d3]=cinv cilindrico(beta1,l1,x0,y0,z0)1
q1= -pi/2+atan(-x0./y0);2
d2=z0-(l1+beta1);3
d3= sqrt(x0.*x0+y0.*y0);4
end5
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
262 Capıtulo 5: Cinematica directa cartesiana
♣♣♣ Ejemplo 5.6
Escribir un programa en lenguaje MATLAB que permita desplegar en forma
simbolica los parametros DH, cinematica cartesiana, jacobiano y determinante
del robot cilındrico. Asimismo programar una aplicacion donde el extremo final
del robot realice el trazo de una rosa polar con centro en [ 0.3,−0.3, 0.5] y radio
r = 0.15.
Solucion
El desplegado simbolico de los parame-
tros DH, cinematica directa y jaco-
biano del robot cilındrico se encuen-
tra en el cuadro 5.25. En la lınea 4
se obtiene la matriz de transformacion
homogenea H30 utilizando la funcion
H cilindrico(). La matriz de trans-
formacion homogenea H30 se utiliza co-
mo argumento de entrada en la fun-
cion D HD(H30) para obtener la matriz
de rotacion R30 y la cinematica directa
(lınea 5). El jacobiano y su determi-
nante se despliegan en las lıneas 11 y
12, respectivamente.
La figura “rosa polar”tiene la siguiente
ecuacion:
r = 0.05 + 0.1 sen(t)
x = xc + r sen(t)
y = yc + r cos(t)
z = l1 + β1 + 0.05
donde las coordendas [xc, yc, z ]T son
el centro de la figura (ver lıneas 19-
22), l1 + β1 = 0.45 El vector tiem-
po es de 0 a 100 segundos, con in-
crementos de un milisegundo. Las
coordenadas cartesianas de la ro-
sa polar son convertidas a coorde-
nadas articulares usando la funcion
cinv cilindrico(β1, l1, x, y, z) (ver
lınea 24). La lınea 26 contiene la con-
version de coordenadas cartesianas
del extremo final del robot a coorde-
nadas articulares usando la funcion
cinematica cilindrico(q1, d2, d3).
La lınea 27 exhibe la figura 5.22 tra-
zada por el robot cilındrico.
Figura 5.22 Aplicacion del robot cilındrico.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.5 Manipulador cilındrico (RPP) 263
Codigo Fuente 5.25 cap5 cilındrico.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cap5 cilındrico.m
clc; clear all; close all;1
format short2
syms q1 d2 d3 beta1 l1 alpha1 alpha2 alpha3 real3
H30=H cilindrico(); disp(’Transformacion homogenea del robot cilındrico’);4
[R30, cinemat cilindrico,cero, c]=H DH(H30);5
disp(’Matriz de rotacion’);6
disp(R30);7
disp(’cinematica directa’); disp(cinemat cilindrico);8
[x0, y0,z0]=cinematica cilindrico(beta1,l1,q1,d2,d3);9
disp([x0; y0;z0])10
jac cilindrico=jacobian([x0;y0;z0], [q1;d2;d3])11
det cilindrico=simplify(vpa(det(jac cilindrico),3))12
%ejemplo numerico13
t=0:0.001:100;14
%ecuacion de la rosa polar con centro en (xc,yc) y radio r15
xc=0.3; yc=-0.3; beta1=0.05; l1=0.40;16
q1=[]; d2=[]; d3=[]; r=0.2;17
[n m]=size(t);18
r=0.05+0.1*sin(t);19
x=xc+r.*sin(t);20
y=yc+r.*cos(t);21
z(1:m)=l1+beta1+0.05;22
%conversion de coordenadas cartesianas a coordenadas articulares del robot23
[q1, d2, d3]=cinv cilindrico(beta1,l1,x,y,z);24
%coordenadas cartesianas del extremo final del robot25
[x0, y0,z0]=cinematica cilindrico(beta1,l1,q1,d2,d3);26
plot3(x0,y0,z0)%trayectoria trazada por el robot27
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
264 Capıtulo 5: Cinematica directa cartesiana
5.6 Configuracion cartesiana (PPP)
Los robots manipuladores que incluyen sus tres primeras articulaciones del tipo
prismatico o lineales se denominan robots cartesianos, tambien conocidos
como robots porticos o lineales, por lo que no tienen articulaciones rotacionales.
Existen varias aplicaciones de los robots cartesianos, entre ellas: corte de mascarillas,
graficadores o plotters, taladros automaticos, mesas de medicion de coordenadas
como la que se muestra la figura 5.23, impresoras laser o de matriz son otros ejemplos
de robots cartesianos con 2 gdl.
Figura 5.23 Robot cartesiano.
Particularmente, la configuracion cartesiana facilita la programacion del extremo
final del robot y sus potenciales aplicaciones, ya que la cinematica directa es un
mapa lineal entre coordenadas articulares y cartesianas. Sin embargo, la estructura
mecanica del robot cartesiano presenta baja destreza de movilidad comparado con la
configuracion antropomorfica debido a que todas sus articulaciones son prismaticas.
Cinematica cartesiana
En la figura 5.24 se muestra el espacio de trabajo del robot cartesiano, tiene forma
de un paralelepıpedo recto. El sistema de referencia cartesiano fijo Σ0(x0, y0, z0) se
selecciona de manera conveniente. El eje z0 determina el desplazamiento lineal de
la primera articulacion prismatica d1, el origen del sistema Σ0(x0, y0, z0) se ubica
en [ 0, 0, l1 ] siendo l1 una longitud con respecto al nivel del piso, l1 representa la
longitud de las barras del robot cartesiano. Los ejes x0 y y0 quedan alineados por la
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.6 Configuracion cartesiana (PPP) 265
regla de la mano derecha. El siguiente sistema de referencia Σ1(x1, y1, z1) se obtiene
rotando el eje x0 un angulo α1 = −π2 , quedando el eje z1 en direccion positiva de
la variable d2. Observe que el eje y1 apunta en direccion negativa del eje z0 y el eje
x1 es paralelo al eje x0, separado evidentemente por la dimension fısica de la mesa
cartesiana denotada por la longitud l2. El sistema Σ2(x2, y2, z2) sirve para medir el
desplazamiento lineal de la variable articular d3. Sin embargo, la obtencion de este
tercer sistema de referencia no es trivial, ya que no se puede deducir directamente
del sistema Σ1(x1, y1, z1) debido a que no existe un angulo α2 alrededor del eje x1
que genere directamente el sistema de referencia Σ2(x2, y2, z2).
Figura 5.24 Espacio de trabajo del robot cartesiano.
Para obtener el sistema de referencia Σ2(x2, y2, z2), primero se emplea un sistema
de referencia auxiliar denominado Σ2a(x2a, y2a, z2a) el cual se obtiene realizando
una rotacion de 90 grados con respecto al eje z1, esta rotacion hace que el eje x2a
permanezca paralelo al eje y1. Debe observarse que los ejes z1 y z2a son paralelos
entre sı de tal manera que sus coordenadas (d2) entre estos ejes sean identicas. El
origen del sistema de referencia auxiliar Σ2a(x2a, y2a, z2a) es el mismo que el sistema
de referencia Σ1(x1, y1, z1), pero el sistema Σ2a(x2a, y2a, z2a) mantiene una rotacion
relativa al sistema Σ1(x1, y1, z1) expresada por la matriz rotacion Rz1( π
2 ), es decir:⎡⎢⎣
x2a
y2a
z2a
⎤⎥⎦ = RT
z1( π
2 )
⎡⎢⎣
x2
y2
z2
⎤⎥⎦
Posteriormente, girando un angulo α2 = π2 alrededor del eje x2a se obtiene el sistema
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
266 Capıtulo 5: Cinematica directa cartesiana
de referencia Σ2(x2, y2, z2) donde la articulacion prismatica d3 se mueve linealmente
sobre el eje z2. Esta ultima rotacion α2 alrededor del eje x2 determina el angulo
entre los ejes z2 y z1. Los ejes z0, z1 y z2 son mutuamente perpendiculares entre sı.
En la figura 5.25 se muestra la secuencia de rotaciones. El paso 1 corresponde al
sistema fijo Σ0(x0, y0, z0), rotando un angulo α1 = −π2 alrededor del eje x0 genera el
sistema Σ1(x1, y1, z1). El paso 2 consiste en rotar por un angulo π2 alrededor del eje
z1 para generar el sistema de referencia Σ2a(x2a, y2a, z2a), este sistema es auxiliar y
sirve para generar el sistema Σ2(x2, y2, z2). Para eso el paso 3 consiste en rotar un
angulo α2 = −π2 alrededor del eje x2a.
Figura 5.25 Sistemas de referencia del robot cartesiano.
La tabla de parametros del robot manipulador de 3 gdl en configuracion cartesiana
queda de la siguiente forma:
Tabla 5.7 Parametros Denavit-Hartenberg para el robot cartesiano de 3 gdl
Eslabon li αi di θi
1 0 -π2 d1 0
2 0 -π2 d2 0
3 0 0 d3 0
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.6 Configuracion cartesiana (PPP) 267
La matriz de transformacion homogenea para la primera articulacion toma la
siguiente forma:
H10 = HRz0
( 0 )HTz0( d1 )HTx0
( 0 )HRx0(−π
2 )
=
⎡⎢⎢⎢⎣
1 0 0 0
0 0 1 0
0 −1 0 d1
0 0 0 1
⎤⎥⎥⎥⎦ (5.63)
H21 = HRz1
( 0 )HTz1( d2 )HTx1
( 0 )HTx1(−π
2 )
=
⎡⎢⎢⎢⎣
1 0 0 0
0 0 1 0
0 −1 0 d2
0 0 0 1
⎤⎥⎥⎥⎦ (5.64)
H2a = HRz1( π
2 )T H21
= HRz1( π
2 )T HRz1( 0 )HTz2
( d2 )HTx1( 0 ) HTx1
(−π2 )︸ ︷︷ ︸
H2
1
=
⎡⎢⎢⎢⎣
0 −1 0 0
1 0 0 0
0 0 1 0
0 0 0 1
⎤⎥⎥⎥⎦⎡⎢⎢⎢⎣
1 0 0 0
0 0 1 0
0 −1 0 d2
0 0 0 1
⎤⎥⎥⎥⎦ =
⎡⎢⎢⎢⎣
0 0 1 0
−1 0 0 0
0 −1 0 d2
0 0 0 1
⎤⎥⎥⎥⎦ (5.65)
H32 = HRz2
( 0 )HTz2( d3 )HTx2
( 0 )HTx2( 0 ) =
⎡⎢⎢⎢⎣
1 0 0 0
0 1 0 0
0 0 1 d3
0 0 0 1
⎤⎥⎥⎥⎦ (5.66)
H30 = H1
0 RTz, π
2
H21︸ ︷︷ ︸
H2a
H32 =
⎡⎢⎢⎢⎣
0 0 1 d3
0 −1 0 d2
1 0 0 d1
0 0 0 1
⎤⎥⎥⎥⎦
La cinematica directa del robot cartesiano esta dado por:⎡⎢⎣x0
y0
z0
⎤⎥⎦ =
⎡⎢⎣ d3
d2
d1
⎤⎥⎦ (5.67)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
268 Capıtulo 5: Cinematica directa cartesiana
Jacobiano del robot cartesiano
La matriz jacobiano del robot cartesiano esta dado por:
J(d3, d2, d1) =∂fR(q)
∂q=
⎡⎢⎣
1 0 0
0 1 0
0 0 1
⎤⎥⎦ (5.68)
cuyo determinante es unitario det[J(d3, d2, d1)] = 1.
La configuracion cartesiana ofrece ventajas debido que no tiene singularidades.
Funcion transformacion homogenea robot cartesiano
La sintaxis de la funcion transformacion homogenea del brazo robot cartesiano es:
H30=H cartesiano()
esta funcion retorna la matriz de transformacion homogenea H30 compuesta por
la matriz de rotacion R30 que describe la rotacion del extremo final del robot con
respecto al sistema fijo Σ0(x0, y0, z0) y la cinematica directa cartesiana fR(q) que
relaciona las coordenadas articulares. Ademas, tambien despliega los parametros
Denavit-Hartenberg en forma simbolica de la tabla 5.7.
El programa 5.26 contiene el codigo MATLAB de la funcion transformacion
homogenea del robot cartesiano. Utiliza las matrices de transformacion homogeneas
de rotacion HRz( qi ) y traslacion HTz
( d ) para el calculo de cada una de las
matrices homogeneas de las articulaciones: H10 , H2
1 , H32 . Tambien emplea la funcion
H DH(H30) para obtener la matriz de rotacion R30 y la cinematica directa cartesiana
fR(d1, d2, d3).
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.6 Configuracion cartesiana (PPP) 269
Codigo Fuente 5.26 H cartesiano.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
H cartesiano.m
function H=H cartesiano()1
syms l1 l2 l3 d1 d2 d3 alpha1 alpha2 alpha3 real2
disp(’Parametros Denavit-Hartenberg del robot cartesiano’)3
disp(’[ l alpha d q]’)4
dh=[0, -pi/2, d1, 0; 0, -pi/2, d2, 0; 0, 0, d3, 0];5
%despliega tabla de parametros DH6
disp(dh)7
%calculo de las matrices de transformacion homogenea de cada articulacion8
%H10 = HRz0
( 0 )HTz0( d1 )HTx0
( 0 )HRx0(−π
2 )9
H10=HRz(0)*HTz(d1)*HTx(0)*HRx(-pi/2);10
%H21 = HRz1
( 0 )HTz1( d2 )HTx1
( 0 )HTx1(−π
2 )11
H21=HRz(0)*HTz(d2)*HTx(0)*HRx(-pi/2);12
%H21a = HRz1
( π2 )
TH2
113
H21a=simplify((HRz(pi/2))’*H21);14
%H32 = HRz2
( 0 )HTz2( d3 )HTx2
( 0 )HTx2( 0 )15
H32=HRz(0)*HTz(d3)*HTx(0)*HRx(0);16
%H30 = H1
0H21aH3
217
H30=simplify(H10*H21a*H32);18
%matriz de rotacion R30 y cinematica directa fR(d1, d2, d3)19
[R30, cinemat cartesiano, cero, c]=H DH(H30);20
%Forma la matriz de transformacion homogenea del robot cartesiano21
% H =
[R3
0 fR(d1, d2, d3)
0T 1
]22
H=[R30, cinemat cartesiano;23
cero, c];24
end25
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
270 Capıtulo 5: Cinematica directa cartesiana
Funcion cinematica directa del robot cartesiano
La sintaxis de la funcion de cinematica directa de la configuracion cartesiana es:
[x0, y0, z0]=cinematica cartesiano(d3, d2, d1)
donde d3, d2, 13 son las posiciones articulares del robot en configuracion cartesiana.
Esta funcion retorna las coordenadas cartesianas (x0, y0, z0) en el sistema
Σ0(x0, y0, z0). El cuadro 5.27 contiene funcion cinematica del robot cartesiano.
Codigo Fuente 5.27 cinematica cartesiano.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinematica cartesiano.m
function [x0, y0, z0]=cinematica cartesiano(d3,d2,d1)1
dato1=whos(’d1’); dato2=whos(’d2’); dato3=whos(’d3’);2
v1=strcmp(dato1.class, ’sym’); v2=strcmp(dato2.class, ’sym’);3
v3=strcmp(dato3.class, ’sym’); digits(3);4
if ( v1 & v2 & v3)%caso simbolico5
x0=d3; y0=d2; z0=d1; x0=vpa(x0); y0=vpa(y0); z0=vpa(z0);6
else%caso numerico7
x0=d3; y0=d2; z0=d1;8
end9
end10
Funcion cinematica inversa robot cartesiano
La funcion de cinematica inversa del robot cartesiano convierte las coordenadas
cartesianas del extremo final (x0, y0, z0) en el sistema Σ0(x0, y0, z0) a las coordenadas
articulares (d1, d2, d3), bajo la siguiente sintaxis:
[d3, d2, d1]=cinv cartesiano(x0, y0, z0)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.6 Configuracion cartesiana (PPP) 271
Esta funcion retorna las coordenadas articulares. El cuadro 5.28 contiene el codigo
de la cinematica inversa del robot cartesiano:
Codigo Fuente 5.28 cinv cartesiano.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cinv cartesiano.m
function [d3, d2, d1]=cinv cartesiano(x0,y0,z0)1
d3=x0; d2=y0; d1=z0;;2
end3
♣♣♣ Ejemplo 5.7
Escribir un programa en lenguaje MATLAB que permita desplegar en forma
simbolica los parametros DH, cinematica directa y el jacobiano del robot
cartesiano. Ademas, implementar una aplicacion donde el extremo final del robot
trace una rosa polar, con centro en [ 0.3,−0.3, 0.5]T m y radio r = 0.1 m.
Solucion
El programa que se presenta en el
cuadro 5.29 permite desplegar en for-
ma simbolica los parametros DH, ci-
nematica directa, jacobiano del robot
cartesiano y matriz de transformacion
homogenea H30 . De la lınea 19 a la 25
se obtienen las coordenadas cartesia-
nas de la figura rosa polar, dichas coor-
denadas son trazadas por el extremo
final del robot como se indica en la fi-
gura 5.26. Figura 5.26 Rosa polar.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
272 Capıtulo 5: Cinematica directa cartesiana
Codigo Fuente 5.29 cap5 cartesiano.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 5 Cinematica directa cartesiana.
cap5 cartesiano.m
clc;1
clear all;2
close all;3
format short4
syms d1 d2 d3 alpha1 alpha2 alpha3 real5
H30=H cartesiano();6
disp(’Transformacion homogenea del robot cartesiano’); disp(H30);7
[R30, cinemat cartesiano,cero, c]=H DH(H30);8
disp(’Matriz de rotacion’); disp(R30);9
disp(’cinematica directa’);10
disp(cinemat cartesiano);11
[x0, y0,z0]=cinematica cartesiano(d3,d2,d1);12
disp([x0; y0;z0])13
jac cartesiano=jacobian([x0;y0;z0], [d3;d2;d1])14
det cartesiano=simplify(vpa(det(jac cartesiano),3))15
%ejemplo numerico16
t=0:0.001:100;17
%ecuacion de la flor con 8 petalos centro en xc,yc y radio r18
xc=0.3; yc=-0.3 ;19
d1=[]; d2=[]; d3=[]; r=0.2;20
[n m]=size(t);21
r=0.1*cos(pi*t);22
x=xc+r.*sin(t);23
y=yc+r.*cos(t);24
z(1:m)=0.5 ;25
[d3, d2, d1]=cinv cartesiano(x,y,z);26
[x0, y0,z0]=cinematica cartesiano(d3,d2,d1);27
plot3(x0,y0,z0)28
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.7 Resumen 273
5.7 Resumen
Cinematica directa cartesiana de robots manipuladores permite una descrip-
cion entre las coordenadas cartesianas del extremo final del robot manipulador
y las coordenadas articulares. La convencion Denavit-Hartenberg es una herramien-
ta de la ingenierıa de suma utilidad para la obtencion del modelo de cinematica
directa de robots manipuladores la cual establece que la matriz de transformacion
homogenea de la i-esima articulacion se compone de 4 parametros: li es la longitud
de los eslabones, αi el angulo que hay entre el eje zi−1 y zi, di es el desplazamiento
lineal sobre el eje zi−1; cuando la i-esima articulacion no es prismatica o lineal, en-
tonces di representa el ancho del servomotor y espesor de la placa metalica, en este
caso se especifica por βi. Para articulaciones rotacionales alrededor del eje zi−1 se
denota por qi.
De acuerdo al analisis de cinematica directa cartesiana para cada configuracion de
robots industriales (antropomorfica, SCARA, esferico, cilındrico y cartesiano), se han
desarrollado un conjunto de librerıas de cinematica directa de robots manipuladores
para MATLAB (toolbox) que permiten obtener los parametros Denavit-Hartenberg,
la matriz homogenea, cinematica directa, matriz jacobiano y su determinante en
funcion de los parametros geometricos como longitudes li y tambien tomando en
cuenta el ancho de la i-esima articulacion y espesor de la placa metalica (βi) que se
emplea para acoplar mecanicamente la siguiente articulacion del robot.
Este conjunto de librerıas tienen la ventaja de trabajar en forma simbolica, ya
que despliegan no solo las ecuaciones de cinematica, tambien permiten realizar
aplicaciones numericas como manejo de coordenadas con valores especıficos o
trayectorias de curvas para que el extremo final del robot pueda trazarlas.
La programacion indistinta en lenguaje MATLAB de variables simbolicas y
numericas resulta de gran utilidad sobre todo en el analisis cinematico, planeacion
de trayectorias, guiado del robot en su espacio de trabajo y deteccion de puntos
singulares en la cinematica diferencial o en procesos donde involucra la matriz inversa
del jacobiano del robot.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
274 Capıtulo 5: Cinematica directa cartesiana
En el sitio WEB del libro se encuentran disponibles todos los programas fuentes en
MATLAB de las funciones de cinematica cartesiana, matrices de transformacion
homogenea, cinematica inversa, jacobianos y determinantes, ası como diversas
aplicaciones de las configuraciones analizadas de robots manipuladores.
Para una rapida identificacion de las librerıas desarrolladas, a continuacion se resume
la sintaxis del conjunto de funciones para cinematica directa cartesiana con pase de
parametros de entrada y datos que retorna de cada las configuraciones de robots
manipuladores analizados.
La tabla 5.8 contiene la descripcion de funciones de cinematica para la configuracion
antropomorfica considerando los casos de estudio del pendulo robot, robot planar
vertical de 2 gdl y robot con movimiento tridimensional en su espacio de trabajo (3
gdl).
Tabla 5.8 Configuracion antropomorfico
Funcion Sintaxis
Pendulo
H10=H pendulo()
[x0, y0, z0]=cinematica pendulo(β1, l1, q1)
q1=cinv pendulo(x0, y0)
Robot antropomorfico ver-
tical planar de 2 gdl
H20=H r2gdl()
[x0, y0, z0]=cinematica r2gdl(β1, l1, q1, β2, l2, q2)
J(q1, q2)=jacobiano r2gdl(β1, l1, q1, β2, l2, q2)
det[J(q1, q2)]=det jac r2gdl(β1, l1, q1, β2, l2, q2)
[q1, q2]=cinv r2gdl(l1, l2, x0, y0)
Robot antropomorfico de 3
gdl
H30=H r3gdl()
[x0, y0, z0]=cinematica r3gdl(β1, l1, q1, β2, l2, q2, β3, l3, q3)
J(q1, q2, q3)=jacobiano r3gdl(β1, l1, q1, β2, l2, q2, q3)
det[J(q1, q2, q3)]=detjac r3gdl(β1, l1, q1, β2, l2, q2, q3)
[q1, q2, q3]=cinv r3gdl(β2, β3, l2, l3, x0, y0, z0)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
5.7 Resumen 275
En la tabla 5.9 se resume las funciones de transformacion homogenea H30 , cinematica
directa, cinematica inversa, matriz jacobiano y su determinante del brazo robot en
configuracion SCARA.
Tabla 5.9 Configuracion SCARA
Funcion Sintaxis
Matriz de transformacion
homogeneaH3
0=H SCARA()
Cinematica directa[x0, y0, z0]=cinematica SCARA(β1, β2, l1, l2, l3, q1, q2, d3)
Jacobiano J(q1, q2, d3)=jacobiano SCARA(β1, l1, q1, β2, l2, q2)
Determinante del jaco-
bianodet[J(q1, q2, d3)]=detjac SCARA(β1, l1, q1, β2, l2, q2)
Cinematica inversa [d3, q2, q1]=cinv SCARA(β1, β2, l1, l2, l3, x0, y0, z0)
El conjunto de librerıas para la configuracion esferica se presenta en la tabla 5.10.
Tabla 5.10 Configuracion esferica
Funcion Sintaxis
Matriz de transformacion
homogeneaH3
0= H esferico()
Cinematica directa [x0, y0, z0]=cinematica esferico(β1, β2, l1, q1, q2, d3)
JacobianoJ(q1, q2, d3)=jacobiano esferico(β1, l1, q1, β2, l2, q2)
Determinante del jaco-
biano
det[J(q1, q2, d3)]=detjac esferico(β1, l1, q1, β2, l2, q2)
Cinematica inversa [q1, q2, d3]=cinv esferico(β1, β2, l1, x0, y0, z0)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
276 Capıtulo 5: Cinematica directa cartesiana
La tabla 5.11 contiene las librerıas del brazo robot en configuracion cilındrica.
Tabla 5.11 Configuracion cilındrica
Funcion Sintaxis
Matriz de transformacion
homogeneaH3
0= H cilindrico()
Cinematica directa [x0, y0, z0]=cinematica cilindrico(β1, l1, q1, d2, d3)
JacobianoJ(q1, q2, d3)=jacobiano cilindrico(β1, l1, q1, β2, l2, q2)
Determinante del jaco-
bianodet[J(q1, q2, d3)]=detjac cilindrico(β1, l1, q1, β2, l2, q2)
Cinematica inversa [q1, d2, d3]=cinv cilindrico(β1, l1, x0, y0, z0)
Para el caso del brazo robot cartesiano, las librerıas que corresponde a esta
configuracion se encuentran en la tabla 5.12. La cinematica directa resulta muy
simple debido a que su cinematica es lineal: [ x0 y0 z0 ]T = [ d1 d2 d3 ]T , por
lo que el jacobiano es la matriz identidad y su determinante es unitario, es decir:
det[J(d1, d2, d3)] = 1. La cinematica inversa tambien es lineal [ d1 d2 d3 ]T =
[x0 y0 z0 ]T .
Tabla 5.12 Configuracion cartesiana
Funcion Sintaxis
Matriz de transformacion
homogeneaH3
0= H cartesiano()
Cinematica directa [x0, y0, z0]=cinematica cartesiano(d3, d2, d1)
Cinematica inversa [d3, d2, d1]=cinv cartesiano(x0, y0, z0)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte II: Referencias selectas 277
Parte II: Referencias selectas
Existe una extensa literatura sobre la cinematica directa de robots manipula-
dores. Particularmente se recomienda al lector la siguiente bibliografıa:
J. Denavit & R.S. Hartenberg.
“A kinematic notation for lower-pair mechanisms based on matrices”.
Trans ASME J. Appl. Mech, 23:215-221,1955
R.S. Hartenberg & J. Denavit. “Kinematic synthesis of linkages”.
McGraw-Hill, New York, NY, 1964.
R.M. Murray, Z. Li and S.S. Sastry.
“A mathematical introduction to robotic manipulation”. CRC
Press (1994).
Lorenzo Sciavicco & Bruno Siciliano.
“Modeling and control for robot manipulators”. McGraw Hill
International Editions. 1996.
Mark W. Spong and Seth Hutchinson, M. Vidyasagar.
“Robot modeling and control”. John Wiley and Sons, Inc. 2006.
John J. Craig. “Robotica”. Tercera edicion. Pearson Prentice-Hall.
2006.
Fernando Reyes. “Robotica: control de robots manipuladores ”.
Editorial Alfaomega, 2011.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
278 Capıtulo 5: Cinematica directa cartesiana
Parte II: Problemas propuestos
En esta seccion se presenta una serie de ejercicios con la finalidad de que el lector
mejore sus conocimientos sobre metodos numericos.
Capıtulo 3 Preliminares matematicos
3.1 Considere los siguientes vectores:
x =
⎡⎢⎣x0
y0
z0
⎤⎥⎦ y =
⎡⎢⎣ 8
10.2
3.12
⎤⎥⎦
Realizar un programa en MATLAB para obtener:
(a) La norma euclidiana de cada vector.
(b) El producto punto: x · y.
(c) Calcular el angulo θ que existe entre los vectores.
Realice la programacion considerando variables simbolicas y aspectos
numericos.
3.2 Considere las siguientes coordenadas en el sistema de referencia Σ0(x0, y0, z0)⎡⎢⎣x0
y0
z0
⎤⎥⎦ =
⎡⎢⎣ 8
10.2
3.12
⎤⎥⎦
Realizar un programa en MATLAB que realice las siguientes rotaciones:
(a) Alrededor del eje z0 por un angulo π2 .
(b) Alrededor del eje x0 por un angulo −π2 .
(c) Alrededor del eje y0 por un angulo 34π
Analice y discuta sus resultados.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte II: Problemas propuestos 279
3.3 Sea Ry( θ ) ∈ SO(3) una matriz ortogonal donde θ ∈ IR es el angulo de
rotacion alrededor del eje y. Implementar el codigo MATLAB correspondiente
para comprobar las siguientes propiedades (usar programacion simbolica y
numerica):
(a) Ry( 0 ) = I , I ∈ IR3×3 es la matriz identidad.
(b) Ry( θ )Ry(β ) = Ry(β )Ry( θ ) = Ry( θ + β ) = Ry( β + θ ).
(c) R−1y (θ) = Ry(−θ )
(d) RTy ( θ ) = R−1
y (θ).
(e) Ry( θ )RTy ( θ ) = RT
y ( θ )Ry( θ ) = I .
(f) det[Ry( θ )] = 1 si el sistema de referencia Σ0(x0, y0, z0) es seleccionado
por la regla de la mano derecha, en otro caso det[Ry( θ )] = −1
3.4 Describir el significado de una matriz de rotacion.
3.5 Describir el significado de una matriz homogenea.
3.6 ¿Cuales son las principales propiedades de una matriz homogenea?
Capıtulo 4 Cinematica
4.1 ¿Como define cinematica?
4.2 ¿Que es cinematica directa?
4.3 ¿Cuales son las caracterısticas principales de la cinematica directa?
4.4 ¿Que es cinematica inversa? Explicar claramente su funcion principal.
4.5 Explicar el concepto de cinematica diferencial.
4.6 ¿Que es el jacobiano del robot?
4.7 ¿Cual es la diferencia que existe entre el jacobiano analıtico con el geometrico?
4.8 Explicar el concepto de posicion y rotacion de robots manipuladores.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
280 Capıtulo 5: Cinematica directa cartesiana
4.9 Explicar el significado de una singularidad.
4.10 Explicar el concepto de posicion de casa de un robot manipulador.
4.11 ¿Cual es la diferencia entre rotacion y orientacion?
4.12 ¿Por que la expresion analıtica de la cinematica directa depende de la posicion
de casa?
4.13 ¿Cuales son los tipos de robots industriales que existen?
4.14 Explicar cinco aplicaciones para cada una de las configuraciones: antropomorfi-
ca, SCARA, esferica, cilındrica y cartesiana.
4.15 ¿Que robot representa mayores ventajas?
4.16 Desde el punto de vista mecanico, ¿que tipo de robot presenta mayor
complejidad?
4.17 Explicar las ventajas que presenta la convencion Denavit-Hartenberg.
4.18 Describir los parametros de analisis que presenta la convencion Denavit-
Hartenberg.
4.19 De manera general, se requieren seis coordenadas para posicionar y orientar
el extremo final del robot en el espacio tridimensional: ¿Por que la convencion
Denavit-Hartenberg solo utiliza cuatro parametros?
4.20 ¿Cuales son las principales hipotesis que debe satisfacer la convencion Denavit-
Hartenberg?
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte II: Problemas propuestos 281
Capıtulo 5 Cinematica directa cartesiana
5.1 Considere un sistema mecatronico denominado centrıfuga como el que se
muestra en en la figura 5.27.
Figura 5.27 Centrıfuga.
Obtener:
(a) La tabla de parametros DH.
(b) La matriz homogenea.
(c) Cinematica directa.
(d) Cinematica inversa.
Asimismo, realizar un programa que despliegue en forma simbolica los
anteriores incisos.
5.2 Considere el robot manipulador en configuracion cartesiana. Suponga que se
selecciona el sistema de referencia fijo Σ0(x0, y0, z0) de tal forma que el eje z0
determina el desplazamiento de la variable d1 como se muestra en la figura
5.28.
Llevar a cabo los pasos necesarios en los respectivos sistemas de referencia
Σ0(x0, y0, z0), Σ1(x1, y1, z1), Σ2(x2, y2, z2) para obtener el modelo de cinemati-
ca directa. ¿En este caso se requiere un sistema auxiliar Σ2a(x2a, y2a, z2a)?
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
282 Capıtulo 5: Cinematica directa cartesiana
¿Este procedimiento presenta alguna ventaja con el desarrollado en la seccion
5.6 del robot cartesiano?
Figura 5.28 Robot cartesiano.
Del procedimiento obtenido, deducir el jacobiano del robot.
5.3 Considere un robot industrial en la configuracion antropomorfica; desarrolle
un programa en MATLAB para que el extremo final del robot trace una rosa
polar de 12 petalos con centro en [ 0.3,−0.3, 0.5]m.
5.4 Desarrollar un programa en MATLAB para que el extremo final de un
brazo robot en la configuracion SCARA trace la palabra ROBOT en
estilo caligrafico. Dicha palabra debera iniciar en las siguientes coordenadas:
[x0, y0, z0 ]T = [ 0.3, 0.5, 0.2] m. La longitud y altura de la palabra es propuesta
por el usuario.
5.5 Desarrollar un programa en MATLAB para que el extremo final de un brazo
robot en la configuracion cilındrica trace la palabra HOLA en estilo italizada.
Dicho trazo debera empezar en las siguientes coordenadas: [x0, y0, z0 ]T =
[ 0.4, 0.7, 0.8] m.
5.6 Desarrollar un programa en MATLAB para que el extremo final de un
brazo robot en la configuracion esferica trace la palabra HOLA con tipo de
letra romana. Dicha palabra debera comenzar en las siguientes coordenadas:
[x0, y0, z0 ]T = [ 0.35, 0.6, 0.2] m.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte III
Dinamica
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
La Dinamica como area de las ciencias exactas permite explicar todos los fenomenos
fısicos de un sistema mecatronico o robot manipulador y llevar a cabo procesos de
simulacion. Bajo esta tematica se ubican los objetivos de la Parte III compuesta
por dos capıtulos: Capıtulo 6 Dinamica, presenta la tecnica de simulacion para
sistemas mecatronicos y robots manipuladores en base a una ecuacion diferencial
ordinaria de primer orden descrita por variables de estado; modelos dinamicos de
varios sistemas mecatronicos y robots manipuladores se desarrollan en codigo fuente
para MATLAB. La tecnica de mınimos cuadrados para obtener el valor numerico
de los parametros del modelo dinamico se detalla en el Capıtulo 7 Identificacion
parametrica.
Capıtulo 6 Dinamica presenta la forma de simular modelos
dinamicos descritos en variables de estado. Generalmente la mayorıa de los
sistemas fısicos tienen su modelo dinamico con ecuaciones diferenciales de
orden mayor o igual a dos en variables fısicas o generalizadas. La tecnica de
simulacion consiste en convertir el modelo dinamico a una ecuacion diferencial
de primer orden mediante un adecuado cambio de variables de estado. Se
desarrollan librerıas en lenguaje MATLAB para simular la dinamica de
sistemas mecatronicos y robots manipuladores.
Capıtulo 7 Identificacion parametrica presenta
cincos esquemas de regresion lineal para realizar identificacion parametrica
de sistemas mecatronicos y robots manipuladores. Los esquemas de regresion
presentados son los modelos: dinamico, dinamico filtrado, energıa, potencia y
potencia filtrada. La tecnica de mınimos cuadrados recursivo es implementada
como librerıa para MATLAB cubriendo los casos: escalar y multivariable de
sistemas dinamicos.
La Parte III tambien incluye:
Referencias selectas
Problemas propuestos
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Capıtulo
6 Dinamica
6.1 Introduccion
6.2 Estructura matematica para simulacion
6.3 Sistema masa-resorte-amortiguador
6.4 Sistema lineal escalar
6.5 Centrıfuga
6.6 Pendulo
6.7 Robot de 2 gdl
6.8 Robot de 3 gdl
6.9 Robot cartesiano de 3 gdl
6.10 Resumen
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Objetivos
Presentar la tecnica de simulacion de modelado de robots manipuladores
y sistemas mecatronicos a traves de la estructura de ecuacion diferencial
ordinaria en variables fase.
Objetivos particulares:
Estructura matematica fundamental de simulacion.
Sistema masa resorte amortiguador.
Centrıfuga.
Robot antropomorfico: pendulo, robot de 2 y 3 gdl.
Robot cartesiano de 3 gdl.
Aplicaciones en control de posicion.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.1 Introduccion 287
6.1 Introduccion
Robots manipuladores son sistemas mecanicos muy complejos cuya descripcion
analıtica requiere de ecuaciones diferenciales. La naturaleza no lineal,
multivariable y fuerte acoplamiento en su comportamiento dinamico ofrece un amplio
espectro en la formulacion de problemas de control teoricos y practicos. El modelo
dinamico del robot manipulador permite explicar todos los fenomenos fısicos que
se encuentran en su estructura mecanica, tales como efectos inerciales, fuerzas
centrıpetas y de Coriolis, par gravitacional y friccion, los cuales son fenomenos fısicos
propios de la naturaleza dinamica del robot. Hay varios metodos de modelado de la
fısica como el de Newton o el de Hamilton. Sin embargo, la mejor opcion como
metodologıa de modelado la representa las ecuaciones de movimiento de Euler-
Lagrange debido a las propiedades matematicas que se deducen de manera natural,
ya que facilitan el analisis y diseno de algoritmos de control.
El modelo dinamico de robots manipuladores es fundamental en aplicaciones de
simulacion, diseno y construccion del sistema mecanico, ası como en analisis y diseno
de algoritmos de control. En el area de simulacion el modelo dinamico es estrategico
debido a que puede reproducir todos los fenomenos fısicos del robot sin la necesidad
de usar un robot real (realidad virtual), y esta caracterıstica resulta clave para
evaluar algoritmos de control, tecnicas de planeacion de trayectorias, programacion
de aplicaciones industriales, etc. La simulacion es el empleo del modelo dinamico
para analizar y describir su comportamiento dinamico en una computadora o sistema
mınimo digital y de ahı inferir aplicaciones. Es importante no confundir simulacion
con animacion, ya que son procesos diferentes; la animacion no requiere incorporar
efectos dinamicos en el movimiento del robot, generalmente son ecuaciones estaticas
como la cinematica directa.
La construccion de un robot se fundamenta en el modelo dinamico; los esquemas y
planos de ingenierıa de los eslabones se deducen directamente del modelo dinamico
y se trasladan a un programa CAD para su maquinado y construccion mecanica.
De esta forma, un robot industrial puede ser estudiado y se pueden hacer las
adecuaciones pertinentes antes de llegar a la etapa de construccion fısica.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
288 Capıtulo 6: Dinamica
6.2 Estructura matematica para simulacion
La gran mayorıa de los sistemas mecanicos contienen como parte del modelo
dinamico ecuaciones diferenciales de orden mayor o igual a 2. Sin embargo,
para propositos de simulacion es recomendable transformar ese modelo a un sistema
dinamico compuesto por una ecuacion diferencial ordinaria de primer orden debido
a que este tipo de ecuaciones es conocida, esta ampliamente documentada y es facil
de programar.
La estructura de una ecuacion diferencial ordinaria (ode) de primer orden tiene la
siguiente forma:
x = f(x) (6.1)
donde x ∈ IRn se conoce como variable de estado fase, la cual proporciona
informacion interna sobre la dinamica del sistema, es una funcion continua en el
tiempo x = x(t), n ∈ N es un numero natural que indica la dimension euclidiana,
la derivada temporal de la variable de estado x ∈ IRn existe y tambien es continua
en el tiempo x = x(t). La notacion x significa x = dx(t)dt
. La funcion f ∈ IRn es un
mapa vectorial continua en la variable de estado x(t).
La estructura matematica x = f(x) es para ambos sistemas: lineales y no lineales.
La caracterıstica de ser lineal o no lineal es referente a la variable de estado.
El modelo (6.1) se conoce como sistema dinamico autonomo, debido a que la
variable tiempo t se encuentra presente de manera implıcita, es decir no aparece
como parte de la estructura matematica, se encuentra incluida como parte de las
propiedades de la variable de estado x(t). La gran mayorıa de los sistemas mecanicos
corresponden a esta forma, sobre todo considerando que no hay variacion temporal
de sus parametros, los cuales se consideran constantes al menos en un tiempo
suficientemente grande.
De otra manera se tendrıa como parte de la ecuacion (6.1) dependencia explıcita
del tiempo, es decir x = f(x, t); a este tipo de sistemas se les conoce como sistema
dinamicos no autonomos, los cuales no non objetos de estudio en la presente obra.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.2 Estructura matematica para simulacion 289
♣ Ejemplo 6.1
Convertir a la forma x = f(x) el siguiente sistema lineal expresado por la funcion
de transferencia:
y
u=
2
s2 + 3s+ 1
donde y ∈ IR es la respuesta del sistema, u ∈ IR es la entrada.
Solucion
El concepto de funcion de transferencia es exclusivo para sistemas lineales, se define
como la relacion de la salida y la entrada cuando las condiciones iniciales del sistema
son cero.
Es necesario aclarar que el termino s que aparece en una funcion de transferencia
significa frecuencia y es un numero imaginario formado como: s = jw, siendo w una
variable que indica frecuencia, cuyas unidades son rad/seg. Cuando transformamos
la funcion de transferencia a una ecuacion diferencial, entonces s adquiere otra
interpretacion, en este caso funciona como un operador s = ddt
. Bajo este escenario,
debe interpretarse que s2 = ddt
ddt
= d2
dt2(teniendo en mente condiciones iniciales
cero).
Por lo tanto, el procedimiento para convertir la funcion de transferencia del sistema
a una ecuacion diferencial ordinaria de primer orden es el siguiente:
y
u=
2
s2 + 3s+ 1⇒ s2y + 3sy + y = 2u
⇒ y + 3y + y = 2u
donde se ha empleado s2y = y, sy = y. La notacion y = dy(t)dt
, y = d2y(t)dt2
Ahora, se requiere un cambio de variable de estado, sea x1 = y, x2 = x1,
x2 = −3x2 − x1 + 2u entonces:
y + 3y + y = 2u ⇒ x2︸︷︷︸y
+3 x2︸︷︷︸y
+ x1︸︷︷︸y
= 2u
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
290 Capıtulo 6: Dinamica
d
dt
[x1
x2
]︸ ︷︷ ︸x
=
[0 1
−1 −3
] [x1
x2
]+
[0
2
]u︸ ︷︷ ︸
f (x)
donde x = [ x1, x2 ]T .
Cuando la ecuacion diferencial original se encuentra en la forma de variables
fase x = f(x), entonces el sistema dinamico (convertido) ya tiene la estructura
matematica adecuada para realizar simulacion usando la funcion ode45(· · ·).
♣ Ejemplo 6.2
Convertir a la forma x = f(x) el siguiente sistema no lineal:
α2y + α1 sen(y) + α0 cos(y) = βu
donde y ∈ IR es la respuesta del sistema, u ∈ IR es la entrada, α2, α1, α0, β ∈ �+.
Solucion
La funcion de transferencia es exclusiva de sistemas lineales, para un sistema no
lineal no existe dicho concepto.
La conversion a la forma de ecuacion diferencial ordinaria de primer orden en
variables fase se realiza de la siguiente forma. Sea x1 = y, x2 = x1, x2 =
(−α1 sen(x2)−α0 cos(x1)+βu)/α2. Por lo tanto, la estructura matematica solicitada
es:
d
dt
[x1
x2
]︸ ︷︷ ︸x
=
[x2
1α0
[βu− α1 sen(x2) − α0 cos(x1) ]
]︸ ︷︷ ︸
f (x)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.3 Sistema masa-resorte-amortiguador 291
6.3 Sistema masa-resorte-amortiguador
Uno de los sistema mecanicos tıpicos que ha sido estudiado ampliamente
en cursos de control automatico de la carreras de ingenierıa mecatronica y
electronica es el sistema masa resorte amortiguador. La importancia de este sistema
radica en comprender su comportamiento dinamico para entender el funcionamiento
cualitativo de otros sistemas, por ejemplo: circuitos electricos (resistencia, capacitor,
inductancia), esquemas de control (algoritmo proporcional derivativo de robots
manipuladores).
Considere un sistema dinamico como el que se muestra en la figura 6.1, formado
por una masa m que se encuentra unida a un resorte de rigidez k y constante
de amortiguamiento b debido a la viscosidad del medio ambiente. La entrada
esta especificada por una fuerza f y el desplazamiento de la masa por x.
Figura 6.1 Sistema masa resorte amortiguador.
El modelo dinamico que describe al sistema masa resorte amortiguador se encuentra
dado por:
f︸︷︷︸Fuerza externa
= mx︸︷︷︸Fuerza inercial
+ bx︸︷︷︸Friccion viscosa
+ kx︸︷︷︸Ley de Hooke
La funcion de transferencia del sistema masa resorte amortiguador esta dada por:
x
f=
1
ms2 + bs+ k(6.2)
la ecuacion caracterıstica de los polos del sistema esta dada por
s =−b±
√b2 − 4mk
2k(6.3)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
292 Capıtulo 6: Dinamica
El sistema masa resorte amortiguador oscilara cuando se cumpla (b2 − 4mk) < 0, y
sera amortiguado si (b2 − 4mk) > 0.
La conversion de la ecuacion (6.2) a una ecuacion diferencial ordinaria de primer
orden en variables fase x = [x, x ]T se realiza de la siguiente forma:
d
dt
[x
x
]︸ ︷︷ ︸x
=
[x
m−1 [ f − bx− kx ]
]︸ ︷︷ ︸
f (x)
(6.4)
♣ Ejemplo 6.3
Considere el modelo dinamico del sistema masa resorte amortiguador (6.4)
utilizando los valores numericos de los parametros del sistema de la tabla 6.1.
Realizar un programa en MATLAB para graficar el desplazamiento lineal x y la
velocidad de la masa cuando se le aplica una fuerza constante f = 50N durante 5
segundos y despues de este tiempo desaparece la fuerza aplicada.
Tabla 6.1 Parametros del sistema masa resorte amortiguador
Masa Friccion viscosa Rigidez
m=5 kg b =0.16 kg/seg k =0.6 kg/seg2
Solucion
El programa en codigo MATLAB que contiene el modelo dinamico del sistema masa
resorte amortiguador (6.4) se describe en el cuadro 6.2. En este programa la variable
x mra representa el desplazamiento lineal que tiene de la masa al aplicarse una
fuerza constante de 5N durante 5 segundos. Por medio del programa 6.1 se realiza
la simulacion del sistema.
En la figura 6.2 (modo oscilatorio) se muestra el desplazamiento lineal x mra
y la velocidad de movimiento xp mra que tiene la masa. Por los valores que
presentan en la tabla 6.1 el sistema masa resorte amortiguador satisface la condicion
(b2 − 4mk) < 0 de la ecuacion (6.3) que corresponde a un oscilador, por eso cuando
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.3 Sistema masa-resorte-amortiguador 293
desaparece la fuerza constante despues de 5 segundos el sistema se queda oscilando
permanentemente (el tiempo de simulacion es de 100 segundos).
En realidad el sistema masa resorte amortiguador cuando se encuentra en la
configuracion de oscilador debido a los valores numericos de sus parametros, el
sistema empezara a oscilar con una condicion diferente a cero, independientemente
de la magnitud de la fuerza aplicada.
Ahora, supongase que los valores de los parametros son: m=5 kg, la constante de
rigidez del resorte k = 2 kg/seg2 y el coeficiente de friccion viscosa b = 4 Kg/seg; con
estos valores se configura el sistema masa resorte amortiguador en modo amortiguado
de tal forma que en la ecuacion (6.3) satisface (b2 − 4mk) > 0, es decir el factor de
amortiguamiento es adecuado para evitar oscilaciones y grandes sobre impulsos en
la respuesta transitoria.
La figura 6.2 muestra la simulacion en modo amortiguado. Unicamente, durante los
primeros 5 segundos se le aplica la fuerza de f =5 N. Despues de este transitorio
la masa regresa a su posicion inicial, restableciendose la elongacion del resorte y
desapareciendo el efecto de amortiguamiento. Observese que cuando desaparece
la fuerza constante, la posicion del sistema es atraıda por el punto de equilibrio,
quedando en reposo.
Codigo Fuente 6.1 Simulador de smr.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa smr simu.m
Simulador de smr.m
clc; clear all; close all; format short1
%parametros de simulacion2
ti=0; h=0.0025; tf = 100; ts=ti:h:tf;3
opciones=odeset(’RelTol’,1e-3,’InitialStep’, 2.5e-3, ’MaxStep’,2.5e-3);4
[t,x]=ode45(’mra’,ts,[0; 0],opciones);5
plot(t,x(:,1),t,x(:,2))6
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
294 Capıtulo 6: Dinamica
Codigo Fuente 6.2 Sistema masa resorte amortiguador
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa mra.m
%requiere del programa mra simu.m
Sistema masa resorte amortiguador
function xp =mra(t,x)1
%vector de estados2
%posicion articular3
x mra=x(1);4
%velocidad articular5
xp mra=x(2);6
%parametros del sistema masa resorte amortiguador7
%masa8
m=5;9
%constante de rigidez del resorte10
k=0.6;11
%amortiguamiento: coeficiente de friccion viscosa12
b=0.16;13
%fuerza aplicada durante 5 segundos14
if (t<5)15
f=5;16
else17
f=0;18
end19
%aceleracion del sistema masa resorte amortiguador20
xpp mra=(f-b*xp mra-k*x mra)/m;21
%vector de salida22
xp=[ xp mra ;%velocidad articular23
xpp mra] ;%aceleracion articular24
end25
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.4 Sistema lineal escalar 295
Figura 6.2 Respuesta del sistema masa resorte amortiguador.
6.4 Sistema lineal escalar
Sistemas lineales se utilizan ampliamente como estimadores de velocidad,
filtrado en robots manipuladores y sistemas mecatronicos. La estructura
matematica basica de un sistema lineal escalar de primer orden en variables fase
esta dada por:
x = −ax+ bu (6.5)
y = cx (6.6)
donde a, b, c ∈ IR+ son los parametros del sistema, x, x ∈ IR son la variable de
estado y la derivada temporal de la variable de estado, respectivamente; la entrada
es u ∈ IR y la salida del sistema esta dada por y ∈ IR.
La funcion de transferencia del sistema lineal (6.5)-(6.6) tiene la siguiente forma:
y
u=
c b
s + a= c b
1a
1as+ 1
= cb
a
1
Ts+ 1(6.7)
donde T = 1a , se conoce como la constante de tiempo. Para una constante de tiempo
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
296 Capıtulo 6: Dinamica
pequena la respuesta del sistema es rapida, de otra manera si la constante de tiempo
es grande, la respuesta del sistema es lenta.
Por otro lado, la funcion de transferencia representa un filtro pasa-bajas, donde a
significa la frecuencia de corte, tambien determina el ancho de banda del filtro y ba
es la ganancia (frecuencia cero).
6.4.1.6.4.1 Estimador de velocidad y filtrado
Entre las aplicaciones del sistema lineal (6.5)-(6.6) se encuentra como estimador de
velocidad y filtrado para robots manipuladores y sistemas mecatronicos. Por ejemplo,
si qi representa la i-esima posicion articular de un robot, la manera de estimar la
i-esima velocidad qi es por medio de la siguiente forma:
qi ≈ Fi = −λFi + λqi (6.8)
donde λ es la frecuencia de corte del filtro de ganancia unitaria, Fi es i-esimo estado
del filtro, representa la senal filtrada de la entrada (qi), y Fi es la estimacion de la
velocidad qi.
Para comprobar la afirmacion que Fi representa la senal filtrada de qi, considere la
funcion de transferencia de (6.8):
Fi =λ
λ+ sqi (6.9)
observe que la senal de entrada qi es procesada por el filtro pasa bajas λs+λ .
Ademas, la derivada temporal de la senal filtrada de la entrada qi aproxima a la
derivada temporal de qi (velocidad), es decir qi ≈ Fi; este procedimiento es valido
para cualquier articulacion del robot.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.4 Sistema lineal escalar 297
♣ Ejemplo 6.4
Escribir un programa en MATLAB para analizar la respuesta del sistema lineal
(6.5)-(6.6) para una entrada unitaria u = 1.
Solucion
El programa que realiza la implementacion del sistema lineal escalar de primer orden
(6.5-6.6) se encuentra en el cuadro 6.3. La senal de entrada u es una constante de
magnitud unitaria. El programa principal que realiza la simulacion se encuentra
en el cuadro 6.4. El tiempo de simulacion es de 5 segundos y la respuesta a la
entrada unitaria no contiene sobre impulsos en regimen transitorio tal y como se
describe en la figura 6.3. Dentro de las caracterısticas en la respuesta a un escalon o
entrada constante de un sistema lineal, el transitorio no presentara sobre impulsos
y de manera suave convergera al valor de la entrada. En la primera constante de
tiempo T , la respuesta ha alcanzado el 63.2% del valor de la magnitud de la entrada
u. Para este ejemplo la constante de tiempo es T = 13 = 0.3333 segundos, en la
segunda constante de tiempo 2T la respuesta del sistema ha alcanzado el 86.5% del
valor final.
Codigo Fuente 6.3 Sistema lineal escalar
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa sle.m
Sistema lineal escalar
function xp =sle(t,x)1
a=3;2
b=3;3
u=1;4
xp=-a*x+b*u;5
end6
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
298 Capıtulo 6: Dinamica
Para las constantes de tiempo 3T, 4T y 5T la respuesta tiene 95%, 98.2% y 99.3%
del valor final, respectivamente. Para finalidades practicas despues de 5T , se puede
decir que el sistema ha entrado en estado estacionario.
Figura 6.3 Respuesta a un escalon del sistema lineal escalar.
Codigo Fuente 6.4 sle simu
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa sle simu.m
% este programa requiere del archivo: sle.m
sle simu
clc; clear all; close all;1
format short2
%tiempo de simulacion (segundos)3
ti=0; h=0.0025; tf = 5;4
ts=ti:h:tf;%vector tiempo5
opciones=odeset(’RelTol’,1e-3,’InitialStep’,2.5e-3,’MaxStep’,2.5e-3);6
[t,x]=ode45(’sle’,ts,0,opciones);7
plot(t,x)8
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.4 Sistema lineal escalar 299
♣ Ejemplo 6.5
Escribir un programa en MATLAB para que un sistema lineal escalar realice el
filtrado de una senal contaminada con ruido u = 5 sen(t) + ruido(t).
Solucion
Considere una senal u(t) con una envolvente de ruido de la siguiente forma: u =
5 sen(t) + random(’Normal’,t,t), se empleara el sistema lineal x = −3x+ 3u(t) para
obtener la senal filtrada de la entrada u(t). El programa que implementa la funcion
filtro a traves de un sistema lineal se encuentra en el cuadro 6.5. Como generador
de ruido se emplea la funcion de datos aleatorios random utilizando distribucion
’Normal’ de datos, la cual se anade a la funcion senoidal 5 sen(t).
El programa principal que realiza la simulacion se encuentra en el cuadro 6.6, en
la lınea 7 se resuelve numericamente el filtro, en la lınea 8 se reproduce la senal
de entrada contaminada, y se compara con la senal libre de ruido contenida en la
variable x(t) (lıneas 8 y 9). La figura 6.4 muestra la comparacion entre la senal
original u con ruido y filtrada (figura izquierda).
Codigo Fuente 6.5 Aplicacion filtrado
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa filtro.m
Aplicacion filtrado
function xp=filtro(t,x)1
u=5*sin(t)+random(’Normal’,t,t);2
a=3;3
b=3;4
xp=-a*x+b*u;5
end6
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
300 Capıtulo 6: Dinamica
En la grafica derecha de la figura 6.4 se presentan los detalles de la senal filtrada;
observe que esta senal esta restaurada lo mejor posible despues de haber sido
contaminada con ruido. El filtro tiene un parametro de sintonıa llamado frecuencia
de corte, que en este caso es a = 3rad/seg. Este parametro puede adquirir otro valor
para mejorar la calidad de filtrado de la senal de entrada u.
Figura 6.4 Filtrado de senales.
Codigo Fuente 6.6 sle simu
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa sle simu.m
% este programa requiere del archivo: filtro.m
sle simu
clc; clear all; close all;1
format short2
%tiempo de simulacion (segundos)3
ti=0; h=0.0025; tf = 5;4
ts=ti:h:tf;%vector tiempo5
opciones=odeset(’RelTol’,1e-3,’InitialStep’,2.5e-3,’MaxStep’,2.5e-3);6
[t,x]=ode45(’filtro’,ts,0,opciones);7
u=5*sin(t)+random(’Normal’,t,t);8
subplot(2,2,1); plot(t,u)9
subplot(2,2,2); plot(t,x)10
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.5 Centrıfuga 301
6.5 Centrıfuga
La centrıfuga es un sistema mecatronico que se describe en la figura 6.5, el cual
consta de un servomotor que gira alrededor del eje z0, el angulo de rotacion
esta descrito por la variable q1. La distancia del origen del sistema de referencia
fijo Σ0(x0, y0, z0) al extremo final esta representado por l1 + l2 sen(δ), donde l1 es
la longitud del servomotor mas la longitud del rotor, l2 es la longitud de la barra
metalica que se encuentra acoplada al rotor, y δ es un angulo constante que significa
la inclinacion de la barra l2 con respecto a la horizontal, lc2 representa el centro
de masa y el momento de inercia I del servomotor de la centrıfuga. El movimiento
rotatorio de la centrıfuga describe un cırculo sobre el plano x0 − y0. La accion de la
gravedad g se encuentra en direccion contraria al eje z0.
Figura 6.5 Centrıfuga.
El modelo dinamico de una centrıfuga es una ecuacion diferencial de segundo orden
expresada de la siguiente manera:
τ = [ml2c2 sen(δ) + Ism ] q + bq + fcsigno(q) + fe [1 − |signo(q)|] (6.10)
La ecuacion (6.10) puede ser convertida a una ecuacion diferencial ordinaria de
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
302 Capıtulo 6: Dinamica
primer orden de la forma x = f(x), a traves de la siguiente expresion:
d
dt
[q1
q1
]︸ ︷︷ ︸x
=
[q1
[m1l2c2 sen(δ) + Ism ]−1 [ τ1 − b1q − fc1signo(q1) − fe1 [1 − |signo(q1)|] ]
]︸ ︷︷ ︸
f (x)
(6.11)
6.6.♣ Ejemplo 6.6
Considere el modelo dinamico de la centrıfuga expresado como una ecuacion
diferencial de primer orden (6.11). Tomar en cuenta los valores numericos de los
parametros de la centrıfuga que aparecen en la tabla 6.2. Realizar un programa
en MATLAB para que la centrıfuga gire a una revolucion por segundo en ambos
sentidos (positivo/negativo).
Tabla 6.2 Parametros de la centrıfuga
Masa de la
centrıfugaFriccion viscosa
Friccion de
CoulombFriccion estatica
m1=5 kg b1 =0.12 Nm-seg/rad fc1 =0.11 Nm fe1 =0.09 Nm
Centro de ma-
sa de la barra
Longitud de la
barra
Momento de
inercia del
rotor
Angulo de in-
clinacion de la
barra
lc2=0.01m l2=0.15m Ism=0.08 Nm-seg2/rad δ = 45π180 rad
Solucion
El modelo numerico se obtiene combinando el modelo dinamico (6.11) con los valores
numericos de los parametros de la centrıfuga contenidos en la tabla 6.2.
d
dt
[q1
q1
]=
[q1
10.0804 [ τ1 − 0.12 q − 0.11 signo(q1)− 0.09 [1 − |signo(q1)|] ]
](6.12)
para lograr que el sistema mecatronico oscile en ambos sentidos a una revolucion
por segundo (360 grados/seg), se requiere que su movimiento sea generado por una
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.5 Centrıfuga 303
energıa tipo senoidal. Es decir, al servomotor se le aplica una energıa de la forma
τ1 = 2 sen(t), para generar un movimiento cıclico. Con este tipo de energıa la
centrıfuga funciona como una lavadora; cuando se requiera implementar la funcion
centrifugado, entonces el tipo de energıa aplicada al servomotor es a traves de un
par constante.
El programa centrifuga.m 6.7 contiene el modelo dinamico de la centrıfuga
con los parametros de la tabla 6.2. La ecuacion programada corresponde a la
estructura de variables de estados de los modelos 6.11 o 6.12. El programa principal
centrifuga simu 6.8 realiza la solucion numerica del modelo dinamico de la
centrıfuga usando el metodo de integracion numerica de Runge-Kutta de la funcion
ode45(· · ·).
Codigo Fuente 6.7 centrifuga
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa centrifuga.m
centrifuga
function xp = centrifuga( t,x)1
m1=5;%masa de la centrıfuga2
lc2=0.01;% centro de masa de la barra inclinada3
delta=45*pi/180; %angulo de inclinacion de la barra l24
I sm=0.08;% momento de inercia del rotor del servomotor5
b1=0.12; fc1=0.11; fe1=0.09;%coeficientes de friccion6
q1=x(1); % posicion articular7
qp1=x(2); % velocidad articular8
tau=2*sin(t); % energıa aplicada al servomotor9
%aceleracion rotacional de la centrıfuga10
qpp1=(tau1-b1*qp1-fc1*sign(qp1)-fe1*(1-abs(sign(qp1))))/11
(m1*lc2*lc2*sin(delta)+I sm);
xp=[ qp1; qpp1 ];% vector de salida12
end13
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
304 Capıtulo 6: Dinamica
Codigo Fuente 6.8 centrifuga simu
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa centrifuga simu.m
% este programa requiere del archivo: centrifuga.m
centrifuga simu
clc; clear all; close all;1
format short2
%tiempo de simulacion (segundos)3
ti=0; h=0.0025; tf = 10;4
ts=ti:h:tf;%vector tiempo5
opciones=odeset(’RelTol’,1e-3,’InitialStep’,2.5e-3,’MaxStep’,2.5e-3);6
%integracion numerica del modelo dinamico de la centrıfuga7
[t,x]=ode45(’centrifuga’,ts,[0; 0],opciones);8
%graficar variable articular de la posicion q1 =x(:,1)9
%la velocidad de movimiento esta dada por q1 =x(:,2)10
plot(t,x(:,1),t,x(:,2))11
Figura 6.6 Movimiento de la centrıfuga.
La figura 6.6 describe la forma de
desplazamiento rotacional que tie-
ne la variable articular q1 cuan-
do se aplica energıa de la forma
τ1 = 2 sen(t), el movimiento de
la centrıfuga es oscilatorio; este es
el principio basico de funcionamien-
to de las lavadoras. Con el tipo de
energıa senoidal aplicada al servo-
motor, la centrıfuga gira 360 gra-
dos por segundo alrededor del eje z0,
cambiando su sentido de giro cada
periodo t =6.28 segundos.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.6 Pendulo 305
6.6 Pendulo
Actualmente el pendulo es una planta de estudio vigente debido a su dinamica
no lineal y sus aplicaciones practicas, lo que lo convierte en un sistema clave
para propositos de investigacion cientıfica, y en docencia representa una herramienta
pedagogica muy util para la ensenanza de la dinamica de sistemas. La figura 6.7
muestra un pendulo robot el cual esta formado por un servomotor y una barra
metalica de longitud l1. El sistema de referencia se elige de tal manera que el eje z0
coincida con el eje de rotacion del servomotor (perpendicular al plano de la hoja).
La accion de la gravedad g esta dirigida en direccion del eje y0 negativo. El momento
de inercia se denota por Ism, el centro de masa se representa como lc1 y la masa del
pendulo por m1.
Figura 6.7 Pendulo robot.
El modelo dinamico de un pendulo-robot esta dado por:
(6.13)
τ = [ml2c + I ] q +mglc sen(q) + bq + fcsigno(q) + fe [1 − |signo(q)|]
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
306 Capıtulo 6: Dinamica
♣ Ejemplo 6.7
Considere el modelo dinamico del pendulo (6.13) y realice un programa en lenguaje
MATLAB para describir los fenomenos fısicos del sistema. Para llevar a cabo la
simulacion, considere los valores numericos de los parametros del pendulo que
presenta la tabla 6.3.
Solucion
El pendulo robot prototipo de la figura 6.7 tiene un servomotor de transmision
directa con un torque maximo de 15Nm (±15 Nm para el primer y tercer cuadrante,
respectivamente). La longitud de la barra l1 es de 0.45m, los valores numericos de
los parametros que forman el modelo dinamico como el momento de inercia, centro
de gravedad, coeficientes de friccion viscosa, Coulomb y estatica estan concentrados
en la tabla 6.3.
Tabla 6.3 Parametros del pendulo robot
Masa Friccion viscosa Friccion de Coulomb Friccion estatica
m1=3.88 kg b1 =0.16 Nm-seg/rad fc1 =0.19 Nm fe1 =0.20 Nm
Centro de masa Longitud Mom. de inercia del rotor Cap. del servomotor
lc1=0.081 m l1=0.45 m Ir1=0.16 Nm-seg2/rad ±15Nm
La masa m1 del pendulo incluye la masa de la barra, rotor del servomotor y tornillos.
El centro de masa lc1 del pendulo se calcula de la siguiente manera:
lc1 =lcrotormrotor + lcbarra
mbarra + lctornillosmtornillos
mrotor +mbarra +mtornillos
El centro de masa del rotor lcrotor es cero debido a las propiedades geometricas del
servomotor, y ademas el origen del sistema de referencia Σ0(x0, y0, z0) se coloca
en el centro de masa lcrotor . Los tornillos sujetan la barra metalica de aluminio al
rotor del servomotor; estos tornillos se encuentran igualmente espaciados sobre una
circunferencia cuyo centro pasa el eje de rotacion, el cual esta alineado con el eje
z0. Por lo tanto, el centro de masa de los tornillos lctornilloses cero. El momento de
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.6 Pendulo 307
inercia del pendulo I1 es igual a la contribucion del momento de inercia del rotor del
servomotor Ir1 mas el momento de inercia de la barra de aluminio m1l2c1 (teorema
de ejes paralelos de inercias).
Los programas 6.9 y 6.10 realizan la simulacion del pendulo. La energıa aplicada al
servomotor del pendulo es tipo senoidal, por ejemplo de la forma τ1 = sin(t), donde
t es la evolucion del tiempo. Este tipo de torque produce un movimiento oscilatorio
en su espacio de trabajo sobre el plano x0 − y0− , entonces se genera desplazamiento
rotacional q1 alrededor del eje z0 y velocidad de movimiento articular q1; con estas
variables es posible obtener la dinamica del pendulo tales como efector inercial (I1q),
friccion (b1q1 + fc1 signo ( q1 )) y par gravitacional (m1glc1 sen(q1)).
Figura 6.8 Respuesta del pendulo.
La figura 6.8 muestra la respuesta
del pendulo robot a una senal de en-
trada τ1 = sen(t); se emplea la ci-
nematica directa del pendulo (y0 vs
x0) para graficar el desplazamiento
del extremo final del robot en su es-
pacio de trabajo. En este caso, la po-
sicion de casa del pendulo se ubica
sobre el eje y0− . La posicion articu-
lar en funcion del tiempo q1(t) to-
ma un perfil parecido a la senal de
entrada τ1(t); la variable articular
q1(t) representa la velocidad de mo-
vimiento, y adquiere magnitudes de
0.5 rad/seg (90 grados/seg) en am-
bas direcciones (positivo/negativo).
El fenomeno de friccion viscosa y de Coulomb se grafica en funcion de la velocidad
de movimiento (friccion vs velocidad q1); note que dicho fenomeno disipativo se
encuentra ubicado dentro del primer y tercer cuadrante. La magnitud que alcanza el
fenomeno de friccion es de 0.4 Nm, que representa el 2.6% de la capacidad maxima
del servomotor. El fenomeno de friccion convierte la energıa cinetica en energıa
termica.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
308 Capıtulo 6: Dinamica
Codigo Fuente 6.9 Pendulo
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa pendulo.m
% este programa requiere del archivo pendulo simu.m
Pendulo
function xp =pendulo(t,x)1
%vector de estados2
q1=x(1);%posicion articular3
qp1=x(2);%velocidad articular4
%parametros del pendulo5
m1=3.88;%masa6
lc1=0.081;%centro de masa7
g=9.81;%constante de aceleracion gravitacional8
I r1=0.16;%momento de inercia del rotor9
%momento de inercial total del pendulo10
I1=m1*lc1*lc1+I r1;11
%friccion del pendulo12
b1=0.16;%coeficiente de friccion viscosa13
fc1=0.19;%friccion de Coulomb14
fe1=0.2;%friccion de estatica15
%par aplicado al servomotor del pendulo16
tau1=sin(t);17
%aceleracion articular del pendulo18
qpp1=(tau1-b1*qp1-fc1*sign(qp1)- fe1*(1-abs(sign(qp1)))-m1*g*lc1*sin(q1))19
/gamma1;
%vector de salida20
xp=[ qp1 ; %xp(1)=qp1=x(2) velocidad articular21
qpp1] ;%xp(2)=qpp1 aceleracion articular22
end23
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.6 Pendulo 309
Codigo Fuente 6.10 pendulo simu
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
pendulo simu
clear; close all;1
clc;2
format short g3
x0=[0; 0];%condicion inicial4
ti=0; h=0.0025; tf = 5; %tiempo de simulacion5
ts=ti:h:tf;%vector de tiempo6
opciones=odeset(’RelTol’,1e-3,’InitialStep’,2.5e-3,’MaxStep’,2.5e-3);7
%simulacion del pendulo robot8
[t, x]=ode45(’pendulo’,[ti:0.01:tf], x0,opciones);9
%asignacion de posiciones y velocidades articulares10
q1 =x(:,1);%Posicion articular11
qp1=x(:,2);%Velocidad articular12
%cinematica directa del pendulo13
%posicion de casa sobre el eje y0−
14
x ef=0.45*sin(q1);15
y ef=-0.45*cos(q1);16
%fenomeno de friccion17
b1=0.16;%coeficiente de friccion viscosa18
fc1=0.19;%friccion de Coulomb19
fe1=0.20;%friccion estatica20
friccion=b1*qp1+fc1*sign(qp1)+fe1*(1-abs(sign(qp1)));21
%graficas de cinematica directa, posicion, velocidad, y friccion, respectivamente.22
subplot(2,2,1); plot(x ef,y ef)23
subplot(2,2,2); plot(t,q1)24
subplot(2,2,3); plot(t,qp1)25
subplot(2,2,3); plot(qp,friccion)26
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
310 Capıtulo 6: Dinamica
6.7 Robot de 2 gdl
Robots manipuladores de 2 gdl tienen amplias aplicaciones sobre el plano
x0 − y0: pintado de objetos, ensamble, estibado, etc. Considere el robot
manipulador de 2 gdl que se muestra en la figura 6.9.
Figura 6.9 Robot manipulador de 2 gdl.
El modelo dinamico de un robot manipulador antropomorfico de 2 gdl esta dado por
la siguiente expresion:
τ = M(q)q + C(q, q)q + g(q) + f f (q, fe)
=
[m1l
2c1 +m2l
21 +m2l
2c2 + 2m2l1lc2 cos(q2) + I1 + I2 m2l
2c2 +m2l1lc2 cos(q2) + I2
m2l2c2 +m2l1lc2 cos(q2) + I2 m2l
2c2 + I2
]︸ ︷︷ ︸
M (q)
q
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.7 Robot de 2 gdl 311
+
[−2m2l1lc2 sen(q2)q2 −m2l1lc2 sen(q2)q2
m2l1lc2 sen(q2)q1 0
]︸ ︷︷ ︸
C(q,q)
q +
g
[lc1m1 sen(q1) +m2l1 sen(q1) +m2lc2 sen(q1 + q2)
m2lc2 sen(q1 + q2)
]︸ ︷︷ ︸
g(q)
+
[b1q1 + fc1signo(q1) + [1− |signo(q1)|]sat(τ1; f1)
b2q2 + fc2signo(q2) + [1− |signo(q2)|]sat(τ2; f2)
]︸ ︷︷ ︸
f f(q,f e)
La terminologıa y significado de los parametros del robot de 2 gdl se encuentran en
la tabla 6.4.
Tabla 6.4 Parametros del robot planar de 2 gdl
Eslabon Significado Notacion Valor
Hombro Masa del eslabon 1 m1 23.902 kg
Longitud del eslabon 1 l1 0.45 m
Inercia del eslabon 1 I1 1.266 Nm seg2/rad
Centro de masa del eslabon 1 lc1 0.091 m
Coeficiente de friccion viscosa b1 2.288 Nm seg/rad
Coeficiente de friccion de Coulomb fc1 7.17 Nm
Coeficiente de friccion estatica fe1 8.8 Nm
Codo Masa del eslabon 2 m2 3.88 kg
Longitud del eslabon 2 l2 0.45 m
Inercia del eslabon 2 I2 0.093 Nm seg2/rad
Centro de masa del eslabon 2 lc2 0.048
Coeficiente de friccion viscosa b2 0.175 Nm seg/rad
Coeficiente de friccion de Coulomb fc2 1.734 Nm
Coeficiente de friccion estatica fe2 1.87 Nm
Aceleracion debida a la gravedad g 9.81 m/seg2
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
312 Capıtulo 6: Dinamica
[τ1
τ2
]=
[2.351 + 0.1676 cos(q2) 0.102 + 0.0838 cos(q2)
0.102 + 0.0838 cos(q2) 0.102
]︸ ︷︷ ︸
M (q)
[q1
q2
]+
[−0.1676 sen(q2)q2 −0.0838 sen(q2)q2
0.084 sen(q2)q1 0.0
]︸ ︷︷ ︸
C(q,q)
[q1
q2
]+
g
[3.9211 sen(q1) + 0.1862 sen(q1 + q2)
0.1862 sen(q1 + q2)
]︸ ︷︷ ︸
g(q)
+
[2.288q1 + 7.17 signo ( q1 ) + 8.8 [ 1 − | signo ( q2 ) | ]
0.175q2 + 1.734 signo ( q2) ) + 1.87 [1 − | signo ( q1 ) | ]
]︸ ︷︷ ︸
f f (q,fe)
Figura 6.10 Respuesta del robot de 2 gdl.
La figura 6.10 muestra la respuesta
de las posiciones articulares (q1, q2)
del robot manipulador de 2 gdl en
configuracion antropomorfica cuan-
do se le aplica senales de prueba del
par aplicado (6.14). La sintonıa de
las amplitudes de estas senales para
τ1 y τ2 se deben seleccionar de ma-
nera conveniente de tal forma que no
se sature los servoamplificadores, y
no producir velocidades articulares
a 720 grados/seg.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.7 Robot de 2 gdl 313
Codigo Fuente 6.11 robot2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
robot2gdl.m
function xp =robot2gdl(t,x)1
q1=x(1); q2=x(2); q = [q1; q2];%vector de posicion articular2
qp1=x(3); qp2=x(4); qp = [qp1; qp2];%vector de velocidad articular3
m1=23.902; l1=0.45; lc1=0.091; I1=1.266;4
b1=2.288; fc1=7.17; fe1=8.8;5
m2=3.880; l2=0.45;6
lc2=0.048; I2=0.093;7
b2=0.175; fc2=1.734; fe2=1.87; g=9.81;8
m11=m1*lc1*lc1+m2*l1*l1+m2*lc2*lc2+2*m2*l1*lc2*cos(q2)+I1+I2;9
m12=m2*lc2*lc2+m2*l1*lc2*cos(q2)+I2;10
m21=m12;11
m22=m2*lc2*lc2+I2;12
M=[m11, m12; m21, m22];13
c11=-2*m2*l1*lc2*sin(q2)*qp2;14
c12=-m2*l1*lc2*sin(q2)*qp2;15
c21=m2*l1*lc2*sin(q2)*qp1;16
c22=0;17
C=[ c11, c12; c21, c22];18
gq11=(lc1*m1++m2*l1)*sin(q1)+m2*lc2*sin(q1+q2);19
gq21=m2*lc2*sin(q1+q2);20
gq=g*[gq11; gq21];21
fr=[b1*qp1+fc1*sign(qp1)+fe1*(1-abs(sign(qp1)));22
b2*qp2+fc2*sign(qp2)+fe2*(1-abs(sign(qp2)))];23
tau=[(1-exp(-0.8*t))*29.0+ 68*sin(16*t+0.1) + 9*sin(20*t+0.15);24
(1-exp(-1.8*t))*1.2+ 8*sin(26*t+0.08)+2*sin(12*t+0.34) ];25
qpp = M∧(-1)*(tau-C*qp-gq-fr);26
xp = [qp1; qp2; qpp(1); qpp(2)];27
end28
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
314 Capıtulo 6: Dinamica
Las senales de prueba para el par aplicado se encuentran expresadas por:
τ1 = [ 1 − e−0.8t ] 29.0 + 68 sen(16t+ 0.1) + 9 sen(20t+ 0.15) (6.14)
τ2 = [ 1 − e−1.8t ] 1.2 + 8 sen(26t+ 0.08) + 2 sen(12t+ 0.34) (6.15)
Codigo Fuente 6.12 cap6 robot2gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap6 robot2gdlsimu.m
clc; clear all; close all;1
format short2
ti=0; h=0.0025; tf = 10; ts=ti:h:tf;%vector tiempo3
%configuracion de la funcion ode45()4
opciones=odeset(’RelTol’,1e-3,’InitialStep’,2.5e-3,’MaxStep’,2.5e-3);5
%condiciones iniciales [q(0), q(0) ] = [ 0, 0, 0, 0]T.%integracion numerica de la6
dinamica del robot de 2 gdl
[t,x]=ode45(’robot2gdl’,ts,[0; 0; 0; 0],opciones);7
%retorna x = [ q1(t), q2(t), q1(t), q2 ] (t)8
%vector de posicion articular9
% q = [q1, q2]T
10
q1=x(:,1);11
q2=x(:,2);12
%vector de velocidad articular13
% q = [q1, q2]T
14
qp1=x(:,3);15
qp2=x(:,4);16
%grafica posiciones articulares en funcion del tiempo17
%conversion de radianes a grados18
plot(t,180*q1/pi,t,180*q2/pi)19
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.8 Robot de 3 gdl 315
6.8 Robot de 3 gdl
El modelo dinamico de un robot de 3 gdl en configuracion antropomorfica es
una ecuacion diferencial muy complicada, el proceso de simulacion a traves de
la funcion ode45(· · ·) puede consumir tiempo de computo de manera significativa
si se introducen funciones discontinuas como el fenomeno de friccion de Coulomb.
En este sentido, se recomienda al lector eliminar la friccion de Coulomb y la friccion
estatica, conservando la friccion viscosa para una rapida simulacion. Evidentemente,
la simulacion estarıa incompleta por falta de estos fenomenos. Sin embargo, en un
robot de transmision directa las magnitudes de friccion son bajas.
La figura 6.11 muestra un robot industrial de la companıa FANUC en configuracion
antropomorfica; los 3 gdl se refieren a las articulaciones de la base, hombro y codo,
sin tomar en cuenta la orientacion del robot.
Figura 6.11 Robot manipulador FANUC.
La gran mayorıa de los robots que se encuentran operativos en el sector industrial
tienen la configuracion antropomorfica por ser la que mejor destreza presenta en
sus movimientos y por lo tanto la que mayor numero de aplicaciones tiene. Este
tipo de robots no solo se emplea en la industria, sino tambien es importante en
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
316 Capıtulo 6: Dinamica
la automatizacion de quirofanos robotizados, asistencia personalizada a un sector
vulnerable de la poblacion con capacidades diferenciadas, etcetera.
La utilidad del modelo dinamico resulta importante cuando se dispone de los valores
numericos de todos los parametros del robot; bajo este enfoque la tabla 6.5 muestra
la terminologıa, significado y valores de un robot prototipo de 3 gdl con motores de
transmision directa.
Tabla 6.5 Parametros del robot antropomorfico de 3 gdl
Eslabon Significado Notacion Valor
Base Masa del eslabon 1 m1 26.9 kg
Longitud del eslabon 1 l1 0.45 m
Inercia del eslabon 1 Iz1 1.266 Nm-seg2/rad
Inercia del eslabon 1 Iy1 0.089 Nm-seg2/rad
Inercia del eslabon 1 Ix1 0.03 Nm-seg2/rad
Centro de masa del eslabon 1 lc1 0.091 m
Coeficiente de friccion viscosa b1 2.288 Nm-seg/rad
Coeficiente de friccion de Coulomb fc1 7.17 Nm
Coeficiente de friccion estatica fe1 8.8 Nm
Hombro Masa del eslabon 2 m2 30 kg
Longitud del eslabon 2 l2 0.45 m
Inercia del eslabon 1 Iz2 0.084 Nm-seg2/rad
Inercia del eslabon 1 Iy2 0.003 Nm-seg2/rad
Inercia del eslabon 1 Ix2 0.05 Nm-seg2/rad
Centro de masa del eslabon 2 lc2 0.038 m
Coeficiente de friccion viscosa b2 0.2 Nm-seg/rad
Coeficiente de friccion de Coulomb fc2 1.9 Nm
Coeficiente de friccion estatica fe2 2.1 Nm
Codo Masa del eslabon 3 m3 3.88
Longitud del eslabon 2 l3 0.45 m
Inercia del eslabon 1 Iz3 0.056 Nm-seg2/rad
Inercia del eslabon 1 Iy3 0.0012 Nm-seg2/rad
Inercia del eslabon 1 Ix3 0.009 Nm-seg2/rad
Centro de masa del eslabon 3 lc3 0.048
Coeficiente de friccion viscosa b3 0.175 Nm-seg/rad
Coeficiente de friccion de Coulomb fc3 1.734
Coeficiente de friccion estatica fe3 1.87
Aceleracion debida a la gravedad g 9.81 m/seg2
El modelo dinamico del robot manipulador en configuracion antropomorfica se
detalla en la ecuacion (6.16); de acuerdo con los datos de la tabla 6.5 se obtiene
un modelo dinamico para propositos de simulacion.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
317
⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣τ1
τ2
τ3
⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦=
2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4
Iy2
sen2(q
2)+
Iy3
sen2(q
2+
q3)
+I
z1
+I
z2
cos2
(q2)+
Iz3
cos2
(q2
+q3)+
m2
l2 c2
cos2
(q2)
+m
3[l 2
cos(
q2)+
l c3
cos(
q2
+q3)]2
|{z
}m
11
0 |{z}
m12
0 |{z}
m13
0 |{z}
m21
Ix2
+I
x3
+m
3l2 2
+m
2l2 c
3+
m3l2 c
3
+2m
3l 2
l c3
cos(
q3)
|{z
}m
22
Ix3
+m
3l2 c
3+
m3l 2
l c3
cos(
q3)
|{z
}m
23
0 |{z}
m31
Ix3
+m
3l2 c
3+
m3
l 2l2 c
3cos(
q3)
|{z
}m
32
Ix3
+m
3l2 c
3|
{z}
m33
3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
|{z
}M
(q)
2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4q1
q2
q3
3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
+
2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4
[I
y2−
Iz2−
m2
l2 c2
]cos(
q2)
sen(q
2)q
2
+[I
y3−
Iz3
]cos(q
2+
q3)
sen(q
2+
q3)q
2−
m3
[l 2
cos(
q2)+
l c3
cos(q
2+
q3)]l 2
sen(q
2)q
2−
m3
[l 2
cos(
q2)+
l c3
cos(q
2+
q3)]l c
3se
n(q
2+
q3)q
2+
[I
y3−
Iz3
]cos(q
2+
q3)
sen(q
2+
q3)q
3−
m3
l c3
sen(q
2+
q3)l
2se
n(q
2)q
3−
m3l c
3se
n(q
2+
q3)l
c3
sen(q
2+
q3)q
3|
{z}
c11
[I
y2−
Iz2−
m2l2 c
2]cos(
q2)
sen(q
2)q
1+
[I
y3−
Iz3
]cos(q
2+
q3)
sen(q
2+
q3)q
1−
m3
[l 2
cos(
q2)+
l c3
cos(q
2+
q3)]l 2
sen(q
2)q
1−
m3
[l 2
cos(
q2)+
l c3
cos(q
2+
q3)]l c
2se
n(q
2+
q3)q
1|
{z}
c12
[I
y3−
Iz3
]cos(q
2+
q3)
sen(q
2+
q3)q
1
−m
3l c
2se
n(q
2+
q3)l
c1
cos(
q2)q
1
−m
3l2 c
2se
n(q
2+
q3)cos(q
2+
q3)q
1|
{z}
c13
[I
z2−
Iy2
+m
2l2 c
1]cos(
q2)
sen(q
2)q
1
+[I
z3−
Iy3
]cos(q
2+
q3)
sen(q
2+
q3)q
1
+m
3[l 1
cos(
q2)+
l c2
cos(q
2+
q3)]l 1
sen(q
2)q
1
+m
3[l 1
cos(
q2)+
l c2
cos(q
2+
q3)]l c
2se
n(q
2+
q3)q
1|
{z}
c21
−l 1
m3
l c2
sen(q
3)q
3|
{z}
c22
−l 1
m3
l c2
sen(q
3)(
q2
+q3)
|{z
}c23
[I
z3−
Iy3
]cos(q
2+
q3)
sen(q
2+
q3)q
1
+m
3l c
2se
n(q
2+
q3)[l 1
cos(
q2)+
l c2
cos(q
2+
q3)]q1
|{z
}c31
l 1m
3l c
2se
n(q
3)q
2|
{z}
c32
0 |{z}
c33
3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
|{z
}C
(q
,q)
2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4q1
q2
q3
3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
+g
2 40
l c2
m2
sen(q
2)+
m3
l 2se
n(q
2)+
m3l c
3se
n(q
2+
q3)
m3
l c3
sen(q
2+
q3)
3 5|
{z}
g(q)
+
2 4b1q1
+f
c1si
gno(q
1)+
fe1[1
−|s
igno(q
1)|
]
b2q2
+f
c2si
gno(q
2)+
fe2[1
−|s
igno(q
2)|
]
b3q3
+f
c3si
gno(q
3)+
fe3[1
−|s
igno(q
3)|
]
3 5|
{z}
ff(q
,f
e)
(6.1
6)
6.8 Robot de 3 gdl
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
318 Capıtulo 6: Dinamica
♣♣♣ Ejemplo 6.8
Emplear el modelo dinamico de un robot antropomorfico (6.16) de 3 gdl y los
valores numericos de los parametros contenidos en la tabla 6.5 para realizar un
programa en MATLAB que controle las articulaciones de la base, hombro y codo
en las posiciones deseadas [ qd1, qd2, qd3 ]T = [ 45, 45, 90]T grados, respectivamente.
Presentar la evolucion en el tiempo de las posiciones articulares.
Solucion
Una de las aplicaciones que tiene el modelo dinamico de robots manipuladores
es en control de posicion; a traves de la simulacion es posible estudiar en detalle
la respuesta que presenta el robot con una determinada estructura de control,
sintonizar de manera adecuada las ganancias proporcional y derivativa, para obtener
un transitorio pequeno sin sobre tiro y oscilaciones y reducir significativamente el
error de posicion en regimen estacionario.
El modelo dinamico del robot antropomorfico de 3 gdl junto con el algoritmo
de control proporcional derivativo (PD) esta implementado con la estructura de
una ecuacion diferencial ordinaria de primer orden x = f(x) en la funcion
robot3gdl(t,x) descrita en el cuadro 6.13; el programa principal para realizar la
simulacion se presenta en el cuadro 6.14.
La sintaxis de la funcion del modelo dinamico del robot antropomorfico de 3 gdl
esta dada como:
x=robot3gdl(t,x)
donde t es la evolucion del tiempo, x es la variable de estado, contiene las posiciones
y velocidades articulares, x es la derivada temporal de la variable de estado x,
contiene las velocidades y aceleraciones articulares del robot, es decir:
x = [ q1(t) q2(t) q3(t) q1(t) q2(t) q3(t) ]T
x = [ q1(t) q2(t) q3(t) q1(t) q2(t) q3(t) ]T
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.8 Robot de 3 gdl 319
Codigo Fuente 6.13 robot3gdl
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Funcion robot3gdl.m (robot3gdl simu.m)
robot3gdl
function xp = robot3gdl(t,x)1
q1=x(1); q2=x(2); q3=x(3); q = [q1; q2; q3];%vector de posicion articular2
qp1=x(4); qp2=x(5); qp3=x(6); qp = [qp1; qp2; qp3];%vector de velocidad articular3
Iz1=1.26; Iz2=0.084; Iz3=0.056; Iy1=0.089; Iy2=0.003; Iy3=0.0012; Ix1=0.03; Ix2=0.05;4
Ix3=0.009; m1=26.902; l1=0.45; b1=2.288; fc1=7.17; fe1=8.8; m2=30; l2=0.45; lc2=0.038;
b2=0.2; fc2=1.9; fe2=2.1; m3=3.880; l3=0.45; lc3=0.048; b3=0.175; fc3=1.734; fe3=1.87;
m11=Iy2*sin(q2)*sin(q2)+Iy3*sin(q2+q3)*sin(q2+q3)+Iz1+Iz2*cos(q2)*cos(q2)5
+Iz3*cos(q2+q3)*cos(q2+q3)+m2*lc2*lc2*cos(q2)*cos(q2)+
m3*(l2*cos(q2)+lc3*cos(q2+q3))*(l2*cos(q2)+lc3*cos(q2+q3));
m12=0; m13=0; m21=0; m22=Ix2+Ix3+m3*l2*l2+m2*lc2*lc2+m3*lc3*lc3+6
2*m3*l2*lc3*cos(q3); m23=Ix3+m3*lc3*lc3+m3*l2*lc3*cos(q3);
m31=0; m32=Ix3+m3*lc3*lc3+m3*l2*lc3*cos(q3); m33=Ix3+m3*lc3*lc3;7
M=[m11, m12, m13; m21, m22, m23; m31, m32, m33];8
gamma112=(Iy2-Ix2-m2*lc2*lc2)*cos(q2)*sin(q2)+(Iy3-Iz3)*cos(q2+q3)*sin(q2+q3)9
-m3*(l2*cos(q2)+lc3*cos(q2+q3))*(l2*sin(q2)+lc3*sin(q2+q3));
gamma113=(Iy3-Iz3)*cos(q2+q3)*sin(q2+q3)-m3*lc3*sin(q2+q3)*10
(l2*cos(q2)+lc3*cos(q2+q3));
gamma121=(Iy2-Iz2-m2*lc2*lc2)*cos(q2)*sin(q2)+(Iy3-Iz3)*cos(q2+q3)*sin(q2+q3)-11
m3*(l2*cos(q2)+lc3*cos(q2+q3))*(l2*sin(q2)+lc3*sin(q2+q3));
gamma131=(Iy3-Iz3)*cos(q2+q3)*sin(q2+q3)-m3*lc3*sin(q2+q3)*12
(l2*cos(q2)+lc3*cos(q2+q3)); gamma211=(Ix2-Iy2+m2*lc2*lc2)*cos(q2)*sin(q2)+
(Iz3-Iy3)*cos(q2+q3)*sin(q2+q3)+m3*(l2*cos(q2)+lc3*cos(q2+q3))*
(l2*sin(q2)+lc3*sin(q2+q3)); gamma223=-l2*m3*lc3*sin(q3);
gamma232=-l2*m3*lc3*sin(q3); gamma233=-l2*m3*lc3*sin(q3) ;13
gamma311=(Iz3-Iy3)*cos(q2+q3)*sin(q2+q3)+m3*lc3*sin(q2+q3)*(l2*cos(q2)+14
lc3*cos(q2+q3)); gamma322=l2*m3*lc3*sin(q3);
c11=gamma112*qp2+gamma113*qp3; c12=gamma121*qp1; c13=gamma131*qp1;15
c21=gamma211*qp1; c22=gamma223*qp3; c23=gamma232*qp2+gamma233*qp3;16
c31=gamma311*qp1; c32=gamma322*qp2; c33=0; C=[c11, c12, c13; c21, c22, c23;17
c31, c32, c33]; gq11=0; gq21=(lc2*m1++m2*l2)*sin(q1)+m2*lc3*sin(q1+q2);18
gq31=m2*lc3*sin(q1+q2);g=9.81; gq=g*[gq11; gq21; gq31]; fr=[b1*qp1; b2*qp2; b3*qp3];19
qd=[45*pi/180; 45*pi/180; 90*pi/180]; qt=[qd(1)-q1;qd(2)-q2; qd(3)-q3];20
Kp=[5, 0,0;0, 5,0; 0,0,5]; Kv=[3, 0,0;0, 3,0;0,0,3]; tau=Kp*qt-Kv*qp+gq;21
qpp = inv(M)*(tau-C*qp-gq-fr);%aceleracion articular22
xp = [qp1; qp2; qp3; qpp(1); qpp(2); qpp(3)];%vector de salida23
end24
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
320 Capıtulo 6: Dinamica
Codigo Fuente 6.14 robot3gdl simu
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa robot3gdl simu.m
%requiere la funcion robot3gdl.m
robot3gdl simu
clear; close all; clc;1
format short g2
%parametros de simulacion:3
ti=0; h=0.0025; tf = 10;%tiempo de simulacion 0 a 10 segundos4
ts=ti:h:tf;%vector tiempo5
%configuracion de la funcion ode456
opciones=odeset(’RelTol’,1e-3,’InitialStep’, 2.5e-3, ’MaxStep’, 2.5e-3);7
%solucion numerica del sistema, con condicion iniciales cero8
[t,x]=ode45(’robot3gdl’,ts,[0; 0; 0; 0; 0; 0], opciones);9
%graficas de las 3 articulaciones; q1=x(:,1), q2 =x(:,2), q3 =x(:,3)10
plot(t,180*x(:,1)/pi,t,180*x(:,2)/pi, t,180*x(:,3)/pi)11
Figura 6.12 Respuesta del robot 3 gdl.
La figura 6.12 presenta la respues-
ta del robot a una entrada τ de la
ley de control PD. Las posiciones de
las articulaciones de la base, hombro
y codo convergen a [ 45, 45, 90] gra-
dos, respectivamente. La sintonıa de
las ganancias se hizo para que el
transitorio no tuviera sobre impul-
sos y error en estado estacionario
menor a 0.001 grados en las 3 ar-
ticulaciones.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.9 Robot cartesiano 321
6.9 Robot cartesiano
El robot cartesiano de 3 gdl tiene los siguientes fenomenos: inercial, friccion
(viscosa, Coulomb y estatica) y par gravitacional, debido a que la articulacion
d1 tiene desplazamiento en el eje z0, su energıa potencial es variable. Para las
variables d2 y d3 tienen movimiento en el plano x0−y0, entonces la energıa potencial
de esas variables es constante. Por lo tanto el par gravitacional para aquellas
componentes es cero. Por otro lado, el robot cartesiano no tiene variables rotacionales
qi, mientras que las fuerzas centrıpetas y de Coriolis son cero.
Figura 6.13 Robot cartesiano.
El modelo dinamico de un robot cartesiano de 3 gdl esta dado por:
τ =
[m1 +m2 +m3 0 0
0 m1 +m2 0
0 0 m1
][d1
d2
d3
]+ g
[m1 +m2 +m3
0
0
]+
[b1 0 0
0 b2 0
0 0 b3
][d1
d2
d3
]
+
[fc1 0 0
0 fc2 0
0 0 fc3
][signo( d1 )
signo( d2 )
signo( d3 )
]+
[fe1 [ 1 − | signo ( d1 ) | ]
fe2 [ 1 − | signo ( d2 ) | ]
fe3 [ 1 − | signo ( d3 ) | ]
](6.16)
donde m1, m2, m3 son las masas de los servomotores e incluyen las barras y piezas
metalicas de acoplamiento mecanico, g es la constante debido a la aceleracion
gravitacional (g=9.81 m/seg2), b1, b2, b2, fc1, fc2, fc3 y fe1, fe2, fe3 representan los
coeficientes de friccion viscosa, Coulomb y estatica, respectivamente.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
322 Capıtulo 6: Dinamica
Los fenomenos de friccion pueden ser de magnitud considerable si los servomotores
emplean reductores de velocidad por medio de sistemas de engranes, los cuales
introducen juego mecanico que repercute directamente en errores de posicion.
Ademas, debido al efecto disipativo de la friccion (conversion de energıa mecanica
en energıa termica), se degradan las piezas o componentes del robot, lo que produce
un pobre desempeno. Cuando la tecnologıa de los servomotores del robot son
de transmision directa (direct drive), entonces el fenomeno de friccion se reduce
considerablemente, de ahı que la mayorıa de la bibliografıa especializada de robotica
presenta el modelo dinamico del robot cartesiano sin el fenomeno de friccion; debido
a este hecho el modelo dinamico resultante del robot cartesiano es lineal con respecto
a las variables de estado d1, d2, d3. Tambien debe recordarse, como se demostro en la
seccion 5.6 que el modelo cinematico cartesiano es lineal. Por ambas caracterıstica,
al robot cartesiano tambien se le denomina robot lineal.
A continuacion se presenta el modelo dinamico en forma numerica de un prototipo
robot cartesiano; los valores numericos de los parametros se encuentran descritos en
la tabla 6.6.
Tabla 6.6 Parametros del robot cartesiano
Articulacion Masa Friccion viscosa Friccion de Coulomb Friccion estatica
τmax1 =50 N, d1 m1=0.7 kg b1 =0.02 kg/seg fc1 =0.01 N fe1 =0.015 N
τmax2 =4 N, d2 m2=0.28 kg b2 =0.08 kg/seg fc2 =0.07 N fe2 =0.076 N
τmax3 =4 N, d3 m3=0.28 kg b3 =0.02 kg/seg fc3 =0.02 N fe3 =0.022 N
donde τmaxi (con i = 1, 2, 3) representa las capacidades maximas de los servomotores
de las articulaciones (d1, d2, d3), respectivamente.
La mesa del robot cartesiano tiene una longitud de 1m por cada lado. La posicion
de casa [ d1, d2, d3 ]T = [ 0, 0, 0]T esta ubicada de manera conveniente sobre el piso,
en el centro geometrico de la mesa. De esta forma, la variable articular d1 que
se desplaza sobre el eje z0 tiene coordenadas positivas y acotada en el intervalo
0 ≤ d1 ≤ 1, para las variables d2, d3 que se mueven en el plano x0 − y0 pueden
tener coordenadas positivas y negativas; ambas variables se encuentran restringidas
al intervalo: −0.5 ≤ di ≤ 0.5, para i = 2, 3. Tambien es posible ubicar otro lugar
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.9 Robot cartesiano 323
para la posicion de casa, lo cual depende finalmente de la facilidad que permita
programar la aplicacion que va a realizar el robot.
τ =
⎡⎢⎣
1.26 0 0
0 0.98 0
0 0 0.7
⎤⎥⎦
⎡⎢⎣d1
d2
d3
⎤⎥⎦ +
⎡⎢⎣
0.02 0 0
0 0.08 0
0 0 0.02
⎤⎥⎦
⎡⎢⎣d1
d2
d3
⎤⎥⎦ +
⎡⎢⎣
12.36
0
0
⎤⎥⎦
+
⎡⎢⎣
0.01 0 0
0 0.07 0
0 0 0.02
⎤⎥⎦
⎡⎢⎣
signo ( d1 )
signo ( d2 )
signo ( d3 )
⎤⎥⎦ +
⎡⎢⎣
0.015 [1 − | signo ( d1 ) | ]0.076 [1 − | signo ( d2 ) | ]0.022 [1 − | signo ( d3 ) | ]
⎤⎥⎦(6.17)
En el caso del robot cartesiano debe notarse que en el modelo dinamico (6.17) la
entrada τ representa una fuerza cartesiana y no un par aplicado o torque.
Cuando recien se construye o se adquiere un prototipo nuevo es recomendable
aplicarle una senal de energıa apropiada para moverlo en su espacio de trabajo por
un periodo de una semana (dıa y noche). Lo anterior tiene la finalidad de “asentar”
los servomotores y bajar los niveles de friccion a sus estados normales.
Es conveniente aplicar una senal de entrada al robot como la que se presenta a
continuacion: ⎡⎢⎣τ1
τ2
τ3
⎤⎥⎦ =
⎡⎢⎣
12.36 + 0.05 sen(t)
0.13 [1 − e−0.5t ] sen(t)
0.06 sen(t)
⎤⎥⎦ (6.18)
donde t es la variable del tiempo; las amplitudes y parametros son seleccionados de
manera conveniente para no saturar a los servoamplificadores del robot.
El modelo dinamico (6.17) es una ecuacion diferencial de segundo orden; para poder
simular dicho modelo es necesario convertirlo al formato x = f(x), es decir a una
ecuacion diferencial ordinaria de primer orden y de esta forma estar en condiciones
de utilizar la funcion de MATLAB ode45(· · ·). Con esta finalidad, observe que
x = [ d1, d2, d3, d1, d2, d3 ], entonces la ecuacion (6.17) adquiere la forma (6.19):
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
324 Capıtulo 6: Dinamica
ddt 266666664
d1
d2
d3
d1
d2
d3 377777775
|{z
}x
=
26666666664
d1
d2
d3
241.2
60
0
00.9
80
00
0.7 35
−1 24 24
τ1
τ2
τ3 35
−
240.0
20
0
00.0
80
00
0.0
2 35 24d1
d2
d3 35
−
2412.3
6
00
35−
240.0
10
0
00.0
70
00
0.0
2 35 24sig
no
(d1
)
signo
(d2
)
signo
(d3
) 35−
240.0
15
[1−
|sig
no
(d1
)|]
0.0
76
[1−
|sig
no
(d2
)|]
0.0
22
[1−
|sig
no
(d3
)|] 35 35 37777777775
|{z
}
f(x)
(6.1
9)
Una vez que el modelo dinamico ya se encuentra correc-
tamente expresado como una ecuacion diferencial ordina-
ria de primer orden, puede ser implementado en lenguaje
MATLAB a traves de la funcion ode45(· · ·).
En el cuadro 6.15 se encuentra el codigo fuente del mo-
delo dinamico del robot cartesiano. Se ha tomado la en-
trada de prueba (6.18) para estudiar su comportamiento
dinamico. El cuadro 6.16 contiene el programa principal
para realizar la simulacion con el robot cartesiano. La fi-
gura 6.14 muestra el desplazamiento articular de las tres
variables d1, d2, d3. La oscilacion que presenta cada arti-
culacion es intencional con la finalidad de mover a cada
servo en ambas direcciones y al mismo tiempo recorran la
mayor parte de su espacio de trabajo. Es recomendable
este procedimiento antes de utilizar el robot, al menos
durante una semana dejarlo con la trayectoria de prueba
ayuda a normalizar los niveles de friccion. Posteriormente
se puede realizar identificacion parametrica (ver seccion
7.7) o realizar experimentos con el robot.
Figura 6.14 Robot cartesiano.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.9 Robot cartesiano 325
Codigo Fuente 6.15 robot cartesiano3gdl
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa robot cartesiano3gdl.m
robot cartesiano3gdl
function xp = robot cartesiano3gdl(t,x)1
d = [x(1); x(2); x(3)]; % Vector de posicion articular2
dp = [x(4); x(5); x(6)]; % vector de velocidad articular3
%parametros del robot cartesiano4
m1=0.7; m2=0.28; m3=0.28;% masas de los servomotores y partes mecanicas5
b1=0.02; b2=0.08; b3=.02;% coeficientes de friccion viscosa6
fc1=0.01; fc2=0.07; fc3=.02;% coeficientes de la friccion de Coulomb7
fe1=0.015; fe2=0.076; fe3=0.022;% coeficientes de la friccion estatica8
g=9.81;% constante de aceleracion gravitacional9
B=[b1, 0, 0;10
0, b2,0;11
0, 0, b3];12
Fc=[fc1, 0, 0;13
0, fc2,0;14
0, 0, fc3];15
% matriz de masas16
M = [m1+m2+m3, 0, 0;17
0 m1+m2, 0;18
0 0 m3];19
par grav = g*[m1+m2+m3; 0;0];%vector de par de gravitacional20
%friccion estatica21
fe=[ fe1*(1-abs(sign(dp(1)))); fe2*(1-abs(sign(dp(2))));22
fe3*(1-abs(sign(dp(3))))];
fr= B*dp+Fc*sign(dp)+fe;23
tau=[ g*(m1+m2+m3)+ 0.05*sin(t); (1-exp(-0.5*t))*0.13*sin(t);0.06*sin(t)];24
dpp = inv(M)*(tau- par grav-fr);25
xp = [dp(1); dp(2); dp(3); dpp(1); dpp(2); dpp(3)];26
end27
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
326 Capıtulo 6: Dinamica
Codigo Fuente 6.16 simu robotcartesiano3gdl
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes
%Capıtulo 4 Dinamica. Programa simu robotcartesiano3gdl.m
% este programa requiere del archivo: robot cartesiano3gdl.m
simu robotcartesiano3gdl
clc;1
clear all;2
close all;3
format short4
%parametros de simulacion:5
ti=0;%tiempo inicial6
h=0.0025;%incremento del tiempo7
tf = 600;% tiempo de simulacion (segundos)8
ts=ti:h:tf;%vector de tiempo de simulacion9
%para un correcto desempeno de integracion de la funcion ode45(· · ·) se requieren:10
opciones=odeset(’RelTol’,1e-3,’InitialStep’,2.5e-3,’MaxStep’,2.5e-3);11
% solucion numerica del sistema x = f(x):12
%las condiciones iniciales del robot cartesiano han sido puestas en cero13
%[ d1(0), d2(0), d3(0), d1(0), d2(0), d3(0) ]T
= [ 0, 0, 0, 0, 0, 0]T
14
%advertencia: debido al uso de funciones discontinuas en el modelo dinamico del15
%robot cartesiano como la funcion signo(· · ·), el proceso de simulacion puede16
tardar
[t,x]=ode45(’robot cartesiano3gdl’,ts,[0; 0; 0; 0; 0; 0],opciones);17
% t representa el tiempo, x representa la solucion de la ecuacion (6.19)18
% Las componentes del vector x representan19
% componentes de posiciones20
%x(:, 1) = d1 x(:, 2) = d2 x(:, 3) = d321
% componentes de velocidades22
%x(:, 4) = d1 x(:, 5) = d2 x(:, 6) = d323
%presenta grafica de posiciones en funcion del tiempo24
plot(t,x(:,1),t,x(:,2),t,x(:,3))25
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
6.10 Resumen 327
6.10 Resumen
Dinamica es la parte de la fısica que explica el movimiento de un sistema
mecanico tomando en cuenta las fuerzas que lo producen. El modelo dinamico
esta formado por ecuaciones diferenciales no lineales que reproducen ıntegramente
todos los fenomenos fısicos del robot.
En este capıtulo se ha presentado la tecnica para simular diversos sistemas dinamicos,
lo que facilita el estudio, analisis y aplicaciones del sistema o prototipo. Para un
adecuado entendimiento de la dinamica del sistema la mejor herramienta es la
simulacion. El paso previo a una etapa experimental es la simulacion, ya que conocer
a detalle todos los aspectos dinamicos del robot o del sistema mecatronico facilita
su control, ası como llevar a cabo en forma practica aplicaciones potenciales del
prototipo. El metodo de integracion numerica es un factor fundamental para una
adecuada solucion numerica del modelo dinamico, por lo tanto es recomendable
utilizar el metodo de Runge Kutta 4/5, el cual lo tiene implementado MATLAB a
traves de la funcion ode45(· · ·).
Se han presentado diversos ejemplos para ilustrar la tecnica de simulacion
de sistemas dinamicos: sistemas lineales y no lineales simples, sistema masa
resorte amortiguador, centrıfuga y pendulo, hasta sistemas dinamicos de robots
manipuladores mas complejos como el robot antropomorfico de 2 y 3 gdl, y robot
cartesiano de 3 gdl. Dichos modelos se encuentran estructurados de acuerdo con
la forma: function x=modelo dinamico(t,x) para facil implementacion y uso en
diversas aplicaciones de robotica y mecatronica.
Es importante resaltar que la estructura matematica del modelo dinamico debe ser
de la forma tradicional de variables fase como una ecuacion diferencial ordinaria de
primer orden:
x = f(x)
si el modelo original del sistema es una ecuacion diferencial de orden superior,
entonces mediante un adecuado cambio de variables de estados siempre es posible
transformarlo a la estructura requerida.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
328 Capıtulo 6: Dinamica
A continuacion se resume la sintaxis de los modelos dinamicos desarrollados para
MATLAB:
xp = centrifuga( t,x)
xp =pendulo(t,x)
xp =mra(t,x)
xp =robot2gdl(t,x)
xp=robot3gdl(t,x)
xp = robot cartesiano3gdl(t,x)
Para un adecuado funcionamiento de las librerıas es recomendable utilizar en todos
los casos un codigo parecido al siguiente:
ti=0; h=0.0025; tf =5; ts=ti:h:tf;
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);
Condiciones iniciales (dependiendo del robot):
ci=[0;0] (centrıfuga); ci=[0;0] (pendulo); ci=[0;0;0;0] robot de 2 gdl;
ci=[0;0;0;0;0;0] robot de 3 gdl (antropomorfico y cartesiano).
[t,x]=ode45(’nombre funcion’,ts,ci,opciones);
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Capıtulo
7 Identificacionparametrica
θ(k) = θ(k − 1) +P (k − 1) Ψ(k) [y(k) − Ψ(k)T θ(k− 1) ]
1 + Ψ(k − 1)TP (k − 1)Ψ(k)
P (k) = P (k − 1) −P(k−1)Ψ(k)Ψ(k)T P(k−1)
1+Ψ(k−1)T P(k−1)Ψ(k)
7.1 Introduccion
7.2 Metodo de mınimos cuadrados
7.3 Librerıa de mınimos cuadrados
7.4 Ejemplos
7.5 Modelos de regresion del pendulo
7.6 Modelos de regresion del robot de 2 gdl
7.7 Robot cartesiano de 3 gdl
7.8 Resumen
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Objetivos
Presentar la tecnica de estimacion de mınimos cuadrados y su
aplicacion en identificacion parametrica de sistemas mecatronicos y robots
manipuladores.
Objetivos particulares:
Esquemas de regresion escalar y multivariable.
Regresion lineal del modelo dinamico.
Regresion del modelo de energıa.
Esquema de regresion del modelo de potencia.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.1 Introduccion 331
7.1 Introduccion
El modelo dinamico de sistemas mecatronicos y robots manipuladores contiene
en su estructura matematica parametros tales como centros de gravedad,
masas, momentos de inercia y coeficientes de friccion. Estos parametros generalmente
son desconocidos; este es el caso de la mayorıa de los robots comerciales donde el
fabricante no proporciona sus valores nominales. Si bien existen herramientas de la
teorıa de control como esquemas adaptables y controladores robustos que permiten
tolerar errores en los parametros dinamicos, el conocimiento de estos es crucial para
la mayorıa de los esquemas basados en el modelo dinamico del robot manipulador.
Identificacion parametrica es una herramienta atractiva para determinar los
parametros dinamicos de robots manipuladores, sobre todo cuando existe dificultad
para medirlos directamente. Sin embargo, la naturaleza no lineal del modelo
dinamico de robots manipuladores hace que la tarea de identificacion parametrica
no sea trivial.
El modelo dinamico de robots manipuladores posee propiedades que permiten
generar varios esquemas de regresion lineal como los siguientes: modelo dinamico
se le denomina ası debido a que emplea la estructura del modelo dinamico para
expresarlo como un regresor lineal vectorial. Sin embargo, este modelo requiere medir
la aceleracion articular lo que representa una desventaja practica. La estimacion de
la velocidad puede realizarse mediante tecnicas de filtrado, lo que da origen al modelo
de regresion dinamico filtrado. Por otro lado, existen esquemas de regresion escalares
como los modelos de energıa, potencia y potencia filtrada; estos modelos permiten
identificar los mismos parametros de los esquemas vectoriales dinamico y dinamico
filtrado.
Para poder utilizar el metodo de mınimos cuadrados se requiere que el modelo
matematico del sistema a identificar pueda ser expresado como un regresor lineal en
los parametros desconocidos. La tecnica de mınimos cuadrados recursivo permite
obtener el valor numerico de los parametros del sistema sin la necesidad de
desarmar al sistema mecatronico o robot manipulador. Se requieren de contar con
las mediciones u observaciones de las posiciones y velocidades articulares, ası como
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
332 Capıtulo 7: Identificacion parametrica
la senal del par aplicado para que el sistema pueda moverse en su espacio de trabajo.
7.2 Metodo de mınimos cuadrados
De particular relevancia para los esquemas de identificacion parametrica y
de control adaptable es expresar el modelo dinamico no lineal del robot
manipulador como el producto de una matriz de regresion compuesta de funciones no
lineales (dependientes de la posicion, velocidad y aceleracion articular) y un vector
de parametros constantes dependiente de masas, momentos de inercias, distancias a
centros de masa y coeficientes de friccion.
Los esquemas de identificacion que se describiran en esta seccion son sistemas de
identificacion que pertenecen a la filosofıa de identificacion hıbrida, es decir el modelo
de regresion es formulado en tiempo continuo mientras que la identificacion se realiza
a traves de un estimador recursivo llamado mınimos cuadrados, el cual se utiliza
ampliamente en la literatura debido a su sencillez y a su propiedad de recursividad,
atributo que lo hace atractivo para su implementacion.
Esta tecnica es particularmente simple si el modelo tiene la propiedad de linealidad
en los parametros del modelo. El metodo de mınimos cuadrados es un esquema
estandar que aproxima la solucion de sistemas sobre determinados, por ejemplo
cuando hay mas variables incognitas que ecuaciones. Mınimos cuadrados minimiza
la suma de cuadrados de los errores; un error es la diferencia entre un valor observado
y el valor proporcionado por el modelo matematico (robot).
El algoritmo recursivo de mınimos cuadrados se describe a continuacion. Considerese
el siguiente modelo de regresion:
7.2.1.7.2.1 Linealidad en los parametros
Considere el modelo matematico que esta expresado como un regresor lineal de la
siguiente forma:
y(k) = Ψ(k)Tθ (7.1)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.2 Metodo de mınimos cuadrados 333
donde y(k) ∈ IRr es un vector de mediciones (entradas o salidas) del sistema,
Ψ(k) ∈ IRm×r es la matriz de regresion compuesta por observaciones de funciones
conocidas y el vector de parametros desconocidos esta representado por θ ∈ IRm. El
modelo (7.1) esta indexado por la variable k, la cual denota el tiempo discreto; se
asume que el conjunto de ındices τ (k),Ψ(k) forman un conjunto discreto.
El algoritmo de mınimos cuadrados para el caso vectorial tiene la siguiente forma:
θ(k) = θ(k − 1) + P (k − 1) Ψ(k)[I + Ψ(k − 1)TP (k − 1)Ψ(k)]−1 e(k) (7.2)
P (k) = P (k − 1) − P (k − 1)Ψ(k)[I + Ψ(k)T P (k − 1)Ψ(k)]−1Ψ(k)TP (k − 1) (7.3)
e(k) = y(k)− Ψ(k)T θ(k − 1) (7.4)
donde P (k) ∈ IRm×m es la matriz de covarianza, la cual es una matriz definida
positiva, e(k) ∈ IRr es el error de prediccion, θ(k) es el vector de parametros
estimados; θ es el vector de parametros reales.
El algoritmo de mınimos cuadrados para el caso escalar tiene la siguiente forma:
θ(k) = θ(k − 1) +P (k − 1) Ψ(k)e(k)
1 + Ψ(k − 1)TP (k − 1)Ψ(k)(7.5)
P (k) = P (k − 1) −P(k−1)Ψ(k)Ψ(k)T P(k−1)
1+Ψ(k−1)T P(k−1)Ψ(k)(7.6)
e(k) = y(k) − Ψ(k)T θ(k − 1) (7.7)
Propiedades: El algoritmo de mınimos cuadrados puede identificar los parametros
de cualquier modelo matematico lineal, no lineal, dinamico, estatico, continuo o
discreto (no depende del periodo de muestreo, inclusive puede ser aperiodico). La
estructura matematica del modelo debe cumplir con la condicion de linealidad en los
parametros, es decir que pueda ser expresado como un regresor lineal manteniendo la
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
334 Capıtulo 7: Identificacion parametrica
estructura de una matriz de observaciones o mediciones y un vector de parametros.
7.3 Librerıa de mınimos cuadrados
La sintaxis de la funcion de mınimos cuadrados varıa dependiendo de que el
modelo sea expresado en forma escalar o multivariable (vectorial) de la siguiente
forma:
7.3.1.7.3.1 Caso escalar
Para el caso de modelos matematicos con estructura escalar
y(k) = Ψ(k)T θ(k − 1)
la sintaxis de la funcion de mınimos cuadrados tiene la siguiente forma:
function [r, θ] =mincuad(y,fi)
donde y(k) ∈ IR es un escalar definido como arreglo con n renglones con el registro
de las correspondientes n mediciones del sistema; indexado por el pivote k para
k = 1, 2, · · · , n; fi ∈ IRn×m es la matriz de regresion compuesta por n renglones
de observaciones de funciones conocidas y m columnas (m indica el numero de
parametros). Esta funcion retorna el vector de parametros estimados θ ∈ IRm
y r es una matriz de dimension n × m que contiene el registro temporal de las
componentes θi del vector de parametros estimados θ que tuvieron durante el proceso
de identificacion.
En el cuadro 7.1 se presenta el codigo fuente del algoritmo de mınimos cuadrados en
su version escalar. En la lınea 2 se obtiene el numero de observaciones o mediciones
(n= numero de renglones) que contiene cada columna de la matriz de regresion fi
(m= numero de columnas). La lınea 3 genera el vector de parametros estimados θ,
con condicion inicial cero θ(0) (lınea 4). En realidad, la condicion inicial puede ser
puesta en cualquier valor. La lınea 5 contiene la formacion del vector columna ψ con
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.3 Librerıa de mınimos cuadrados 335
las observaciones o mediciones. La matriz de covarianza P ∈ IRm×m se genera en
la lınea 6; observe que la condicion inicial P (0) es una matriz diagonal con valores
pii = 1020, i = 1, 2 · · · , m.
De las lıneas 8 -14 se realiza el algoritmo recursivo de identificacion parametrica de
mınimos cuadrados de acuerdo a las ecuaciones (7.5)-(7.7). El error de prediccion
e(k) se calcula en la lınea 12, el vector de parametros θ en la lınea 13, mientras que
la matriz de covarianza P en la lınea 14. La forma como varıan las componentes θi
del vector de parametros estimados θ se registra en la lınea 16. Esta informacion es
muy util para analizar a traves de una grafica la convergencia parametrica de cada
componente θi en funcion del tiempo t.
Codigo Fuente 7.1 mincuad.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
mincuad.m
function [r, theta] =mincuad(y,fi)1
[n,m]=size(fi); %n=numero de renglones, m=numero de columnas2
theta=[1:m]’; %vector columna de parametros3
theta(1)=0;%Condicion inicial del vector de parametros4
psi=[1:m]’; %vector columna de observaciones5
P=eye(m,m)*10e20; %matriz de covarianza P6
r=eye(n,m);%registro para los parametros estimados7
for k=1:n % algoritmo recursivo de mınimos cuadrados8
for i=1:m%se forma el regresor9
psi(i,1)=fi(k,i);10
end11
e=y(k)-theta’*psi;%error de regresion12
theta= theta+(P*psi*e)/(1+psi’*P*psi); %vector estimado13
P=P-(P*psi*(psi’)*P)/(1+psi’*P*psi); %matriz de covariancia14
for i=1:m15
r(k,i)=theta(i,1);%registro por cada iteracion de parametros estimados16
end17
end18
end19
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
336 Capıtulo 7: Identificacion parametrica
7.3.2.7.3.2 Caso multivariable
Cuando el sistema esta expresado como multivariable, es decir tiene n entradas o
salidas y1, y2, · · · , yn bajo la siguiente estructura matematica:⎡⎢⎢⎢⎣y1(k)
y2(k)...
yn(k)
⎤⎥⎥⎥⎦ = Ψ(k)T θ(k − 1)
entonces la librerıa del algoritmo de mınimos cuadrados recursivo correspondiente
se denomina mincuadm teniendo la sintaxis que a continuacion se describe:
function θ =mincuadm(y,fi,Nob,p,n)
donde y es un vector de dimension n×Nob con las mediciones u observaciones de
las entradas (salidas) del sistema a identificar; n indica el numero de variables
y1, y2, · · · , yn; Nob representa el numero total de observaciones. Cada variable yi tiene
un conjunto de Nob observaciones o renglones, para i = 1, · · ·n; fi es el regresor
de observaciones compuesto por p columnas (p= numero de parametros). Cada
columna del regresor fi tiene un numero Nob de observaciones; cada observacion
evidentemente esta registrada en su respectivo renglon.
En la lınea 2 se genera el vector de parametros estimados θ. La condicion inicial de
este vector es cero. Sin embargo, puede ser inicializado con cualquier valor (lınea 3).
La matriz de covarianza P ∈ IRp×p se define en la lınea 21. Note que el valor inicial
de esta matriz P (0) corresponde a una matriz diagonal con valores 1020 (ver lınea
5). La matriz identidad con las dimensiones adecuadas se define en la lınea 6. El
vector de observaciones y ∈ IRn para entradas (salidas) del sistema se define en la
lınea 7.
El algoritmo de mınimos cuadrados recursivo multivariable de las ecuaciones (7.2)-
(7.4) se implementa de las lıneas 8 a la 21. Observe que en la lınea 14 se forma el
vector y ∈ IRn, de manera recursiva a cada renglon se le asigna la correspondiente
medicion u observacion.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.3 Librerıa de mınimos cuadrados 337
En la lınea 17 se calcula el vector de error de prediccion e(k), en la lınea 18 el vector
de parametros estimados θ y en la lınea 19 la matriz de covarianza P .
La funcion mincuadm retorna el vector de parametros estimados θ ∈ IRp. En el cuadro
7.2 se presenta el codigo fuente de la funcion minicuad.m (caso multivariable).
Codigo Fuente 7.2 mincuadm.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
mincuadm.m
function theta =mincuadm(y,fi,Nob,p,n)1
theta=[1:p]’;%vector columna de parametros2
theta(1)=0; %condicion inicial del vector de parametros3
psi=zeros(p,n); %vector columna de observaciones4
P=eye(p,p)*10e20; %matriz de covarianza P5
I=eye(n,n); %matriz identidad6
ys=zeros(n,1);7
for k=1:Nob8
for j=1:n9
for i=1:p%se forma el regresor10
psi(i,j)=fi(k+Nob*(j-1),i);11
end12
for i=1:n13
ys(i,1)=y(k+Nob*(i-1));14
end15
end16
e=ys-psi’*theta; %error de regresion17
theta= theta+P*psi*(I+psi’*P*psi)∧(-1)*e; %vector estimado18
P=P-(P*psi*(I+psi’*P*psi)∧(-1)*(psi’)*P);%Matriz de covarianza19
end20
end21
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
338 Capıtulo 7: Identificacion parametrica
7.4 Ejemplos
En esta seccion se presentan ejemplos sencillos que ilustran la forma de utilizar
las librerıas de mınimos cuadrados recursivo para el caso escalar mincuad y
multivariable mincuadm.
♣ Ejemplo 7.1
Identificar el parametro a1 del siguiente modelo:
y = a1t3
donde el valor teorico de a1=8.034.
Solucion
El sistema y = a1t3 corresponde al caso escalar. Para propositos de simulacion la
variable t estara definida en el intervalo de 0 a 10 segundos, con incrementos de un
milisegundo.
En este caso el regresor esta formado por
y(k) = Ψ(k)T θ
donde y = y(k), Ψ(k) = t3, θ = a1.
Por lo tanto, el error de prediccion e(k) esta dado por:
e(k) = t3︸︷︷︸Ψ(k)
θ
En el cuadro 7.3 se muestra el codigo del programa cap7 ejemplo1.m; en la lınea
7 se forma la ecuacion del sistema a identificar, el vector de mediciones o regresor
esta definido en la lınea 8. El algoritmo de mınimos cuadrados se emplea en la lınea
10; el resultado se presenta en la lınea 11.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.4 Ejemplos 339
El resultado del programa 7.3 es:
theta=
8.034
Codigo Fuente 7.3 cap7 ejemplo1.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 ejemplo1.m
clc;1
clear all;2
close all;3
format short g4
t=[0:0.001:10]’;%vector columna de tiempo5
a1=8.034;%parametro del sistema6
y=a1*t.*t.*t; %sistema a identificar7
fi=[t.*t.*t ] ;8
[m, p]=size(fi);9
[˜ theta] =mincuad(y,fi);10
theta %resultado de la identificacion11
♣ Ejemplo 7.2
Identificar los parametros del siguiente sistema:
y = a1t+ a2 sen(t) + a3 cos(t) + a4 tanh(t)
donde los valores de los parametros son: [ a1, a2, a3, a4 ]T =
[ 4.456, 7.456,−0.089, 12.37]T
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
340 Capıtulo 7: Identificacion parametrica
Solucion
El error de prediccion se encuentra dado por
e(k) = y(k)− [ t sen(t) cos(t) tanh(t) ]︸ ︷︷ ︸Ψ(k)
θ(k − 1)
donde θ = [ a1 a2 a3 a4 ]T .
Para propositos de simulacion, la variable tiempo t estara definida en un intervalo
de 0 a 10 segundos, con incrementos de un milisegundo. El cuadro 7.4 contiene el
programa cap7 ejemplo2.m; en la lınea 5 se define el sistema a identificar. El vector
de observaciones o regresor se encuentra construido en la lınea 6 y en la lınea 7 se
emplea la funcion de mınimos cuadrados para obtener el vector de parametros θ en
la lınea 8.
El resultado del programa cap7 ejemplo2.m es el siguiente:
theta=
[4.456 7.456 −0.089 12.37]T
Codigo Fuente 7.4 cap7 ejemplo2.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 ejemplo2.m
clc; clear all; close all; format short g1
t=[0:0.001:10]’;%vector columna de tiempo2
%parametros del sistema3
a1=4.456; a2=7.456; a3=-0.089; a4=12.37;%sistema a identificar4
y=a1*t+a2*sin(t)+a3*cos(t)+a4*tanh(t);5
fi=[t, sin(t), cos(t), tanh(t)];6
[˜ theta] =mincuad(y,fi);7
theta %resultado de la identificacion8
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.4 Ejemplos 341
♣ Ejemplo 7.3
Identificar los parametros del siguiente sistema:
y(t) = a1 cosh (t) + a2 senh(t) + a3 cos(t)
donde los valores de los parametros son:⎡⎢⎣ a1
a2
a3
⎤⎥⎦ =
⎡⎢⎣ 0.001
456
−345
⎤⎥⎦
Solucion
El error de regresion esta formado de la siguiente forma:
e(k) = y(k)− [ cosh (k) senh(k) cos(k) ]︸ ︷︷ ︸ψ(k)
⎡⎢⎣a1
a2
a3
⎤⎥⎦
︸ ︷︷ ︸ˆθ(k−1)
(7.8)
El cuadro 7.5 contiene el programa cap7 ejemplo3.m con el codigo fuente en
MATLAB para llevar a cabo el proceso de identificacion parametrica del sistema.
Se emplea un vector tiempo definido de 0 a 10 segundos con intervalos de un
milisegundo. El sistema a identificar se encuentra definido en la lınea 8; el regresor fi
se forma en la lınea 9. La funcion de mınimos cuadrados recursivo mincuad se emplea
en la lınea 10 para obtener el vector de parametros estimados θ, cuyo resultado se
presenta en la lınea 11:
theta=
0.001
456
−345
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
342 Capıtulo 7: Identificacion parametrica
Codigo Fuente 7.5 cap7 ejemplo3.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 ejemplo3.m
clc;1
clear all;2
close all;3
format short g4
t=[0:0.001:10]’;%vector columna de tiempo5
%parametros del sistema6
a1=0.001; a2=456; a3=-345;%sistema a identificar7
y=a1*cosh(t)+a2*sinh(t)+a3*cos(t);8
fi=[cosh(t), sinh(t), cos(t)];9
[˜ , theta] =mincuad(y,fi);10
theta %resultado de la identificacion11
♣ Ejemplo 7.4
Identificar los parametros del siguiente sistema dinamico lineal:
x = −ax+ bu
donde los valores de los parametros son: [ a, b ]T = [ 6, 2 ]T
Solucion
El error de prediccion esta definido por:
e(k) = x︸︷︷︸y(k)
− [−x u ]︸ ︷︷ ︸ψ(k)
[a
b
]︸︷︷︸ˆθ(k−1)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.4 Ejemplos 343
El cuadro 7.7 contiene el codigo del programa cap7 ejemplo4.m. Debido a que el
sistema a identificar es dinamico, se empleara la funcion ode45() para llevar a cabo
el proceso de integracion numerica. El programa cap7 se1.m tiene implementado al
sistema dinamico x = −ax + bu, cuyo codigo se encuentra en el cuadro 7.6. Esta
declaracion tambien se encuentra en el programa cap7 se1.m.
Es importante resaltar la utilidad de la variable global u que registra la entrada
del sistema dinamico u = sen(t) (ver lınea 4 ). La lınea 12 del programa
cap7 ejemplo4.m realiza la solucion numerica del sistema x = −ax + bu para un
intervalo de tiempo de 0 a 5 segundos, con incrementos de un milisegundo. En esta
fase se obtiene la variable de estado x, la cual se emplea en la lınea 13 para obtener
la variable velocidad x. El regresor de observaciones fi se forma en la lınea 14. El
vector de parametros estimados θ se obtiene en la lınea 16; usando el algoritmo de
mınimos cuadrados implementado en la funcion mincuad y el resultado se presenta
en la lınea 17:
theta=
6
2
Codigo Fuente 7.6 cap7 se1.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 se1.m
function xp =se1(t,x)1
global qpp u2
u=sin(t); a=6; b=2;3
xp=-a*x+b*u;4
qpp=xp;5
end6
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
344 Capıtulo 7: Identificacion parametrica
Codigo Fuente 7.7 cap7 ejemplo4.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 ejemplo4.m
clc;1
clear all;2
close all;3
global u %variable global almacena la entrada del sistema4
format short g5
ti=0;6
h=0.001;7
tf = 5;8
ts=ti:h:tf;%vector tiempo de simulacion9
opciones=odeset(’RelTol’,1e-3,’InitialStep’,2.5e-3,’MaxStep’,2.5e-3);10
%solucion numerica del sistema dinamico lineal11
[t,x]=ode45(’cap7 se1’,ts,0,opciones);12
xp=se1(t,x); %se obtiene la velocidad13
fi=[-x, u]; %regresor14
%algoritmo de mınimos cuadrados15
[r,theta] =mincuad(xp,fi);16
theta %resultado de la identificacion17
♣♣♣ Ejemplo 7.5
Identificar los parametros del siguiente sistema multivariable:[y1
y2
]=
[8.7 sen(t) + 0.001 cos(t)
109.789 atan (t) − 0.23 ∗ tanh t
]
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.4 Ejemplos 345
Solucion
En el cuadro 7.8 se muestra el programa cap7 ejemplo5.m; observe que en la lınea
3 se forma el vector columna, en la lınea 4 se obtiene el numero de observaciones o
muestras Nob. En las lıneas 5-6 se define el sistema a identificar; en la lınea 7 se forma
el vector de salida del sistema y = [y1; y2], el regresor o vector de observaciones se
forma en la lınea 8 y 9. La funcion mincuadm es utilizada en la lınea 10 para obtener el
vector de estimacion parametrica cuyo resultado es: θ = [ 8.7, 0.001, 109.79,−0.23].
Codigo Fuente 7.8 cap7 ejemplo5.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 ejemplo5.m
clc; clear all; close all;1
format short g2
t=(0:0.001:10)’;3
[Nob, ˜ ]=size(t);4
y1=8.7*sin(t)+0.001*cos(t);5
y2=109.789*atan(t)-0.23*tanh(t);6
y=[y1; y2];7
fi=[sin(t), cos(t), zeros(Nob,1), zeros(Nob,1);8
zeros(Nob,1), zeros(Nob,1), atan(t), tanh(t)];9
theta=mincuadm(y,fi,Nob,4,2);10
theta11
A continuacion se presentan aplicaciones de identificacion parametrica de sistemas
mecatronicos y robots manipuladores. Particularmente se explotan las propiedades
matematicas del modelo dinamico de los robots manipuladores para expresarlo
como un regresor lineal teniendo casos escalares (modelo de energıa y potencia)
y multivariable (modelo dinamico).
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
346 Capıtulo 7: Identificacion parametrica
7.5 Modelos de regresion del pendulo
La metodologıa de Euler-Lagrange permite obtener el modelo dinamico de robots
manipuladores con propiedades importantes para disenar y analizar esquemas
de control e identificacion parametrica.
Dentro de las propiedades del modelo dinamico de robots manipuladores se encuentra
la de linealidad en los parametros, es decir: a pesar de que la dinamica del robot es
no lineal con respecto a las variables de estado de la posicion y velocidad, es posible
expresar dicha dinamica como un regresor lineal de una matriz de observaciones y un
vector columna de parametros desconocidos. Ademas, las propiedades de linealidad
tambien se satisfacen en los modelos de energıa y potencia que seleccionando de
manera conveniente el regresor de observaciones, resultan los mismos parametros
que los modelos de energıa y potencia.
Como caso particular de robots manipuladores de 1 gdl se encuentra el pendulo
que tiene las mismas ventajas de linealidad en los parametros. En esta seccion se
presenta la implementacion y analisis comparativo de cinco esquemas de regresion
parametrica: modelo dinamico, dinamico filtrado, energıa, potencia y potencia
filtrada.
7.5.1.7.5.1 Modelo dinamico del pendulo
El modelo dinamico del pendulo robot se encuentra dado por la siguiente
ecuacion:
τ1 = [ Ir1 +m1l2c1 ] q1 + b1q1 + fc1 signo ( q1 ) +m1glc1 sen(q1) (7.9)
donde Ir1 es el momento de inercia del rotor, m1 es la masa del pendulo, lc1
representa el centro de masa, b1, fc1 son los coeficientes de friccion viscosa y de
Coulomb, respectivamente; las variables articulares son la aceleracion q1, velocidad
q1 y posicion q1; la constante de la aceleracion debido a la gravedad es g y τ1 es el
par aplicado al servomotor.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.5 Modelos de regresion del pendulo 347
♣ ♣ Ejemplo 7.6
Obtener la identificacion parametrica del modelo dinamico del pendulo-robot.
Tomar en cuenta los valores de los parametros del pendulo que se encuentran
contenidos en la tabla 6.3.
Solucion
El esquema de regresion del modelo dinamico del pendulo esta dado por:
e(k) = τ1(k)︸ ︷︷ ︸y(k)
− [ q1(k) q1(k) signo ( q1(k) ) sen(q1(k)) ]︸ ︷︷ ︸ψ(k)
⎡⎢⎢⎢⎣Ir1 + m1 l
2c1
b1
fc1
m1glc1
⎤⎥⎥⎥⎦
︸ ︷︷ ︸ˆθ(k−1)
donde Ir1 + m1 l2c1, b1, fc1, y m1glc1 son los parametros estimados de Ir1 +m1gl
2c1,
b1, fc1, y m1glc1, respectivamente.
El modelo dinamico del pendulo esta contenido en el programa cap7 pendulo.m
(ver cuadro 7.10). Para los propositos de identificacion parametrica es conveniente
registrar la senal del par aplicado τ1 al servomotor y la aceleracion del pendulo q1 a
traves de variables globales tal y como se define en la lınea 2. En la declaracion de la
funcion del pendulo (lınea 1) se ha incluido la variable bandera para poder obtener la
aceleracion articular q1 empleando las variables de estado q1 y q1 (ver lıneas 4 y 5),
o realizar integracion numerica usando el algoritmo de Runge-Kutta ode45(...),
que en este caso se emplean en las lıneas 7 y 8.
Los parametros del pendulo se encuentran declarados en la lınea 11 que corresponden
a la tabla 6.3. De acuerdo con esos valores numericos, el vector de parametros
θ = [ 0.18546 0.16 0.19 3.0831]T . La aceleracion articular del pendulo se obtiene
en la lınea 20 y el vector de salida en la lıneas 22 y 23.
El programa principal cap7 pendulosimu.m permite realizar la identificacion
parametrica del modelo dinamico y se presenta en el cuadro 7.9; en la lınea 2 se
declaran las variables globales tau1 qpp1 que tambien estan definidas en el programa
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
348 Capıtulo 7: Identificacion parametrica
del modelo dinamico del pendulo 7.10. El tiempo de simulacion es de 0 a 5 segundos
con pasos de 0.001 milisegundo (lınea 3); las condiciones iniciales del pendulo son:
[ q(0)1, q1(0) ]T = [ 0, 0 ]T (lınea 4).
En la lınea 7 se realiza la integracion numerica del modelo dinamico del pendulo.
En esta fase se obtienen las variables de estado q1(t), q1(t) contenidas en el vector
x=[ q1(t), q1(t) ]T . En la lınea 8 se emplea la funcion cap7 pendulo(t,x,9); note que
el valor del tercer argumento tiene asignado el valor 9 para no realizar el proceso de
integracion numerica, solamente obtener la aceleracion articular del pendulo usando
la variable de estado x; la informacion de la aceleracion articular se registra en la
variable global qpp1 y la energıa aplicada al servomotor en la variable global tau1.
En las lıneas 9 y 10 se realiza un cambio de notacion con la finalidad presentar mas
claro el vector de observaciones que se forma en la lınea 11 y el algoritmo de mınimos
cuadrados es llamado en la lınea 12).
Codigo Fuente 7.9 cap7 pendulosimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 pendulosimu.m
clc; clear all; close all; format short g1
global tau1 qpp1 %variables globales2
ti=0; h=0.001; tf = 5 ;3
ci=[0; 0]; %condiciones iniciales4
opciones=odeset(’RelTol’,1e-3,’InitialStep’, 1e-3,’MaxStep’,1e-3);5
%solucion numerica del modelo dinamico del pendulo6
[t,x]=ode45(’cap7 pendulo’,t,ci,opciones);7
xp=pendulo(t,x,9);8
q1=x(:,1) ;%posicion articular9
qp1=x(:,2);%velocidad articular10
fi=[qpp1, qp1, sign(qp1), sin(q1)];%regresor ψ11
[r,theta] =mincuad(tau1,fi);%mınimos cuadrados12
theta13
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.5 Modelos de regresion del pendulo 349
Codigo Fuente 7.10 cap7 pendulo.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 pendulo.m
function xp =cap7 pendulo(t,x, bandera)1
global tau1 qpp12
if (bandera==9)%evalua la aceleracion qpp1 en funcion de q1 y qp13
q1=x(:,1) ;4
qp1=x(:,2);5
else %integracion numerica6
q1=x(1); %posicion articular7
qp1=x(2); %velocidad articular8
end9
%parametros del pendulo10
m1=3.88; lc1=0.081; ;11
%coeficientes de friccion viscosa y de Coulomb12
b1=0.16; fc1=0.19;13
Ir1=0.16;14
Ip=Ir1+m1*lc1*lc1;15
g=9.81;16
%par aplicado al servomotor17
tau1=sin(t);18
%aceleracion articular del pendulo19
qpp1=(tau1-b1*qp1-fc1*sign(qp1)-m1*g*lc1*sin(q1))/Ip;20
%vector de salida21
xp=[ qp1 ;%xp(1)=x(2)%velocidad articular22
qpp1] ;%xp(2)=qpp %aceleracion articular23
end24
Los resultados de la identificacion parametrica del modelo dinamico del pendulo se
presentan en la tabla 7.1.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
350 Capıtulo 7: Identificacion parametrica
7.5.2.7.5.2 Modelo dinamico filtrado del pendulo
El modelo dinamico presupone que el sistema cuenta con los sensores necesarios para
medir la posicion q1, velocidad q1 y aceleracion q1. Sin embargo, generalmente los
robots industriales solo cuentan con el encoder o sensor de posicion. Esto representa
una desventaja para medir la aceleracion. Por lo tanto, el problema consiste en
usar la informacion de la posicion articular para generar las senales de velocidad y
aceleracion.
Para resolver este problema practico se puede usar un conjunto de filtros Fu = λs+λu
para obtener la senal filtrada de u (representada por Fu) y la velocidad u es
aproximada por:u ≈ Fu, entonces el modelo dinamico filtrado del pendulo se obtiene
por aplicar el operador filtro λs+λ a la ecuacion (7.9) obteniendo:
λτ1s+ λ
= [ Ir1 +m1l2c1 ]
λq1s+ λ
+ b1λq1s+ λ
+ fc1λ signo ( q1 )
λ+ s+m1glc1
λ sen(q1)
s+ λ
= [ Ir1 +m1l2c1 ] s
λq1s + λ
+ b1 sλq1s+ λ
+ fc1λ signo ( q1 )
λ+ s+mglc1
λ sen(q1)
s+ λ
Fτ = [ Ir1 +m1l2c1 ] FFq1
+ b1Fq1 + fc1F signo(q1 ) +mglc1F sen(q1)
donde s = ddt y λ es la frecuencia de corte del filtro, y las senales filtradas estan
dadas en forma recursiva como:
Fτ1(k) = e−λhFτ1(k − 1) + [ 1 − e−λh ] τ1(k− 1)
Fτ1(k) = −λFτ1(k) + λτ1(k)
Fq1(k) = e−λhFq1(k − 1) + [ 1 − e−λh ] q1(k − 1)
Fq1(k) = −λFq1(k) + λq1(k)
Fq1(k) = e−λhFq1(k − 1) + [ 1 − e−λh ]Fq1(k − 1)
FFq1(k) = −λFFq1
(k) + λFq1(k)
F sen(q1)(k) = e−λhF sen(q1)(k − 1) + [ 1 − e−λh ] sen(q1)(k− 1)
F sen(q1)(k) = −λF sen(q1)(k) + λ sen(q1)(k)
F signo( q1 )(k) = e−λhF signo( q1 )(k − 1) + [ 1− e−λh ] signo ( q1 ) (k − 1)
F signo( q1 )(k) = −λF signo( q1 )(k) + λ signo ( q1 ) (k)
Fq1 representa la senal filtrada de la posicion q1; la velocidad q1 es aproximada por
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.5 Modelos de regresion del pendulo 351
el filtro Fq1 y la aproximacion de la aceleracion es q1 ≈ FFq1.
♣♣♣ Ejemplo 7.7
Obtener la identificacion parametrica del modelo dinamico filtrado del pendulo-
robot. Para propositos de simulacion del modelo dinamico tomar en cuenta los
valores de los parametros del pendulo que se encuentran contenidos en la tabla
6.3.
Solucion
El esquema de regresion del modelo dinamico filtrado del pendulo esta dado por:
e(k) =λτ1(k)
s + λ︸ ︷︷ ︸y(k)
− [ sλq1(k)s+λ sλq1(k)
s+λ
λ signo( q1(k) )λ+s
λ sen(q1(k))s+λ
]︸ ︷︷ ︸ψ(k)
⎡⎢⎢⎢⎣Ir1 + m1 l
2c1
b1
fc1
m1glc1
⎤⎥⎥⎥⎦
︸ ︷︷ ︸ˆθ(k−1)
El programa cap7 pendulodinafiltsimu.m tiene el codigo MATLAB que permite
realizar identificacion parametrica del modelo dinamico filtrado del pendulo (ver
cuadro 7.11). El vector tiempo varıa de 0 a 5 segundos con incrementos de 0.001.
En la lınea 8 se emplea la funcion ode45 para obtener la solucion numerica q1, q1
del pendulo. Con estas variables de estado en la lınea 9 se llama a la funcion
cap7 pendulo.m para registrar la senal del par aplicado τ1 = sen(t) la cual fue
declarada como variable global (lınea 3). De la lınea 11 a la 14 se generan los vectores
correspondientes para implementar los filtros. La frecuencia de corte λ ha sido puesta
de manera empırica en 25 Hertz. Los filtros se realizan en las lıneas 16-24. El regresor
de observaciones se forma en la lınea 25 y se emplea como parametro de entrada con
el registro del par aplicado filtrado en la funcion de mınimos cuadrados (lınea 26).
El vector de parametros estimado θ se encuentra indicado en la tabla 7.1. Nota:
el tiempo de ejecucion del programa cap7 pendulodinafiltsimu.m puede demorar
varios segundos por utilizar la funcion discontinua signo.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
352 Capıtulo 7: Identificacion parametrica
Codigo Fuente 7.11 cap7 pendulodinafiltsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 pendulodinafiltsimu.m
clc; clear all; close all;1
format short g2
global tau1 %variable global almacena la entrada del sistema3
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector tiempo4
ci=[0; 0];%condiciones iniciales5
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);6
%solucion numerica del modelo dinamico del pendulo7
[t,x]=ode45(’cap7 pendulo’,t,ci,opciones) ;8
xp=pendulo(t,x,9);9
[m n]=size(t); q1=x(:,1); qp1=x(:,2);10
Ftau1=zeros(m,1);11
Fq1=zeros(m,1); sFq1=zeros(m,1);12
Fqp1=zeros(m,1); sFqp1=zeros(m,1);13
Fsign=zeros(m,1); Fsin=zeros(m,1);14
lambda=25 ;15
for k=2:m %filtros recursivos16
Ftau1(k)=exp(-h*lambda)*Ftau1(k-1)+(1-exp(-h*lambda))*tau1(k-1);17
Fq1(k)=exp(-h*lambda)*Fq1(k-1)+(1-exp(-h*lambda))*q1(k-1);18
sFq1(k)=-lambda*Fq1(k)+lambda*q1(k);19
Fqp1(k)=exp(-h*lambda)*Fqp1(k-1)+(1-exp(-h*lambda))*sFq1(k-1);20
sFqp1(k)=-lambda*Fqp1(k)+lambda*sFq1(k);21
Fsign(k)=exp(-h*lambda)*Fsign(k-1)+(1-exp(-h*lambda))*sign(sFq1(k-1));22
Fsin(k)=exp(-h*lambda)*Fsin(k-1)+(1-exp(-h*lambda))*sin(q1(k-1));23
end24
fi=[sFqp1, sFq1, Fsign, Fsin] ;25
[r,theta] =mincuad(Ftau1,fi);26
theta27
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.5 Modelos de regresion del pendulo 353
7.5.3.7.5.3 Modelo de energıa del pendulo
Un enfoque particularmente atractivo para el diseno de esquemas de identificacion
parametrica de robots manipuladores se basa en el modelo de energıa aplicada al
robot manipulador, el cual puede ser descrito como un modelo de regresion lineal en
terminos de los parametros dinamicos.
El modelo de energıa del pendulo consiste de la suma de la energıa cinetica K(q1, q1),
la energıa potencial U(q1) mas la energıa disipativa de la siguiente manera:∫ t
0q1τ1dt =
1
2[ Ir1 +m1l
2c1 ] q2 +m1glc1 [ 1 − cos(q1) ] + b1
∫ t
0q21dt + fc1
∫ t
0|q1|dt.
♣ ♣ Ejemplo 7.8
Realizar el proceso de identificacion parametrica del modelo de energıa del
pendulo-robot. Emplear los valores numericos de los parametros del pendulo
indicados en la tabla 6.3.
Solucion
El modelo de regresion lineal de la energıa para el pendulo se encuentra dado por:
e(k) =
∫ t
0q1τ1dt︸ ︷︷ ︸y(k)
− [ 12 q
21 [ 1 − cos(q1) ]
∫ t0 q
21dt
∫ t0 |q1|dt ]︸ ︷︷ ︸
ψ(k)
⎡⎢⎢⎢⎣Ir1 + m1 l
2c1
m1g1lc1
b1
fc1
⎤⎥⎥⎥⎦
︸ ︷︷ ︸ˆθ(k−1)
En el cuadro 7.12 se muestra el programa cap7 penduloenergsimu.m; en la lınea 7 se
obtiene la solucion numerica de la dinamica del pendulo. Por medio de las variables
de estado de posicion y velocidad en la lınea 8 se emplea el modelo dinamico para
registrar la senal de par aplicado τ1 = sen(t). La integral de la energıa, friccion
viscosa y de Coulomb se calcula de la lınea 15 a la 19. La tecnica de integracion
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
354 Capıtulo 7: Identificacion parametrica
numerica que se utiliza es la del metodo de Euler. El regresor del modelo de energıa
se forma en la lınea 20 y el vector de parametros estimados θ se obtiene en la lınea
21 por medio de la funcion mincuad; el valor de los parametros identificados se
encuentran en la tabla 7.1.
Codigo Fuente 7.12 cap7 penduloenersimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 penduloenersimu.m
clc; clear all; close all; format short g1
global tau1 %variable global almacena la entrada del sistema2
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector tiempo3
ci=[0; 0];%condicion inicial4
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);5
%solucion numerica del modelo dinamico del pendulo6
[t,x]=ode45(’cap7 pendulo’,t,ci,opciones) ;7
xp=pendulo(t,x,9) ;8
[m n]=size(t);9
q1=x(:,1);10
qp1=x(:,2);11
Int1=zeros(m,1);12
Int2=zeros(m,1);13
Int3=zeros(m,1);14
for k=2:m15
Int1(k,1)=Int1(k-1,1)+h*qp1(k,1)*tau1(k,1);16
Int2(k,1)=Int2(k-1,1)+h*qp1(k,1)*qp1(k,1);17
Int3(k,1)=Int3(k-1,1)+h*abs(qp1(k,1)) ;18
end19
fi=[1/2*qp1.*qp1, Int2, Int3, (1-cos(q1))] ;20
[r,theta] =mincuad(Int1,fi) ;21
theta22
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.5 Modelos de regresion del pendulo 355
7.5.4.7.5.4 Modelo de potencia del pendulo
El modelo de potencia del pendulo esta dado por la siguiente ecuacion:
τ1q1 = [ Ir1 +m1l2c1 ] q1q + b1q
21 + fc1|q1|+m1glc1 sen(q1)q1. (7.10)
El modelo de la potencia involucra la medicion de la aceleracion articular q1.
♣ ♣ Ejemplo 7.10
Realizar el proceso de identificacion parametrica para el modelo de potencia del
pendulo. Utilice los parametros del pendulo indicados en la tabla 6.3.
Solucion
El modelo de potencia del pendulo tiene la propiedad de linealidad en los parametros;
por lo que el regresor lineal adquiere la siguiente forma:
e(k) = τ1q1︸︷︷︸y(k)
− [ q1q q21 |q1| sen(q1)q1 ]︸ ︷︷ ︸ψ(k)
⎡⎢⎢⎢⎣Ir1 + m1 l
2c1
b1
fc1
m1glc1
⎤⎥⎥⎥⎦
︸ ︷︷ ︸ˆθ(k−1)
(7.11)
El programa en MATLAB cap7 pendulopotsimu.m se encuentra descrito en el
cuadro 7.13. De manera analoga a los anteriores programas, el uso de las variables
globales es adecuado para registrar senales importantes en la formacion del regresor.
En la lınea 3 se encuentra la definicion de las variables tau1 y qpp1 para registrar la
informacion en el modelo dinamico del pendulo (cap7 pendulo.m); la lınea 8 resuelve
numericamente la dinamica del pendulo y en la lınea 9 se registran las senales tau1
y qpp1 para formar el regresor de observaciones (lınea 12). La funcion mincuad es
empleada para obtener la estimacion de los parametros (lınea 13).
El resultado del vector de parametros θ se encuentra indicado en la tabla 7.1.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
356 Capıtulo 7: Identificacion parametrica
Codigo Fuente 7.13 cap7 pendulopotsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 pendulopotsimu.m
clc; clear all; close all;1
format short g2
global tau1 qpp1 %variables globales para almacenar par aplicado y aceleracion3
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector de tiempo4
ci=[0; 0];%condiciones iniciales5
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);6
%solucion numerica de la dinamica del pendulo7
[t,x]=ode45(’cap7 pendulo’,t,ci,opciones);8
xp=pendulo(t,x,9);9
q1=x(:,1);10
qp1=x(:,2);11
fi=[qpp1.*qp1, qp1.*qp1, abs(qp1), sin(q1).*qp1];12
[r,theta] =mincuad(tau1.*qp1,fi);13
theta14
7.5.5 Modelo de potencia filtrada
El modelo de la potencia filtrada del pendulo se obtiene aplicando el operador filtroλs+λ al modelo de potencia (7.10) obteniendo la siguiente expresion:
λτ1q1s + λ
= [ Ir1 +m1l2c1 ]
λq1q1s+ λ
+ b1λq21s + λ
+ fc1λ|q1|s + λ
+m1glc1λ sen(q1)q1s + λ
=1
2[ Ir1 +m1l
2c1 ] s
λq21s + λ
+ b1λq21s+ λ
+ fc1λ|q1|s+ λ
+m1glc1λ sen(q1)q1s+ λ
(7.12)
El modelo de potencia del pendulo tiene la desventaja de requerir la medicion de
la aceleracion q1 como en el caso del modelo dinamico. Sin embargo, la aceleracion
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.5 Modelos de regresion del pendulo 357
puede ser obtenida por aproximacion de tecnicas de filtrado. La aceleracion puede
ser aproximada de la siguiente forma: λq1q1s+λ = 12s
λq21s+λ , s = d
dt .
♣♣♣ Ejemplo 7.10
Obtener el valor numerico de los parametros del pendulo empleando el modelo de
potencia filtrada. Utilice los parametros del pendulo indicados en la tabla 6.3.
Solucion
El modelo de regresion de la potencia filtrada para el pendulo es:
e(k) =λτ1q1s + λ︸ ︷︷ ︸y(k)
− [ 12s
λq21s+λ
λ sen(q1)q1s+λ
λq21s+λ
λ|q1|s+λ ]︸ ︷︷ ︸
ψ(k)
⎡⎢⎢⎢⎣Ir1 + m1l
2c1
b1
fc1
m1glc1
⎤⎥⎥⎥⎦
︸ ︷︷ ︸ˆθ(k−1)
El proceso de identificacion parametrica del modelo dinamico filtrado del pendulo
se implemento en el programa cap7 pendulopotfilsimu.m (cuadro 7.14). A traves
de la senal filtrada de la posicion (lıneas 13-21) se puede obtener la estimacion de
la velocidad y aceleracion. Por ejemplo, la senal filtrada de la posicion se obtiene en
la lınea 15 y la aproximacion de la velocidad articular se realiza en la lınea 16. La
senal filtrada de la velocidad articular se genera en la lınea 17, la cual se emplea para
aproximar a la aceleracion en la lınea 18. Evidentemente la senal de la aceleracion
es de baja calidad debido a que fue obtenida de la aproximacion de la velocidad; lo
mas adecuado es obtener la aceleracion por aproximacion de la senal de velocidad
que entrega el sensor del robot. No siempre es posible realizar eso, ya que los robots
solo estan equipados con el sensor del encoder para proporcionar informacion de
la posicion. Sin embargo, este es un escenario real que corresponde al ambiente
industrial donde la contaminacion de ruido es alto en las variables de estado. En
este contexto, la sintonıa de la frecuencia de corte λ presenta un problema practico
el cual se determina de manera empırica. El resultado del vector θ se encuentra en
la tabla 7.1.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
358 Capıtulo 7: Identificacion parametrica
Codigo Fuente 7.14 cap7 pendulopotfilsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 pendulopotfilsimu.m
clc; clear all; close all;1
format short g2
global tau1 qpp1 %variables global para almacenar par y aceleracion3
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector tiempo4
ci=[0; 0];%condiciones iniciales5
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);6
%solucion numerica de la dinamica del pendulo7
[t,x]=ode45(’cap7 pendulo’,t,ci,opciones);8
xp=pendulo(t,x,9); [m n]=size(t);9
q1=x(:,1); qp1=x(:,2);10
Ftau1qp1=zeros(m,1); Fq1=zeros(m,1); sFq1=zeros(m,1); Fqp1qp1=zeros(m,1);11
sFqp1=zeros(m,1); Fabs=zeros(m,1); Fsinqp1=zeros(m,1); lambda=25;12
for k=2:m %filtros13
Ftau1qp1(k)=exp(-h*lambda)*Ftau1qp1(k-1)+(1-exp(-h*lambda))*tau1(k-14
1)*qp1(k-1);
Fq1(k)=exp(-h*lambda)*Fq1(k-1)+(1-exp(-h*lambda))*q1(k-1);15
sFq1(k)=-lambda*Fq1(k)+lambda*q1(k) ;16
Fqp1qp1(k)=exp(-h*lambda)*Fqp1qp1(k-1)+(1-exp(-h*lambda))*sFq1(k-17
1)*sFq1(k-1);
sFqp1(k)=-lambda*Fqp1qp1(k)+lambda*sFq1(k)*sFq1(k);18
Fabs(k)=exp(-h*lambda)*Fabs(k-1)+(1-exp(-h*lambda))*abs(sFq1(k-1));19
Fsinqp1(k)=exp(-h*lambda)*Fsinqp1(k-1)+(1-exp(-h*lambda))*sin(q1(k-20
1,1))*sFq1(k-1,1);
end21
fi=[(1/2)*sFqp1, Fqp1qp1, Fabs, Fsinqp1];22
[r,theta] =mincuad(Ftau1qp1,fi);23
theta24
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.5 Modelos de regresion del pendulo 359
7.5.6.7.5.6 Analisis comparativo de esquemas de regresion
La tabla 7.1 contiene el resumen de resultados de los cinco esquemas de regresion
evaluados para el pendulo. Para propositos de comparacion se presentan los valores
reales de los parametros θi, con i = 1, · · · , 4.
Los modelos de regresion dinamico y de potencia generan una estimacion exacta,
libre de error, en contraste el modelo de regresion de la energıa tiene un 99.956%
de exactitud en el parametro del momento de inercia, tiene una deriva del 3.43% en
referencia al valor del coeficiente de friccion viscosa, la exactitud de estimacion en
el coeficiente de friccion de Coulomb es del 99.91%, mientras que para el parametro
del par gravitacional es del 100%. En este procedimiento hay que tomar en cuenta
que el metodo de integracion numerica seleccionado fue el de Euler y tambien influye
el espaciamiento que existe entre las muestras (h = 0.001). Los modelos de regresion
filtrado presentan pobre exactitud en la identificacion parametrica; errores grandes
alrededor del 40%. En este punto es conveniente resaltar que la frecuencia de corte
de los filtros λ influye notablemente en la convergencia parametrica, su valor se
determina en forma empırica; ademas la funcion de transferencia del filtro λλ+s
distorsiona la fase, lo que trae como consecuencia errores de aproximacion en la
aceleracion articular.
Tabla 7.1 Comparacion de resultados de identificacion parametrica
ParametroIr1 +m1l
2c1
Nm seg2
rad
b1Nm seg
rad
fc1
Nm
m1glc1
Nm
Valor real 0.18546 0.16 0.19 3.0831
Esquema de regresion Ir1 + m1 l2c1 b1 fc1 m1glc1
Modelo dinamico 0.18546 0.16 0.19 3.0831
Modelo dinamico filtrado 0.17682 0.25021 0.15068 3.0384
Modelo de energıa 0.18538 0.16055 0.18983 3.0831
Modelo de potencia 0.18546 0.16 0.19 3.0831
Modelo de potencia filtrada 0.24657 0.26366 0.11265 3.1154
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
360 Capıtulo 7: Identificacion parametrica
7.6 Modelos de regresion del robot de 2 gdl
El modelo dinamico de un robot antropomorfico planar de 2 gdl esta determi-
nado por la matriz de inercia, fuerzas centrıpetas y de Coriolis, par o torque
gravitacional y fenomeno de friccion. Una parte clave del procedimiento de identi-
ficacion parametrica consiste en seleccionar un adecuado conjunto de parametros;
para el caso particular del robot de 2 gdl se pueden seleccionar 11 parametros:
M(q) =
⎡⎢⎣θ1 + 2θ2 cos(q2) θ3 + θ2 cos(q2)
θ3 + θ2 cos(q2) θ3
⎤⎥⎦ ,
C(q, q) =
⎡⎢⎣−2θ2 sen(q2) q2 −θ2 sen(q2) q2
θ2 sen(q2) q1 0
⎤⎥⎦ ,
g(q) =
⎡⎢⎣θ4 sen(q1) + θ5 sen(q1 + q2)
θ5 sen(q1 + q2)
⎤⎥⎦ ,
f(q) =
[θ6q1 + θ8 sgn(q1) + θ10 [ 1 − | signo ( q1 ) | ]θ7 q2 + θ9 sgn(q2) + θ11 [ 1 − | signo ( q2 ) | ]
]donde
θ1 = m1l2c1 +m2l
21 +m2l
2c2 + I1 + I2,
θ2 = l1m2lc2,
θ3 = m2l2c2 + I2,
θ4 = g(lc1m1 +m2l1),
θ5 = gm2lc2,
θ6 = b1,
θ7 = b2,
θ8 = fc1,
θ9 = fc2,
θ10 = fe1,
θ11 = fe2.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.6 Modelos de regresion del robot de 2 gdl 361
7.6.1.7.6.1 Modelo de regresion dinamico del robot de 2 gdl
El modelo dinamico del robot antropomorfico de 2 gdl puede ser expresado de manera
conveniente como el producto de una matriz de regresion y un vector de parametros.
Observe que los componentes del vector de parametros θ = [θ1 · · ·θ11]T dependen
de una combinacion de los parametros fısicos de los eslabones como masas, centros
de masas, momentos de inercia y coeficientes de friccion, los cuales se consideran in-
variantes en el tiempo. En este caso, el orden de la matriz de regresion P es 11×11.
[τ1
τ2
]=
[ψ11 ψ12 ψ13 ψ14 ψ15 ψ16 ψ17 ψ18 ψ19 ψ110 ψ111
ψ21 ψ22 ψ23 ψ24 ψ25 ψ26 ψ27 ψ28 ψ29 ψ210 ψ211
]
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
θ1
θ2
θ3
θ4
θ5
θ6
θ7
θ8
θ9
θ10
θ11
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
(7.13)
donde los elementos del regresor ψ estan dados como:
ψ11 = q1
ψ12 = 2 cos(q2)q1 + cos(q2)q2 − 2 sen(q2)q2q1 − sen(q2)q22
ψ13 = q2
ψ14 = sen(q1)
ψ15 = sen(q1 + q2)
ψ16 = q1
ψ17 = 0
ψ18 = signo ( q1 )
ψ19 = 0
ψ110 = 1 − | signo ( q1 ) |ψ111 = 0
ψ21 = 0
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
362 Capıtulo 7: Identificacion parametrica
ψ22 = cos(q2)q1 + sen(q2)q21
ψ23 = q1 + q2
ψ24 = 0
ψ25 = sen(q1 + q2)
ψ26 = 0
ψ27 = q2
ψ28 = 0
ψ29 = signo ( q2 )
ψ210 = 0
ψ211 = 1− | signo ( q2 ) |
♣♣♣ Ejemplo 7.12
Realizar el procedimiento de identificacion parametrica de un robot manipulador
de 2 gdl empleando el modelo de regresion dinamico. Emplear los valores
numericos de los parametros del robot de 2 gdl indicados en la tabla 6.4.
Solucion
El modelo de regresion del modelo dinamico del robot antropomorfico de 2 gdl
esta dado por la siguiente expresion:
e(k) =
[τ1
τ2
]︸ ︷︷ ︸y(k)
−
»ψ11 ψ12 ψ13 ψ14 ψ15 ψ16 ψ17 ψ18 ψ19 ψ110 ψ111
ψ21 ψ22 ψ23 ψ24 ψ25 ψ26 ψ27 ψ28 ψ29 ψ210 ψ211
–
| {z }ψ(k)
2666666666666666666664
θ1
θ2
θ3
θ4
θ5
θ6
θ7
θ8
θ9
θ10
θ11
3777777777777777777775
| {z }θ(k−1)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.6 Modelos de regresion del robot de 2 gdl 363
Note que el problema de identificacion parametrica para un robot de 2 gdl es
complejo, ahora el modelo de regresion es multivariable y no escalar como los
esquemas de regresion del pendulo, por lo que debera usarse la funcion mincuadm.
Una fase importante del procedimiento consiste en elegir una adecuada trayectoria
de entrada al robot manipulador que permita obtener cierto grado de excitacion en
la matriz de regresion debido a que la calidad de estimacion del vector de parametros
depende de los niveles de excitacion del regresor; por ejemplo el algoritmo de mınimos
cuadrados recursivo usualmente requiere satisfacer ciertas condiciones de excitacion
persistente. Sin embargo, la seleccion de la trayectoria no es una tarea trivial, debido
a que la matriz de regresion esta compuesta por una combinacion no lineal de
las variables dinamicas del robot tal como sen(q2)q21 , cos(q2)q1. Para el diseno de
la trayectoria de excitacion persistente se recomienda superposicion de funciones
senoidales como los siguientes pares aplicados:
τ1 = [ 1− e−0.8t ] 29.0 + 68 sen(16t+ 0.1) + 9 sen(20t+ 0.15) (7.14)
τ2 = [ 1− e−1.8t ] 1.2 + 8 sen(26t+ 0.08) + 2 sen(12t+ 0.34) (7.15)
El cuadro 7.15 contiene implementado el modelo dinamico del robot de 2 gdl en
lenguaje MATLAB (programa cap7 iderobot2gdl.m); se han utilizado los valores
numericos de los parametros del robot mostrados en la tabla 6.4, ası como las
ecuaciones del par aplicado (7.14)-(7.15).
El programa principal cap7 iderobot2gdlsimu.m permite realizar el procedimiento
de identificacion parametrica del robot de 2 gdl, y esta descrito en el cuadro 7.16.
El registro de las senales de pares aplicados τ1, τ2 se realiza a traves de variables
globales (lınea 2). La solucion numerica del modelo dinamico del robot de 2 gdl se
encuentra en la lınea 7; empleando dicha solucion numerica q1(t), q2(t), q1(t), q2(t)
en el modelo dinamico del robot se registran la aceleracion q = [ q1, q2 ] y pares
aplicados τ1, τ2 (ver lıneas 11 a la 16).
Las componentes ψij, con i = 1, 2, · · · , 11 y j = 1, 2 del regresor de observaciones
se forman entre las lıneas 18 y 24. El regresor ψ queda formado en las lıneas 25 y
26. La funcion de mınimos cuadrados recursivo para el caso multivariable mincuadm
se usa en la lınea 27 para obtener el vector de parametros estimado ˆθ ∈ IR11. Los
resultados se encuentran en la tabla 7.2.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
364 Capıtulo 7: Identificacion parametrica
Codigo Fuente 7.15 cap7 iderobot2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 iderobot2gdl.m
function xp = cap7 iderobot2gdl(t,x)1
global tau1 tau22
q1=x(1); q2=x(2); q = [q1; q2];%vector de posicion articular3
qp1=x(3); qp2=x(4); qp = [qp1; qp2];% vector de velocidad articular4
m1=23.902; l1=0.45; lc1=0.091;%parametros del robot5
I1=1.266; b1=2.288; fc1=7.17; fe1=8.8; m2=3.880; l2=0.45; lc2=0.048;6
I2=0.093; b2=0.175; fc2=1.734; fe2=1.87; g=9.81;7
theta1=m1*lc1*lc1+m2*l1*l1+m2*lc2*lc2+I1+I2;8
theta2=l1*m2*lc2; theta3=m2*lc2*lc2+I2; theta4=g*(lc1*m1+m2*l1);9
theta5=g*m2*lc2; theta6=b1; theta7=b2; theta8=fc1; theta9=fc2;10
theta10=fe1; theta11=fe2;11
%matriz de inercia12
M=[theta1+2*theta2*cos(q2), theta3+theta2*cos(q2);13
theta3+theta2*cos(q2), theta3];14
%matriz de Coriolis y fuerzas centrıpetas15
C=[ -2*theta2*sin(q2)*qp2, -theta2*sin(q2)*qp2;16
theta2*sin(q2)*qp1, 0];17
gq11=theta4*sin(q1)+theta5*sin(q1+q2); gq21=theta5*sin(q1+q2);18
gq=[gq11; gq21];%par gravitacional19
%par de friccion viscosa, Coulomb y estatica20
fr=[theta6*qp1+theta8*sign(qp1)+theta10*(1-abs(sign(qp1)));21
theta7*qp2+theta9*sign(qp2)+theta11*(1-abs(sign(qp2)))];22
tau1=(1-exp(-0.8*t))*29.0+ 68*sin(16*t+0.1) + 9*sin(20*t+0.15);23
tau2=(1-exp(-1.8*t))*1.2+ 8*sin(26*t+0.08)+2*sin(12*t+0.34);24
tau=[tau1; tau2];%senal de excitacion persistente25
qpp = M∧(-1)*(tau-C*qp-gq-fr); %aceleracion articular26
xp = [qp1; qp2; qpp(1); qpp(2)];%vector de salida27
end28
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.6 Modelos de regresion del robot de 2 gdl 365
Codigo Fuente 7.16 cap7 iderobot2gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 iderobot2gdlsimu.m
clc; clear all; close all; format short g1
global tau1 tau22
ti=0; h=0.001; tf = 5; t=ti:h:tf;%tiempo de simulacion3
ci=[0; 0; 0; 0];%condiciones iniciales4
opciones=odeset(’RelTol’,1e-3,’InitialStep’, 1e-3, ’MaxStep’, 1e-3);5
%solucion numerica del robot antropomorfico de 2 gdl6
[t,x]=ode45(’cap7 iderobot2gdl’,t,ci,opciones);7
%vectores de posicion q = [ q1, q2 ]T
y velocidad q = [ q1, q2 ]T
8
q1=x(:,1); q2=x(:,2); qp1=x(:,3); qp2=x(:,4);9
[m n]=size(t); qpp1=zeros(m,1); qpp2=zeros(m,1); u1=zeros(m,1); u2=zeros(m,1);10
for k=1:m11
xp=cap7 iderobot2gdl(t(k),[x(k,1),x(k,2),x(k,3), x(k,4)]);12
qpp1(k,1)=xp(3,1);13
qpp2(k,1)=xp(4,1);14
u1(k,1) =tau1; u2(k,1) =tau2;15
end16
tau=[u1; u2];17
fi11=qpp1;18
fi12=2*cos(q2).*qpp1+cos(q2).*qpp2-2*sin(q2).*qp2.*qp1-sin(q2).*qp2.*qp2;19
fi13=qpp2; fi14=sin(q1); fi15=sin(q1+q2); fi16=qp1; fi17=zeros(m,1);20
fi18=sign(qp1); fi19=zeros(m,1); fi110=(1-abs(sign(qp1))); fi111=zeros(m,1);21
fi21=zeros(m,1); fi22=cos(q2).*qpp1+sin(q2).*qp1.*qp1; fi23=qpp1+qpp2;22
fi24=zeros(m,1); fi25=sin(q1+q2); fi26=zeros(m,1); fi27=qp2;23
fi28=zeros(m,1); fi29=sign(qp2); fi210=zeros(m,1); fi211=(1-abs(sign(qp2)));24
fi=[fi11, fi12, fi13, fi14, fi15, fi16, fi17, fi18, fi19, fi110, fi111 ;25
fi21, fi22, fi23, fi24, fi25, fi26, fi27, fi28, fi29, fi210, fi211];26
theta=mincuadm(tau,fi,m,11,2);27
theta28
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
366 Capıtulo 7: Identificacion parametrica
7.6.2.7.6.2 Modelo de energıa del robot de 2 gdl
El modelo de energıa de un robot de 2 gdl con condiciones iniciales cero esta dado
por la siguiente ecuacion:
∫ t
0[ τ1 τ2 ]
[q1
q2
]dt =
1
2
[q1
q1
]T ⎡⎢⎣ θ1 + 2θ2 cos(q2) θ3 + θ2 cos(q2)
θ3 + θ2 cos(q2) θ3
⎤⎥⎦ [
q1
q1
]
+
[θ4 [ 1 − cos(q1) ] + θ5 [ 1 − cos(q1 + q2) ]
θ5 [ 1− cos(q1 + q2) ]
]+
⎡⎢⎣ θ6
∫ t0 q
21dt
θ7∫ t0 q
22dt
⎤⎥⎦
+
⎡⎢⎣θ8
∫ t0 |q1|dt
θ9∫ t0 |q2|dt
⎤⎥⎦ +
⎡⎢⎣θ10
∫ t0 q1 [ 1 − | signo ( q1| ) ]dt
θ11
∫ t0 q2 [ 1 − | signo ( q2| ) ]dt
⎤⎥⎦
(7.16)
El modelo de energıa del robot manipulador de 2 gdl no requiere de la medicion de
la aceleracion articular, y a demas se convierte en un modelo de regresion escalar.
♣♣♣ Ejemplo 7.12
Llevar a cabo la identificacion parametrica de un robot manipulador de 2 gdl
empleando el modelo de regresion de la energıa. Emplear los valores numericos de
los parametros del robot de 2 gdl indicados en la tabla 6.4.
Solucion
El error de prediccion del modelo de regresion de la energıa del robot antropomorfico
de 2 gdl se encuentra expresado de la siguiente manera:
e(k) = [R t0 τ1q1 + τ2q2 ] dt︸ ︷︷ ︸
y(k)
− [ ψ11 ψ12 ψ13 ψ14 ψ15 ψ16 ψ17 ψ18 ψ19 ψ110 ψ111 ]︸ ︷︷ ︸ψ(k)
θ
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.6 Modelos de regresion del robot de 2 gdl 367
siendo las componentes ψij del vector de regresion:
ψ11 =1
2q21
ψ12 = cos(q2)q1(q1 + q2)
ψ13 = q2 [ 12 q2 + q1 ]
ψ14 = 1 − cos(q1)
ψ15 = 1 − cos(q1 + q2)
ψ16 =
∫ t
0q21dt
ψ17 =
∫ t
0
q22dt
ψ18 =
∫ t
0|q1|dt
ψ19 =
∫ t
0|q2|dt
ψ110 =
∫ t
0q1 [ 1 − | signo ( q1| ) ]dt
ψ111 =
∫ t
0q2 [ 1 − | signo ( q2| ) ]dt
El programa cap7 energiarobot2gdlsimu.m que se encuentra en el cuadro 7.17
lleva a cabo la implementacion de identificacion parametrica para el robot de 2 gdl.
De manera analoga al anterior ejemplo se emplea el modelo dinamico del robot de
2 gdl para obtener la solucion numerica (lınea 10) y el registro de la senal del par
aplicado en la lınea 15.
El conjunto de integrales del regresor de observaciones se encuentra implementado
de la lınea 20 a la 28 a traves de la tecnica de integracion numerica de Euler. Las
componentes individuales ψij del regresor se forman en las lıneas 30-32, mientras que
el regresor completo esta declarado en la lınea 33. La funcion de mınimos cuadrados
para la version escalar mincuad se emplea en la lınea 34. El resultado del vector de
parametros estimados θ esta contenido en la tabla 7.2.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
368 Capıtulo 7: Identificacion parametrica
Codigo Fuente 7.17 cap7 energiarobot2gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 energiarobot2gdlsimu.m
clc; clear all; close all;1
format short g2
global tau1 tau23
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector tiempo4
ci=[0; 0; 0; 0]; %condiciones iniciales5
opciones=odeset(’RelTol’,1e-3, ’InitialStep’,1e-3, ’MaxStep’,1e-3);6
%solucion numerica del robot de 2 gdl7
disp(’Advertencia: la simulacion puede durar varios segundos......’)8
disp(’Espere por favor..............’)9
[t,x]=ode45(’cap7 iderobot2gdl’,t,ci,opciones);10
q1=x(:,1); q2=x(:,2);%vector de posicion11
qp1=x(:,3); qp2=x(:,4);%vector de velocidad12
[m n]=size(t); Int1=zeros(m,1); Int2=zeros(m,1); Int3=zeros(m,1); Int4=zeros(m,1);13
Int5=zeros(m,1); Int6=zeros(m,1); Int7=zeros(m,1); u1=zeros(m,1); u2=zeros(m,1);14
for k=1:m %registro de la se~nal del par aplicado τ15
xp=cap7 iderobot2gdl(t(k),[x(k,1),x(k,2),x(k,3), x(k,4)]);16
u1(k,1) =tau1;17
u2(k,1) =tau2;18
end19
for k=2:m %integrales del regresor20
Int1(k,1)=Int1(k-1,1)+h*(qp1(k,1)*u1(k,1)+qp2(k,1)*u2(k,1));21
Int2(k,1)=Int2(k-1,1)+h*qp1(k,1)*qp1(k,1);22
Int3(k,1)=Int3(k-1,1)+h*qp2(k,1)*qp2(k,1);23
Int4(k,1)=Int4(k-1,1)+h*abs(qp1(k,1));24
Int5(k,1)=Int5(k-1,1)+h*abs(qp2(k,1));25
Int6(k,1)=Int6(k-1,1)+h*qp1(k,1)*(1-abs(sign(qp1(k,1))));26
Int7(k,1)=Int7(k-1,1)+h*qp2(k,1)*(1-abs(sign(qp2(k,1))));27
end28
%regresor ψ29
fi11=(1/2)*qp1.*qp1 ; fi12=cos(q2).*qp1.*(qp1+qp2); fi13=qp2.*((1/2)*qp2+qp1);30
fi14=1-cos(q1); fi15=1-cos(q1+q2); fi16=Int2; fi17=Int3;31
fi18=Int4; fi19=Int5; fi110=Int6; fi111=Int7;32
fi=[fi11, fi12, fi13, fi14, fi15, fi16, fi17, fi18, fi19, fi110, fi111];33
[r,theta] =mincuad(Int1,fi) ;34
theta35
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.6 Modelos de regresion del robot de 2 gdl 369
7.6.3.7.6.3 Modelo de potencia del robot de 2 gdl
El modelo de potencia del robot de 2 gdl representa la derivada temporal del modelo
de energıa. La siguiente ecuacion describe el modelo de potencia:
[ τ1 τ2 ]
[q1
q2
]=
[q1
q1
]T ⎡⎢⎣ θ1 + 2θ2 cos(q2) θ3 + θ2 cos(q2)
θ3 + θ2 cos(q2) θ3
⎤⎥⎦ [
q1
q1
]
+1
2
[q1
q1
]T ⎡⎢⎣−2θ2 sen(q2)q2 −θ2 sen(q2)q2
−θ2 sen(q2)q2 0
⎤⎥⎦ [
q1
q1
]
+
[θ4 sen(q1)q1 + θ5 sen(q1 + q2) [ q1 + q2 ]
θ5 sen(q1 + q2) [ q1 + q2 ]
]+
⎡⎢⎣θ6q
21
θ7q22
⎤⎥⎦
+
⎡⎢⎣θ8|q1|
θ9|q2|
⎤⎥⎦ +
⎡⎢⎣θ10q1 [ 1− | signo ( q1| ) ]
θ11q2 [ 1− | signo ( q2| ) ]
⎤⎥⎦
(7.17)
El modelo de potencia del robot manipulador de 2 gdl requiere la medicion de la
aceleracion articular, y pertenece a la clase de modelos de regresion escalar.
♣♣♣ Ejemplo 7.13
Obtener el valor numerico de los parametros de un robot de 2 gdl empleando el
modelo de potencia. Utilice los parametros del robot de 2 gdl indicados en la tabla
6.4.
Solucion
Para llevar a cabo la identificacion parametrica del robot de 2 gdl usando el modelo
de potencia es necesario obtener el modelo de regresion. Con esta finalidad considere
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
370 Capıtulo 7: Identificacion parametrica
el siguiente regresor:
e(k) = [ τ1 τ2 ]
[q1
q2
]︸ ︷︷ ︸
y(k)
−[ ψ11 ψ12 ψ13 ψ14 ψ15 ψ16 ψ17 ψ18 ψ19 ψ110 ψ111 ]
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
θ1
θ2
θ3
θ4
θ5
θ6
θ7
θ8
θ9
θ10
θ11
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
donde los elementos del regresor ψ estan dados como:
ψ11 = q1q1
ψ12 = − sen(q2)q2q1 [ q1 + q2 ] + cos(q2)q1 [ q1 + q2 ] + cos(q2)q1 [ q1 + q2 ]
ψ13 = q2 [ 12 q2 + q1 ] + q2 [ 1
2 q2 + q1 ] + q2 [ 12 q2 + q1 ]
ψ14 = sen(q1)q1
ψ15 = sen(q1 + q2) [ q1 + q2 ]
ψ16 = q21
ψ17 = q22
ψ18 = |q1|ψ19 = |q2|ψ110 = q1 [ 1− | signo ( q1 ) | ]ψ111 = q2 [ 1− | signo ( q2 ) | ]
El programa cap7 potenciarobot2gdlsimu.m contiene el codigo para realizar la
identificacion parametrica de un robot de 2 gdl a traves del modelo de potencia
(ver cuadro 7.18). En forma similar a los anteriores ejemplos, primero se realiza
la integracion numerica sobre la dinamica del robot, con las variables de estado se
obtiene el registro de aceleracion y senales con los pares aplicados a los servomotores
(lıneas 18-24). Las componentes del vector de observaciones se indican en las lıneas
25 a la 31. El regresor se forma en la lınea 32 y la funcion de mınimos cuadrados
escalar se emplea en la lınea 33. El vector de prediccion θ se encuentra indicado en
la tabla 7.2.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.6 Modelos de regresion del robot de 2 gdl 371
Codigo Fuente 7.18 cap7 potenciarobot2gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 potenciarobot2gdlsimu.m
clc; clear all;1
close all;2
format short g3
global tau1 tau24
ti=0; h=0.001; tf = 5;5
t=ti:h:tf;%vector tiempo6
ci=[0; 0; 0; 0];%condiciones iniciales7
opciones=odeset(’RelTol’, 1e-3, ’InitialStep’,1e-3, ’MaxStep’,1e-3);8
%solucion numerica del robot de 2 gdl9
disp(’Advertencia: la simulacion puede durar varios segundos......’)10
disp(’Espere por favor..............’)11
[t,x]=ode45(’cap7 iderobot2gdl’,t,ci,opciones);12
q1=x(:,1); q2=x(:,2);%vector de posicion13
qp1=x(:,3); qp2=x(:,4);%vector de velocidad14
[m n]=size(t);15
qpp1=zeros(m,1); qpp2=zeros(m,1);%vectores de aceleracion16
u1=zeros(m,1); u2=zeros(m,1);%vectores de pares aplicados17
for k=1:m %registro de la aceleracion q y par aplicado τ18
xp=cap7 iderobot2gdl(t(k),[x(k,1),x(k,2),x(k,3), x(k,4)]);19
qpp1(k,1)=xp(3,1);%informacion de aceleracion q1(t)20
qpp2(k,1)=xp(4,1);%informacion de aceleracion q2(t)21
u1(k,1) =tau1;%par aplicado τ1(t)22
u2(k,1) =tau2;%par aplicado τ2(t)23
end24
y=qp1.*u1+qp2.*u2; %regresor y25
%regresor ψ26
fi11=qp1.*qpp1;27
fi12=-sin(q2).*qp2.*qp1.*(qp1+qp2)+cos(q2).*qpp1.*(qp1+qp2)+cos(q2).*qp1.*(qpp1+qpp2);28
fi13=qpp2.*((1/2)*qp2+qp1)+qp2.*((1/2)*qpp2+qp1)+qp2.*((1/2)*qp2+qpp1);29
fi14=sin(q1).*qp1; fi15=sin(q1+q2).*(qp1+qp2); fi16=qp1.*qp1; fi17=qp2.*qp2;30
fi18=abs(qp1); fi19=abs(qp2); fi110=qp1.*(1-abs(sign(qp1))); fi111=qp2.*(1-abs(sign(qp2)));31
fi=[fi11, fi12, fi13, fi14, fi15, fi16, fi17, fi18, fi19, fi110, fi111];32
[r,theta] =mincuad(y,fi);33
theta34
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
372 Capıtulo 7: Identificacion parametrica
7.6.4.7.6.4 Analisis comparativo de resultados de regresion
La tabla 7.2 muestra los resultados de identificacion parametrica obtenidos a traves
de los esquemas de regresion dinamico, energıa y potencia para el robot manipulador
de 2 gdl en configuracion antropomorfica.
De acuerdo a los resultados, el modelo dinamico es el que mejor estimacion realiza,
inclusive identifica de manera exacta los parametros de friccion estatica. Estos
parametros son particularmente difıciles de estimar debido a que la trayectoria
de excitacion persistente produce movimiento en todo momento y por lo tanto el
fenomeno de friccion estatica desaparece, es decir el termino [ 1 − | signo ( qi ) | ] = 0
cuando el robot esta en movimiento (qi > 0 o qi < 0), entonces esta componente no
mostrara variacion temporal de tal forma que el algoritmo de mınimos cuadrados
tendra divergencia en estos parametros. Uno de los motivos por lo cual se obtiene
convergencia parametrica en los parametros de friccion estatica es debido al fuerte
acoplamiento de la dinamica no lineal que se ve reflejado en el regresor multivariable.
En contraste con los metodos escalares este acoplamiento es mas debil. De ahı que la
deriva en dichos parametros es mas pronunciada. El metodo de la potencia tambien
Tabla 7.2 Resultados de identificacion parametrica del robot de 2 gdl
Parametro Valor real Dinamico Energıa Potencia
θ1 2.351 2.351 2.358 2.353
θ2 0.0838 0.0838 0.0841 0.0843
θ3 0.1019 0.1019 0.1025 0.1017
θ4 38.466 38.466 38.461 38.412
θ5 1.827 1.827 1.8134 1.812
θ6 2.288 2.288 2.282 2.522
θ7 0.175 0.175 0.1616 0.140
θ8 7.17 7.17 7.1082 6.865
θ9 1.734 1.734 1.8289 1.761
θ10 8.8 8.8 10 10
θ11 1.87 1.87 11 11
proporciona buena exactitud en los resultados de identificacion parametrica, debido
que no se realiza ningun tipo de aproximacion de la aceleracion. No obstante, el
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.7 Robot cartesiano de 3 gdl 373
requerir medir la aceleracion representa una desventaja practica. Por otro lado,
el metodo de regresion de energıa tiene pobre desempeno, realiza la identificacion
con mayor margen de error. Note que los dos esquemas escalares divergen en los
parametros de friccion estatica
Otro aspecto importante que afecta la calidad en el proceso de identificacion pa-
rametrica es la forma de disenar la senal de excitacion persistente. Preferentemente
debe tener estructuras senoidales cuyas amplitudes no saturen a los servoamplifica-
dores.
7.7 Robot cartesiano de 3 gdl
El modelo dinamico del robot manipulador en configuracion cartesiana de 3 gdl
esta formado por la matriz de masas, para gravitacional y fenomeno de friccion:⎡⎢⎣ τ1τ2τ3
⎤⎥⎦=
⎡⎢⎣ θ1 0 0
0 θ2 0
0 0 θ3
⎤⎥⎦
⎡⎢⎣ d1
d2
d3
⎤⎥⎦ +
⎡⎢⎣ θ4 0 0
0 θ5 0
0 0 θ6
⎤⎥⎦
⎡⎢⎣ d1
d2
d3
⎤⎥⎦ +
⎡⎢⎣ θ7 0 0
0 θ8 0
0 0 θ9
⎤⎥⎦
⎡⎢⎣ signo ( d1 )
signo ( d2 )
signo ( d3 )
⎤⎥⎦
+
⎡⎢⎣θ10
0
0
⎤⎥⎦
donde
θ1 = m1 +m2 +m3
θ2 = m1 +m2
θ3 = m3
θ4 = b1
θ5 = b2
θ6 = b3,
θ7 = fc1,
θ8 = fc2,
θ9 = fc3,
θ10 = g (m1 +m2 +m3 )
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
374 Capıtulo 7: Identificacion parametrica
7.7.1.7.7.1 Modelo de regresion dinamico del robot cartesiano
El modelo de regresion para el robot cartesiano de 3 gdl tiene la siguiente estructura:
⎡⎢⎣ τ1τ2τ3
⎤⎥⎦
︸ ︷︷ ︸y(k)
=
⎡⎢⎣ψ11 ψ12 ψ13 ψ14 ψ15 ψ16 ψ17 ψ18 ψ19 ψ110
ψ21 ψ22 ψ23 ψ24 ψ25 ψ26 ψ27 ψ28 ψ29 ψ210
ψ31 ψ32 ψ33 ψ34 ψ35 ψ36 ψ37 ψ38 ψ39 ψ310
⎤⎥⎦
︸ ︷︷ ︸ψ(k)
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
θ1
θ2
θ3
θ4
θ5
θ6
θ7
θ8
θ9
θ10
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
︸ ︷︷ ︸ˆθ(k−1)
donde las componentes del vector de regresion ψij, i = 1, 2, 3 y j = 1, 2, · · · , 10 se
encuentran dados por:
ψ11 = d1 ψ21 = 0 ψ31 = 0
ψ12 = 0 ψ22 = d2 ψ32 = 0
ψ13 = 0 ψ23 = 0 ψ33 = d3
ψ14 = d1 ψ24 = 0 ψ34 = 0
ψ15 = 0 ψ25 = d2 ψ35 = 0
ψ16 = 0 ψ26 = 0 ψ36 = d3
ψ17 = signo ( d1 ) ψ27 = 0 ψ37 = 0
ψ18 = 0 ψ28 = signo ( d2 ) ψ38 = 0
ψ19 = 0 ψ29 = 0 ψ39 = signo ( d3 )
ψ110 = 1 ψ210 = 0 ψ310 = 0
En el modelo dinamico del robot cartesiano no se ha considera la friccion estatica, que
particularmente es muy pequena para servomotores con tecnologıa de transmision
directa. Note que dicho modelo dinamico no tiene el fenomeno de fuerzas centrıpetas
y de Coriolis, esto se debe a que en esta configuracion solo tiene articulaciones lineales
o prismaticas.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.7 Robot cartesiano de 3 gdl 375
♣♣♣ Ejemplo 7.14
Realizar identificacion parametrica de un robot en configuracion cartesiana de
3 gdl empleando el modelo dinamico. Utilice los parametros del robot de 3 gdl
indicados en la tabla 6.6.
Solucion
El error de prediccion del modelo dinamico del robot cartesiano de 3 gdl esta dado
por:
e(k) =
⎡⎢⎣ τ1τ2τ3
⎤⎥⎦
︸ ︷︷ ︸y(k)
−
⎡⎢⎣ψ11 ψ12 ψ13 ψ14 ψ15 ψ16 ψ17 ψ18 ψ19 ψ110
ψ21 ψ22 ψ23 ψ24 ψ25 ψ26 ψ27 ψ28 ψ29 ψ210
ψ31 ψ32 ψ33 ψ34 ψ35 ψ36 ψ37 ψ38 ψ39 ψ310
⎤⎥⎦
︸ ︷︷ ︸ψ(k)
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
θ1
θ2
θ3
θ4
θ5
θ6
θ7
θ8
θ9
θ10
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
︸ ︷︷ ︸ˆθ(k−1)
El cuadro 7.19 contiene el codigo MATLAB donde se ha implementado el modelo
dinamico del robot cartesiano de 3 gdl (programa cap7 idecartesiano3gdl.m),
el cual contiene el efecto inercial, fenomeno de friccion viscosa y Coulomb, par
gravitacional, y la senal de prueba o par aplicado a los servomotores (excitacion
persistente). Los valores de los parametros del robot se han tomado de la tabla 6.6.
El programa cap7 idecartesiano3gdlsimu.m permite llevar a cabo el proceso de
identificacion parametrica (ver cuadro 7.20). En la lınea 2 se declaran las variables
globales para el registro de las senales del par aplicado. La integracion numerica del
modelo dinamico del robot cartesiano de 3 gdl se realiza en la lınea 7. A traves de
la solucion numerica se obtiene la aceleracion articular y pares aplicados (lınea 13).
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
376 Capıtulo 7: Identificacion parametrica
Las componentes del vector de observaciones se realiza de la lınea 22 a la lınea 30;
el regresor completo se obtiene en las lıneas 31-33. La funcion mınimos cuadrados
multivariable se emplea en la lınea 34 para obtener el vector de parametros estimados
θ cuyo resultado esta indicado en la tabla 7.3.
Codigo Fuente 7.19 cap7 idecartesiano3gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 idecartesiano3gdl.m
function xp = cap7 idecartesiano3gdl(t,x)1
global tau1 tau2 tau32
d = [x(1); x(2); x(3)];%vector de posicion articular3
dp =[x(4); x(5); x(6)];%vector de velocidad articular4
m1=0.7; m2=0.28; m3=0.28;5
b1=0.02; b2=0.08; b3=.02;6
fc1=0.01; fc2=0.07; fc3=.02; g=9.81;7
theta1=m1+m2+m3; theta2=m1+m2; theta3=m3;8
theta4=b1; theta5=b2; theta6=b3; theta7=fc1;9
theta8=fc2; theta9=fc3; theta10=g*(m1+m2+m3);10
%modelo dinamico del robot11
M = [theta1, 0, 0; 0 theta2, 0; 0 0 theta3];%matriz de inercia12
B=[ theta4, 0, 0; 0, theta5, 0; 0, 0, theta6];%friccion viscosa13
Fc=[theta7, 0, 0; 0, theta8, 0; 0, 0, theta9]; %friccion de Coulomb14
par grav = [theta10; 0; 0];%vector de pares de gravitacionales15
fr= B*dp+Fc*sign(dp); %vector de friccion16
tau1=12.36+ 0.05*sin(t);17
tau2=(1-exp(-0.5*t))*0.13*sin(t);18
tau3=0.06*sin(t);19
tau=[tau1; tau2; tau3];20
dpp = inv(M)*(tau- par grav-fr);%vector de aceleracion articular21
xp = [dp(1); dp(2); dp(3); dpp(1); dpp(2); dpp(3)];%vector de salida22
end23
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.7 Robot cartesiano de 3 gdl 377
Codigo Fuente 7.20 cap7 idecartesiano3gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 idecartesiano3gdlsimu.m
clc; clear all; close all; format short g1
global tau1 tau2 tau32
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector tiempo3
ci=[0; 0; 0; 0;0; 0];%condiciones iniciales4
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);5
%solucion numerica del robot cartesiano de 3 gdl6
[t,x]=ode45(’cap7 idecartesiano3gdl’,t,ci,opciones);7
d1=x(:,1); d2=x(:,2); d3=x(:,3);%posiciones articulares8
dp1=x(:,4); dp2=x(:,5); dp3=x(:,6);%velocidades articulares9
[m n]=size(t);% dimension del vector tiempo10
dpp1=zeros(m,1); dpp2=zeros(m,1); dpp3=zeros(m,1);%registro para d11
u1=zeros(m,1); u2=zeros(m,1); u3=zeros(m,1);%registros para pares aplicados τ12
for k=1:m13
xp=cap7 idecartesiano3gdl(t(k),[x(k,1),x(k,2),x(k,3), x(k,4), x(k,5), x(k,6)]);14
dpp1(k,1)=xp(4,1);15
dpp2(k,1)=xp(5,1);16
dpp3(k,1)=xp(6,1);17
u1(k,1) =tau1;18
u2(k,1) =tau2;19
u3(k,1) =tau3;20
end21
tau=[u1; u2; u3]; %vector de pares aplicados22
fi11=dpp1; fi12=zeros(m,1); fi13=zeros(m,1); fi14=dp1;23
fi15=zeros(m,1); fi16=zeros(m,1); fi17=sign(dp1);24
fi18=zeros(m,1); fi19=zeros(m,1); fi110=ones(m,1);25
fi21=zeros(m,1); fi22=dpp2; fi23=zeros(m,1); fi24=zeros(m,1); fi25=dp2;26
fi26=zeros(m,1); fi27=zeros(m,1); fi28=sign(dp2); fi29=zeros(m,1); fi210=zeros(m,1);27
fi31=zeros(m,1); fi32=zeros(m,1); fi33=dpp3;28
fi34=zeros(m,1); fi35=zeros(m,1); fi36=dp3;29
fi37=zeros(m,1); fi38=zeros(m,1); fi39=sign(dp3); fi310=zeros(m,1) ;30
fi=[fi11, fi12, fi13, fi14, fi15, fi16, fi17, fi18, fi19, fi110;31
fi21, fi22, fi23, fi24, fi25, fi26, fi27, fi28, fi29, fi210;32
fi31, fi32, fi33, fi34, fi35, fi36, fi37, fi38, fi39, fi310];33
theta=mincuadm(tau,fi,m,13,3);34
theta35
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
378 Capıtulo 7: Identificacion parametrica
7.7.2.7.7.2 Modelo de potencia del robot cartesiano de 3 gdl
El modelo dinamico de potencia del robot manipulador cartesiano de 3 gdl esta dado
por:
[ τ1d1 + τ2d2 + τ3d3 ] =
⎡⎢⎣ d1
d2
d3
⎤⎥⎦T ⎡
⎢⎣ θ1 0 0
0 θ2 0
0 0 θ3
⎤⎥⎦
⎡⎢⎣ d1
d2
d3
⎤⎥⎦ +
⎡⎢⎣ d1
d2
d3
⎤⎥⎦T ⎡
⎢⎣ θ4 0 0
0 θ5 0
0 0 θ6
⎤⎥⎦
⎡⎢⎣ d1
d2
d3
⎤⎥⎦ +
[ θ7 θ8 θ9 ]
⎡⎢⎣|d1||d2||d3|
⎤⎥⎦ + θ10d1
el modelo de potencia del robot cartesiano de 3 gdl pertenece al tipo de regresores
escalares.
♣♣♣ Ejemplo 7.15
Realizar el procedimiento de identificacion parametrica de un robot cartesiano de
3 gdl empleando el modelo de potencia. Utilice los parametros del robot de 3 gdl
indicados en la tabla 6.6.
Solucion
El error de prediccion del regresor lineal del modelo de potencia del robot cartesiano
de 3 gdl esta dado por:
e(k) = [ τ1d1 + τ2d2 + τ3d3 ] − [ψ11 ψ12 ψ13 ψ14 ψ15 ψ16 ψ17 ψ18 ψ19 ψ110 ]
2666666666666666664
θ1
θ2
θ3
θ4
θ5
θ6
θ7
θ8
θ9
θ10
3777777777777777775
| {z }θ(k−1)
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.7 Robot cartesiano de 3 gdl 379
donde los componentes del regresor estan compuestas por:
ψ11 = d1d1
ψ12 = d2d2
ψ13 = d3d3
ψ14 = d21
ψ15 = d22
ψ16 = d23
ψ17 = |d1|ψ18 = |d2|ψ19 = |d3|ψ110 = d1
El programa cap7 potenciacartesiano3gdlsimu.mmuestra el codigo para realizar
la identificacion parametrica de un robot cartesiano de 3 gdl empleando su modelo
de potencia (ver cuadro 7.21). De la lınea 15 a 22 se forman las componentes del
regresor o vector de observaciones. De tal forma que dicho regresor esta definido en
la lınea 23. La funcion de mınimos cuadrados version escalar se emplea para obtener
el vector de parametros estimados θ (lınea 24). En la lınea 26 se grafica la variacion
temporal que tienen las componentes del vectore θ (ver figura 7.1).
Figura 7.1 Comportamiento de los componentes θi.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
380 Capıtulo 7: Identificacion parametrica
Codigo Fuente 7.21 cap7 potenciacartesiano3gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap7 potenciacartesiano3gdlsimu.m
clc; clear all; close all; format short g1
global tau1 tau2 tau32
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector tiempo3
ci=[0; 0; 0; 0;0; 0]’;4
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);
%solucion numerica de la dinamica del robot cartesiano de 3 gdl5
[t,x]=ode45(’cap7 idecartesiano3gdl’,t,ci,opciones);6
d1=x(:,1); d2=x(:,2); d3=x(:,3); dp1=x(:,4); dp2=x(:,5); dp3=x(:,6);7
[m n]=size(t); dpp1=zeros(m,1); dpp2=zeros(m,1); dpp3=zeros(m,1);8
u1=zeros(m,1); u2=zeros(m,1); u3=zeros(m,1);9
for k=1:m10
xp=cap7 idecartesiano3gdl(t(k),[x(k,1),x(k,2),x(k,3), x(k,4), x(k,5), x(k,6)]);11
dpp1(k,1)=xp(4,1); dpp2(k,1)=xp(5,1); dpp3(k,1)=xp(6,1);12
u1(k,1) =tau1; u2(k,1) =tau2; u3(k,1) =tau3;13
end14
y=dp1.*u1+dp2.*u2+dp3.*u3 ;15
fi11=dp1.*dpp1;16
fi12=dp2.*dpp2;17
fi13=dp3.*dpp3;18
fi14=dp1.*dp1;19
fi15=dp2.*dp2;20
fi16=dp3.*dp3;21
fi17=abs(dp1); fi18=abs(dp2); fi19=abs(dp3); fi110=dp1;22
fi=[fi11, fi12, fi13, fi14, fi15, fi16, fi17, fi18, fi19, fi110];23
[r,theta] =mincuad(y,fi);24
theta %vector estimado θ25
plot(t,r)%grafica la variacion temporal de los componentes del vector θ26
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
7.7 Robot cartesiano de 3 gdl 381
7.7.3.7.7.3 Analisis comparativo de identificacion
Los resultados de identificacion parametrica del robot cartesiano de 3 gdl de los
modelos de regresion dinamico y potencia se encuentran contenidos en la tabla 7.3.
Para propositos de comparacion se proporcionan los valores reales de cada uno de
los componentes del vector θ.
El modelo de regresion dinamico tiene una identificacion exacta de los diez
parametros, este modelo de regresion es multivariable ya que toma como parte del
regresor las senales de pares τ1, τ2, τ3, la matriz de regresion con las observaciones
de posicion, velocidad y aceleracion tiene dimension: ψ ∈ IR3×10.
Por otro lado, el modelo de regresion de la potencia resulta un esquema escalar, en
este caso las senales del par no forman parte del vector de mediciones de la entrada
del robot, mas bien, forman parte de la potencia de entrada al robot en forma escalar
q1τ1 + q2τ2 + q3τ3; se incorpora un vector de observaciones en lugar de la matriz de
mediciones. Dicho vector de observaciones tiene dimension: ψ ∈ IR10×1. El esquema
escalar es mucho mas atractivo que la version vectorial o multivariable debido a que
su implementacion es mucho mas facil.
Tabla 7.3 Parametros identificados del robot cartesiano de 3 gdl
Parametro Valor real Dinamico Potencia
θ1 1.26 1.26 1.26
θ2 0.98 0.98 0.98
θ3 0.28 0.28 0.28
θ4 0.02 0.02 0.02
θ5 0.08 0.08 0.08
θ6 0.02 0.02 0.02
θ7 0.01 0.01 0.01
θ8 0.07 0.07 0.07
θ9 0.02 0.02 0.02
θ10 12.361 12.361 12.361
Ambos esquemas de regresion dinamico (multivaribale) y potencia (escalar)
requieren la medicion de la aceleracion, lo que representa una desventaja cuando
el robot no dispone de los sensores adecuados para medir esa senal.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
382 Capıtulo 7: Identificacion parametrica
7.8 Resumen
El metodo de mınimos cuadrados es una tecnica de identificacion parametrica
que permite obtener el valor numerico de los parametros del sistema empleando
mediciones experimentales de posiciones y velocidades articulares.
La naturaleza del modelo matematico a identificar puede ser diversa, por ejemplo:
dinamico (lineal y no-lineal), estatico, continuo o discreto. Sin embargo, una
condicion necesaria del metodo de mınimos cuadrados es que el modelo matematico
del sistema puede ser expresado como un regresor lineal de los parametros a
identificar, es decir como el producto de una matriz de observaciones y un vector
columna de parametros desconocidos; esta estructura genera un regresor vectorial
o multivariable. Ejemplos de esta categorıa son los modelos dinamico y dinamico
filtrado de robots manipuladores.
Cuando el regresor lineal se puede expresar como el producto de un vector
transpuesto de observaciones y un vector columna de parametros desconocidos,
entonces el regresor lineal se denomina escalar. Los modelos de regresion de la
energıa, potencia y potencia filtrada son ejemplos del regresor lineal escalar.
Se han desarrollado dos librerıas en codigo fuente MATLAB para resolver el
problema de identificacion parametrica:
[r, θ] =mincuad(y,fi)
θ =mincuadm(y,fi,Nob,p,n)
Estas funciones permiten obtener la identificacion parametrica de sistemas
mecatronicos y robots manipuladores reales. La calidad de estimacion parametrica
esta en funcion del tipo de senal aplicada (excitacion persistente), la exactitud de
aproximar las senales de velocidad y aceleracion y en la medida de lo posible no
incluir en la matriz o vector de observaciones funciones discontinuas.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte III Referencias selectas 383
Parte III Referencias selectas
Dentro de la extensa literatura sobre dinamica de sistemas mecanicos, se
recomiendan ampliamente los siguientes textos para que el lector pueda
profundizar en dinamica de sistemas mecatronicos y robots manipuladores.
Dare A. Wells. “Lagrangian dynamics”. Schaum’s outlines 1967.
Leonard Meirovitch. “Methods of analytical dynamics”. McGraw-
Hill. 1970.
A. P. French. “Mecanica newtoniana”. Editorial Reverte, S. A.
1978.
Wolfram Stadler. “Analytical robotics and mechatronics”.
McGraw Hill International Editions. 1995.
Donald T. Greenwood. “Classical dynamics”. Dover Publications
Inc. 1997.
Jerry B. Marion. “Dinamica clasica de las partıculas y sistemas”.
Editorial Reverte, S. A. 2000.
H. Goldstein. “Mecanica clasica”. Editorial Reverte, S. A. 2000.
G. C. Goodwin & K. S. Sin. “Adaptive filtering prediction and
control ”. Prentice-Hall, NY. 1984.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
384 Capıtulo 7: Identificacion parametrica
M. Gautier & W. Khalil. “On the identification of the inertial
parameters of robot ”. Proceedings of the 27th Conference on
Decision and Control. Austin, Texas, pp. 2264–2269. 1988.
C. Canudas and A. Aubin. “Parameters identification of robot
manipulators via sequential hybrid estimation algorithms ”. Proc.
IFAC’90 Congress, Tallin, pp. 178–183, (1990).
M. Prufer, C. Schmidt & F. Wahl. “Identification of robot
dynamics with differential and integral models: a comparison
”. Proceedings IEEE International Conference on Robotics and
Automation. San Diego, California, Vol 1, pp. 340–345. 1994.
F. Reyes F. & R. Kelly. “A direct drive robot for control research”.
Proc. IASTED International Conference, Applications of Control
and Robotics. Orlando, FL. pp. 181–184. 1996.
F. Reyes & R. Kelly. “Experimental evaluation of identification
schemes on a direct drive robot ”. Robotica. Cambridge University
Press. 15, pp. 563-571. 1997.
F. Reyes F. & R. Kelly. “On parameter identification of robot
manipulators ”. Proceedings of the 1997 IEEE International
Conference on Robotics and Automation. Albuquerque, New
Mexico. April. pp. 1910-1915. 1997.
F. Reyes, & E. Lopez. “A new hamiltonian-based identification
scheme for robot manipulators ”. Proceedings of the 5th WSEAS-
IMMCCAS. Cancun, Mexico, May 11-14. pp. 126-131. 2005.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte III Problemas propuestos 385
Parte III Problemas propuestos
En esta seccion se presenta una serie de ejercicios con la finalidad de que el lector
mejore sus conocimientos sobre dinamica e identificacion parametrica.
Capıtulo 6 Dinamica
6.1 Considere la siguiente funcion de transferencia
y
u= c
w2n
s2 + 2ρwn + w2n
donde y ∈ IR es la salida del sistema, u ∈ IR es la entrada , ρ ∈ IR+ es el factor
de amortiguamiento, wn ∈ IR+ es la frecuencia natural de resonancia:
(a) Obtener el modelo dinamico.
(b) Realizar la conversion a variables de estado fase.
(c) Escribir un programa en MATLAB para simular el sistema con los
siguientes valores:
wn = 1, ρ = 0.1, c = 1.
wn = 1, ρ = 0.9, c = 1.
wn = 1, ρ = 1.5, c = 1.
6.2 Considere el sistema masa resorte amortiguador, en referencia a los programas
6.1 y 6.2 (modo oscilador), modifique el valor de la entrada de la fuerza a cero
Newtons, ademas considere condiciones iniciales diferentes a cero.
Realizar la simulacion del sistema masa resorte amortiguador y analizar:
(a) La respuesta del sistema (posicion y velocidad).
(b) Explicar el comportamiento del sistema.
Fundamente sus respuestas.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
386 Capıtulo 7: Identificacion parametrica
6.3 Modificar los programas 6.9 y 6.10 para simular el pendulo robot usando la
siguiente entrada:
τ = 5 sen(t) + 0.33 cos(t+ 0.1random(’Normal’,t,t))
Obtener:
(a) Filtrado de la posicion q1(t).
(b) Estimacion de la velocidad.
6.4 Implementar un control tipo proporcional derivativo[τ1
τ2
]=
[kp1 0
0 kp2
][q1
q2
]−
[kv1 0
0 kv2
][q1
q2
]+ g(q)
para posicionar al robot antropomorfico de 2 gdl en las siguientes
configuraciones:
(a) [ qd1, qd2 ]T = [ 45, 90 ]T grados.
(b) [ qd1, qd2 ]T = [ 180, 0 ]T grados.
¿Que metodo de sintonıa en las ganancias proporcional derivativa puede
proponer?
6.5 Implementar un control tipo proporcional derivativo saturado dado por⎡⎢⎣τ1
τ2
τ3
⎤⎥⎦ =
⎡⎢⎣kp1 0 0
0 kp2 0
0 0 kp3
⎤⎥⎦
⎡⎢⎣
tanh(q1)
tanh(q2)
tanh(q3)
⎤⎥⎦ −
⎡⎢⎣kv1 0 0
0 kv2 0
0 0 kv3
⎤⎥⎦
⎡⎢⎣
tanh(q1)
tanh(q2)
tanh(q3)
⎤⎥⎦ + g(q)
para controlar las posiciones articulares de la base, hombro y codo del robot
antropomorfico de 3 gdl en las siguientes configuraciones:
(a) [ qd1, qd2, qd3 ]T = [ 45, 90, 90]T grados.
(b) [ qd1, qd2, qd3 ]T = [ 45, 180, 0]T grados.
¿Que metodo de sintonıa en las ganancias proporcional derivativa puede
proponer, para el robot de 3 gdl?
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte III Problemas propuestos 387
6.6 Realizar un programa en MATLAB para controlar al robot cartesiano de 3
gdl usando un control proporcional derivativo tipo saturado⎡⎢⎣τ1
τ2
τ3
⎤⎥⎦ =
⎡⎢⎣kp1 0 0
0 kp2 0
0 0 kp3
⎤⎥⎦
⎡⎢⎣
atan (q1)
atan (q2)
atan (q3)
⎤⎥⎦ −
⎡⎢⎣kv1 0 0
0 kv2 0
0 0 kv3
⎤⎥⎦
⎡⎢⎣
atan (q1)
atan (q2)
atan (q3)
⎤⎥⎦ + g(q)
en las siguientes configuraciones:
(a) [ dd1, dd2, dd3 ]T = [ 0.5, 0.3, .65]T m.
(b) [ dd1, dd2, dd3 ]T = [ 0.8, 0.2, 0.34]T m.
¿Que metodo de sintonıa en las ganancias proporcional derivativa puede
proponer, para el robot cartesiano?
Capıtulo 7 Identificacion parametrica
7.1 Sean los siguientes sistemas dinamicos escalares:
x = −3x+ 8 sen(x) + 8.98x3
y = 6.66y + 5.61e−|y| + 1.23 senh(y)
z = 2.345z3 + 6.1234z4 − 2.31z5
Para cada uno de los sistemas propuestos implementar un esquema de
identificacion parametrica para obtener el valor de sus respectivos parametros.
Tome un intervalo para y ∈ [−10, 10].
7.2 Sean los siguientes sistemas multivariables:[x1
x2
]=
[0 1
−3 −4
] [x1
x2
]+
[0
2
]sen(t)⎡
⎢⎣x1
x2
x3
⎤⎥⎦ =
⎡⎢⎣
0 1 1
−1 −2 −2
1 4 −6
⎤⎥⎦
⎡⎢⎣x1
x2
x3
⎤⎥⎦ +
⎡⎢⎣
4
2
9
⎤⎥⎦ sen(t)
⎡⎢⎢⎢⎣x1
x2
x3
x4
⎤⎥⎥⎥⎦ =
⎡⎢⎢⎢⎣
0.01 3.1 4.1 0.9
2.2 1.11 −8.1 7.09
2.22 4.56 8.23 6.7
−0.09 2.33 1.21 4.55
⎤⎥⎥⎥⎦
⎡⎢⎢⎢⎣x1
x2
x3
x4
⎤⎥⎥⎥⎦ +
⎡⎢⎢⎢⎣
3.2 sen(t)
2.1 sen(t) cos(t)
0.56t
sen3(t)
⎤⎥⎥⎥⎦
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
388 Capıtulo 7: Identificacion parametrica
para un intervalo de t ∈ [0, 5].
7.3 Considere el siguiente modelo matematico:⎡⎢⎢⎢⎢⎢⎢⎣
y1
y2
y3
y4
y5
⎤⎥⎥⎥⎥⎥⎥⎦ =
⎡⎢⎢⎢⎢⎢⎢⎣
0.33t3 + 0.24 sen(t) + cos(t) + 0.35t2 − 4.56 senh(t)
0.33t1 + 0.48 sen3(t) + 0.66 cos(t) + 0.70t2 + 0.33 cos(t)
0.66t4 + 0.24 sen4(t) + 0.99 cos(t) + 0.35t2 − 0.66 tan(t)
0.99t5 + 0.72 sen5(t) + 0.48 cos(t) + 0.24t2 + 0.33 atan (t)
0.33t3 + 0.24 sen(t) + cos(t) + 0.48t2 − 0.24 sen(t)
⎤⎥⎥⎥⎥⎥⎥⎦
Seleccione un vector de parametros θ conveniente y disene un esquema de
regresion para llevar a cabo el proceso de identificacion parametrica para un
intervalo de t ∈ [0, 5].
7.4 Considere los esquemas de regresion modelo dinamico filtrado y potencia
filtrada del pendulo
(a) En el regresor del modelo dinamico filtrado sustituir la tecnica de filtrado
para obtener la aceleracion q1 por el metodo de Euler: q1 ≈ q1(k)−q1(k−1)h y
q1 ≈ q1(k)−q1(k−1)h . Llevar a cabo el proceso de identificacion parametrica
y comparar los resultados con el metodo de filtrado.
(b) En el regresor del modelo de potencia filtrada sustituir la tecnica
de filtrado para obtener la aceleracion q1 por el metodo de Euler:
q1 ≈ q1(k)−q1(k−1)h
y q1 ≈ q1(k)−q1(k−1)h
. Llevar a cabo el proceso de
identificacion parametrica y comparar los resultados con el metodo de
filtrado.
7.5 Considere un brazo robot antropomorfico de 2 gdl:
(a) Implementar el esquema de regresion lineal del modelo dinamico filtrado.
(b) Implementar el esquema de regresion lineal del modelo de la potencia
filtrada.
7.6 Considere un robot manipulador en configuracion cartesiana de 3 gdl:
(a) Implementar el esquema de regresion lineal dinamico filtrado.
(b) Implementar el esquema de regresion lineal del modelo de energıa.
(c) Implementar el esquema de regresion lineal del modelo de la potencia
filtrada.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte IV
Control
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Control de robots manipuladores es un tema vigente en la actualidad y de interes
para la comunidad cientıfica. El diseno de sistemas de control en aplicaciones
industriales representa no solo un reto teorico, tambien resuelve sustancialmente
problemas practicos para mejorar deficiencias de algoritmos de control tradicionales.
La Parte IV esta dedicada a presentar aplicaciones de la metodologıa de
moldeo de energıa la cual hoy en dıa representa una tecnica moderna de diseno
de algoritmos de control para robots manipuladores.
La Parte IV se compone del Capıtulo 8 Control
Capıtulo 8 Control de posicion contiene aplicaciones
de algoritmos de control disenados directamente por la tecnica de moldeo de
energıa, y ademas presenta una explicacion cualitativa de esquemas clasicos
como lo son el control proporcional derivativo (PD) y el control proporcional
integral derivativo (PID); tambien se incluye nuevas estrategias de control
como el control tangente hiperbolico y arcto tangente.
La Parte IV finaliza con:
Referencias selectas
Problemas propuestos
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Capıtulo
8 Control deposicion
τ = ∇Ua(Kp, q) − f v(Kv, q) + g(q)
8.1 Introduccion
8.2 Control proporcional derivativo (PD)
8.3 Control proporcional integral derivativo (PID)
8.4 Control punto a punto
8.5 Resumen
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Objetivos
Presentar aplicaciones de la tecnica de moldeo de energıa de robots
manipuladores.
Objetivos particulares:
Control proporcional derivativo.
Control proporcional integral derivativo.
Control tangente hiperbolico.
Control arcotangente.
Control punto a punto.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.1 Introduccion 393
8.1 Introduccion
Control de robots manipuladores es un tema de control automatico vigente
y de gran interes para la comunidad cientıfica de robotica debido a los retos
teoricos y practicos que involucra el diseno de nuevas estrategias de control con alto
desempeno y exactitud en aplicaciones industriales tales como estibado de cajas,
ensamble, traslado, pintado de objetos, etc. El diseno de nuevos esquemas de control
implica mejorar sustancialmente el desempeno de algoritmos de control tradicionales.
El problema mas simple de control de robots manipuladores se denomina control
de posicion o regulacion el cual se refiere a ubicar o posicionar al extremo final del
robot en un punto constante en el tiempo al que se le denomina posicion deseada o
set point. El objetivo de control es posicionar al extremo final del robot en el punto
deseado y que permanezca ahı de manera indefinida.
El problema de control de posicion o regulacion consiste en mover el
extremo final del robot manipulador hacia una posicion deseada constante qd;
independientemente de su posicion inicial q(0). Los puntos intermedios entre la
posicion inicial y la referencia deseada no son controlados como tal, forman parte
de la etapa transitoria de la respuesta del robot incluido en la senal de error q(t)
definida como la diferencia entre la posicion deseada y la posicion actual del robot
q(t) = qd−q(t). El punto final qd es la posicion clave donde se realiza el control.
El objetivo del problema de control de posicion esta determinado por encontrar
una ley de control τ que proporcione los pares aplicados a las articulaciones o
servomotores del robot, de tal forma que la posicion actual del robot q(t) y la
velocidad articular de movimiento q(t) tiendan asintoticamente hacia la posicion
deseada qd y velocidad cero, respectivamente, sin importar las condiciones iniciales.
Es decir,
lımt→∞
[q(t)
q(t)
]=
[qd
0
](8.1)
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
394 Capıtulo 8: Control de posicion
El objetivo de control se cumple cuando:
lımt→∞
[q(t)
q(t)
]=
[0
0
]
Figura 8.1 Control de posicion
Notese que en la figura 8.1 el robot se encuentra en su punto de equilibrio, lo que
significa que el objetivo de control (8.1) se cumplio sin depender de las condiciones
iniciales, entonces la posicion deseada se alcanza, por lo que la posicion del extremo
final del robot permanece constante (q(t) = qd) y por lo tanto la velocidad de
movimiento es cero (q = 0).
Evidentemente, para propositos industriales, una vez que el extremo final del robot
ha alcanzado el punto deseado, en el siguiente periodo de muestreo el punto
deseado cambiara su valor, entonces el robot se movera hacia al siguiente punto;
el anterior punto deseado representa la condicion inicial y el extremo final del robot
se estara posicionando en la siguiente coordenada; ası sucesivamente el robot sigue
una curva compuesta de puntos cercanos entre sı. Esta forma de controlar a un robot
se denomina control punto a punto. Para realizar esta aplicacion es necesario que
el esquema de control forme parte de la ecuacion en lazo cerrado y que genere un
punto de equilibrio asintoticamente estable, ya que no dependerıa de las condiciones
iniciales. Es importante aclarar que en control punto a punto no se controla la
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 395
velocidad de movimiento como en el caso de control de trayectoria, donde el error
de posicion y error de velocidad son controlados simultaneamente. La gran mayorıa
de las aplicaciones actuales de la industria son realizadas a traves de control punto
a punto como en los casos de traslado y pintado de objetos, estibado y pintura de
carrocerıas, etcetera.
El desempeno de un algoritmo de control se refiere a realizar de manera correcta y
exacta la tarea programada al robot, lo que lo habilita a llevar a cabo diversas
aplicaciones de control punto a punto. Por lo tanto, el espectro de aplicaciones
comerciales, domesticas, cientıficas e industriales se incrementa.
A continuacion se describen los algoritmos tradicionales de control de robots
manipuladores como lo son el esquema proporcional derivativo (PD) y el
regulador proporcional integral derivativo (PID). Posteriormente se presentan nuevas
estrategias de control usando la tecnica de moldeo de energıa.
8.2 Control proporcional-derivativo (PD)
El algoritmo de control proporcional-derivativo (PD) es el esquema de
controlador mas simple y mas popular que se puede usar en robots
manipuladores. En 1981, Takegaki y Arimoto demostraron que la ecuacion en
lazo cerrado del modelo dinamico del robot manipulador y el control proporcional
derivativo tiene un punto de equilibrio global y asintoticamente estable.
El control proporcional derivativo mas compensacion de gravedad (PD) esta dado
por la siguiente ecuacion:
τ = Kpq −Kvq + g(q) (8.2)
donde q ∈ IRn es el vector de error de posicion que se define como la diferencia entre
la posicion deseada qd ∈ IRn y la posicion actual del robot q ∈ IRn; Kp ∈ IRn×n es
una matriz definida positiva, Kv ∈ IRn×n es la ganancia derivativa la cual es una
matriz definida positiva.
La ecuacion en lazo cerrado en variables de estado que definen el problema de control
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
396 Capıtulo 8: Control de posicion
de posicion es:
d
dt
[q
q
]=
[ −qM(q)−1 [Kpq −Kvq − C(q, q)q ]
](8.3)
la cual es una ecuacion diferencial autonoma.
El diagrama a bloques del control proporcional derivativo con compensacion de
gravedad se muestra en la figura 8.2.
Figura 8.2 Diagrama a bloques del control PD.
La posicion articular del robot q se retroalimenta para generar la senal de
error de posicion q = qd − q. La velocidad de movimiento q se emplea para
inyeccion de amortiguamiento. Observese que el signo menos de la accion de control
derivativa sirve para contrarrestar la energıa al control proporcional. El termino
de compensacion de gravedad g(q) es una componente esencial para la unicidad del
punto de equilibrio. Sin embargo, esta condicion no es suficiente, tambien se requiere
que las ganancias proporcional y derivativa sean matrices definidas positivas.
Desde el punto de vista practico el termino g(q) se requiere en la implementacion
del control PD, y se debe conocer como parte de la dinamica parcial del robot si el
movimiento es en un plano vertical o en general en su espacio tridimensional. Para
el caso en que el movimiento sea en un plano horizontal, la energıa potencial es
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 397
constante y el gradiente de la energıa potencial o par gravitacional g(q) =∂U(q)∂q es
cero.
8.2.1.8.2.1 Control PD de un pendulo
La forma inmediata de entender el funcionamiento cualitativo del control PD es a
traves del pendulo.
El modelo dinamico de un pendulo esta dado por:
τ1 = [ Ir1 +m1l2c1 ] q1 + bq1 +m1glc1 sen(q1)
mientras que el control proporcional derivativo es:
τ1 = kp1q1 − kv1q1 +m1glc1 sen(q1)
donde el termino kp1q1 corresponde al regulador proporcional; siendo el error de
posicion q1 definido como la diferencia entre la posicion deseada qd1 y la posicion
actual del pendulo q1(t). El nombre del esquema proporcional se debe al producto
de la ganancia kp1 y el error de posicion q1.
Por otro lado, el termino −kv1q1 se denomina accion de control derivativo y no
debe ser confundido con un esquema de control; este termino se incluye con la
finalidad de mejorar la respuesta del control proporcional a traves de la inyeccion de
amortiguamiento que se logra restando al control proporcional el producto entre la
ganancia derivativa kv1 y la velocidad articular q1. En terminos practicos el efecto
de amortiguamiento significa freno mecanico para dosificar la energıa aplicada al
servomotor τ1 y de esta forma lograr que la respuesta transitoria del pendulo no
tenga sobre impulsos y entre de manera suave al regimen estacionario.
Por lo tanto, la ecuacion en lazo cerrado esta determinada de la siguiente forma:
d
dt
[q1
q1
]=
[ −q11
[Ir1 +m1l2c1 ]
[ kp1q1 − kv1q1 − b1q1 ]
]
se ha eliminado la friccion de Coulomb y estatica con la finalidad que los programas
de simulacion no demoren dicho proceso.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
398 Capıtulo 8: Control de posicion
♣ Ejemplo 8.1
Controlar la posicion del extremo final del pendulo en el siguiente punto deseado:
qd1 = 90 grados
Solucion
La estructura matematica del algoritmo de control proporcional derivativo del
pendulo esta dada por la siguiente expresion:
τ1 = kp1q1 − kv1 +m1glc1 sen(q1)
donde kp1 es la ganancia proporcional; kv1 representa la ganancia derivativa, q1 es
el error de posicion definido como la diferencia q1 = qd1 − q1(t) entre la posicion
deseada qd1 y la posicion actual del robot q1(t); τ1 es el par aplicado al servomotor
del pendulo.
El cuadro 8.1 contiene el modelo dinamico del pendulo cap8 pendulo.m; observe que
en la lınea 18 se utiliza el esquema de control proporcional derivativo [tau1, ~ ] =
cap8 pdpendulo(q1,qp1), el cual proporciona la energıa τ1 necesaria para mover al
pendulo desde la posicion inicial q(0) hacia la posicion deseada qd1 = 90 grados.
El programa cap8 pdpendulo.m tiene el codigo fuente en MATLAB del control
proporcional derivativo, el cual se encuentra en el cuadro 8.2 y a traves del programa
principal cap8 pdpendulosimu.m (ver cuadro 8.3) se puede llevar a cabo el proceso
de simulacion.
En una primera fase de la simulacion las ganancias del control (PD) se han
sintonizado con los siguientes valores: kp1 = 10 y kv1 =0.1; lo que significa que la
inyeccion de amortiguamiento del termino derivativo es pobre, causa sobre impulsos
en la etapa transitoria y fluctuacion abrupta de la respuesta, marcando oscilaciones
sucesivas y sostenidas en la etapa transitoria como se muestra en las graficas del
error de posicion y par aplicado de la figura 8.3. Note que en el espacio de trabajo
(cinematica directa) tambien la trayectoria del extremo final del pendulo tiene
oscilaciones; lo que se confirma por el diagrama fase (q1 vs q1) en que el atractor del
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 399
punto de equilibrio tiene un conjunto de espirales que van disminuyendo conforme
las senales q1(t) y q(t) evoluciona el tiempo t.
Figura 8.3 Pendulo: control PD, kp1 = 10, kv1 = 0.1
La segunda fase de la simulacion consiste en cambiar el valor de la ganancia
derivativa kv1 = 2 (manteniendo el valor de la ganancia proporcional), es decir
aumentar el efecto de amortiguamiento o freno mecanico para obtener una respuesta
mas suave en regimen transitorio, y en estado estacionario libre de oscilaciones. La
figura muestra la respuesta del pendulo con la nueva sintonıa de ganancia derivativa.
Figura 8.4 Pendulo: control PD, kp = 10, kv = 2
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
400 Capıtulo 8: Control de posicion
Codigo Fuente 8.1 cap8 pendulo.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 pendulo.m
function xp=cap8 pendulo(t,x)1
%modelo dinamico del pendulo2
%no se incluye el fenomeno de friccion de Coulomb, ni estatica3
%variables de estados (entradas) ——————————————–%4
%posicion articular5
q1=x(1);6
%velocidad articular7
qp1=x(2);8
%parametros del pendulo ————————————————–%9
m1=5;%masa10
lc1=0.01;%centro de gravedad11
g=9.81;%constante de aceleracion gravitacional12
b1=0.17;%coeficiente de friccion viscosa13
Ir1=0.16;%momento de inercia del rotor14
Ip=Ir1+m1*lc1*lc1;%momento de inercia del pendulo15
%en este punto se inserta el algoritmo de control16
%par aplicado (controlador) ———————————————-%17
[tau1, ˜ ] = cap8 pdpendulo(q1,qp1) ;18
%aceleracion articular del pendulo ———————————————%19
qpp1=(tau1-b1*qp1-m1*g*lc1*sin(q1))/Ip;20
%vector de salida ——————————————————–%21
xp=[qp1;%xp(1)=x(2) velocidad articular22
qpp1];%xp(2)=qpp aceleracion articular23
end24
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 401
Codigo Fuente 8.2 cap8 pdpendulo.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
Esta funcion retorna:
error de posicion q1
par aplicado τ1
cap8 pdpendulo.m
function [tau1, qt1] = cap8 pdpendulo(x,xp)1
%variables de estados (entradas) ——————————————–%2
%posicion articular3
q1=x;4
%velocidad articular5
qp1=xp;6
%parametros de la compensacion de gravedad del pendulo7
m1=5;%masa8
lc1=0.01;%centro de gravedad9
g=9.81;%constante de aceleracion gravitacional10
%ganancias del controlador ———————————————-%11
kp1=10;%ganancia proporcional12
kv1=2;%ganancia derivativa13
%referencia (posicion deseada en grados)14
qd1=90;15
%vector de pares de gravitacionales ————————————–%16
par grav = m1*g*lc1*sin(q1);17
%error de posicion18
qt1=pi*qd1/180-q1;19
%control proporcional derivativo20
tau1=kp1*qt1-kv1*qp1+par grav;21
end22
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
402 Capıtulo 8: Control de posicion
Codigo Fuente 8.3 cap8 pdpendulosimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 7 Identificacion parametrica.
cap8 pdpendulosimu.m
clc; clear all; close all;1
format short g2
%parametros de simulacion ————————————————%3
ti=0;%tiempo inicial (segundos)4
tf=5;%tiempo de final (segundos)5
h=0.001;%incremento de tiempo (segundos)6
ts=ti:h:tf;%vector de tiempo7
ci=[0;0];%condiciones iniciales8
opciones=odeset(’RelTol’,1e-3,InitialStep’,1e-3,’MaxStep’,1e-3);9
%solucion numerica del sistema ——————————————-%10
[t,x]=ode45(’cap8 pendulo’,ts,ci,opciones);11
q1=x(:,1);12
qp1=x(:,2);13
[n,m]=size(t);14
tau1=zeros(n,1);15
qt1=zeros(n,1);16
xef=zeros(n,1);17
yef=zeros(n,1);18
for k=1:n19
[tau1(k), qt1(k)] = cap8 pdpendulo(q1(k),qp1(k));20
frq=Rz(-pi/2)*cinematica pendulo(0.45,q1(k),0.1);21
xef(k)=frq(1);22
yef(k)=frq(2);23
end24
subplot(2,2,1); plot(t,qt1)25
subplot(2,2,2); plot( t, tau1)26
subplot(2,2,3); plot(xef,yef)27
subplot(2,2,4); plot(qp1, qt1)28
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 403
8.2.2.8.2.2 Control PD de un brazo robot de 2 gdl
El control proporcional derivativo (PD) para un robot en configuracion antro-
pomorfica de 2 gdl esta dado por la siguiente ecuacion:[τ1
τ2
]︸ ︷︷ ︸τ
=
[kp1 0
0 kp2
]︸ ︷︷ ︸
Kp
[q1
q2
]︸ ︷︷ ︸q
−[kv1 0
0 kv2
]︸ ︷︷ ︸
Kv
[q1
q2
]︸ ︷︷ ︸q
+g(q)
donde Kp, Kv ∈ IR2×2 son la ganancia proporcional y derivativa, respectivamente; la
velocidad articular es representada por q = [ q1, q2 ]T ; el error de posicion q se define
como la diferencia entre la posicion deseada qd y la posicion actual del robot q; g(q)
es la compensacion de gravedad; τ1, τ2 son los pares aplicados a las articulaciones
del hombro y codo, respectivamente.
♣ ♣ Ejemplo 8.2
Controlar la posicion del extremo final de un robot de 2 gdl en configuracion
antropomorfica en el siguiente punto deseado: [ qd1, qd2 ]T = [ 90, 45 ] grados.
Solucion
El cuadro 8.8 contiene el modelo dinamico del brazo robot de 2 gdl (programa
cap8 robot2gdl.m); en referencia a este programa es muy importante aclarar que
la ecuacion en lazo cerrado esta formada por la dinamica no lineal del robot y el
esquema de control (ver lınea 18). Por lo tanto, en la lınea 22 es el lugar adecuado
para insertar el algoritmo de control, en este caso es el proporcional derivativo cuyo
codigo MATLAB se presenta en el programa cap8 PDrobot2gdl.m (ver cuadro 8.8).
Las ganancias proporcional Kp y derivativa Kv son sintonizadas de tal forma que
no produzcan sobre impulsos, ni oscilaciones en el regimen transitorio, ası como una
respuesta suave en estado estacionario.
El valor de la sintonıa de las ganancias proporcional para las articulaciones del
hombro y codo, respectivamente son: kp1=3 Nm/grados y kp2=0.15 Nm/grado;
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
404 Capıtulo 8: Control de posicion
mientras que las ganancias derivativas has sido seleccionadas con un factor de
amortiguamiento del 20% del valor de las ganancias proporcional: kv1 = 0.20kp1
Nm-seg/grados y kv2 = 0.20kp2 Nm-seg/grados.
La figura 8.5 muestra un perfil suave de los errores de posicion, sin sobre impulsos, no
hay oscilaciones pronunciadas, teniendo una respuesta suave; ambos componentes
de error de posicion tienden asintoticamente a cero como el tiempo evoluciona a
infinito (estabilidad asintotica).
Las senales de pares aplicados τ1 y τ2 se aplican directamente a las articulaciones del
hombro y codo, respectivamente; el perfil de estas senales muestran de igual forma
un comportamiento suave, sin oscilaciones que hace que el robot no vibre tal como
se aprecia en la trayectoria que describe el extremo final del robot en su espacio
de trabajo, la cual inicia desde la posicion de casa ubicada en el eje y− hasta el
punto deseado. Observe tambien que en el diagrama fase del robot las velocidades
articulares como las senales de error de posicion convergen asintoticamente al punto
de equilibrio. Este tipo de respuesta es consecuencia de una adecuada sintonıa de las
ganancias, ası como del factor de amortiguamiento, que en este caso es del 20%. La
sintonıa de las ganancias es empırica, es decir a prueba y error; este proceso depende
en gran medida de la experiencia que tenga el usuario.
Figura 8.5 Robot de 2 gdl: control PD, kp = 10, kv = 0.1
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 405
Codigo Fuente 8.8 cap8 robot2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 robot2gdl.m
function xp = cap8 robot2gdl(t,x)1
%vector de posicion articular2
q1=x(1); q2=x(2); q = [q1; q2];3
%vector de velocidad articular4
qp1=x(3); qp2=x(4); qp = [qp1; qp2];5
m1=23.902; l1=0.45; lc1=0.091; I1=1.266; b1=2.288;6
m2=3.880; l2=0.45; lc2=0.048; I2=0.093; b2=0.175; g=9.81;7
theta1=m1*lc1*lc1+m2*l1*l1+m2*lc2*lc2+I1+I2;8
theta2=l1*m2*lc2;9
theta3=m2*lc2*lc2+I2;10
theta4=g*(lc1*m1+m2*l1);11
theta5=g*m2*lc2; theta6=b1; theta7=b2;12
M=[theta1+2*theta2*cos(q2), theta3+theta2*cos(q2);13
theta3+theta2*cos(q2), theta3];14
C=[ -2*theta2*sin(q2)*qp2, -theta2*sin(q2)*qp2;15
theta2*sin(q2)*qp1, 0];16
gq11=theta4*sin(q1)+theta5*sin(q1+q2);17
gq21=theta5*sin(q1+q2);18
gq=[gq11; gq21];19
fr=[theta6*qp1;20
theta7*qp2];21
[ ˜ , tau ]=cap8 PDrobot2gdl(q,qp);%en esta lınea se inserta el controlador22
qpp = M∧(-1)*(tau-C*qp-gq-fr);23
%vector de salida24
xp = [qp1; qp2; qpp(1); qpp(2)];25
end26
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
406 Capıtulo 8: Control de posicion
Codigo Fuente 8.8 cap8 PDrobot2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 PDrobot2gdl.m
function [qtilde tau] = cap8 PDrobot2gdl(x,xp)1
q1=x(1); q2=x(2); q = [q1; q2];%vector de posiciones2
qp1=xp(1); qp2=xp(2); qp = [qp1; qp2];%vector de velocidades3
%parametros del robot: par gravitacional4
m1=23.902; lc1=0.091; l1=0.45;5
m2=3.880; lc2=0.048; g=9.81;6
theta4=g*(lc1*m1+m2*l1);7
theta5=g*m2*lc2;8
%par gravitacional9
par grav = [theta4*sin(q1)+theta5*sin(q1+q2);10
g*m2*lc2];11
%ganancia proporcional12
kp1=3; kp2=0.15;13
Kp=[kp1, 0;14
0, kp2];%ganancia proporcional15
%ganancia derivativa16
kv1=0.20*kp1; kv2=0.20*kp2;17
Kv=[kv1, 0;18
0, kv2];%ganancia derivativa19
qd1=45; qd2=90;20
qd=[qd1;21
qd2];%vector de referencias22
qtilde=pi/180*qd-q;23
qtgrados=(180/pi)*qtilde;%error de posicion en grados24
qpgrados=180*qp/pi;%velocidad en grados/segundo.25
tau=Kp*qtgrados-Kv*qpgrados+par grav;26
end27
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 407
Codigo Fuente 8.6 cap8 robot2gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 robot2gdlsimu.m
clc; clear all; close all;1
format short g2
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector tiempo3
ci=[0; 0; 0; 0];%condiciones iniciales4
opciones=odeset(’RelTol’,1e-3,’InitialStep’, 1e-3,’MaxStep’,1e-3);5
%solucion numerica del sistema dinamico lineal6
[t,x]=ode45(’cap8 robot2gdl’,t,ci,opciones);7
q1=x(:,1); q2=x(:,2);8
qp1=x(:,3); qp2=x(:,4);9
[n,m]=size(t);10
tau1=zeros(n,1); tau2=zeros(n,1);11
qtilde1=zeros(n,1); qtilde2=zeros(n,1);12
xef=zeros(n,1); yef=zeros(n,1);13
beta1=0.15; beta2=0.15; l1=0.45; l2=0.45;14
for k=1:n15
[qt tau] = cap8 PDrobot2gdl( [q1(k);q2(k)], [qp1(k); qp2(k)]);16
tau1(k)=tau(1); tau2(k)=tau(2);17
qtilde1(k)=qt(1); qtilde2(k)=qt(2);18
[xef(k), yef(k),˜ ]=cinematica r2gdl( beta1, l1, q1(k), beta2, l2, q2(k));19
p=Rz(-pi/2)*[xef(k), yef(k), beta1+beta2]’;20
xef(k)=p(1);21
yef(k)=p(2);22
end23
subplot(2,2,1); plot(t,qtilde1,t,qtilde2)24
subplot(2,2,2); plot( t, tau1, t,tau2)25
subplot(2,2,3); plot(xef,yef)26
subplot(2,2,4); plot(qtilde1, qp1, qtilde2,qp2)27
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
408 Capıtulo 8: Control de posicion
8.2.3.8.2.3 Control PD de un brazo robot de 3 gdl
El algoritmo de control proporcional derivativo para un brazo robot de 3 gdl
esta dado por:⎡⎢⎣τ1
τ2
τ3
⎤⎥⎦
︸ ︷︷ ︸τ
=
⎡⎢⎣kp1 0 0
0 kp2 0
o 0 kp3
⎤⎥⎦
︸ ︷︷ ︸Kp
⎡⎢⎣q1
q2
q3
⎤⎥⎦
︸ ︷︷ ︸q
−
⎡⎢⎣kv1 0 0
0 kv2 0
0 0 kv3
⎤⎥⎦
︸ ︷︷ ︸Kv
⎡⎢⎣q1
q2
q3
⎤⎥⎦
︸ ︷︷ ︸q
+g(q)
donde Kp, Kv ∈ IR3×3 son la ganancia proporcional y derivativa, respectivamente;
el error de posicion q ∈ IR3 se define como la diferencia entre la posicion deseada
qd ∈ IR3 y la posicion actual del robot q ∈ IR3.
Por conveniencia se seleccionan las ganancias proporcional y derivativa como
matrices diagonales definidas positivas con la finalidad de desacoplar la estructura
de control; de esta forma la sintonıa de la i-esima ganancia solo depende de la i-
esima articulacion. Es decir, el par aplicado a la i-esima articulacion depende de:
τi = τ(kpi, qi, qi).
♣ Ejemplo 8.3
Controlar la posicion del extremo final de un robot de 3 gdl en configuracion
antropomorfica en las siguientes coordenadas: [ qd1, qd2, qd3 ]T = [ 30, 45, 90] grados
Solucion
El modelo dinamico del robot antropomorfico de 3 gdl se encuentra en el programa
cap8 robot3gdl.m como se describe en el cuadro 8.7. De particular interes
representa la lınea de codigo 23, debido a que en este lugar se inserta el algoritmo de
control que envıa la senal de par aplicado para que el robot se mueva a la posicion
indicada.
El esquema de control proporcional derivativo se encuentra implementado en el
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 409
programa cap8 PDrobot3gdl.m del cuadro 8.8. La sintonıa de las ganancias han sido
pensadas en la capacidad de par aplicado que puedan suministrar las articulaciones
del robot; es decir, la idea es no saturar a los servoamplificadores de tal forma que
se encuentren trabajando en la parte lineal, lejos de los lımites de saturacion.
Supongase que se cuenta con un prototipo de un robot manipulador de 3 gdl,
cuyos servomotores corresponden a las siguientes caracterısticas: 50 Nm, 150 Nm
y 15 Nm para las articulaciones de la base, hombro y codo, respectivamente. El
criterio para sintonizar las ganancias es el siguiente: kpi ≤ 0.80τmaxi
qdi, donde τmax
i
corresponde al par maximo de la i-esima articulacion. En la lınea 18 del programa
cap8 PDrobot3gdl.m se encuentra la sintonıa final de la ganancia proporcional; el
factor de amortiguamiento de la ganancia derivativa se ha seleccionado en el 20%
de la ganancia proporcional.
El codigo fuente que contiene la simulacion del control proporcional derivativo del
robot manipulador en configuracion antropomorfica se encuentra en el programa
cap8 robot3gdlsimu.m (cuadro 8.9). La figura 8.6 muestra el comportamiento de
los errores de posicion para las tres articulaciones; presentan un perfil suave, sin
ruido mecanico, ni sobre impulsos, tampoco se observan oscilaciones en regimen
estacionario. Los pares aplicados evolucionan dentro de los lımites de saturacion y
la trayectoria que describe el extremo final del robot en su espacio de trabajo es
suave, tal y como se muestra en el diagrama fase.
Figura 8.6 Control PD: robot cartesiano de 3 gdl.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
410 Capıtulo 8: Control de posicion
Codigo Fuente 8.7 cap8 robot3gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 robot3gdl.m
function xp = cap8 robot3gdl(t,x)1
q1=x(1); q2=x(2); q3=x(3); q = [q1; q2; q3];%vector de posicion articular2
qp1=x(4); qp2=x(5); qp3=x(6); qp = [qp1; qp2; qp3];%vector de velocidad articular3
Iz1=1.26; Iz2=0.084; Iz3=0.056; Iy1=0.089; Iy2=0.003; Iy3=0.0012; Ix1=0.03; Ix2=0.05;4
Ix3=0.009; m1=26.902; l1=0.45; b1=2.288; m2=30; l2=0.45; lc2=0.038; b2=0.2; m3=3.880;5
l3=0.45; lc3=0.048; b3=0.175; g=9.81;
m11=Iy2*sin(q2)*sin(q2)+ Iy3*sin(q2+q3)*sin(q2+q3)+ Iz1+Iz2*cos(q2)*cos(q2)+6
Iz3*cos(q2+q3)*cos(q2+q3)+ m2*lc2*lc2*cos(q2)*cos(q2)+ m3*(l2*cos(q2)+
lc3*cos(q2+q3))*(l2*cos(q2)+lc3*cos(q2+q3));
m12=0; m13=0; m21=0;7
m22=Ix2+ Ix3+m3*l2*l2+ m2*lc2*lc2+m3*lc3*lc3+ 2*m3*l2*lc3*cos(q3);8
m23=Ix3+m3*lc3*lc3+m3*l2*lc3*cos(q3); m31=0;9
m32=Ix3+m3*lc3*lc3+m3*l2*lc3*cos(q3); m33=Ix3+m3*lc3*lc3;10
M=[m11, m12, m13; m21, m22, m23 ;m31, m32, m33];%matriz de inercia11
gamma112=(Iy2-Ix2-m2*lc2*lc2)*cos(q2)*sin(q2)+(Iy3-Iz3)*cos(q2+q3)*sin(q2+q3)-12
m3*(l2*cos(q2)+lc3*cos(q2+q3))*(l2*sin(q2)+ lc3*sin(q2+q3));
gamma113=(Iy3-Iz3)*cos(q2+q3)*sin(q2+q3)- m3*lc3*sin(q2+q3)*(l2*cos(q2)+lc3*cos(q2+q3));13
gamma121=(Iy2-Iz2-m2*lc2*lc2)*cos(q2)*sin(q2)+(Iy3-Iz3)*cos(q2+q3)*sin(q2+q3)-14
m3*(l2*cos(q2)+lc3*cos(q2+q3))*(l2*sin(q2)+lc3*sin(q2+q3));
gamma131=(Iy3-Iz3)*cos(q2+q3)*sin(q2+q3) -m3*lc3*sin(q2+q3)*(l2*cos(q2)+ lc3*cos(q2+q3));15
gamma211=(Ix2-Iy2+m2*lc2*lc2)*cos(q2)*sin(q2)+(Iz3-Iy3)*cos(q2+q3)*sin(q2+q3)+16
m3*(l2*cos(q2)+lc3*cos(q2+q3))*(l2*sin(q2)+lc3*sin(q2+q3));
gamma223=-l2*m3*lc3*sin(q3); gamma232=-l2*m3*lc3*sin(q3);17
gamma233=-l2*m3*lc3*sin(q3); gamma311=(Iz3-Iy3)*cos(q2+q3)*sin(q2+q3)+18
m3*lc3*sin(q2+q3)*(l2*cos(q2)+lc3*cos(q2+q3));
gamma322=l2*m3*lc3*sin(q3); c11=gamma112*qp2+gamma113*qp3;19
c12=gamma121*qp1; c13=gamma131*qp1; c21=gamma211*qp1; c22=gamma223*qp3;20
c23=gamma232*qp2+gamma233*qp3; c31=gamma311*qp1; c32=gamma322*qp2; c33=0;21
C=[c11, c12, c13; c21, c22, c23; c31, c32, c33];22
gq11=0; gq21=(lc2*m1++m2*l2)*sin(q1)+ m2*lc3*sin(q1+q2);23
gq31=m2*lc3*sin(q1+q2);24
gq=g*[gq11; gq21; gq31];25
fr=[b1*qp1; b2*qp2; b3*qp3];26
[˜ , tau] = cap8 PDrobot3gdl(q,qp);27
qpp = inv(M)*(tau-C*qp-gq-fr);28
xp = [qp1; qp2; qp3; qpp(1); qpp(2); qpp(3)];%vector de salida29
end30
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 411
Codigo Fuente 8.8 cap8 PDrobot3gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 PDrobot3gdl.m
function [qtildeg tau] = cap8 PDrobot3gdl(x,xp)1
q1=x(1); q2=x(2); q3=x(3);2
q = [q1; q2; q3];%posiciones3
qp1=xp(1); qp2=xp(2); qp3=xp(3);4
qp = [qp1; qp2; qp3];%velocidades5
%parametros del robot: par gravitacional6
m1=26.902; l1=0.45; m2=30; l2=0.45; lc2=0.038;7
m3=3.880; l3=0.45; lc3=0.048; g=9.81;8
gq11=0;9
gq21=(lc2*m1++m2*l2)*sin(q1)+m2*lc3*sin(q1+q2);10
gq31=m2*lc3*sin(q1+q2);11
gq=g*[gq11; gq21; gq31];%par gravitacional12
qd=[30; 45; 90];%referencias o posiciones deseadas13
qtilde=qd*pi/180-q;%error de posicion q14
qtildeg=(180/pi)*qtilde; %error de posicion q en grados15
qpgrados=180*qp/pi;%velocidad q en grados/segundo.16
%ganancia proporcional17
Kp=[1, 0,0 ;18
0, 2,0;19
0,0,0.15];20
%ganancia derivativa21
Kv=[0.3, 0,0;22
0, 0.6,0;23
0,0,0.015];24
% control proporcional derivativo PD25
tau=Kp*qtildeg-Kv*qpgrados+gq;26
end27
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
412 Capıtulo 8: Control de posicion
Codigo Fuente 8.9 cap8 robot3gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 robot3gdlsimu.m
clc; clear all;1
close all;2
format short3
%parametros de simulacion:4
ti=0; h=0.0025; tf = 5; ts=ti:h:tf;%vector tiempo5
opciones=odeset(’RelTol’,1e-3,’InitialStep’, 2.5e-3,’MaxStep’,2.5e-3);6
ci=[0; 0; 0; 0;0;0];7
[t,x]=ode45(’cap8 robot3gdl’,ts,ci,opciones);8
q1=x(:,1); q2=x(:,2); q3=x(:,3); %posiciones articulares9
qp1=x(:,4); qp2=x(:,5); qp3=x(:,6); %velocidades articulares10
[n,m]=size(t);11
tau1=zeros(n,1); tau2=zeros(n,1); tau3=zeros(n,1);12
qtilde1=zeros(n,1); qtilde2=zeros(n,1); qtilde3=zeros(n,1);13
xef=zeros(n,1); yef=zeros(n,1); zef=zeros(n,1);14
beta1=0.15; beta2=0.15; beta3=0.15; l1=1; l2=0.45; l3=0.45;15
for k=1:n16
[qt tau] = cap8 PDrobot3gdl([q1(k);q2(k)q3(k)],[qp1(k);qp2(k); qp3(k)]);17
tau1(k)=tau(1); tau2(k)=tau(2); tau3(k)=tau(3);18
qtilde1(k)=qt(1); qtilde2(k)=qt(2); qtilde3(k)=qt(3);19
[xef(k), yef(k),zef(k)]=cinematica r3gdl (beta1, l1, q1(k), beta2,20
l2,q2(k),beta3,l3,q3(k));
end21
subplot(2,2,1); plot(t,qtilde1,t,qtilde2, t,qtilde3)22
subplot(2,2,2); plot( t, tau1, t,tau2, t,tau3)23
subplot(2,2,3); plot3(xef,yef,zef)24
subplot(2,2,4); plot(qtilde1, qp1, qtilde2,qp2, qtilde3,qp3)25
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 413
8.2.4.8.2.4 Control PD de un robot cartesiano de 3 gdl
El algoritmo de control proporcional derivativo para el robot manipulador en
configuracion cartesiana esta dado por la siguiente estructura:⎡⎢⎣τ1
τ2
τ3
⎤⎥⎦
︸ ︷︷ ︸τ
=
⎡⎢⎣kp1 0 0
0 kp2 0
o 0 kp3
⎤⎥⎦
︸ ︷︷ ︸Kp
⎡⎢⎣d1
d2
d3
⎤⎥⎦
︸ ︷︷ ︸˜d
−
⎡⎢⎣kv1 0 0
0 kv2 0
0 0 kv3
⎤⎥⎦
︸ ︷︷ ︸Kv
⎡⎢⎣d1
d2
d3
⎤⎥⎦
︸ ︷︷ ︸˙d
+g
⎡⎢⎣m1 +m2 +m3
0
0
⎤⎥⎦
donde Kp, Kv ∈ IR3×3 son la ganancia proporcional y derivativa, respectivamente;
el error de posicion d ∈ IR3 se define como la diferencia entre la posicion deseada
dd ∈ IR3 y la posicion actual del robot d ∈ IR3.
♣ Ejemplo 8.4
Controlar la posicion del extremo final de un robot de 3 gdl en configuracion
cartesiana en la siguiente ubicacion: [ dd1, dd2, dd3 ]T = [ 0.5, 0.4, 0.2] m
Solucion
El modelo dinamico del robot car-
tesiano se encuentra en el cua-
dro 8.10 que describe el programa
cap8 cartesiano3gdl.m; en la lınea
23 de este programa se inserta el al-
goritmo de control PD definido por
la funcion cap8 PDcartesiano3gdl.m
(ver cuadro 8.11). El programa prin-
cipal para realizar la simulacion del
control PD en el robot cartesiano de
3 gdl se encuentra en el cuadro 8.12
que describe el contenido del progra-
ma cap8 cartesiano3gdlsimu.m; los
resultados se encuentran en la figura
8.7.
Figura 8.7 Control PD.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
414 Capıtulo 8: Control de posicion
Codigo Fuente 8.10 cap8 cartesiano3gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 cartesiano3gdl.m
function xp = cap8 cartesiano3gdl(t,x)1
%vector de posicion articular2
d = [x(1);3
x(2);4
x(3)];5
%vector de velocidad articular6
dp =[x(4);7
x(5);8
x(6)];9
m1=0.7; m2=0.28; m3=0.28; g=9.81;10
b1=0.02; b2=0.08; b3=.02;11
B=[b1, 0, 0;12
0, b2,0;13
0, 0, b3];14
%modelo dinamico del robot15
M = [m1+m2+m3, 0, 0; % Matriz de inercia16
0 m1+m2, 0;17
0 0 m3];18
par grav = g*[m1+m2+m3;% vector de pares de gravitacionales19
0;20
0];21
fr= B*dp;22
[˜ , tau] = cap8 PDcartesiano3gdl(d,dp);23
dpp = inv(M)*(tau- par grav-fr);%vector de aceleracion articular24
xp = [dp(1); dp(2); dp(3); dpp(1); dpp(2); dpp(3)];%vector de salida25
end26
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.2 Control proporcional-derivativo (PD) 415
Codigo Fuente 8.11 cap8 PDcartesiano3gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 PDcartesiano3gdl.m
function [dtilde tau] = cap8 PDcartesiano3gdl (d,dp)1
d1=d(1);2
d2=d(2);3
d3=d(3);4
dp1=dp(1);5
dp2=dp(2);6
dp3=dp(3);7
%parametros del robot: par gravitacional8
m1=0.7; m2=0.28; m3=0.28; g=9.81;9
par grav = g*[m1+m2+m3;10
0;11
0];12
dd=[0.5;13
0.4;14
0.2];15
dtilde=dd-[d1; d2;d3];16
kp1=3; kp2=2.5;kp3=1.7;17
kv1=3; kv2=2.5; kv3=1.4;18
Kp=[kp1, 0,0;19
0, kp2,0;20
0,0,kp3];21
Kv=[kv1, 0,0;22
0, kv2,0;23
0,0,kv3];24
%Control proporcional derivativo25
tau=Kp*dtilde-Kv*dp+par grav;26
end27
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
416 Capıtulo 8: Control de posicion
Codigo Fuente 8.12 cap8 cartesiano3gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 cartesiano3gdlsimu.m
clc;1
clear all;2
close all;3
format short4
%parametros de simulacion:5
ti=0; h=0.001; tf = 10; ts=ti:h:tf;%vector tiempo6
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3, ’MaxStep’,1e-3);7
ci=[0; 0; 0; 0; 0; 0];8
[t,x]=ode45(’cap8 cartesiano3gdl’,ts,ci,opciones);9
d1=x(:,1); d2=x(:,2); d3=x(:,3);10
dp1=x(:,4); dp2=x(:,5); dp3=x(:,6);11
[n,m]=size(t);12
tau1=zeros(n,1); tau2=zeros(n,1); tau3=zeros(n,1);13
dtilde1=zeros(n,1); dtilde2=zeros(n,1); dtilde3=zeros(n,1);14
xef=zeros(n,1); yef=zeros(n,1); zef=zeros(n,1);15
for k=1:n16
[dt tau] = cap8 PDcartesiano3gdl([d1(k); d2(k); d3(k)],[dp1(k);dp2(k);17
dp3(k)]);
tau1(k)=tau(1); tau2(k)=tau(2); tau3(k)=tau(3);18
dtilde1(k)=dt(1); dtilde2(k)=dt(2); dtilde3(k)=dt(3);19
[xef(k), yef(k),zef(k)]=cinematica cartesiano (d3(k), d2(k), d1(k));20
end21
subplot(2,2,1); plot(t,dtilde1,t,dtilde2, t,dtilde3)22
subplot(2,2,2); plot( t, tau1, t,tau2, t,tau3)23
subplot(2,2,3); plot3(xef,yef,zef)24
subplot(2,2,4); plot(dtilde1, dp1, dtilde2,dp2, dtilde3,dp3)25
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.3 Control PID 417
8.3 Control PID
El esquema de control proporcional integral derivativo (PID) tiene la siguiente
estructura:
τ = Kpq −Kv q +Ki
∫ t
0
q(μ)dμ+ g(q) (8.4)
donde Kp, Kv ∈ IRn×n son matrices definidas positivas y se les denomina ganancias
proporcional y derivativa, respectivamente. Ki ∈ IRn×n es una matriz definida
positiva denominada ganancia integral. Todas las ganancias Kp, Kv y Ki son
matrices definidas positivas y generalmente son diagonales.
La accion de control PID introduce una nueva variable de estado ε, la cual se
encuentra relacionada con la derivada temporal del error de posicion ε = q. Por
lo tanto, ε =∫ t0 qdt + ε(0), con ε(0) ∈ IRn es un vector constante. La ecuacion en
lazo cerrado en terminos de las variables de estado [ ε, q, q ]T adquiere la siguiente
forma:
d
dt
⎡⎢⎣ ε˙qq
⎤⎥⎦ =
⎡⎢⎣ q
−qM(q)−1 [Kpq −Kvq +Kiε −C(q, q)q − Bq ]
⎤⎥⎦
(8.5)
El algoritmo de control PID no representa una nueva estructura de control; es una
version modificada del control PD mas la accion de control integral. El algoritmo
de control PD tiene la desventaja que en regimen estacionario presenta un error
permanente de posicion denominado offset; para disminuir este error se incorpora
en la estructura matematica del PD un termino mas que se denomina accion de
control integral. El proceso de integracion es la suma del area bajo la curva del error
de posicion, por lo tanto acumula energıa la cual canalizada adecuadamente puede
disminuir la magnitud del error en regimen estacionario.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
418 Capıtulo 8: Control de posicion
8.3.1.8.3.1 Control PID de un robot de 2 gdl
La ecuacion del esquema de control proporcional derivativo para un brazo robot de
2 gdl esta dado por:[τ1
τ2
]=
[kp1 0
0 kp2
][q1
q2
]+
[ki1 0
0 ki2
] [ ∫ t0 q1dt∫ t0 q2dt
]+
[g(lc1m1 +m2l1) sen(q1) + gm2lc2 sen(q1 + q2)
gm2lc2 sen(q1 + q2)
]
♣ ♣ Ejemplo 8.5
Controlar la posicion del extremo final de un robot de 2 gdl en configuracion
antroporfica en la siguiente ubicacion: [ qd1, qd2 ]T = [ 45, 90 ] m
Solucion
El programa cap8 PIDrobot2gdl.m tiene implementado el modelo dinamico del
robot de 2 gdl (cuadro 8.13). La figura 8.8 muestra los resultados del algoritmo
de control PID sobre el brazo robot de 2 gdl.
Figura 8.8 Control PID de un robot de 2 gdl.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.3 Control PID 419
El esquema de control PID se encuentra en el programa cap8 PIDrobot2gdl.m que
se muestra en el cuadro 8.13. La regla de sintonıa de la ganancia derivativa e integral
se ha fijado respectivamente en 20% y 10 % de la ganancia proporcional. La integral
del error introduce una nueva variable de estado (varepsilon) cuya integracion
numerica se realiza en el modelo dinamico del robot.
Codigo Fuente 8.13 cap8 PIDrobot2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 PIDrobot2gdl.m
function [qtilde tau] = cap8 PIDrobot2gdl(x, xp, varepsilon)1
q = [x(1); x(2)];%posiciones2
qp = [xp(1); xp(2)];%velocidades3
kp1=2.666; kp2=0.133;4
Kp=[kp1, 0; 0, kp2];%ganancia proporcional5
ki1=0.1*kp1;6
ki2=0.1*kp2;7
Ki=[ki1, 0; 0, ki2];%ganancia integral8
kv1=0.2*kp1;9
kv2=0.2*kp2;10
Kv=[kv1, 0; 0, kv2];%ganancia derivativa11
%referencias12
qd1=45; qd2=90; qd=[qd1; qd2];%vector de posiciones deseadas13
%vector de pares de gravitacionales14
par grav = [38.46*sin(q(1))+1.82*sin(q(1)+q(2));15
1.82*sin(q(1)+q(2)) ];16
qtilde=[pi*qd(1)/180-q(1); pi*qd(2)/180-q(2)];%error de posicion en grados17
qtgrados=(180/pi)*[qtilde(1) ;qtilde(2)];18
%velocidad en grados/segundo. qpgrados=180*qp/pi;19
tau=Kp*qtgrados+Ki*varepsilon-Kv*qpgrados+par grav;20
end21
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
420 Capıtulo 8: Control de posicion
Codigo Fuente 8.14 cap8 robot2gdlPID.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 robot2gdlPID.m
function xp = cap8 robot2gdlPID(t,x)1
%vector de posicion articular2
q1=x(1); q2=x(2); q = [q1; q2];3
%vector de velocidad articular4
qp1=x(3); qp2=x(4); qp = [qp1; qp2];5
varepsilon = [x(5); x(6)];%integral de qtilde6
m1=23.902; l1=0.45; lc1=0.091; I1=1.266; b1=2.288;7
m2=3.880; l2=0.45; lc2=0.048; I2=0.093; b2=0.175; g=9.81;8
theta1=m1*lc1*lc1+m2*l1*l1+m2*lc2*lc2+I1+I2;9
theta2=l1*m2*lc2;10
theta3=m2*lc2*lc2+I2;11
theta4=g*(lc1*m1+m2*l1);12
theta5=g*m2*lc2; theta6=b1; theta7=b2;13
M=[theta1+2*theta2*cos(q2), theta3+theta2*cos(q2);14
theta3+theta2*cos(q2), theta3];15
C=[ -2*theta2*sin(q2)*qp2, -theta2*sin(q2)*qp2;16
theta2*sin(q2)*qp1, 0];17
gq11=theta4*sin(q1)+theta5*sin(q1+q2);18
gq21=theta5*sin(q1+q2);19
gq=[gq11; gq21];20
fr=[theta6*qp1; theta7*qp2];21
%ley de control22
[qtilde tau] = cap8 PIDrobot2gdl(q,qp,varepsilon);23
varepsilonp=qtilde;24
qpp = M∧(-1)*(tau-C*qp-gq-fr);25
xp = [qp1; qp2; qpp(1); qpp(2);varepsilonp(1); varepsilonp(2)];26
end27
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.3 Control PID 421
El programa cap8 robot2gdlPIDsimu.m que se presenta en el cuadro 8.15 permite
realizar la simulacion del control PID con el robot de 2 gdl
Codigo Fuente 8.15 cap8 robot2gdlPIDsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 robot2gdlPIDsimu.m
clc;1
clear all;2
close all;3
format short g4
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector tiempo5
ci=[0; 0; 0; 0;0;0]; %condiciones iniciales6
opciones=odeset(’RelTol’,1e-3,’InitialStep’, 1e-3, ’MaxStep’,1e-3);7
[t,x]=ode45(’cap8 robot2gdlPID’,t,ci,opciones);8
q1=x(:,1); q2=x(:,2);9
qp1=x(:,3); qp2=x(:,4);10
int1=x(:,3); int2=x(:,4);11
[n,m]=size(t);12
tau1=zeros(n,1); tau2=zeros(n,1);13
qtilde1=zeros(n,1); qtilde2=zeros(n,1);14
xef=zeros(n,1); yef=zeros(n,1);15
beta1=0.15; beta2=0.15; l1=0.45; l2=0.45;16
for k=1:n17
[qt tau] = cap8 PIDrobot2gdl([q1(k); q2(k)], [qp1(k); qp2(k)],[int1(k); int2(k)]);18
tau1(k)=tau(1); tau2(k)=tau(2);19
qtilde1(k)=qt(1); qtilde2(k)=qt(2);20
[xef(k), yef(k),˜ ]=cinematica r2gdl(beta1, l1, q1(k), beta2,l2,q2(k));21
p=Rz(-pi/2)*[xef(k), yef(k), beta1+beta2]’;22
xef(k)=p(1);23
yef(k)=p(2);24
end25
subplot(3,3,1); plot(t,qtilde1,t,qtilde2)26
subplot(3,3,2); plot( t, tau1, t,tau2)27
subplot(3,3,3); plot( t,int1,t,int2)28
subplot(3,3,4); plot(xef,yef)29
subplot(3,3,5); plot(qtilde1, qp1, qtilde2,qp2)30
subplot(3,3,6); plot(t, qp1, t,qp2)31
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
422 Capıtulo 8: Control de posicion
8.4 Control punto a punto
Una aplicacion inmediata de control de posicion es el que se denomina control
punto a punto, consiste en mover el extremo final del robot para cada una de
las posiciones desdeas qdi, con i = 1, 2, · · · , n. De esta forma es posible parametrizar
lıneas, cırculos, elipses, figuras y superficies en funcion de un conjunto de puntos
qdi. Los algoritmos de control de posicion de alto desempeno pueden ser empleados
en control punto a punto como son los casos de los esquemas tangente hiperbolico y
arcotangente.
8.4.1.8.4.1 Control tangente hiperbolico
La estructura matematica del control tangente hiperbolica es la siguiente:
τ = Kp tanh(q) −Kv tanh(q) + g(q)
♣ ♣ Ejemplo 8.6
Posicionar el extremo final de un robot de 2 gdl en: [ qd1, qd2 ]T = [ 45, 90] m.
Solucion
El programa cap8 robot2gdlTANH.m
que se presenta en el cuadro 8.16
tiene el modelo dinamico del robot
de 2 gdl; en la lınea 22 se conec-
ta el archivo cap8 TANHrobot2gdl.m
(ver cuadro 8.17) para realizar el con-
trol tangente hiperbolico. El programa
cap8 TANHrobot2gdlsimu.m del cua-
dro 8.18 permite realizar la simulacion
del control tangente hiperbolica cuyos
resultados se muestran en la figura 8.8.
.9
8.9.
Figura 8.9 Control tanh().
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.4 Control punto a punto 423
Codigo Fuente 8.16 cap8 robot2gdlTANH.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 robot2gdlTANH.m
function xp = cap8 robot2gdlTANH(t,x)1
%vector de posicion articular2
q1=x(1); q2=x(2); q = [q1; q2];3
%vector de velocidad articular4
qp1=x(3); qp2=x(4); qp = [qp1; qp2];5
m1=23.902; l1=0.45; lc1=0.091; I1=1.266; b1=2.288;6
m2=3.880; l2=0.45; lc2=0.048; I2=0.093; b2=0.175; g=9.81;7
theta1=m1*lc1*lc1+m2*l1*l1+m2*lc2*lc2+I1+I2;8
theta2=l1*m2*lc2;9
theta3=m2*lc2*lc2+I2;10
theta4=g*(lc1*m1+m2*l1); theta5=g*m2*lc2;11
theta6=b1; theta7=b2;12
M=[theta1+2*theta2*cos(q2), theta3+theta2*cos(q2);13
theta3+theta2*cos(q2), theta3];14
C=[ -2*theta2*sin(q2)*qp2, -theta2*sin(q2)*qp2;15
theta2*sin(q2)*qp1, 0];16
gq11=theta4*sin(q1)+theta5*sin(q1+q2);17
gq21=theta5*sin(q1+q2);18
gq=[gq11; gq21];19
fr=[theta6*qp1;20
theta7*qp2];21
[˜ , tau]=cap8 TANHrobot2gdl(q,qp);22
qpp = M∧(-1)*(tau-C*qp-gq-fr);23
%vector de salida24
xp = [qp1; qp2; qpp(1); qpp(2)];25
end26
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
424 Capıtulo 8: Control de posicion
Codigo Fuente 8.17 cap8 TANHrobot2gdl.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 TANHrobot2gdl.m
function [qtilde tau] = cap8 TANHrobot2gdl(x,xp)1
q1=x(1); q2=x(2); q = [q1; q2];%posiciones2
qp1=xp(1); qp2=xp(2); qp = [qp1; qp2];%velocidades3
%parametros del robot: par gravitacional4
m1=23.902; lc1=0.091; l1=0.45;5
m2=3.880; lc2=0.048; g=9.81;6
theta4=g*(lc1*m1+m2*l1);7
theta5=g*m2*lc2;8
%par gravitacional9
par grav = [theta4*sin(q1)+theta5*sin(q1+q2);10
g*m2*lc2];11
%ganancia proporcional12
kp1=10; kp2=2;13
Kp=[kp1, 0; 0, kp2];14
%ganancia derivativa15
kv1=8; kv2=1; Kv=[kv1, 0; 0, kv2];16
%referencias17
qd1=45; qd2=90; qd=[qd1; qd2];18
qtilde=pi/180*qd-q;19
%error de posicion en grados20
qtgrados=(180/pi)*qtilde;21
%velocidad en grados/segundo22
qpgrados=180*qp/pi;23
tau=Kp*tanh(qtgrados)-Kv*tanh(qpgrados)+par grav;24
end25
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.4 Control punto a punto 425
Codigo Fuente 8.18 cap8 TANHrobot2gdlsimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 TANHrobot2gdlsimu.m
clc;1
clear all;2
close all;3
format short g4
ti=0; h=0.001; tf = 5; t=ti:h:tf;%vector tiempo5
ci=[0; 0; 0; 0];%condciones iniciales6
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);7
[t,x]=ode45(’cap8 robot2gdlTANH’,t,ci,opciones);8
q1=x(:,1); q2=x(:,2);9
qp1=x(:,3); qp2=x(:,4);10
[n,m]=size(t);11
tau1=zeros(n,1); tau2=zeros(n,1); qtilde1=zeros(n,1); qtilde2=zeros(n,1);12
xef=zeros(n,1); yef=zeros(n,1);
beta1=0.15; beta2=0.15; l1=0.45; l2=0.45;13
for k=1:n14
[qt tau] = cap8 TANHrobot2gdl([q1(k);q2(k)],[qp1(k);qp2(k)]);15
tau1(k)=tau(1); tau2(k)=tau(2);16
qtilde1(k)=qt(1); qtilde2(k)=qt(2);17
[xef(k), yef(k),˜ ]=cinematica r2gdl(beta1,l1,q1(k),beta2,l2,q2(k));18
p=Rz(-pi/2)*[xef(k), yef(k), beta1+beta2]’;19
xef(k)=p(1); yef(k)=p(2);20
end21
subplot(2,2,1); plot(t,qtilde1,t,qtilde2)22
subplot(2,2,2); plot( t, tau1, t,tau2)23
subplot(2,2,3); plot(xef,yef)24
subplot(2,2,4); plot(qtilde1, qp1, qtilde2,qp2)25
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
426 Capıtulo 8: Control de posicion
8.4.2.8.4.2 Control arcotangente
El control arcotangente esta dado por la siguiente expresion:
τ = Kp atan (q) −Kv atan (q) + g(q)
♣ ♣ Ejemplo 8.7
Generar una flor de 8 petalos con un robot de 2 gdl usando el control arcotangente.
Solucion
Dentro de las aplicaciones de control punto a punto se encuentra el trazo de figuras.
El programa cap8 robot2gdlatansimu.m (cuadro 8.19) realiza la simulacion para
que un robot antropomorfico de 2 gdl trace una figura tipo flor con 8 petalos usando
el control arcotangente como se muestra en la figura 8.10.
Figura 8.10 Control atan().
El control arcotangente es de alto desempeno y la sintonizacion de las ganancias
proporcional y derivativa deben satisfacer ser menor al par maximo que pueda
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.4 Control punto a punto 427
entregar el servoamplificador. Con esta sintonıa de las ganancias es posible controlar
todos los puntos de la figura a trazar.
El programa cap8 robot2gdlflor8p.m que se encuentra en el cuadro 8.20 tiene el
codigo fuente del robot de 2 gdl; particularmente en la lınea 11 se inserta el algoritmo
de control arcotangente el cual se encuentra en el programa cap8 atanflor8p.m del
cuadro 8.21. Observe que el pase de parametros del control arcotangente son: t, q, q;
el tiempo t es necesario para generar la figura en forma de flor con 8 petalos.
Codigo Fuente 8.19 cap8 robot2gdlatansimu.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 robot2gdlatansimu.m
clc; clear all; close all;1
format short g2
ti=0; h=0.001; tf = 10;%vector tiempo3
t=ti:h:tf;%tiempo de simulacion4
ci=[0; 0; 0; 0];5
opciones=odeset(’RelTol’,1e-3,’InitialStep’,1e-3,’MaxStep’,1e-3);6
[t,x]=ode45(’cap8 robot2gdlflor8p’,t,ci,opciones);7
q1=x(:,1);8
q2=x(:,2);9
[n,m]=size(t);10
xef=zeros(n,1);11
yef=zeros(n,1);12
beta1=0.15; beta2=0.15; l1=0.45; l2=0.45;13
[xef, yef,˜ ]=cinematica r2gdl(beta1,l1,q1,beta2,l2,q2);14
plot(xef,yef)15
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
428 Capıtulo 8: Control de posicion
Codigo Fuente 8.20 cap8 robot2gdlflor8p.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 robot2gdlflor8p.mfunction xp = cap8 robot2gdlflor8p(t,x)1
q = [x(1); x(2)]; %vector de posicion articular2
qp = [x(3); x(4)];%vector de velocidad articular3
M = [2.351+0.168*cos(q(2)) 0.102+0.084*cos(q(2)); %matriz de inercia4
0.102+0.084*cos(q(2)) 0.102 ];5
C = [-0.168*sin(q(2))*qp(2) -0.084*sin(q(2))*qp(2); %matriz de fuerzas centrıpetas y de Coriolis6
0.084*sin(q(2))*qp(1) 0.0 ];7
par grav = [38.46*sin(q(1))+1.82*sin(q(1)+q(2)); %vector de pares de gravitacionales8
1.82*sin(q(1)+q(2)) ];9
fr = [2.288*qp(1); 0.175*qp(2)];10
[˜ , tau] = cap8 atanflor8p(t,q,qp) ; %ley de control arcotangente11
qpp = inv(M)*(tau-C*qp- par grav-fr); %vector de aceleracion articular12
xp = [qp(1); qp(2);qpp(1); qpp(2) ];%vector de salida13
end14
Codigo Fuente 8.21 cap8 atanflor8p.m
%MATLAB Aplicado a Robotica y Mecatronica.
%Editorial Alfaomega, Fernando Reyes Cortes.
%Capıtulo 8 Control de posicion.
cap8 atanflor8p.mfunction [qtilde tau] = cap8 atanflor8p(t,x,xp)1
q = [x(1); x(2)]; %posiciones2
qp = [xp(1); xp(2)]; %velocidades3
kp1=100; kp2=15; kv1=kp1;kv2=kp2;4
Kp=[kp1, 0; 0, kp2];%ganancia proporcional5
Kv=[kv1, 0; 0, kv2]; %ganancia derivativa6
lambda1=180/pi; lambda2=180/pi; Lambda=[lambda1 0; 0 lambda2];7
gamma1=1; gamma2=1; Gamma=[gamma1 0; 0 gamma2];8
par grav = [38.46*sin(q(1))+1.82*sin(q(1)+q(2)); %vector de pares de gravitacionales9
1.82*sin(q(1)+q(2)) ];10
xc=0.3; yc=0.3; r=0.2; l1=0.45; l2=0.45; alfa=0.07; beta=4; x=xc+alfa+r*(cos(t))*(sin(beta*t));11
y=-yc+alfa+r*(sin(t))*(sin(beta*t));12
[qd1 qd2]=cinv r2gdl(l1,l2,x,y);13
qd=[qd1; qd2];14
qtilde=[qd(1)-q(1); qd(2)-q(2)]; %error de posicion15
%ley de control PD16
tau=Kp*atan(Lambda*qtilde)-Kv*atan(Gamma*qp)+par grav;17
end18
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
8.5 Resumen 429
8.5 Resumen
Control de posicion robots manipuladores permite realizar una amplia gama
de aplicaciones industriales, comerciales, cientıficas, etc. La aplicacion mas
popular del control de robot manipuladores es la que se denomina control punto
a punto. Practicamente todas las aplicaciones industriales pueden ser realizadas a
traves de esta tecnica de control.
En el presente capıtulo se presento las bases para entender el funcionamiento
cualitativo de los algoritmos de control, partiendo desde los tradicionales como el
proporcional derivativo (PD) y control proporcional integral derivativo (PID), hasta
nuevos esquemas como las funciones tangente hiperbolica y arcotangente.
El modelo dinamico de robots manipuladores permite evaluar cualitativamente el
desempeno de nuevos esquemas de control como:
[qtilde tau] = pd(x, xp)
[qtilde tau] = pid(x, xp, varepsilon)
[qtilde tau] = atan(x, xp)
[qtilde tau] = tanh(x, xp)
El diseno de nuevas estrategias de control es posible gracias a la tecnica de moldeo de
energıa la cual genera una familia muy extensa de esquemas de control para robots
manipuladores.
En el Web del libro se encuentran los programas fuentes de las librerıas de control
de posicion.
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
430 Capıtulo 8: Control de posicion
Parte IV Referencias selectas
Hay una extensa literatura para el area de control de robots manipuladores,
particularmente se recomienda los siguientes textos:
8 Control de posicion
M. Vidyasagar. “Nonlinear systems analysis”. Prentice-Hall,
Englewood Cliffs, NJ (1993).
R.M. Murray, Z. Li and S.S. Sastry.
“A mathematical introduction to robotic manipulation”. CRC
Press (1994).
A. Isidori. “Nonlinear control systems”. Springer-Verlag, London,
UK (1995).
Karl J. Astrom and Bjorn Wittenmark.
“Computer controlled systems: theory and design”. Third Edi-
tion. Prentice Hall Inc. 1997.
Shankar Sastry. “Nonlinear systems: analysis stability and control”.
Springer 1999.
Hassan K. Khalil. “Nonlinear systems”. Third Edition. Prentice
Hall Inc. 2002.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Parte IV Problemas propuestos 431
R. Kelly y V. Santibanez. “Control de movimiento de robots manipuladores”.
Printice-Hall, Pearson. 2003.
R. Kelly, V. Santibanez and A. Lorıa.
“Control of robot manipulators in joint space”. Springer-Verlag
London 2005.
Mark W. Spong and Seth Hutchinson, M. Vidyasagar.
“Robot modeling and control”. John Wiley and Sons, Inc. 2006.
Fernando Reyes “Robotica: control de robots manipuladores”.
Alfaomega, 2011.
Parte IV Problemas propuestos
En esta seccion se presenta una serie de ejercicios con la finalidad de mejorar
las habilidades en simulacion de control de robots manipuladores.
Capıtulo 8 Control de posicion
8.1 Implementar el control PID para los siguientes robots:
(a) Pendulo qd1 = 90 grados.
(b) Robot antropomorfico de 3 gdl qd = [ 30, 45, 90] grados.
(c) Control cartesiano de 3 gdl dd = [ 0.3, 0.4, 0.5] m.
8.2 Considere la siguiente estructura de control:
τ = Kp sen(q) −Kv sen(q) + g(q)
implementar esta estructura de control en los siguientes robots:
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
432 Capıtulo 8: Control de posicion
(a) Pendulo qd1 = 90 grados.
(b) Robot antropomorfico de 2 gdl qd = [ 45, 90 ]T grados.
(c) Robot antropomorfico de 3 gdl qd = [ 45, 90, 135]T grados.
(d) Control cartesiano de 3 gdl dd = [ 0.5, 0.8, 0.9]T m.
8.3 Considere la siguiente familia de algoritmos de control tipo PD:
τ = Kpq2m−1 −Kvq
2m−1 + g(q)
donde m ∈ N .
Implemente esta estructura de control en los casos para m = 1, 2, 3, 4, 5 en los
siguientes robots:
(b) Robot antropomorfico de 2 gdl qd = [ 90, 135]T grados.
(c) Control cartesiano de 3 gdl dd = [ 0.5, 0.8, 0.9]T m.
¿Que reglas de sintonıa puede proponer para obtener el valor de las ganancias
de tal forma que no sature a los servoamplificadores cuya capacidad son de
τmax1 = 150 Nm, τmax2 = 15 Nm para el robot de 2 gdl y τmax1 = 50 Nm,
τmax2 = 150, τmax3 = 15 para el robot de 3 gdl.
8.4 Sea la siguiente familia de controladores
τ = Kp
coshm−1(q) senh(q)
1 + cosh(q)−Kv atan (q) + g(q)
considere los casos de estudio para m = 1, 2, 3, 4, 5 en un robot cartesiano de
3 gdl para controlar la posicion del extremo final del robot en las siguientes
coordenadas: [ 0.4, 0.3, 0.8] m.
(a) ¿Como varıa la respuesta del robot (errores de posicion) conforme se
incrementa el exponente m.
(b) ¿Describa el desempeno de este esquema de control en funcion de las
ganancias y el exponente m.
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Indice analıtico
A
algoritmo
recursivo, 332
de control, 393
amortiguamiento, 129
antropomorfico, 408
archivos experimentales, 76
arreglos, 26, 41
B
backward difference, 95
borrando, 35
brazo robot de 2 gdl, 403
break, 73
C
case, 72
centrıfuga, 301
clear, 17
cinematica, 140, 185
diferencial, 187
inversa, 186
columna de una matriz, 27
columnas, 26, 35
constante de tiempo, 297
constantes utiles, 18
continue, 74
control, 242
convecion DH, 192
arcotangente, 390
de posicion, 393
de robots, 390, 393
PD, 396
PD,
pendulo, 397
robot cartesiano, 413
robot de 2 gdl, 403
robot de 3 gdl, 408
concatenacion, 35
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
434 Indice analıtico
PID, 417
proporcional derivativo,
390, 395
proporcional integral deri-
vativo, 390
punto a punto, 395
tangente hiperbolico, 390
CRTL Q, 15
D
Denavit-Hartenberg, 192
demos, 13
derivada, 93
desempeno, 395
det, 85
determinante simbolico, 86
determinantes, 85
diferenciacion numerica, 92
diff, 94, 97
dinamica, 284
E
ecuacion diferencial ordinaria,
117, 288
else, 60
elseif, 60, 64
end, 51, 52
error de posicion, 395, 417
esquema escalar, 381
esquemas de regresion, 332, 359
estimador de velocidad, 296
exit, 14
eye, 32
ezmesh, 47
F
fclose, 76
feval, 50
filtrado, 296, 299, 350
filtro, 299
fopen, 76
for, 58, 61, 64, 67, 73
format, 18
formato numerico, 18
forward difference, 95
fplot, 46
fprintf, 76
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
expansion de escalares, 37
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Indice analıtico 435
frecuencia de corte, 357
frecuencia natural, 129
friccion de Coulomb, 306
friccion viscosa, 306
funcion, 51
funcion
cırculo, 56
transferencia, 289
discontinua, 351
genvarname, 16
ode, 120
ode23, 122
anidada, 53
archivo, 51
cuadratura, 113
en lınea, 50
quad, 108
G
ganancia
derivativa, 417
proporcional, 417
integral, 417
globales, 53
graficas, 43
H
help, 13, 43
elfun, 49
elmat, 49
specfun, 49
helpwin, 43
I
identificacion, 331
identificadores, 15
if, 58–60, 64
inercia del rotor, 306
inercia, 311
inercia, robot 3 gdl
instrucciones condicionales, 59
integracion numerica, 100
integral, 93
inversa de matriz, 87
L
librerıas de
cinematica, 274
Denavit-Hartenberg, 180
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
436 Indice analıtico
Traslacion y rotacion, 182
matrices homogeneas, 174
mınimos cuadrados, 334
linesolve, 89
load, 32, 76
Lobatto, 113
locales, 53
M
matrices de rotacion, 148
maximo, 69
metodo de Euler, 95, 114
metodo de primer orden, 118
metodo de Runge-Kutta, 118,
119
mınimo, 69
mınimos cuadrados, 332, 334
magic, 32
Mathworks, 5, 80
matrices, 26, 38
matriz de covarianza, 333
mesh, 47
modelo
energıa, 353, 366
potencia, 355, 359, 369, 378
regresion, 346
regresion dinamico, 361
dinamico, 287, 331, 346, 359
dinamico filtrado, 350
moldeo de energıa, 390, 393
multivariable, 287, 336, 381
O
objetivo de control, 394
ode, 120, 288
ode113, 123
ode15s, 123
ode23, 122
ode23s, 123
ode23t, 123
ode23tb, 124
ode45, 120
off-line, 83
ones, 32
operaciones basicas, 38, 40
operaciones con arreglos, 41
operadores
[], 28
’, 24
(), 23
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
Indice analıtico 437
,, 24
:, 21
;, 23
%, 25
MATLAB, 5, 7
˜ , 25
aritmeticos, 12
arreglos, 41
logicos, 58
P
pendulo, 305, 346, 353, 397
parametros, 331
PD, 390, 395
PID, 100, 390, 417
pivote, 27
plot3, 43
potencia, 381
potencia filtrada, 357
problema de control, 393
producto interno, 144
prompt, 11
Q
quad, 113
quadgk, 114
quadl, 113
quadv, 114
quit, 14
R
rand, 32
randn, 32
regla
de Cramer, 91
de Simpson, 108
trapezoidal, 102
rotacion, 164
regresor, 332
regulacion, 393
renglon de una matriz, 27
renglones, 26, 35
return, 73
robotica, 393
robot
antropomorfico, 408
cartesiano, 373
cartesiano de 3 gdl, 413
de 3gdl, 321
de 2 gdl, 310, 360
Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes Alfaomega
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
438 Indice analıtico
manipulador de 3 gdl, 315,
408
manipuladores, 287, 393
ruido, 299
Runge Kutta, 327
Runge-Kutta, 118
S
save, 76
script, 54
serie de Taylor, 118
set point, 393, 395
signo, 65
Simpson, 113
simulacion, 287
simulacion de sistemas dinami-
cos, 124
Simulink, 7
sintaxis, 15
sistema lineal escalar, 295
sistema masa resorte amortigua-
dor, 291
sistemas dinamicos, 117
sistemas dinamicos autonomos,
288
sistemas dinamicos no autono-
mos, 288
sistemas lineales, 289
sistemas mecatronicos, 331
subplot, 48
suma de matrices, 68
switch, 58, 72
T
transformacion
homogenea, 173
traslacion, 171
V
variables, 15
vector de mediciones, 333
vector de parametros, 333
ventana de comandos, 11
W
while, 58, 71, 73
whos, 16
Z
zeros, 32
Alfaomega Matlab Aplicado a Robotica y Mecatronica • Fernando Reyes Cortes.
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/
www.fullengineeringbook.net
www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/