Você está na página 1de 13

CENTRO FEDERAL DE EDUCAO TECNOLGICA CELSO SUCKOW DA FONSECA

UNIDADE NOVA IGUAU

TRABALHO DE ROBTICA
CINEMTICA DIRETA DOS
MANIPULADORES

Nome: Orlando Silva de Lima Junior


Professor: Fabrcio Lopes
1 Semestre de 2016

Introduo
O objetivo deste trabalho obter a matriz de transformao referente a cinemtica direta de cada
um dos 5 tipos de manipuladores estudados em classe: Manipulador Cartesiano, Esfrico, Cilndrico,
Scara e Antropomrfico.
O primeiro passo identificar as matrizes referentes rotao e translao nos eixos desejados.
Como discutido em classe as matrizes referentes a uma translao possuem a seguinte forma:
b

[ ]

10 0 lx
D= 0 10 ly
0 0 1 lz
0 0 01
a

Onde lx, ly, lz representam o comprimento da translao a ser realizada nos eixos x, y e z
respectivamente.
Para uma rotao a matriz transformada tem a seguinte forma:

cos
sin
R=
0
0
a

sin
cos
0
0

0
0
1
0

0
0
0
1

Rotao no eixo Z

cos
0
R=
sin
0
a

1
0
0
0 cos sin
R=
0 sin cos
0
0
0
a

0
0
0
1

0 sin
1
0
0 cos
0
0

0
0
0
1

Rotao no eixo Y

Rotao no eixo X

Cada manipulador foi analisado e suas respectivas transformadas referentes ao clculo da


cinemtica direta foram calculadas usando-se o Matlab. Ao final de cada anlise foi computado a
transformada da tarefa de cada manipulador levando-se em considerao os 2 tipos de rotao para o
punho do manipulador: Rotao utilizando ngulos de Euler e rotao utilizando a matriz RPY (Roll,
Pitch,Yaw). Pelo tamanho das matrizes as ltimas transformadas foram omitidas, mas esto no cdigo do
Matlab de cada manipulador.

Manipulador de Coordenadas Cartesianas

No caso do manipulador de coordenadas cartesianas ocorre primeiro uma translao no eixo Z,


seguida de uma translao no eixo Y e por ltimo uma translao no eixo X.
I

T 3= T 1 T 2 T 3

Utilizando-se a matriz de translao para cada uma das transformaes e realizando a


multiplicao das mesmas, obtemos o seguinte resultado com a ajuda do Matlab:
Cdigo do Matlab:
clear all
clc
syms lx ly lz a b c g;
% Declarao
aTb = [1 0 0
bTc = [1 0 0
cTd = [1 0 0

das matrizes de transformao


0; 0 1 0 0; 0 0 1 lz; 0 0 0 1];
0; 0 1 0 ly; 0 0 1 0; 0 0 0 1];
lx; 0 1 0 0; 0 0 1 0; 0 0 0 1];

% RPY Matrix
Rz = [cos(a) -sin(a) 0 0; sin(a) cos(a) 0 0; 0 0 1 0; 0 0 0 1];
Ry = [cos(b) 0 sin(b) 0; 0 1 0 0; -sin(b) 0 cos(b) 0; 0 0 0 1];
Rx = [1 0 0 0; 0 cos(c) -sin(c) 0; 0 sin(c) cos(c) 0; 0 0 0 1];
Rrpy = Rz*Ry*Rx

% Rotacao usando angulos RPY

Rz1 = [cos(g) -sin(g) 0 0; sin(g) cos(g) 0 0; 0 0 1 0; 0 0 0 1];


Reuler = Rz*Ry*Rz1
% Rotacao usando angulos de Euler
% Clculo das transformadas
aTd = simplify(aTb * bTc * cTd) % Considerando esta hipotese
aTdRPY = aTd*Rrpy
aTdEULER = aTd*Reuler
x = aTd(1,4);

% varivel para armazenar a posio x

y = aTd(2,4);
z = aTd(3,4);

% varivel para armazenar a posio y


% varivel para armazenar a posio z

lx = 0:0.1:3;
ly = 0:0.1:3;
lz = 0:0.1:3;

% variao do comprimento do elo 1


% variao do comprimento do elo 2
% variao do comprimento do elo 3

x = eval(x);
y = eval(y);
z = eval(z);
plot3(x,y,z)
title('Trajetria do Rob de Coordenadas Cartesianas')
xlabel('Coordenada X');
ylabel('Coordenada Y');
zlabel('Coordenada Z');

Matriz Transformada Final

[ ]

1
0
I
T 3=
0
0

0 0 lx
1 0 ly
0 1 lz
0 0 1

Observao: Neste grfico os comprimentos de todos os elos foram variados ao mesmo tempo.

Rob de Coordenadas Cilndricas

No manipulador de coordenadas cilndricas primeiro h uma rotao no eixo Z seguida de uma


translao nesse mesmo eixo. Por ltimo a uma translao no eixo X.

T 3= I T 1 1T 2 2T 3

T 1 Rotao no eixo Z

T 2 Translao no eixo Z

T 3 Translao no eixo X

Utilizando o Matlab obtemos o seguinte resultado:


Cdigo do Matlab:
clear all
clc
syms lx lz a a1 b c d e f g;
% Declarao das matrizes de transformao
aTb = [cos(a) -sin(a) 0 0; sin(a) cos(a) 0 0; 0 0 1 0; 0 0 0 1];
bTc = [1 0 0 0; 0 1 0 0; 0 0 1 lz; 0 0 0 1];
cTd = [1 0 0 lx; 0 1 0 0; 0 0 1 0; 0 0 0 1];
% RPY Matrix
Rz = [cos(d) -sin(d) 0 0; sin(d) cos(d) 0 0; 0 0 1 0; 0 0 0 1];
Ry = [cos(e) 0 sin(e) 0; 0 1 0 0; -sin(e) 0 cos(e) 0; 0 0 0 1];

Rx = [1 0 0 0; 0 cos(f) -sin(f) 0; 0 sin(f) cos(f) 0; 0 0 0 1];


Rrpy = Rz*Ry*Rx

% Rotacao usando angulos RPY

Rz1 = [cos(g) -sin(g) 0 0; sin(g) cos(g) 0 0; 0 0 1 0; 0 0 0 1];


Reuler = Rz*Ry*Rz1
% Rotacao usando angulos de Euler
% Calculo das transformadas
aTd = simplify(aTb * bTc * cTd)
aTdRPY = simplify(aTd*Rrpy)
aTdEULER = simplify(aTd*Reuler)
x = aTd(1,4);
y = aTd(2,4);
z = aTd(3,4);

% varivel para armazenar a posio x


% varivel para armazenar a posio y
% varivel para armazenar a posio z

lx = 0:1:200;
lz = 0:1:200;
a = 0:pi/100:2*pi;

% variao do comprimento de elo


% variao do comprimento de elo
% variao do ngulo de rotao

x = eval(x);
y = eval(y);
z = eval(z);
plot3(x,y,z)
title('Trajetria do Rob de Coordenadas Cilndricas')
xlabel('Coordenada X');
ylabel('Coordenada Y');
zlabel('Coordenada Z');

Matriz Transformada Final

cos
sin
T 3=
0
0

sin 0 lx cos
cos 0 lxsin
0
1 lz
0
0 1

Rob de Coordenadas Esfricas

Neste modelo de manipulador as seguintes transformaes foram aplicadas: Primeiro uma rotao
no eixo Z seguida de uma translao nesse mesmo eixo. Aps realizada uma rotao no eixo Y. Por
ltimo uma translao no eixo X realizada.
I

T 4= T 1 T 2 T 3 T 4

T 1 Rotao no eixo Z

T 2 Translao no eixo Z
3

T 3 Rotao no eixoY

T 4 Translao no eixo X

Cdigo do Matlab:
clear all
clc
syms la lb l a b d e f g;
% Declarao das matrizes de transformao
aTb = [cos(a) -sin(a) 0 0; sin(a) cos(a) 0 0; 0 0 1 la; 0 0 0 1];
bTc = [cos(b) 0 sin(b) 0; 0 1 0 0 ; -sin(b) 0 cos(b) 0; 0 0 0 1];
cTd = [1 0 0 lb; 0 1 0 0; 0 0 1 0; 0 0 0 1];
% RPY Matrix
Rz = [cos(d) -sin(d) 0 0; sin(d) cos(d) 0 0; 0 0 1 0; 0 0 0 1];
Ry = [cos(e) 0 sin(e) 0; 0 1 0 0; -sin(e) 0 cos(e) 0; 0 0 0 1];
Rx = [1 0 0 0; 0 cos(f) -sin(f) 0; 0 sin(f) cos(f) 0; 0 0 0 1];
Rrpy = Rz*Ry*Rx

% Rotacao usando angulos RPY

Rz1 = [cos(g) -sin(g) 0 0; sin(g) cos(g) 0 0; 0 0 1 0; 0 0 0 1];


Reuler = Rz*Ry*Rz1
% Rotacao usando angulos de Euler
% Calculo das transformadas
aTd = simplify(aTb * bTc * cTd)
aTdRPY = simplify(aTd*Rrpy)
aTdEULER = simplify(aTd*Reuler)
x = aTd(1,4);
y = aTd(2,4);
z = aTd(3,4);

% varivel para armazenar a posio x


% varivel para armazenar a posio y
% varivel para armazenar a posio z

la = 0:1:200;
lb = 0:1:200;
a = 0:pi/100:2*pi;
b = 0:pi/100:2*pi;
x = eval(x);
y = eval(y);
z = eval(z);
plot3(x,y,z)
title('Trajetria do Rob de Coordenadas Esfricas')
xlabel('Coordenada X');
ylabel('Coordenada Y');
zlabel('Coordenada Z');

Matriz Transformada Final

cos cos
cos sin
I
T 4=
sin
0

sin cos sin lbcos cos


cos sin sin lbcos sin
0
cos lalbsin
0
0
1

Rob Scara

Para se calcular a cinemtica direta do rob Scara leva-se em conta as seguintes transformadas:
Primeiro uma translao no eixo Z, em seguida duas rotaes no eixo Z e duas translaes no eixo X. Por
ltimo h uma translao no eixo Z para se chegar a ponta do efetuador do manipulador.

Matriz Transformada Final

( 1+ 2)

cos sin(1 +2 )
(1 + 2 )
sin(1 +2 )
I

T 4 =

(1 + 2)+lbcos 1 lccos 0 lcsin ( 1+ 2 ) +lbsin 1


0 0
1 la+ld
0 0
0
1

Cdigo do Matlab:
clear all
clc
syms la lb lc ld a1 a2 b d e f g;
% Declarao das matrizes de transformao
aTb = [1 0 0 0; 0 1 0 0; 0 0 1 la; 0 0 0 1];
bTc = [cos(a1) -sin(a1) 0 0; sin(a1) cos(a1) 0 0; 0 0 1 0; 0 0 0 1];
cTd = [cos(a2) -sin(a2) 0 lb; sin(a2) cos(a2) 0 0; 0 0 1 0; 0 0 0 1];
dTe = [1 0 0 lc; 0 1 0 0; 0 0 1 0; 0 0 0 1];
eTf = [1 0 0 0; 0 1 0 0; 0 0 1 ld; 0 0 0 1];
% RPY Matrix
Rz = [cos(d) -sin(d) 0 0; sin(d) cos(d) 0 0; 0 0 1 0; 0 0 0 1];
Ry = [cos(e) 0 sin(e) 0; 0 1 0 0; -sin(e) 0 cos(e) 0; 0 0 0 1];
Rx = [1 0 0 0; 0 cos(f) -sin(f) 0; 0 sin(f) cos(f) 0; 0 0 0 1];
Rrpy = Rz*Ry*Rx
% Rotacao usando angulos RPY
Rz1 = [cos(g) -sin(g) 0 0; sin(g) cos(g) 0 0; 0 0 1 0; 0 0 0 1];
Reuler = Rz*Ry*Rz1
% Rotacao usando angulos de Euler
aTf = simplify(aTb * bTc * cTd * dTe * eTf)
aTfRPY = simplify(aTf*Rrpy)
aTfEULER = simplify(aTf*Reuler)
x = aTf(1,4);
y = aTf(2,4);
z = aTf(3,4);
la = 0:1:200;
lb = 0:1:200;
lc = 0:1:200;
ld = 0:1:200;

% varivel para armazenar a posio x


% varivel para armazenar a posio y
% varivel para armazenar a posio z

a1 = 0:pi/100:2*pi;

% Variao dos ngulos

10

a2 = 0:pi/100:2*pi;

% Variao dos ngulos

x = eval(x);
y = eval(y);
z = eval(z);
plot3(x,y,z)
title('Trajetria do Rob Scara')
xlabel('Coordenada X');
ylabel('Coordenada Y');
zlabel('Coordenada Z');

Rob Antropomrfico

11

Para se calcular a cinemtica direta do manipulador antropomrfico leva-se em considerao as


seguintes transformaes: Primeiro uma rotao seguida de translao no eixo Z, duas rotaes no eixo Y
seguidas de translaes no eixo X.

Matriz Transformada Final


cos( 1 +2 ) cos sin
cos (1 + 2) sin cos
sin( 1+ 2)cos
1
lb+lccos

sin( 1+ 2) sin

1
lb+lccos

cos
I
T 3=

Cdigo do Matlab:
clear all
clc
syms la lb lc a b1 b2 d e f g;
% Declarao das matrizes de transformao
aTb = [cos(a) -sin(a) 0 0; sin(a) cos(a) 0 0; 0 0 1 la; 0 0 0 1];
bTc = [cos(b1) 0 sin(b1) lb; 0 1 0 0 ; -sin(b1) 0 cos(b1) 0; 0 0 0 1];
cTd = [cos(b2) 0 sin(b2) lc; 0 1 0 0 ; -sin(b2) 0 cos(b2) 0; 0 0 0 1];
% RPY Matrix
Rz = [cos(d) -sin(d) 0 0; sin(d) cos(d) 0 0; 0 0 1 0; 0 0 0 1];
Ry = [cos(e) 0 sin(e) 0; 0 1 0 0; -sin(e) 0 cos(e) 0; 0 0 0 1];
Rx = [1 0 0 0; 0 cos(f) -sin(f) 0; 0 sin(f) cos(f) 0; 0 0 0 1];
Rrpy = Rz*Ry*Rx

% Rotacao usando angulos RPY

Rz1 = [cos(g) -sin(g) 0 0; sin(g) cos(g) 0 0; 0 0 1 0; 0 0 0 1];


Reuler = Rz*Ry*Rz1
% Rotacao usando angulos de Euler
% Calculo das transformadas
aTd = simplify(aTb * bTc * cTd)
aTdRPY = simplify(aTd*Rrpy)
aTdEULER = simplify(aTd*Reuler)

12

x = aTd(1,4);
y = aTd(2,4);
z = aTd(3,4);

% varivel para armazenar a posio x


% varivel para armazenar a posio y
% varivel para armazenar a posio z

la = 200;
lb = 200;
lc = 200;

% Comprimento do elo fixo


% Comprimento do elo fixo
% Comprimento do elo fixo

a = 0:pi/100:2*pi;
b1 = 0:pi/100:2*pi;
b2 = 0:pi/100:2*pi;

% Variao do ngulo
% Variao do ngulo
% Variao do ngulo

x = eval(x);
y = eval(y);
z = eval(z);
plot3(x,y,z)
title('Trajetria do Rob de Coordenadas Antropomrfico')
xlabel('Coordenada X');
ylabel('Coordenada Y');
zlabel('Coordenada Z');

13

Você também pode gostar