matlab aplicado a robótica y mecatrónica

460
www.fullengineeringbook.net

Upload: others

Post on 24-Oct-2021

4 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: matlab aplicado a robótica y mecatrónica

www.fullengineeringbook.net

Page 2: matlab aplicado a robótica y mecatrónica

www.fullengineeringbook.net

APLICADO A ROBÓTICAMATLAB

Y MECATRÓNICA

FERNANDO REYES CORTÉS

www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/

Page 3: matlab aplicado a robótica y mecatrónica

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/

Page 4: matlab aplicado a robótica y mecatrónica

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/

Page 5: matlab aplicado a robótica y mecatrónica

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/

Page 6: matlab aplicado a robótica y mecatrónica

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/

Page 7: matlab aplicado a robótica y mecatrónica

www.fullengineeringbook.net

www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/

Page 8: matlab aplicado a robótica y mecatrónica

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/

Page 9: matlab aplicado a robótica y mecatrónica

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/

Page 10: matlab aplicado a robótica y mecatrónica

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/

Page 11: matlab aplicado a robótica y mecatrónica

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/

Page 12: matlab aplicado a robótica y mecatrónica

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/

Page 13: matlab aplicado a robótica y mecatrónica

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/

Page 14: matlab aplicado a robótica y mecatrónica

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/

Page 15: matlab aplicado a robótica y mecatrónica

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/

Page 16: matlab aplicado a robótica y mecatrónica

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/

Page 17: matlab aplicado a robótica y mecatrónica

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/

Page 18: matlab aplicado a robótica y mecatrónica

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/

Page 19: matlab aplicado a robótica y mecatrónica

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/

Page 20: matlab aplicado a robótica y mecatrónica

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/

Page 21: matlab aplicado a robótica y mecatrónica

www.fullengineeringbook.net

www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/

Page 22: matlab aplicado a robótica y mecatrónica

www.fullengineeringbook.net

Parte I

Programacion

www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/

Page 23: matlab aplicado a robótica y mecatrónica

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/

Page 24: matlab aplicado a robótica y mecatrónica

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/

Page 25: matlab aplicado a robótica y mecatrónica

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/

Page 26: matlab aplicado a robótica y mecatrónica

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/

Page 27: matlab aplicado a robótica y mecatrónica

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/

Page 28: matlab aplicado a robótica y mecatrónica

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/

Page 29: matlab aplicado a robótica y mecatrónica

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/

Page 30: matlab aplicado a robótica y mecatrónica

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/

Page 31: matlab aplicado a robótica y mecatrónica

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/

Page 32: matlab aplicado a robótica y mecatrónica

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/

Page 33: matlab aplicado a robótica y mecatrónica

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/

Page 34: matlab aplicado a robótica y mecatrónica

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/

Page 35: matlab aplicado a robótica y mecatrónica

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/

Page 36: matlab aplicado a robótica y mecatrónica

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/

Page 37: matlab aplicado a robótica y mecatrónica

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/

Page 38: matlab aplicado a robótica y mecatrónica

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/

Page 39: matlab aplicado a robótica y mecatrónica

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/

Page 40: matlab aplicado a robótica y mecatrónica

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/

Page 41: matlab aplicado a robótica y mecatrónica

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/

Page 42: matlab aplicado a robótica y mecatrónica

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/

Page 43: matlab aplicado a robótica y mecatrónica

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/

Page 44: matlab aplicado a robótica y mecatrónica

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/

Page 45: matlab aplicado a robótica y mecatrónica

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/

Page 46: matlab aplicado a robótica y mecatrónica

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/

Page 47: matlab aplicado a robótica y mecatrónica

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/

Page 48: matlab aplicado a robótica y mecatrónica

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/

Page 49: matlab aplicado a robótica y mecatrónica

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/

Page 50: matlab aplicado a robótica y mecatrónica

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/

Page 51: matlab aplicado a robótica y mecatrónica

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/

Page 52: matlab aplicado a robótica y mecatrónica

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/

Page 53: matlab aplicado a robótica y mecatrónica

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/

Page 54: matlab aplicado a robótica y mecatrónica

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/

Page 55: matlab aplicado a robótica y mecatrónica

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/

Page 56: matlab aplicado a robótica y mecatrónica

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/

Page 57: matlab aplicado a robótica y mecatrónica

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/

Page 58: matlab aplicado a robótica y mecatrónica

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/

Page 59: matlab aplicado a robótica y mecatrónica

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/

Page 60: matlab aplicado a robótica y mecatrónica

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/

Page 61: matlab aplicado a robótica y mecatrónica

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/

Page 62: matlab aplicado a robótica y mecatrónica

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/

Page 63: matlab aplicado a robótica y mecatrónica

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/

Page 64: matlab aplicado a robótica y mecatrónica

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/

Page 65: matlab aplicado a robótica y mecatrónica

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/

Page 66: matlab aplicado a robótica y mecatrónica

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/

Page 67: matlab aplicado a robótica y mecatrónica

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/

Page 68: matlab aplicado a robótica y mecatrónica

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/

Page 69: matlab aplicado a robótica y mecatrónica

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/

Page 70: matlab aplicado a robótica y mecatrónica

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/

Page 71: matlab aplicado a robótica y mecatrónica

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/

Page 72: matlab aplicado a robótica y mecatrónica

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/

Page 73: matlab aplicado a robótica y mecatrónica

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/

Page 74: matlab aplicado a robótica y mecatrónica

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/

Page 75: matlab aplicado a robótica y mecatrónica

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/

Page 76: matlab aplicado a robótica y mecatrónica

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/

Page 77: matlab aplicado a robótica y mecatrónica

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/

Page 78: matlab aplicado a robótica y mecatrónica

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/

Page 79: matlab aplicado a robótica y mecatrónica

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/

Page 80: matlab aplicado a robótica y mecatrónica

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/

Page 81: matlab aplicado a robótica y mecatrónica

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/

Page 82: matlab aplicado a robótica y mecatrónica

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/

Page 83: matlab aplicado a robótica y mecatrónica

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/

Page 84: matlab aplicado a robótica y mecatrónica

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/

Page 85: matlab aplicado a robótica y mecatrónica

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/

Page 86: matlab aplicado a robótica y mecatrónica

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/

Page 87: matlab aplicado a robótica y mecatrónica

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/

Page 88: matlab aplicado a robótica y mecatrónica

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/

Page 89: matlab aplicado a robótica y mecatrónica

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/

Page 90: matlab aplicado a robótica y mecatrónica

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/

Page 91: matlab aplicado a robótica y mecatrónica

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/

Page 92: matlab aplicado a robótica y mecatrónica

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/

Page 93: matlab aplicado a robótica y mecatrónica

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/

Page 94: matlab aplicado a robótica y mecatrónica

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/

Page 95: matlab aplicado a robótica y mecatrónica

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/

Page 96: matlab aplicado a robótica y mecatrónica

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/

Page 97: matlab aplicado a robótica y mecatrónica

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/

Page 98: matlab aplicado a robótica y mecatrónica

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/

Page 99: matlab aplicado a robótica y mecatrónica

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/

Page 100: matlab aplicado a robótica y mecatrónica

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/

Page 101: matlab aplicado a robótica y mecatrónica

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/

Page 102: matlab aplicado a robótica y mecatrónica

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/

Page 103: matlab aplicado a robótica y mecatrónica

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/

Page 104: matlab aplicado a robótica y mecatrónica

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/

Page 105: matlab aplicado a robótica y mecatrónica

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/

Page 106: matlab aplicado a robótica y mecatrónica

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/

Page 107: matlab aplicado a robótica y mecatrónica

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/

Page 108: matlab aplicado a robótica y mecatrónica

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/

Page 109: matlab aplicado a robótica y mecatrónica

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/

Page 110: matlab aplicado a robótica y mecatrónica

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/

Page 111: matlab aplicado a robótica y mecatrónica

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/

Page 112: matlab aplicado a robótica y mecatrónica

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/

Page 113: matlab aplicado a robótica y mecatrónica

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/

Page 114: matlab aplicado a robótica y mecatrónica

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/

Page 115: matlab aplicado a robótica y mecatrónica

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/

Page 116: matlab aplicado a robótica y mecatrónica

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/

Page 117: matlab aplicado a robótica y mecatrónica

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/

Page 118: matlab aplicado a robótica y mecatrónica

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/

Page 119: matlab aplicado a robótica y mecatrónica

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/

Page 120: matlab aplicado a robótica y mecatrónica

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/

Page 121: matlab aplicado a robótica y mecatrónica

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/

Page 122: matlab aplicado a robótica y mecatrónica

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/

Page 123: matlab aplicado a robótica y mecatrónica

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/

Page 124: matlab aplicado a robótica y mecatrónica

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/

Page 125: matlab aplicado a robótica y mecatrónica

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/

Page 126: matlab aplicado a robótica y mecatrónica

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/

Page 127: matlab aplicado a robótica y mecatrónica

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/

Page 128: matlab aplicado a robótica y mecatrónica

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/

Page 129: matlab aplicado a robótica y mecatrónica

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/

Page 130: matlab aplicado a robótica y mecatrónica

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/

Page 131: matlab aplicado a robótica y mecatrónica

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/

Page 132: matlab aplicado a robótica y mecatrónica

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/

Page 133: matlab aplicado a robótica y mecatrónica

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/

Page 134: matlab aplicado a robótica y mecatrónica

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/

Page 135: matlab aplicado a robótica y mecatrónica

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/

Page 136: matlab aplicado a robótica y mecatrónica

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/

Page 137: matlab aplicado a robótica y mecatrónica

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/

Page 138: matlab aplicado a robótica y mecatrónica

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/

Page 139: matlab aplicado a robótica y mecatrónica

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/

Page 140: matlab aplicado a robótica y mecatrónica

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/

Page 141: matlab aplicado a robótica y mecatrónica

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/

Page 142: matlab aplicado a robótica y mecatrónica

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/

Page 143: matlab aplicado a robótica y mecatrónica

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/

Page 144: matlab aplicado a robótica y mecatrónica

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/

Page 145: matlab aplicado a robótica y mecatrónica

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/

Page 146: matlab aplicado a robótica y mecatrónica

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/

Page 147: matlab aplicado a robótica y mecatrónica

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/

Page 148: matlab aplicado a robótica y mecatrónica

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/

Page 149: matlab aplicado a robótica y mecatrónica

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/

Page 150: matlab aplicado a robótica y mecatrónica

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/

Page 151: matlab aplicado a robótica y mecatrónica

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/

Page 152: matlab aplicado a robótica y mecatrónica

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/

Page 153: matlab aplicado a robótica y mecatrónica

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/

Page 154: matlab aplicado a robótica y mecatrónica

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/

Page 155: matlab aplicado a robótica y mecatrónica

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/

Page 156: matlab aplicado a robótica y mecatrónica

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/

Page 157: matlab aplicado a robótica y mecatrónica

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/

Page 158: matlab aplicado a robótica y mecatrónica

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/

Page 159: matlab aplicado a robótica y mecatrónica

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/

Page 160: matlab aplicado a robótica y mecatrónica

www.fullengineeringbook.net

Parte II

Cinematica

www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/

Page 161: matlab aplicado a robótica y mecatrónica

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/

Page 162: matlab aplicado a robótica y mecatrónica

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/

Page 163: matlab aplicado a robótica y mecatrónica

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/

Page 164: matlab aplicado a robótica y mecatrónica

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/

Page 165: matlab aplicado a robótica y mecatrónica

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/

Page 166: matlab aplicado a robótica y mecatrónica

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/

Page 167: matlab aplicado a robótica y mecatrónica

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/

Page 168: matlab aplicado a robótica y mecatrónica

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/

Page 169: matlab aplicado a robótica y mecatrónica

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/

Page 170: matlab aplicado a robótica y mecatrónica

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/

Page 171: matlab aplicado a robótica y mecatrónica

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/

Page 172: matlab aplicado a robótica y mecatrónica

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/

Page 173: matlab aplicado a robótica y mecatrónica

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/

Page 174: matlab aplicado a robótica y mecatrónica

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/

Page 175: matlab aplicado a robótica y mecatrónica

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/

Page 176: matlab aplicado a robótica y mecatrónica

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/

Page 177: matlab aplicado a robótica y mecatrónica

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/

Page 178: matlab aplicado a robótica y mecatrónica

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/

Page 179: matlab aplicado a robótica y mecatrónica

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/

Page 180: matlab aplicado a robótica y mecatrónica

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/

Page 181: matlab aplicado a robótica y mecatrónica

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/

Page 182: matlab aplicado a robótica y mecatrónica

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/

Page 183: matlab aplicado a robótica y mecatrónica

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/

Page 184: matlab aplicado a robótica y mecatrónica

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/

Page 185: matlab aplicado a robótica y mecatrónica

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/

Page 186: matlab aplicado a robótica y mecatrónica

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/

Page 187: matlab aplicado a robótica y mecatrónica

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/

Page 188: matlab aplicado a robótica y mecatrónica

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/

Page 189: matlab aplicado a robótica y mecatrónica

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/

Page 190: matlab aplicado a robótica y mecatrónica

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/

Page 191: matlab aplicado a robótica y mecatrónica

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/

Page 192: matlab aplicado a robótica y mecatrónica

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/

Page 193: matlab aplicado a robótica y mecatrónica

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/

Page 194: matlab aplicado a robótica y mecatrónica

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/

Page 195: matlab aplicado a robótica y mecatrónica

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/

Page 196: matlab aplicado a robótica y mecatrónica

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/

Page 197: matlab aplicado a robótica y mecatrónica

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/

Page 198: matlab aplicado a robótica y mecatrónica

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/

Page 199: matlab aplicado a robótica y mecatrónica

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/

Page 200: matlab aplicado a robótica y mecatrónica

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/

Page 201: matlab aplicado a robótica y mecatrónica

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/

Page 202: matlab aplicado a robótica y mecatrónica

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/

Page 203: matlab aplicado a robótica y mecatrónica

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/

Page 204: matlab aplicado a robótica y mecatrónica

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/

Page 205: matlab aplicado a robótica y mecatrónica

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/

Page 206: matlab aplicado a robótica y mecatrónica

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/

Page 207: matlab aplicado a robótica y mecatrónica

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/

Page 208: matlab aplicado a robótica y mecatrónica

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/

Page 209: matlab aplicado a robótica y mecatrónica

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/

Page 210: matlab aplicado a robótica y mecatrónica

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/

Page 211: matlab aplicado a robótica y mecatrónica

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/

Page 212: matlab aplicado a robótica y mecatrónica

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/

Page 213: matlab aplicado a robótica y mecatrónica

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/

Page 214: matlab aplicado a robótica y mecatrónica

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/

Page 215: matlab aplicado a robótica y mecatrónica

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/

Page 216: matlab aplicado a robótica y mecatrónica

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/

Page 217: matlab aplicado a robótica y mecatrónica

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/

Page 218: matlab aplicado a robótica y mecatrónica

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/

Page 219: matlab aplicado a robótica y mecatrónica

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/

Page 220: matlab aplicado a robótica y mecatrónica

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/

Page 221: matlab aplicado a robótica y mecatrónica

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/

Page 222: matlab aplicado a robótica y mecatrónica

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/

Page 223: matlab aplicado a robótica y mecatrónica

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/

Page 224: matlab aplicado a robótica y mecatrónica

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/

Page 225: matlab aplicado a robótica y mecatrónica

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/

Page 226: matlab aplicado a robótica y mecatrónica

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/

Page 227: matlab aplicado a robótica y mecatrónica

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/

Page 228: matlab aplicado a robótica y mecatrónica

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/

Page 229: matlab aplicado a robótica y mecatrónica

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/

Page 230: matlab aplicado a robótica y mecatrónica

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/

Page 231: matlab aplicado a robótica y mecatrónica

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/

Page 232: matlab aplicado a robótica y mecatrónica

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/

Page 233: matlab aplicado a robótica y mecatrónica

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/

Page 234: matlab aplicado a robótica y mecatrónica

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/

Page 235: matlab aplicado a robótica y mecatrónica

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/

Page 236: matlab aplicado a robótica y mecatrónica

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/

Page 237: matlab aplicado a robótica y mecatrónica

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/

Page 238: matlab aplicado a robótica y mecatrónica

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/

Page 239: matlab aplicado a robótica y mecatrónica

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/

Page 240: matlab aplicado a robótica y mecatrónica

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/

Page 241: matlab aplicado a robótica y mecatrónica

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/

Page 242: matlab aplicado a robótica y mecatrónica

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/

Page 243: matlab aplicado a robótica y mecatrónica

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/

Page 244: matlab aplicado a robótica y mecatrónica

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/

Page 245: matlab aplicado a robótica y mecatrónica

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/

Page 246: matlab aplicado a robótica y mecatrónica

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/

Page 247: matlab aplicado a robótica y mecatrónica

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/

Page 248: matlab aplicado a robótica y mecatrónica

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/

Page 249: matlab aplicado a robótica y mecatrónica

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/

Page 250: matlab aplicado a robótica y mecatrónica

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/

Page 251: matlab aplicado a robótica y mecatrónica

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/

Page 252: matlab aplicado a robótica y mecatrónica

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/

Page 253: matlab aplicado a robótica y mecatrónica

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/

Page 254: matlab aplicado a robótica y mecatrónica

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/

Page 255: matlab aplicado a robótica y mecatrónica

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/

Page 256: matlab aplicado a robótica y mecatrónica

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/

Page 257: matlab aplicado a robótica y mecatrónica

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/

Page 258: matlab aplicado a robótica y mecatrónica

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/

Page 259: matlab aplicado a robótica y mecatrónica

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/

Page 260: matlab aplicado a robótica y mecatrónica

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/

Page 261: matlab aplicado a robótica y mecatrónica

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/

Page 262: matlab aplicado a robótica y mecatrónica

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/

Page 263: matlab aplicado a robótica y mecatrónica

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/

Page 264: matlab aplicado a robótica y mecatrónica

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/

Page 265: matlab aplicado a robótica y mecatrónica

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/

Page 266: matlab aplicado a robótica y mecatrónica

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/

Page 267: matlab aplicado a robótica y mecatrónica

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/

Page 268: matlab aplicado a robótica y mecatrónica

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/

Page 269: matlab aplicado a robótica y mecatrónica

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/

Page 270: matlab aplicado a robótica y mecatrónica

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/

Page 271: matlab aplicado a robótica y mecatrónica

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/

Page 272: matlab aplicado a robótica y mecatrónica

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/

Page 273: matlab aplicado a robótica y mecatrónica

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/

Page 274: matlab aplicado a robótica y mecatrónica

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/

Page 275: matlab aplicado a robótica y mecatrónica

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/

Page 276: matlab aplicado a robótica y mecatrónica

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/

Page 277: matlab aplicado a robótica y mecatrónica

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/

Page 278: matlab aplicado a robótica y mecatrónica

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/

Page 279: matlab aplicado a robótica y mecatrónica

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/

Page 280: matlab aplicado a robótica y mecatrónica

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/

Page 281: matlab aplicado a robótica y mecatrónica

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/

Page 282: matlab aplicado a robótica y mecatrónica

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/

Page 283: matlab aplicado a robótica y mecatrónica

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/

Page 284: matlab aplicado a robótica y mecatrónica

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/

Page 285: matlab aplicado a robótica y mecatrónica

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/

Page 286: matlab aplicado a robótica y mecatrónica

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/

Page 287: matlab aplicado a robótica y mecatrónica

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/

Page 288: matlab aplicado a robótica y mecatrónica

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/

Page 289: matlab aplicado a robótica y mecatrónica

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/

Page 290: matlab aplicado a robótica y mecatrónica

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/

Page 291: matlab aplicado a robótica y mecatrónica

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/

Page 292: matlab aplicado a robótica y mecatrónica

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/

Page 293: matlab aplicado a robótica y mecatrónica

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/

Page 294: matlab aplicado a robótica y mecatrónica

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/

Page 295: matlab aplicado a robótica y mecatrónica

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/

Page 296: matlab aplicado a robótica y mecatrónica

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/

Page 297: matlab aplicado a robótica y mecatrónica

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/

Page 298: matlab aplicado a robótica y mecatrónica

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/

Page 299: matlab aplicado a robótica y mecatrónica

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/

Page 300: matlab aplicado a robótica y mecatrónica

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/

Page 301: matlab aplicado a robótica y mecatrónica

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/

Page 302: matlab aplicado a robótica y mecatrónica

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/

Page 303: matlab aplicado a robótica y mecatrónica

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/

Page 304: matlab aplicado a robótica y mecatrónica

www.fullengineeringbook.net

Parte III

Dinamica

www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/

Page 305: matlab aplicado a robótica y mecatrónica

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/

Page 306: matlab aplicado a robótica y mecatrónica

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/

Page 307: matlab aplicado a robótica y mecatrónica

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/

Page 308: matlab aplicado a robótica y mecatrónica

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/

Page 309: matlab aplicado a robótica y mecatrónica

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/

Page 310: matlab aplicado a robótica y mecatrónica

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/

Page 311: matlab aplicado a robótica y mecatrónica

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/

Page 312: matlab aplicado a robótica y mecatrónica

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/

Page 313: matlab aplicado a robótica y mecatrónica

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/

Page 314: matlab aplicado a robótica y mecatrónica

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/

Page 315: matlab aplicado a robótica y mecatrónica

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/

Page 316: matlab aplicado a robótica y mecatrónica

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/

Page 317: matlab aplicado a robótica y mecatrónica

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/

Page 318: matlab aplicado a robótica y mecatrónica

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/

Page 319: matlab aplicado a robótica y mecatrónica

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/

Page 320: matlab aplicado a robótica y mecatrónica

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/

Page 321: matlab aplicado a robótica y mecatrónica

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/

Page 322: matlab aplicado a robótica y mecatrónica

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/

Page 323: matlab aplicado a robótica y mecatrónica

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/

Page 324: matlab aplicado a robótica y mecatrónica

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/

Page 325: matlab aplicado a robótica y mecatrónica

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/

Page 326: matlab aplicado a robótica y mecatrónica

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/

Page 327: matlab aplicado a robótica y mecatrónica

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/

Page 328: matlab aplicado a robótica y mecatrónica

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/

Page 329: matlab aplicado a robótica y mecatrónica

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/

Page 330: matlab aplicado a robótica y mecatrónica

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/

Page 331: matlab aplicado a robótica y mecatrónica

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/

Page 332: matlab aplicado a robótica y mecatrónica

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/

Page 333: matlab aplicado a robótica y mecatrónica

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/

Page 334: matlab aplicado a robótica y mecatrónica

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/

Page 335: matlab aplicado a robótica y mecatrónica

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/

Page 336: matlab aplicado a robótica y mecatrónica

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/

Page 337: matlab aplicado a robótica y mecatrónica

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/

Page 338: matlab aplicado a robótica y mecatrónica

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/

Page 339: matlab aplicado a robótica y mecatrónica

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/

Page 340: matlab aplicado a robótica y mecatrónica

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/

Page 341: matlab aplicado a robótica y mecatrónica

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/

Page 342: matlab aplicado a robótica y mecatrónica

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/

Page 343: matlab aplicado a robótica y mecatrónica

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/

Page 344: matlab aplicado a robótica y mecatrónica

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/

Page 345: matlab aplicado a robótica y mecatrónica

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/

Page 346: matlab aplicado a robótica y mecatrónica

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/

Page 347: matlab aplicado a robótica y mecatrónica

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/

Page 348: matlab aplicado a robótica y mecatrónica

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/

Page 349: matlab aplicado a robótica y mecatrónica

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/

Page 350: matlab aplicado a robótica y mecatrónica

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/

Page 351: matlab aplicado a robótica y mecatrónica

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/

Page 352: matlab aplicado a robótica y mecatrónica

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/

Page 353: matlab aplicado a robótica y mecatrónica

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/

Page 354: matlab aplicado a robótica y mecatrónica

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/

Page 355: matlab aplicado a robótica y mecatrónica

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/

Page 356: matlab aplicado a robótica y mecatrónica

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/

Page 357: matlab aplicado a robótica y mecatrónica

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/

Page 358: matlab aplicado a robótica y mecatrónica

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/

Page 359: matlab aplicado a robótica y mecatrónica

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/

Page 360: matlab aplicado a robótica y mecatrónica

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/

Page 361: matlab aplicado a robótica y mecatrónica

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/

Page 362: matlab aplicado a robótica y mecatrónica

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/

Page 363: matlab aplicado a robótica y mecatrónica

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/

Page 364: matlab aplicado a robótica y mecatrónica

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/

Page 365: matlab aplicado a robótica y mecatrónica

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/

Page 366: matlab aplicado a robótica y mecatrónica

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/

Page 367: matlab aplicado a robótica y mecatrónica

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/

Page 368: matlab aplicado a robótica y mecatrónica

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/

Page 369: matlab aplicado a robótica y mecatrónica

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/

Page 370: matlab aplicado a robótica y mecatrónica

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/

Page 371: matlab aplicado a robótica y mecatrónica

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/

Page 372: matlab aplicado a robótica y mecatrónica

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/

Page 373: matlab aplicado a robótica y mecatrónica

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/

Page 374: matlab aplicado a robótica y mecatrónica

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/

Page 375: matlab aplicado a robótica y mecatrónica

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/

Page 376: matlab aplicado a robótica y mecatrónica

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/

Page 377: matlab aplicado a robótica y mecatrónica

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/

Page 378: matlab aplicado a robótica y mecatrónica

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/

Page 379: matlab aplicado a robótica y mecatrónica

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/

Page 380: matlab aplicado a robótica y mecatrónica

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/

Page 381: matlab aplicado a robótica y mecatrónica

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/

Page 382: matlab aplicado a robótica y mecatrónica

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/

Page 383: matlab aplicado a robótica y mecatrónica

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/

Page 384: matlab aplicado a robótica y mecatrónica

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/

Page 385: matlab aplicado a robótica y mecatrónica

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/

Page 386: matlab aplicado a robótica y mecatrónica

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/

Page 387: matlab aplicado a robótica y mecatrónica

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/

Page 388: matlab aplicado a robótica y mecatrónica

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/

Page 389: matlab aplicado a robótica y mecatrónica

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/

Page 390: matlab aplicado a robótica y mecatrónica

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/

Page 391: matlab aplicado a robótica y mecatrónica

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/

Page 392: matlab aplicado a robótica y mecatrónica

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/

Page 393: matlab aplicado a robótica y mecatrónica

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/

Page 394: matlab aplicado a robótica y mecatrónica

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/

Page 395: matlab aplicado a robótica y mecatrónica

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/

Page 396: matlab aplicado a robótica y mecatrónica

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/

Page 397: matlab aplicado a robótica y mecatrónica

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/

Page 398: matlab aplicado a robótica y mecatrónica

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/

Page 399: matlab aplicado a robótica y mecatrónica

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/

Page 400: matlab aplicado a robótica y mecatrónica

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/

Page 401: matlab aplicado a robótica y mecatrónica

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/

Page 402: matlab aplicado a robótica y mecatrónica

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/

Page 403: matlab aplicado a robótica y mecatrónica

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/

Page 404: matlab aplicado a robótica y mecatrónica

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/

Page 405: matlab aplicado a robótica y mecatrónica

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/

Page 406: matlab aplicado a robótica y mecatrónica

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/

Page 407: matlab aplicado a robótica y mecatrónica

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/

Page 408: matlab aplicado a robótica y mecatrónica

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/

Page 409: matlab aplicado a robótica y mecatrónica

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/

Page 410: matlab aplicado a robótica y mecatrónica

www.fullengineeringbook.net

Parte IV

Control

www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/

Page 411: matlab aplicado a robótica y mecatrónica

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/

Page 412: matlab aplicado a robótica y mecatrónica

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/

Page 413: matlab aplicado a robótica y mecatrónica

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/

Page 414: matlab aplicado a robótica y mecatrónica

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/

Page 415: matlab aplicado a robótica y mecatrónica

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/

Page 416: matlab aplicado a robótica y mecatrónica

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/

Page 417: matlab aplicado a robótica y mecatrónica

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/

Page 418: matlab aplicado a robótica y mecatrónica

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/

Page 419: matlab aplicado a robótica y mecatrónica

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/

Page 420: matlab aplicado a robótica y mecatrónica

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/

Page 421: matlab aplicado a robótica y mecatrónica

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/

Page 422: matlab aplicado a robótica y mecatrónica

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/

Page 423: matlab aplicado a robótica y mecatrónica

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/

Page 424: matlab aplicado a robótica y mecatrónica

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/

Page 425: matlab aplicado a robótica y mecatrónica

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/

Page 426: matlab aplicado a robótica y mecatrónica

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/

Page 427: matlab aplicado a robótica y mecatrónica

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/

Page 428: matlab aplicado a robótica y mecatrónica

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/

Page 429: matlab aplicado a robótica y mecatrónica

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/

Page 430: matlab aplicado a robótica y mecatrónica

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/

Page 431: matlab aplicado a robótica y mecatrónica

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/

Page 432: matlab aplicado a robótica y mecatrónica

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/

Page 433: matlab aplicado a robótica y mecatrónica

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/

Page 434: matlab aplicado a robótica y mecatrónica

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/

Page 435: matlab aplicado a robótica y mecatrónica

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/

Page 436: matlab aplicado a robótica y mecatrónica

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/

Page 437: matlab aplicado a robótica y mecatrónica

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/

Page 438: matlab aplicado a robótica y mecatrónica

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/

Page 439: matlab aplicado a robótica y mecatrónica

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/

Page 440: matlab aplicado a robótica y mecatrónica

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/

Page 441: matlab aplicado a robótica y mecatrónica

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/

Page 442: matlab aplicado a robótica y mecatrónica

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/

Page 443: matlab aplicado a robótica y mecatrónica

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/

Page 444: matlab aplicado a robótica y mecatrónica

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/

Page 445: matlab aplicado a robótica y mecatrónica

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/

Page 446: matlab aplicado a robótica y mecatrónica

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/

Page 447: matlab aplicado a robótica y mecatrónica

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/

Page 448: matlab aplicado a robótica y mecatrónica

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/

Page 449: matlab aplicado a robótica y mecatrónica

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/

Page 450: matlab aplicado a robótica y mecatrónica

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/

Page 451: matlab aplicado a robótica y mecatrónica

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/

Page 452: matlab aplicado a robótica y mecatrónica

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/

Page 453: matlab aplicado a robótica y mecatrónica

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/

Page 454: matlab aplicado a robótica y mecatrónica

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/

Page 455: matlab aplicado a robótica y mecatrónica

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/

Page 456: matlab aplicado a robótica y mecatrónica

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/

Page 457: matlab aplicado a robótica y mecatrónica

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/

Page 458: matlab aplicado a robótica y mecatrónica

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/

Page 459: matlab aplicado a robótica y mecatrónica

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/

Page 460: matlab aplicado a robótica y mecatrónica

www.fullengineeringbook.net

www.fullengineeringbook.nethttps://www.facebook.com/groups/548344798609408/