You are on page 1of 6

Robotics toolbox (Peter Corke), versão 8/2008 - estável para MATLAB R2011A/B - R2015A/B

Códigos para a construção de alguns robots no toolbox do MATLAB:

1. Robot manipulador com duas juntas rotacionais (cartesiano):

>> elo1 = link([0 0.30 0 0 0]); % criação do elo 1 com a1 = 0,30m e θ1,inicial = 0
>> elo2 = link([0 0.30 0 0 0]); % criação do elo 2 com a2 = 0,30m e θ2,inicial = 0
>> r1 = robot({elo1 elo2}) % construção do robot 'r1'.
r1 =
noname (2 axis, RR)
grav = [0.00 0.00 9.81] standard D&H parameters
alpha A theta D R/P
0.000000 0.300000 0.000000 0.000000 R (std)
0.000000 0.300000 0.000000 0.000000 R (std)

>> r1.name = '2R';


>> q1 = [pi/9 pi/6]; % θ1 = 20°, θ2 = 30° - (variações angulares das duas juntas, respectivamente).
>> plot(r1, q1) % gráfico do robot 'r1' na posição 'q1'.
>> drivebot(r1) % ajuste manual dos movimentos de cada junta.

0.6

0.4
z
0.2 y x

0
Z

2R
-0.2

-0.4

0.5
0.6
0.4
0 0.2
0
-0.2
-0.5 -0.4
Y X

USP/EESC/NEPAS
Mário Luis Tronco / Luciano Cássio Lulio
Robotics toolbox (Peter Corke), versão 8/2008 - estável para MATLAB R2011A/B - R2015A/B

0.5

0.4
y x
z
0.3

0.2

0.1

0
Y

2R
-0.1

-0.2

-0.3

-0.4

-0.5

-0.4 -0.2 0 0.2 0.4 0.6


X

>> cdireta = fkine(r1, q1) % cinemática direta.


cdireta =

0.6428 -0.7660 0 0.4747


0.7660 0.6428 0 0.3324
0 0 1.0000 0
0 0 0 1.0000

>> translacao = transl(cdireta) % componente translacional da base 0 para a base 2 (posição)


translacao =
0.4747
0.3324
0

>> R1z = rotz(pi/9) % matriz de rotação da base 0 para a base 1.


R1z =
0.9397 -0.3420 0
0.3420 0.9397 0
0 0 1.0000

>> R2z = rotz(pi/6) % matriz de rotação da base 1 para a base 2.


R2z =
0.8660 -0.5000 0
0.5000 0.8660 0
0 0 1.0000

>> Rz = R1z*R2z % matriz de rotação da base 0 para a base 2 (orientação).


Rz =
0.6428 -0.7660 0
0.7660 0.6428 0
0 0 1.0000

% planejamento de trajetórias dadas posições angulares iniciais e finais


>> qa = [0 0]; % posição angular inicial para θ1 e θ2.
>> qb = [pi/9 pi/6]; % posição angular final para θ1 e θ2.
>> t1 = [0:.025:30]; % vetor temporal - de 0 até 30, com incremento de 0,025 (step size).
>> qc = jtraj(qa, qb, t1); % trajetória das coordenadas das juntas.
>> plot(r1, qc) % gráfico do robot 'r1' movendo ao longo da trajetória

USP/EESC/NEPAS
Mário Luis Tronco / Luciano Cássio Lulio
Robotics toolbox (Peter Corke), versão 8/2008 - estável para MATLAB R2011A/B - R2015A/B

2. Robot manipulador com três juntas rotacionais (espacial):

link([alpha a theta d sigma])

>> elo1 = link([pi/2 0 0 0.30 0]);


>> elo2 = link([0 0.30 0 0 0]);
>> elo3 = link([pi/2 0.30 0 0 0]);
>> r2 = robot({elo1 elo2 elo3})
r2 =
noname (3 axis, RRR)
grav = [0.00 0.00 9.81] standard D&H parameters
alpha A theta D R/P
1.570796 0.000000 0.000000 0.300000 R (std)
0.000000 0.300000 0.000000 0.000000 R (std)
1.570796 0.300000 0.000000 0.000000 R (std)

>> r2.name = '3R';


>> q = [pi/2 pi/3 pi/4];
>> plot(r2, q1)
>> drivebot(r2) % ajuste manual dos movimentos de cada junta.

USP/EESC/NEPAS
Mário Luis Tronco / Luciano Cássio Lulio
Robotics toolbox (Peter Corke), versão 8/2008 - estável para MATLAB R2011A/B - R2015A/B

0.8 zxy
0.6
0.4
0.2
0
Z

-0.2 3R

-0.4
-0.6
-0.8

0.5
0.5
0
0
-0.5 -0.5
Y X

>> cdireta = fkine(r2, q1) % cinemática direta.

cdireta =

-0.0000 1.0000 0.0000 -0.0000


-0.2588 -0.0000 0.9659 0.0724
0.9659 0.0000 0.2588 0.8496
0 0 0 1.0000

% planejamento de trajetórias dadas posições angulares iniciais e finais


>> qa = [0 0 0]; % posição angular inicial para θ1, θ2 e θ3.
>> qb = [pi/2 pi/3 pi/4]; % posição angular final para θ1, θ2 e θ3.
>> t1 = [0:.025:40]; % vetor temporal - de 0 até 40, com incremento de 0,025 (step size).
>> qc = jtraj(qa, qb, t1); % trajetória das coordenadas das juntas.
>> plot(r2, qc) % gráfico do robot 'r2' movendo ao longo da trajetória

USP/EESC/NEPAS
Mário Luis Tronco / Luciano Cássio Lulio
Robotics toolbox (Peter Corke), versão 8/2008 - estável para MATLAB R2011A/B - R2015A/B

3. Robot manipulador com cinco juntas rotacionais (espacial):

%Explicar os parâmetros de D-H para cada elo:


>> elo1 = link([pi/2 0 0 0.30 0]);
>> elo2 = link([0 0.30 0 0 0]);
>> elo3 = link([0 0.30 0 0 0]);
>> elo4 = link([pi/2 0.30 0 0 0]);

>> r3 = robot({elo1 elo2 elo3 elo4})


r3 =

noname (4 axis, RRRR)


grav = [0.00 0.00 9.81] standard D&H parameters

alpha A theta D R/P


1.570796 0.000000 0.000000 0.300000 R (std)
0.000000 0.300000 0.000000 0.000000 R (std)
0.000000 0.300000 0.000000 0.000000 R (std)
1.570796 0.300000 0.000000 0.000000 R (std)

>> r3.name = '4R'

%Vetor posição final


>> q = [pi/2 pi/3 pi/4 pi/5];

>> plot(r3, q)
>> drivebot(r3)

USP/EESC/NEPAS
Mário Luis Tronco / Luciano Cássio Lulio
Robotics toolbox (Peter Corke), versão 8/2008 - estável para MATLAB R2011A/B - R2015A/B

>> cdireta = fkine(r3, q)

cdireta =

-0.0000 1.0000 0.0000 -0.0000


-0.7771 -0.0000 0.6293 -0.1608
0.6293 0.0000 0.7771 1.0384
0 0 0 1.0000

% planejamento de trajetórias dadas posições angulares iniciais e finais


>> qa = [0 0 0 0];
>> qb = [pi/2 pi/3 pi/4 pi/5];
>> t1 = [0:.025:40];
>> qc = jtraj(qa, qb, t1);
>> plot(r3, qc)

USP/EESC/NEPAS
Mário Luis Tronco / Luciano Cássio Lulio