M.Sc. Ricardo Rodríguez Bustinza 
 
Creación de un Robot con MATLAB 
 
Vamos a tomar un ejemplo simple de un manipulador planar de 
dos  eslabones  (ver  Figura)  el  cual  tiene  los  siguientes 
parámetros (estándar) de eslabones de Denavit‐Hartenberg. 
 
 
 
 
 
Donde  hemos  puesto  la  longitud  de  los  eslabones  en  1.  Ahora 
podemos crear un par de objetos de eslabón: 
path(path,'C:\Documents and Settings\Mis documentos\MATLAB\robot71');
L{1}=link([0 1 0 0 0]);
% L =
% 0.000000 1.000000 0.000000 0.000000 R
L{2}=link([0 1 0 0 0]);
% L2 =
% 0.000000 1.000000 0.000000 0.000000 R
r=robot(L,'D2')
% r =
%
% noname (2 axis, RR)
% grav = [0.00 0.00 9.81] standard D&H parameters
% alpha A theta D R/P
% 0.000000 1.000000 0.000000 0.000000 R
% 0.000000 1.000000 0.000000 0.000000 R
plot(r, [0 0])


 
M.Sc. Ricardo Rodríguez Bustinza 
 
 
Las  primeras  líneas  crean  los  objetos  de  eslabones,  uno  por 
cada eslabón del robot. Note el segundo argumento de link el 
cual especifica que la  convención estándar de D&H será usada 
(ésta es por defecto). Los argumentos del objeto de eslabones 
pueden encontrarse de 
 
>> help link
LINK create a new LINK object

A LINK object holds all information related to a robot link such as
kinematics of the joint, rigid-body inertial parameters, motor and
transmission parameters.

LINK
LINK(link)

Create a default link, or a clone of the passed link.

A = LINK(q)

Compute the link transform matrix for the link, given the joint
variable q.

LINK([alpha A theta D sigma])
LINK(DH_ROW) create from row of legacy DH matrix
LINK(DYN_ROW) create from row of legacy DYN matrix



 
M.Sc. Ricardo Rodríguez Bustinza 
 
La cual muestra el orden en que los parámetros de link deben 
suministrarse (el cual es diferente al orden de las columnas de 
la tabla de arriba). El quinto argumento, sigma, es una bandera 
que  indica  si  la  unión  es  rotativa  (sigma  es  cero)  o  prismática 
(sigma diferente de cero). 
 
Los  objetos  de  link  se  pasan  como  un  arreglo  a  la  función 
robot() la cual crea un objeto robot el cual se pasa a muchas de 
las otras funciones de la caja de herramientas. 
 
Problema de la Cinemática Directa 
 
Encuentre  la  solución  completa  del  problema  mediante  la  
cinemática directa para un robot cilíndrico de la figura. 
 
 
 
Solución 
 
En primer lugar se localizan los sistemas de referencia de cada 
una  de  las  articulaciones  del  robot  figura.  Posteriormente  se 
determinan  los  parámetros  de  Denavit‐  Hartenberg  del  robot, 
con los que se construye la siguiente tabla. 

 
M.Sc. Ricardo Rodríguez Bustinza 
 
 
 
 
 
% alpha a theta d R/P
L1 = link([0 0 0 1 0]);
D2 = link([pi/2 0 pi/2 1 1]);
D3 = link([0 0 0 1 1]);
L4 = link([0 0 0 1 0]);
rob = robot({L1 D2 D3 L4},'ROBCIL')
plot(rob, [0 0 0 0])
view(-19,68)



Una  vez  creado  el  robot  se  realiza  la  solución  completa  al 
problema  cinemático  directo  con  la  función  fkine:  Para  unas 
coordenadas de las articulaciones de cero, tenemos: 

% Cinematica Directa
q1=[0 0 0 0];
q2=[0 1 1 0];
T1f=fkine(rob,q1);
% T1 =
% 0.0000 -0.0000 1.0000 1.0000
% 1.0000 0.0000 -0.0000 -0.0000
% 0 1.0000 0.0000 1.0000
% 0 0 0 1.0000
T2f=fkine(rob,q2);
% T2 =

 
M.Sc. Ricardo Rodríguez Bustinza 
 
% 0.0000 -0.0000 1.0000 2.0000
% 1.0000 0.0000 -0.0000 -0.0000
% 0 1.0000 0.0000 2.0000
% 0 0 0 1.0000

Usaremos el Toolbox de Matemática Simbólica para manipular 
el movimiento de las articulaciones del robot cilíndrico. 
 
syms q1 q2 d2 d3 r eal

l 1=0. 5;
q1=0;
T01=[ cos( q1) - si n( q1) 0 0
si n( q1) cos( q1) 0 0
0 0 1 l 1
0 0 0 1] ;

d2=1;
T12=[ 0 0 1 0
1 0 0 0
0 1 0 d2
0 0 0 1] ;

d3=1. 5;
T23=[ 1 0 0 0
0 1 0 0
0 0 1 d3
0 0 0 1] ;

l 4=1;
q4=0;
T34=[ cos( q4) - si n( q4) 0 0
si n( q4) cos( q4) 0 0
0 0 1 l 4
0 0 0 1] ;
T04=T01*T12*T23*T34;

 
 
 

 
M.Sc. Ricardo Rodríguez Bustinza 
 
Otros movimientos del robot cilíndrico 
 
 
 
Problema de la Cinemática Inversa 
 
Para  encontrar  la  solución  al  problema  cinemático  inverso  se 
usa  la  función  ikine  aunque  la  solución  se  lleva  un  tiempo 
inaceptable para controlar robots reales. Por ejemplo: 
 
Usando  el  robot  creado  en  el  numeral  anterior  obtenemos  la 
solución:  Para  las  coordenadas  de  las  articulaciones  q  =  [‐pi/4 
0.5 0.5 pi/3] se obtiene la siguiente matriz de transformación: 
 
T = fkine(rob,[-pi/4 0.5 0.5 pi/3]);
% T =
% 0.3536 -0.6124 0.7071 1.0607
% 0.3536 -0.6124 -0.7071 -1.0607
% 0.8660 0.5000 0.0000 1.5000
% 0 0 0 1.0000
qi = ikine(rob,T,[0 0 0 0],[1 1 1 1 0 0]);
% CI Art 1 2 3 4 DOF
% qi =
% -0.7854 0.5000 0.5000 1.0472
qi_grad=qi*180/pi
% qi_grad =
% -45.0000 28.6479 28.6479 60.0000

Note  que  coinciden  con  las  coordenadas  de  las  articulaciones 
originales.  Una  solución  no  siempre  es  posible,  por  ejemplo  si 
la  transformación  describe  un  punto  fuera  del  alcance  del 
manipulador.  También  la  solución  no  es  necesariamente  única 
y hay singularidades en las cuales el manipulador pierde grados 
de libertad y las coordenadas de las articulaciones llegan a ser 
linealmente dependientes. 

 
M.Sc. Ricardo Rodríguez Bustinza 
 
 
Ejercicio 
 
Considere el manipulador RRR de la Figura 
 
Obteniendo los parámetros DH 
 
 
 
Hallando  la  cinemática  directa 
0
T

  del  manipulador  desde  las 
ecuaciones DH. 
 
 
 
Es  usual  realizar  las  multiplicaciones  de  las  transformaciones, 
ya  que  posteriormente  necesitaremos  de  estos  resultados  en 
las submatrices que se forman para obtener los Jacobianos.  

 
M.Sc. Ricardo Rodríguez Bustinza 
 
 
 
Para hallar el Jacobiano básico para este  Manipulador. Para Xp 
usamos  la  posición  del  efector  final  expresado  en  el  frame  {0} 
que es la última columna de  
0
T

  
 
 
 
Para hallar el Jacobiano    
1
J
v  
la matriz de posición del jacobiano 
expresado en el frame  {1} es: 
 

 
M.Sc. Ricardo Rodríguez Bustinza 
 
 
 
Usando  la  matriz  hallada  anterioemente,  determinaremos  las 
singularidades  (con  respecto  a  la  velocidda  lineal)  del 
manipulador. 
 
Para  ello  se  requiere  hallar  θ
1
,  θ
2
,  y  θ
3
que es la matriz singular.
Esto se realiza cuando el determinante es cero.


 
Las singularidades ocurren cuando: 
 
 
 
La  primera  cantidad  (2C
2
+C
23
=0)  es  la  distancia  entre  el  punto 
del  efector  final  y  el  eje  z
1
.  Cuando  la  distancia  es  cero,  la 
juntura 1 no tiene efecto sobre la velocidad en el efector final. 
Entonces solo las junturas 2 y 3 pueden afectar las velocidades 
comunes a la rotación, el efector final no puede moverse en la 
dirección de y
1

 
Cuando  S
3
=0,  puede  tomar  θ
3
=180°  o  θ
3
=0, en este caso es
imposible que el efector final se mueva en la dirección x
4
.
 
Para  cada  singularidad  podemos  interpretar  la  limitación  de 
movimiento: 
 
10 
 
M.Sc. Ricardo Rodríguez Bustinza