Vous êtes sur la page 1sur 23

Centro Federal de Educao Tecnolgica Celso Suckow da Fonseca Unidade descentralizada de Nova Iguau.

Manipuladores Robticos

Disciplina: Robtica
Professor: Luciano Raptopoulos
Aluno: Emerson da Silva Bergossi

Nova Iguau
06 de junho de 2013

ndice

Introduo

Manipulador Antropomrfico

Manipulador Cartesiano

Manipulador Cilndrico

13

Manipulador Esfrico

17

Manipulador Scara

21

Introduo
Os manipuladores exercem importantes funes na indstria (e na sociedade) nos dias
de hoje. Graas preciso, confiabilidade e disponibilidade desses dispositivos, a
indstria se tornou mais competitiva. Diversos produtos e servios se tornaram mais
baratos e confiveis, estimulando o consumo e melhorando a qualidade de vida das
pessoas. Como exemplo, as fbricas de carro. Em princpio, o carro era um produto que
apenas pequena parcela da populao podia comprar. Atualmente, graas robotizao
e automao do processo fabril, os carros so mais democrticos, seguros e
confortveis.
Os manipuladores so divididos pelos critrios das suas caractersticas construtivas.
Falaremos sobre alguns modelos a seguir.

OBS: Todos os manipuladores foram modelados com um pulso que rotaciona na


direo X, com exceo do Antropomrfico que tem ngulos de rotao em X, Y e Z.

Manipulador Antropomrfico
Esse modelo de manipulador possui trs juntas rotativas. So largamente utilizados nas
indstrias por ter semelhana ao brao do ser humano. O diferencial desse manipulador
sua versatilidade, pois graas as suas caractersticas construtivas, ele pode operar em
ambientes compactos.

Ilustrao 1 - Manipulador Antropomrfico

Para calcular a cinemtica direta do manipulador Antropomrfico, foi utilizado o


seguinte programa:
clear all, close all, clc
%% Cinemtica Direta de um
%
%
q1 = ngulo de rotao
%
q2 = ngulo de rotao
%
q3 = ngulo de rotao
%
q4 = ngulo de rotao
%
q5 = ngulo de rotao
%
q6 = ngulo de rotao

Manipular Antropomorfico
do
do
do
do
do
do

primeiro eixo
segundo eixo
terceiro eixo
pulso em x
pulso em y
pulso em z

%
Autor: Emerson Bergossi - 2013/01
%
Reviso:
%
%
> antropomorfico
%% Dados estruturais
syms L1 L2 L3 Lf

Data: 04/06/2013
Data: __/__/____

%% Variveis
syms q1 q2 q3 q4 q5 q6
%% Transformaes entre referenciais
R1_0 =
0 1];
D1_0 =
T1_0 =
R2_1 =
0 1];
D2_1 =
T2_1 =
R3_2 =
0 1];
D3_2 =
T3_2 =
R4_3 =
0 1];
R5_4 =
0 1];
R6_5 =
0 1];
D6_5 =
T6_5 =

[cos(q1) -sin(q1) 0 0; sin(q1) cos(q1) 0 0; 0 0 1 0; 0 0


[1 0 0 0; 0 1 0 0; 0 0 1 L1; 0 0 0 1];
simplify(R1_0*D1_0);
[cos(q2) 0 sin(q2) 0; 0 1 0 0; -sin(q2) 0 cos(q2) 0; 0 0
[1 0 0 L2; 0 1 0 0; 0 0 1 0; 0 0 0 1];
simplify(R2_1*D2_1);
[cos(q3) 0 sin(q3) 0; 0 1 0 0; -sin(q3) 0 cos(q3) 0; 0 0
[1 0 0 L3; 0 1 0 0; 0 0 1 0; 0 0 0 1];
simplify(R3_2*D3_2);
[1 0 0 0; 0 cos(q4) -sin(q4) 0; 0 sin(q4) cos(q4) 0; 0 0
[cos(q5) 0 sin(q5) 0; 0 1 0 0; -sin(q5) 0 cos(q5) 0; 0 0
[1 0 0 0; 0 cos(q6) -sin(q6) 0; 0 sin(q6) cos(q6) 0; 0 0
[1 0 0 Lf; 0 1 0 0; 0 0 1 0; 0 0 0 1];
simplify(R6_5*D6_5);

T2_0
T3_0
T4_0
T5_0
T6_0

=
=
=
=
=

simplify(T1_0*T2_1);
simplify(T2_0*T3_2);
simplify(T3_0*R4_3);
simplify(T4_0*R5_4);
simplify(T5_0*T6_5);

%% Vetor posio do efetuador


pf_0 = T6_0(1:3,4);
%% Jacobiano Linear
JL(1,1) = diff(pf_0(1),q1);
JL(1,3) = diff(pf_0(1),q3);
JL(2,1) = diff(pf_0(2),q1);
JL(2,3) = diff(pf_0(2),q3);
JL(3,1) = diff(pf_0(3),q1);
JL(3,3) = diff(pf_0(3),q3);

JL(1,2)
JL(1,4)
JL(2,2)
JL(2,4)
JL(3,2)
JL(3,4)

=
=
=
=
=
=

diff(pf_0(1),q2);
diff(pf_0(1),q4);
diff(pf_0(2),q2);
diff(pf_0(2),q4);
diff(pf_0(3),q2);
diff(pf_0(3),q4);

%% Velocidades lineares do efetuador


syms dq1 dq2 dq3 dq4 dq5 dq6
vf_0 = JL*transpose([dq1 dq2 dq3 dq4]);
%% Velocidades angulares
w1_0
w2_1
w3_2
w4_3
w5_4
w6_5

=
=
=
=
=
=

transpose([0 0 dq1]);
transpose([0 dq2 0]);
transpose([0 0 dq3]);
transpose ([dq4 0 0]);
transpose([0 dq5 0]);
transpose([0 0 dq6]);

%% Rotaes
R2_0
R3_0
R4_0
R5_0
R6_0

=
=
=
=
=

simplify(R1_0(1:3,1:3)* R2_1(1:3,1:3));
simplify(R2_0(1:3,1:3)* R3_2(1:3,1:3));
simplify(R3_0* R4_3(1:3,1:3));
simplify(R4_0* R5_4(1:3,1:3));
simplify(R5_0* R6_5(1:3,1:3));

%% Velocidade angular
w6_0 = simplify(w1_0 + R1_0(1:3,1:3)*w2_1 + R2_0*w3_2 +
R3_0*w4_3 + R4_0*w5_4 + R5_0*w6_5);

%% Jacobiano angular

JA(1,1)
JA(1,3)
JA(1,5)
JA(2,1)
JA(2,3)
JA(2,5)
JA(3,1)
JA(3,3)
JA(3,5)

=
=
=
=
=
=
=
=
=

diff(w6_0(1),dq1);
diff(w6_0(1),dq3);
diff(w6_0(1),dq5);
diff(w6_0(2),dq1);
diff(w6_0(2),dq3);
diff(w6_0(2),dq5);
diff(w6_0(3),dq1);
diff(w6_0(3),dq3);
diff(w6_0(3),dq5);

JA(1,2)
JA(1,4)
JA(1,6)
JA(2,2)
JA(2,4)
JA(2,6)
JA(3,2)
JA(3,4)
JA(3,6)

=
=
=
=
=
=
=
=
=

diff(w6_0(1),dq2);
diff(w6_0(1),dq4);
diff(w6_0(1),dq6);
diff(w6_0(2),dq2);
diff(w6_0(2),dq4);
diff(w6_0(2),dq6);
diff(w6_0(3),dq2);
diff(w6_0(3),dq4);
diff(w6_0(3),dq6);

W6_0 = simplify(JA*transpose([dq1 dq2 dq3 dq4 dq5 dq6]));


%% Aceleraao angular do efetuador
syms ddq1 ddq2 ddq3 ddq4 ddq5 ddq6
Ax= diff(w6_0(1),dq1)*ddq1 + diff(w6_0(1),dq2)*ddq2 +
diff(w6_0(1),dq3)*ddq3 + diff(w6_0(1),dq4)*ddq4 +
diff(w6_0(1),dq5)*ddq5 + diff(w6_0(1),dq6)*ddq6 +
diff(w6_0(1),q1)*dq1 + diff(w6_0(1),q2)*dq2 +
diff(w6_0(1),q3)*dq3 + diff(w6_0(1),q4)*dq4 +
diff(w6_0(1),q5)*dq5 + diff(w6_0(1),q6)*dq6;
Ay= diff(w6_0(2),dq1)*ddq1 + diff(w6_0(2),dq2)*ddq2 +
diff(w6_0(2),dq3)*ddq3 + diff(w6_0(2),dq4)*ddq4 +
diff(w6_0(2),dq5)*ddq5 + diff(w6_0(2),dq6)*ddq6 +
diff(w6_0(2),q1)*dq1 + diff(w6_0(2),q2)*dq2 +
diff(w6_0(2),q3)*dq3 + diff(w6_0(2),q4)*dq4 +
diff(w6_0(2),q5)*dq5 + diff(w6_0(2),q6)*dq6;
Az= diff(w6_0(3),dq1)*ddq1 + diff(w6_0(3),dq2)*ddq2 +
diff(w6_0(3),dq3)*ddq3 + diff(w6_0(3),dq4)*ddq4 +
diff(w6_0(3),dq5)*ddq5 + diff(w6_0(3),dq6)*ddq6 +
diff(w6_0(3),q1)*dq1 + diff(w6_0(3),q2)*dq2 +
diff(w6_0(3),q3)*dq3 + diff(w6_0(3),q4)*dq4 +
diff(w6_0(3),q5)*dq5 + diff(w6_0(3),q6)*dq6;

%% Simulao
syms t
L1 = 0.5;
L2 = 0.5;
L3 = 0.5;
t = linspace(0,10,100);

w1
q1
w2
q2
w3
q3

=
=
=
=
=
=

2*pi/10;
w1*t;
pi;
0.1*sin(w2*t);
0;
w3*t;

p3_0 = eval(T3_0(1:3,4));
figure(1),
subplot(3,1,1), plot(t,p3_0(1,:),'k'), grid on, xlabel('Tempo
[s]'), ylabel('x [m]')
subplot(3,1,2), plot(t,p3_0(2,:),'k'), grid on, xlabel('Tempo
[s]'), ylabel('y [m]')
subplot(3,1,3), plot(t,p3_0(3,:),'k'), grid on, xlabel('Tempo
[s]'), ylabel('z [m]')

Figure 1 Antropomrfico

Manipulador Cartesiano
Esse manipulador de coordenadas cartesianas o anlogo do Antropomrfico. Pois ao
invs de ter trs juntas rotativas, ele possui trs juntas lineares com os deslocamentos
um em relao ao outro. Opera numa regio de trabalho cbico.

Ilustrao 2 - Manipulador Cartesiano

Para calcular a cinemtica direta do manipulador Cartesiano, foi utilizado o seguinte


programa:
clear all, close all, clc
%% Cinemtica Direta de um Manipular cartesiano
%
%
q1 = deslocamento linear em x
%
q2 = deslocamento linear em y
%
q3 = deslocamento linear em z
%
q4 = ngulo de rotao do pulso
%
%
Autor: Emerson Bergossi - 2013/01
Data: 03/06/2013
%
Reviso:
Data: __/__/____
%
> cartesiano

%% Dados estruturais
syms Lf
%% Variveis
syms q1 q2 q3 q4
%% Transformaes entre referenciais
T1_0 =
T2_1 =
T3_2 =
R4_3 =
0 1];
D4_3 =
T4_3 =

[1
[1
[1
[1

0
0
0
0

0
0
0
0

q1; 0 1 0 0; 0 0 1 0;
0; 0 1 0 q2; 0 0 1 0;
0; 0 1 0 0; 0 0 1 q3;
0; 0 cos(q4) -sin(q4)

0 0 0 1];
0 0 0 1];
0 0 0 1];
0; 0 sin(q4) cos(q4) 0; 0 0

[1 0 0 Lf; 0 1 0 0; 0 0 1 0; 0 0 0 1];
simplify(R4_3*D4_3);

T2_0 = simplify(T1_0*T2_1);
T3_0 = simplify(T2_0*T3_2);
T4_0 = simplify(T3_0*T4_3);
%% Vetor posio do efetuador
pf_0 = T4_0(1:3,4);
%% Jacobino Linear
JL(1,1) = diff(pf_0(1),q1);
JL(1,3) = diff(pf_0(1),q3);
JL(2,1) = diff(pf_0(2),q1);
JL(2,3) = diff(pf_0(2),q3);
JL(3,1) = diff(pf_0(3),q1);
JL(3,3) = diff(pf_0(3),q3);

JL(1,2)
JL(1,4)
JL(2,2)
JL(2,4)
JL(3,2)
JL(3,4)

=
=
=
=
=
=

diff(pf_0(1),q2);
diff(pf_0(1),q4);
diff(pf_0(2),q2);
diff(pf_0(2),q4);
diff(pf_0(3),q2);
diff(pf_0(3),q4);

%% Velocidades lineares do efetuador


syms dq1 dq2 dq3 dq4
vf_0 = JL*transpose([dq1 dq2 dq3 dq4]);
vx= vf_0(1);
vy= vf_0(2);
vz= vf_0(3);

%% Aceleraao Linear do efetuador


syms ddq1 ddq2 ddq3 ddq4

ax= diff(vx,dq1)*ddq1 + diff(vx,dq2)*ddq2 + diff(vx,dq3)*ddq3 +


diff(vx,dq4)*ddq4 + diff(vx,q1)*dq1 + diff(vx,q2)*dq2 +
diff(vx,q3)*dq3 + diff(vx,q4)*dq4;
ay= diff(vy,dq1)*ddq1 + diff(vy,dq2)*ddq2 + diff(vy,dq3)*ddq3 +
diff(vy,dq4)*ddq4 + diff(vy,q1)*dq1 + diff(vy,q2)*dq2 +
diff(vy,q3)*dq3 + diff(vy,q4)*dq4;
az= diff(vz,dq1)*ddq1 + diff(vz,dq2)*ddq2 + diff(vz,dq3)*ddq3 +
diff(vz,dq4)*ddq4 + diff(vz,q1)*dq1 + diff(vz,q2)*dq2 +
diff(vz,q3)*dq3 + diff(vz,q4)*dq4;
%% Velocidades angulares
w4_3 = transpose([q4 0 0]);
w4_0 = simplify (T3_0(1:3,1:3)*w4_3);
%% Jacobiano angular
JA(1,1)
JA(1,3)
JA(2,1)
JA(2,3)
JA(3,1)
JA(3,3)

=
=
=
=
=
=

diff(w4_0(1),dq1);
diff(w4_0(1),dq3);
diff(w4_0(2),dq1);
diff(w4_0(2),dq3);
diff(w4_0(3),dq1);
diff(w4_0(3),dq3);

JA(1,2)
JA(1,4)
JA(2,2)
JA(2,4)
JA(3,2)
JA(3,4)

=
=
=
=
=
=

diff(w4_0(1),dq2);
diff(w4_0(1),dq4);
diff(w4_0(2),dq2);
diff(w4_0(2),dq4);
diff(w4_0(3),dq2);
diff(w4_0(3),dq4);

W4_0 = simplify(JA*transpose([dq1 dq2 dq3 dq4]));


%% Simulao
syms t
Lf = 0.15;
t = linspace(0,1,10);
q1 = 2*pi/2*t;
dq1 = pi/2*ones(1,10);
q2 = -pi/2*t;
dq2 = pi/2*ones(1,10);
q3 = 0.3 + 0.3*t;
dq3 = 0.3*ones(1,10);
q4 = zeros(1,10);
dq4 = zeros(1,10);
pfn_0 = eval(pf_0);
figure(1),
subplot(3,1,1), plot(t,pfn_0(1,:)), grid on
xlabel('Tempo [min]'), ylabel('Deslocamento X [m]')
subplot(3,1,2), plot(t,pfn_0(2,:)), grid on

10

xlabel('Tempo [min]'), ylabel('Deslocamento Y [m]')


subplot(3,1,3), plot(t,pfn_0(3,:)), grid on
xlabel('Tempo [min]'), ylabel('Deslocamento Z [m]')

Figure 2 Cartesiano

11

Manipulador Cilndrico
Esse manipulador tem um ngulo de rotao e dois deslocamentos lineares o primeiro
em Z e outro em X.

Ilustrao 3 - Manipulador Cilndrico

Para calcular a cinemtica direta do manipulador Cilndrico, foi utilizado o seguinte


programa:
clear all, close all, clc
%% Cinemtica Direta de um Manipulador Cilindrico
%
%
q1 = ngulo de rotao do primeiro eixo
%
q2 = deslocamento linear do brao no eixo z
%
q3 = deslocamento linear do brao no eixo x
%
q4 = ngulo de rotao do pulso
%
%
Autores:Emerson Bergossi - 2013/01
Data: 28/05/2013
%
Reviso:
Data: 04/06/2013
%
%
> esferico
%% Dados estruturais
syms Lf

12

%% Variveis
syms q1 q2 q3 q4
%% Transformaes entre referenciais
R1_0 =
1];
D1_0 =
T1_0 =
D2_1 =
R3_2 =
0 1];
D3_2 =
T4_2 =

[cos(q1) -sin(q1) 0 0; sin(q1) cos(q1) 0 0;0 0 1 0; 0 0 0


[1 0 0 0; 0 1 0 0; 0 0 1 q2; 0 0 0 1];
simplify(R1_0*D1_0);
[1 0 0 q3; 0 1 0 0 ; 0 0 1 0; 0 0 0 1];
[1 0 0 0; 0 cos(q4) -sin(q4) 0; 0 sin(q4) cos(q4) 0; 0 0
[1 0 0 Lf; 0 1 0 0; 0 0 1 0; 0 0 0 1];
simplify(R3_2*D3_2);

T2_0 = simplify(T1_0*D2_1);
T3_0 = simplify(T2_0*T4_2);
%% Vetor posio do efetuador
pf_0 = T3_0(1:3,4);
%% Jacobino Linear
JL(1,1)
JL(1,3)
JL(2,1)
JL(2,3)
JL(3,1)
JL(3,3)

=
=
=
=
=
=

diff(pf_0(1),q1);
diff(pf_0(1),q3);
diff(pf_0(2),q1);
diff(pf_0(2),q3);
diff(pf_0(3),q1);
diff(pf_0(3),q3);

JL(1,2)
JL(1,4)
JL(2,2)
JL(2,4)
JL(3,2)
JL(3,4)

=
=
=
=
=
=

diff(pf_0(1),q2);
diff(pf_0(1),q4);
diff(pf_0(2),q2);
diff(pf_0(2),q4);
diff(pf_0(3),q2);
diff(pf_0(3),q4);

%% Velocodades lineares do efetuador


syms dq1 dq2 dq3 dq4
vf_0 = JL*transpose([dq1 dq2 dq3 dq4]);
vx= vf_0(1);
vy= vf_0(2);
vz= vf_0(3);
%% Aceleraao Linear do efetuador
syms ddq1 ddq2 ddq3 ddq4
ax= diff(vx,dq1)*ddq1 + diff(vx,dq2)*ddq2 + diff(vx,dq3)*ddq3 +
diff(vx,dq4)*ddq4 + diff(vx,q1)*dq1 + diff(vx,q2)*dq2 +
diff(vx,q3)*dq3 + diff(vx,q4)*dq4;

13

ay= diff(vy,dq1)*ddq1 + diff(vy,dq2)*ddq2 + diff(vy,dq3)*ddq3 +


diff(vy,dq4)*ddq4 + diff(vy,q1)*dq1 + diff(vy,q2)*dq2 +
diff(vy,q3)*dq3 + diff(vy,q4)*dq4;
az= diff(vz,dq1)*ddq1 + diff(vz,dq2)*ddq2 + diff(vz,dq3)*ddq3 +
diff(vz,dq4)*ddq4 +diff(vz,q1)*dq1 + diff(vz,q2)*dq2 +
diff(vz,q3)*dq3 + diff(vz,q4)*dq4;
%% Velocidades angulares
w1_0 = transpose([0 0 dq1]);
w2_1 = [0 0 0]';
w3_2 = transpose([dq4 0 0]);
w3_0 = simplify(w1_0 + T2_0(1:3,1:3)*w3_2);
%% Jacobiano angular
JA(1,1)
JA(1,3)
JA(2,1)
JA(2,3)
JA(3,1)
JA(3,3)

=
=
=
=
=
=

diff(w3_0(1),dq1);
diff(w3_0(1),dq3);
diff(w3_0(2),dq1);
diff(w3_0(2),dq3);
diff(w3_0(3),dq1);
diff(w3_0(3),dq3);

JA(1,2)
JA(1,4)
JA(2,2)
JA(2,4)
JA(3,2)
JA(3,4)

=
=
=
=
=
=

diff(w3_0(1),dq2);
diff(w3_0(1),dq4);
diff(w3_0(2),dq2);
diff(w3_0(2),dq4);
diff(w3_0(3),dq2);
diff(w3_0(3),dq4);

W3_0 = simplify(JA*transpose([dq1 dq2 dq3 dq4]));


%% Velocodades angular do efetuador
vaf_0 = JA*transpose([dq1 dq2 dq3 dq4]);
wx= vaf_0(1);
wy= vaf_0(2);
wz= vaf_0(3);
%% Aceleraao Linear do efetuador
syms ddq1 ddq2 ddq3 ddq4
Ax= diff(wx,dq1)*ddq1 + diff(wx,dq2)*ddq2 + diff(wx,dq3)*ddq3 +
diff(wx,dq4)*ddq4 + diff(wx,q1)*dq1 + diff(wx,q2)*dq2 +
diff(wx,q3)*dq3 + diff(wx,q4)*dq4;
Ay= diff(wy,dq1)*ddq1 + diff(wy,dq2)*ddq2 + diff(wy,dq3)*ddq3 +
diff(wy,dq4)*ddq4 + diff(wy,q1)*dq1 + diff(wy,q2)*dq2 +
diff(wy,q3)*dq3 + diff(wy,q4)*dq4;
Az= diff(wz,dq1)*ddq1 + diff(wz,dq2)*ddq2 + diff(wz,dq3)*ddq3 +
diff(wz,dq4)*ddq4 + diff(wz,q1)*dq1 + diff(wz,q2)*dq2 +
diff(wz,q3)*dq3 + diff(wz,q4)*dq4;
%% Simulao
syms t %% variar com o tempo
L1 = 0.5;

14

Lf = 0.15;
T = linspace(0,1,10);
Q1 = (pi/2*T);
dQ1 = pi/2*ones(1,10);
Q2 = (-pi/2*T);
dQ2 = pi/2*ones(1,10);
Q3 = (0.3 + 0.3*T);
dQ3 = 0.3*ones(1,10);
Q4 = zeros(1,10);
dQ4 = zeros(1,10);
for n=1:1:length(T),
t = T(n);
q1 = Q1(n);
dq1 = dQ1(n);
q2 = Q2(n);
dq2 = dQ2(n);
q3 = Q3(n);
dq3 = dQ3(n);
q4 = Q4(n);
dq4 = dQ4(n);
pfn_0(:,n) = eval(pf_0);
end
t = T;
figure(1),
subplot(3,1,1), plot(t,pfn_0(1,:)), grid on
xlabel('Tempo [min]'), ylabel('Deslocamento X [m]')
subplot(3,1,2), plot(t,pfn_0(2,:)), grid on
xlabel('Tempo [min]'), ylabel('Deslocamento Y [m]')
subplot(3,1,3), plot(t,pfn_0(3,:)), grid on
xlabel('Tempo [min]'), ylabel('Deslocamento Z [m]')

15

Figure 3 - Cilndrico

Manipulador Esfrico
Esse manipulador tem dois ngulos de rotao em seus dois primeiros eixos um em Z
e outro em X e um deslocamento linear no eixo X. recomendado utilizar esses
manipuladores quando se deseja ter alcance e suportar cargas pesadas.

Ilustrao 4 - Manipulador Esfrico

16

Para calcular a cinemtica direta do manipulador Esfrico, foi utilizado o seguinte


programa:

clear all, close all, clc


%% Cinemtica Direta de um Manipular Esfrico
%
%
q1 = ngulo de rotao do primeiro eixo
%
q2 = ngulo de rotao do segundo eixo
%
q3 = deslocamento linear do brao
%
q4 = ngulo de rotao do pulso
%
%
Autores: Emerson Bergossi - 2013/01
Data: 03/06/2013
%
Reviso:
Data: __/__/____
%
%
> esferico
%% Dados estruturais
syms L1 Lf
%% Variveis
syms q1 q2 q3 q4
%% Transformaes entre referenciais
R1_0 =
0 1];
D1_0 =
T1_0 =
T2_1 =
0 1];
T3_2 =
R4_3 =
0 1];
D4_3 =
T4_3 =

[cos(q1) -sin(q1) 0 0; sin(q1) cos(q1) 0 0; 0 0 1 0; 0 0


[1 0 0 0; 0 1 0 0; 0 0 1 L1; 0 0 0 1];
simplify(R1_0*D1_0);
[cos(q2) 0 sin(q2) 0; 0 1 0 0; -sin(q2) 0 cos(q2) 0; 0 0
[1 0 0 q3; 0 1 0 0; 0 0 1 0; 0 0 0 1];
[1 0 0 0; 0 cos(q4) -sin(q4) 0; 0 sin(q4) cos(q4) 0; 0 0
[1 0 0 Lf; 0 1 0 0; 0 0 1 0; 0 0 0 1];
simplify(R4_3*D4_3);

T2_0 = simplify(T1_0*T2_1);
T3_0 = simplify(T2_0*T3_2);
T4_0 = simplify(T3_0*T4_3);
%% Vetor posio do efetuador

17

pf_0 = T4_0(1:3,4);
%% Jacobino Linear
JL(1,1) = diff(pf_0(1),q1);
JL(1,3) = diff(pf_0(1),q3);
JL(2,1) = diff(pf_0(2),q1);
JL(2,3) = diff(pf_0(2),q3);
JL(3,1) = diff(pf_0(3),q1);
JL(3,3) = diff(pf_0(3),q3);

JL(1,2)
JL(1,4)
JL(2,2)
JL(2,4)
JL(3,2)
JL(3,4)

=
=
=
=
=
=

diff(pf_0(1),q2);
diff(pf_0(1),q4);
diff(pf_0(2),q2);
diff(pf_0(2),q4);
diff(pf_0(3),q2);
diff(pf_0(3),q4);

%% Velocodades lineares do efetuador


syms dq1 dq2 dq3 dq4
vf_0 = JL*transpose([dq1 dq2 dq3 dq4]);
%% Velocidades angulares
w1_0
w2_1
w2_0
w3_2
w4_3
w4_0

=
=
=
=
=
=

transpose([0 0 dq1]);
transpose([0 dq2 0]);
simplify(w1_0 + T1_0(1:3,1:3)*w2_1);
[0 0 0]';
transpose([dq4 0 0]);
simplify(w2_0 + T2_0(1:3,1:3)*w3_2 + T3_0(1:3,1:3)*w4_3);

%% Jacobiano angular
JA(1,1)
JA(1,3)
JA(2,1)
JA(2,3)
JA(3,1)
JA(3,3)

=
=
=
=
=
=

diff(w4_0(1),dq1);
diff(w4_0(1),dq3);
diff(w4_0(2),dq1);
diff(w4_0(2),dq3);
diff(w4_0(3),dq1);
diff(w4_0(3),dq3);

JA(1,2)
JA(1,4)
JA(2,2)
JA(2,4)
JA(3,2)
JA(3,4)

=
=
=
=
=
=

diff(w4_0(1),dq2);
diff(w4_0(1),dq4);
diff(w4_0(2),dq2);
diff(w4_0(2),dq4);
diff(w4_0(3),dq2);
diff(w4_0(3),dq4);

W4_0 = simplify(JA*transpose([dq1 dq2 dq3 dq4]));


%% Simulao
syms t
L1 = 0.4;
Lf = 0.25;
t = linspace(0,1,10);
q1 = 2*pi/2*t;
dq1 = pi/2*ones(1,10);
q2 = -pi/2*t;
dq2 = pi/2*ones(1,10);
q3 = 0.3 + 0.3*t;
dq3 = 0.3*ones(1,10);
q4 = zeros(1,10);

18

dq4 = zeros(1,10);
pfn_0 = eval(pf_0);
figure(1),
subplot(3,1,1), plot(t,pfn_0(1,:)), grid on
xlabel('Tempo [min]'), ylabel('Deslocamento X [m]')
subplot(3,1,2), plot(t,pfn_0(2,:)), grid on
xlabel('Tempo [min]'), ylabel('Deslocamento Y [m]')
subplot(3,1,3), plot(t,pfn_0(3,:)), grid on
xlabel('Tempo [min]'), ylabel('Deslocamento Z [m]')

Figure 4 - Esfrico

19

Manipulador Scara
Utilizado em processos mecnicos e eletrnicos, tem boa preciso e repetibilidade.
Sempre atua na vertical e utilizado em processos de alta presio. Seu nome significa
(em portugus) Brao Robtico de Montagem com Complacncia Seletiva (SCARA).

Ilustrao 5 - Manipulador Scara

Para calcular a cinemtica direta do manipulador Esfrico, foi utilizado o seguinte


programa:
clear all, close all, clc
%% Cinemtica Direta de um Manipular Scara
%
%
q1 = ngulo de rotao do primeiro eixo
%
q2 = ngulo de rotao do segundo eixo
%
q3 = deslocamento linear do brao
%
q4 = ngulo de rotao do pulso
%
%
Autor: Emerson Bergossi - 2013/01
Data: 04/06/2013
%
Reviso:
Data: __/__/____
%

20

> scara

%% Dados estruturais
syms Lf H L1 L2
%% Variveis
syms q1 q2 q3 q4
%% Transformaes entre referenciais
R1_0 = [cos(q1) -sin(q1) 0 0;sin(q1) cos(q1) 0 0; 0 0 1 0; 0 0 0
1];
D1_0 = [1 0 0 0; 0 1 0 0; 0 0 1 H; 0 0 0 1];
T1_0 = simplify(R1_0*D1_0);
T11_1 = [1 0 0 L1; 0 1 0 0; 0 0 1 0; 0 0 0 1];
R2_11 = [cos(q2) -sin(q2) 0 0;sin(q2) cos(q2) 0 0; 0 0 1 0; 0 0
0 1];
D2_11 = [1 0 0 L2; 0 1 0 0; 0 0 1 0; 0 0 0 1];
T2_11 = simplify(R2_11*D2_11);
T3_2 = [1 0 0 0; 0 1 0 0; 0 0 1 q3; 0 0 0 1];
R4_3 = [1 0 0 0; 0 cos(q4) -sin(q4) 0; 0 sin(q4) cos(q4) 0; 0 0
0 1];
D4_3 = [1 0 0 Lf; 0 1 0 0; 0 0 1 0; 0 0 0 1];
T4_3 = simplify(R4_3*D4_3);
T11_0 = simplify(T1_0*T11_1);
T2_0 = simplify(T11_0*T2_11);
T3_0 = simplify(T2_0*T3_2);
T4_0 = simplify(T3_0*T4_3);
%% Vetor posio do efetuador
pf_0=T4_0(1:3,4);
%% Jacobino Linear
JL(1,1) = diff(pf_0(1),q1);
JL(1,3) = diff(pf_0(1),q3);
JL(2,1) = diff(pf_0(2),q1);
JL(2,3) = diff(pf_0(2),q3);
JL(3,1) = diff(pf_0(3),q1);
JL(3,3) = diff(pf_0(3),q3);

JL(1,2)
JL(1,4)
JL(2,2)
JL(2,4)
JL(3,2)
JL(3,4)

=
=
=
=
=
=

diff(pf_0(1),q2);
diff(pf_0(1),q4);
diff(pf_0(2),q2);
diff(pf_0(2),q4);
diff(pf_0(3),q2);
diff(pf_0(3),q4);

%% Velocidades lineares do efetuador

21

syms dq1 dq2 dq3 dq4


vf_0 = JL*transpose([dq1 dq2 dq3 dq4]);
vx= vf_0(1);
vy= vf_0(2);
vz= vf_0(3);
%% Aceleraao Linear do efetuador
syms ddq1 ddq2 ddq3 ddq4
ax= diff(vx,dq1)*ddq1 + diff(vx,dq2)*ddq2 + diff(vx,dq3)*ddq3 +
diff(vx,dq4)*ddq4 + diff(vx,q1)*dq1 + diff(vx,q2)*dq2 +
diff(vx,q3)*dq3 + diff(vx,q4)*dq4;
ay= diff(vy,dq1)*ddq1 + diff(vy,dq2)*ddq2 + diff(vy,dq3)*ddq3 +
diff(vy,dq4)*ddq4 + diff(vy,q1)*dq1 + diff(vy,q2)*dq2 +
diff(vy,q3)*dq3 + diff(vy,q4)*dq4;
az= diff(vz,dq1)*ddq1 + diff(vz,dq2)*ddq2 + diff(vz,dq3)*ddq3 +
diff(vz,dq4)*ddq4 + diff(vz,q1)*dq1 + diff(vz,q2)*dq2 +
diff(vz,q3)*dq3 + diff(vz,q4)*dq4;
%% Velocidades angulares
w11_1 = transpose([ 0 0 dq1]);
w11_0 = simplify(T1_0(1:3,1:3)*w11_1);
w2_11 = transpose([ 0 0 dq2]);
w2_0 = simplify(w11_0 + T11_0(1:3,1:3)*w2_11);
w3_0 = 0;
w4_3 = transpose([dq4 0 0]);
w4_0 = simplify(w2_0 + T3_0(1:3,1:3)*w4_3);

%% Jacobiano angular
JA(1,1)
JA(1,3)
JA(2,1)
JA(2,3)
JA(3,1)
JA(3,3)

=
=
=
=
=
=

diff(w4_0(1),dq1);
diff(w4_0(1),dq3);
diff(w4_0(2),dq1);
diff(w4_0(2),dq3);
diff(w4_0(3),dq1);
diff(w4_0(3),dq3);

JA(1,2)
JA(1,4)
JA(2,2)
JA(2,4)
JA(3,2)
JA(3,4)

=
=
=
=
=
=

diff(w4_0(1),dq2);
diff(w4_0(1),dq4);
diff(w4_0(2),dq2);
diff(w4_0(2),dq4);
diff(w4_0(3),dq2);
diff(w4_0(3),dq4);

W4_0 = simplify(JA*transpose([dq1 dq2 dq3 dq4]));

22

%% Simulao
syms t
Lf = 0.4;
L1 = 0.5;
L2 = 0.5;
H = 0.5;
t = linspace(0,10,100);
w1 = 2*pi/10;
q1 = w1*t;
w2 = pi;
q2 = 0.1*sin(w2*t);
q3 = 1 - 0.4*t;
dq3 = 0.4*ones(1,10);
q4 = zeros(1,10);
dq4 = zeros(1,10);
p3_0 = eval(T3_0(1:3,4));
figure(1),
subplot(3,1,1), plot(t,p3_0(1,:),'k'), grid on, xlabel('Tempo
[s]'), ylabel('x [m]')
subplot(3,1,2), plot(t,p3_0(2,:),'k'), grid on, xlabel('Tempo
[s]'), ylabel('y [m]')
subplot(3,1,3), plot(t,p3_0(3,:),'k'), grid on, xlabel('Tempo
[s]'), ylabel('z [m]')

Figure 5 - Scara

23

Centres d'intérêt liés