Está en la página 1de 15

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA

LICENCIATURA EN INGENIERÍA EN MECATRÓNICA

ROBÓTICA

MARÍA DEL CARMEN CRUZ ROMERO


MATRICULA 201140207
PABLO EMMANUEL SANCHEZ HERNANDEZ
MATRICULA 200810027

DR. JOSÉ LUIS HERNÁNDEZ REBOLLAR


PROYECTO FINAL

30 DE NOVIEMBRE DE 2016
Objetivo

“Obtención de las coordenadas (x,y,z) del efector final del robot, por medio de lectura de
potenciómetros, tarjeta de adquisición de datos (arduino) y el software Matlab.”

Objetivos específicos.

Diseño de un brazo robótico con cuatro ejes de articulación.


Determinar ejes (x,y,z).
Obtener la tabla de parámetros DH
Obtener la matriz de transformación “T” para sistemas de referencia móviles.
Graficar el espacio de trabajo
Hacer la lectura de potenciómetros como un movimiento angular con ayuda de la tarjeta de
adquisición de datos.

Introducción
El presente reporte presenta los resultados del proyecto final, la medición de las posiciones angulares
de un brazo robótico y el cálculo de los sistemas de referencia, vector D y posición del efector final en
el espacio.
El método utilizado consiste en realizar un análisis de la posición, en base a una relación entre las
coordenadas cartesianas, es decir, la posición de un punto en el efector final y su orientación con los
ángulos de las articulaciones

Desarrollo
Diseño del brazo robótico.
El brazo robótico fue realizado con material sintra, se hizo de manera que cumpliera
con los los requisitos en cuanto al número de eslabones y de articulaciones.

Figura 1. Material
Los sistemas de referencia se asignaron siguiendo los puntos vistos en clase para el método DH, con
los ejes Z, apuntando hacía la dirección a la que sale el vástago de cada uno de los potenciómetros.
Eje y

Eje z
Eje x

Eje z

Eje y

Eje z
Eje x

Figura 2. Modelo con los sistemas de referencia definidos

Figura 3. Número de eslabon


A2= 5cm

B1=7.5cm

B3= 4cm

B4=3.5cm

Figura 4. Medidas

B2=1.5cm

Figura 5. Medidas (vista x, y, z)


Tabla de parámetros DH.
ESLABON B1 (cm) T1(grados) A1(cm) A1(grados)
1 7.5 T1 0 90
2 1.5 T2 5 0
3 4 T3 0 0
4 3.5 T4 0 0

Matrices.

Obteniendo las matrices de transformadas para los parámetros de la tabla

Donde la matriz resultante tiene la secuencia de multiplicaciones siguiente:

𝑇𝑇 = 𝑇𝑇 𝑇 𝑇 𝑇𝑇 𝑇𝑇
Cuya multiplicación, queda de la siguiente manera:

Donde; Ti= T_i , θi=Ti y αi = Ai


Siendo las matrices:
a1 = 0;
a2 = 5;
a3 = 0;
a4= 0;

b1 = 7.5;
b2 = 1.5;
b3 = 4;
b4 = 3.5;

A1 = pi/2;
A2 = 0 ;
A3 = 0;
A4 = 0;

Tt1 = [cos(T1),-sin(T1)*cos(A1),sin(T1)*sin(A1),(a1)*cos(T1); sin(T1),cos(T1)*cos(A1) ,-cos(T1)*sin(A1) ,a1*sin(T1); 0


,sin(A1), cos(A1), b1; 0, 0, 0, 1];
Tt2 = [cos(T2),-sin(T2)*cos(A2),sin(T2)*sin(A2),(a2)*cos(T2); sin(T2),cos(T2)*cos(A2) ,-cos(T2)*sin(A2) ,a2*sin(T2); 0
,sin(A2), cos(A2), b2; 0, 0, 0, 1];
Tt3 = [cos(T3),-sin(T3)*cos(A3),sin(T3)*sin(A3),(a3)*cos(T3); sin(T3),cos(T3)*cos(A3) ,-cos(T3)*sin(A3) ,a3*sin(T3); 0
,sin(A3), cos(A3), b3; 0, 0, 0, 1];
Tt4 = [cos(T4),-sin(T4)*cos(A4),sin(T4)*sin(A4),(a4)*cos(T4); sin(T4),cos(T4)*cos(A4) ,-cos(T4)*sin(A4) ,a4*sin(T4); 0
,sin(A4), cos(A4), b4; 0, 0, 0, 1];

Tt= Tt1*Tt2*Tt3*Tt4;

Después de la instrucción eval (Tt) se obtiene:


Tt=
eval(Tt)

ans =

[ cos(T4)*(cos(T3)*(cos(T1)*cos(T2) -
(4967757600021511*sin(T1)*sin(T2))/81129638414606681695789005144064) -
sin(T3)*(cos(T1)*sin(T2) +
(4967757600021511*cos(T2)*sin(T1))/81129638414606681695789005144064)) -
sin(T4)*(cos(T3)*(cos(T1)*sin(T2) +
(4967757600021511*cos(T2)*sin(T1))/81129638414606681695789005144064) +
sin(T3)*(cos(T1)*cos(T2) -
(4967757600021511*sin(T1)*sin(T2))/81129638414606681695789005144064)), -
cos(T4)*(cos(T3)*(cos(T1)*sin(T2) +
(4967757600021511*cos(T2)*sin(T1))/81129638414606681695789005144064) +
sin(T3)*(cos(T1)*cos(T2) -
(4967757600021511*sin(T1)*sin(T2))/81129638414606681695789005144064)) -
sin(T4)*(cos(T3)*(cos(T1)*cos(T2) -
(4967757600021511*sin(T1)*sin(T2))/81129638414606681695789005144064) -
sin(T3)*(cos(T1)*sin(T2) +
(4967757600021511*cos(T2)*sin(T1))/81129638414606681695789005144064)),
sin(T1), 9*sin(T1) + 5*cos(T1)*cos(T2) -
(6209697000026889*sin(T1)*sin(T2))/20282409603651670423947251286016]
[ cos(T4)*(cos(T3)*((4967757600021511*cos(T1)*sin(T2))/81129638414606681695789005144064 +
cos(T2)*sin(T1)) +
sin(T3)*((4967757600021511*cos(T1)*cos(T2))/81129638414606681695789005144064 -
sin(T1)*sin(T2))) +
sin(T4)*(cos(T3)*((4967757600021511*cos(T1)*cos(T2))/81129638414606681695789005144064 -
sin(T1)*sin(T2)) -
sin(T3)*((4967757600021511*cos(T1)*sin(T2))/81129638414606681695789005144064 +
cos(T2)*sin(T1))),
cos(T4)*(cos(T3)*((4967757600021511*cos(T1)*cos(T2))/81129638414606681695789005144064 -
sin(T1)*sin(T2)) -
sin(T3)*((4967757600021511*cos(T1)*sin(T2))/81129638414606681695789005144064 +
cos(T2)*sin(T1))) -
sin(T4)*(cos(T3)*((4967757600021511*cos(T1)*sin(T2))/81129638414606681695789005144064 +
cos(T2)*sin(T1)) +
sin(T3)*((4967757600021511*cos(T1)*cos(T2))/81129638414606681695789005144064 -
sin(T1)*sin(T2))), -cos(T1),
(6209697000026889*cos(T1)*sin(T2))/20282409603651670423947251286016 - 9*cos(T1) +
5*cos(T2)*sin(T1)]
[
cos(T4)*(cos(T2)*sin(T3) + cos(T3)*sin(T2)) + sin(T4)*(cos(T2)*cos(T3) - sin(T2)*sin(T3)),
cos(T4)*(cos(T2)*cos(T3) - sin(T2)*sin(T3)) - sin(T4)*(cos(T2)*sin(T3) + cos(T3)*sin(T2)),
4967757600021511/81129638414606681695789005144064,
5*sin(T2) + 15/2]
[
0,
0, 0, 1]

>>

SIMPLIFICACION DE Tt
Usando el comando simplify de matlab
sim= eval(Tt);

>> simplify (sim)

ans =

[ (81129638414606686663546605165575*cos(T1 + T2 + T3 +
T4))/162259276829213363391578010288128 + (81129638414606676728031405122553*cos(T1 -
T2 - T3 - T4))/162259276829213363391578010288128,
(81129638414606676728031405122553*sin(T1 - T2 - T3 -
T4))/162259276829213363391578010288128 - (81129638414606686663546605165575*sin(T1 +
T2 + T3 + T4))/162259276829213363391578010288128, sin(T1),
9*sin(T1) + 5*cos(T1)*cos(T2) -
(6209697000026889*sin(T1)*sin(T2))/20282409603651670423947251286016]
[ (81129638414606686663546605165575*sin(T1 + T2 + T3 +
T4))/162259276829213363391578010288128 + (81129638414606676728031405122553*sin(T1 -
T2 - T3 - T4))/162259276829213363391578010288128,
(81129638414606686663546605165575*cos(T1 + T2 + T3 +
T4))/162259276829213363391578010288128 - (81129638414606676728031405122553*cos(T1 -
T2 - T3 - T4))/162259276829213363391578010288128, -cos(T1),
(6209697000026889*cos(T1)*sin(T2))/20282409603651670423947251286016 - 9*cos(T1) +
5*cos(T2)*sin(T1)]
[
sin(T2 + T3 + T4),
cos(T2 + T3 + T4), 4967757600021511/81129638414606681695789005144064,
5*sin(T2) + 15/2]
[
0,
0, 0, 1]

>>
El vector D.
Se obtiene a partir de la matriz Tt en las posiciones dx=Tt(1,4) , dy=Tt(2,4) y dz=Tt(3,4).

dx =

9*sin(T1) + 5*cos(T1)*cos(T2) -
(24838788000107555*sin(T1)*sin(T2))/81129638414606681695789005144064

>>

Dy=
(24838788000107555*cos(T1)*sin(T2))/81129638414606681695789005144064 - 9*cos(T1) +
5*cos(T2)*sin(T1)

>> Dz=
5*sin(T2) + 608472288109550157428235938774079/81129638414606681695789005144064

>>
Figura 5.Espacio de trabajo

Figura 6. Plano x-y


Esos valores son capturados por Matlab y evaluados en el vector D. Utilizando los
programas A-1, A-3 y A-4 de la sección de anexos; se hicieron tres puntos de
prueba para diferentes ángulos de Ti.
1. Con T1 = T2 = T3 = T4 =0° (posición de Home).

El punto del efector final en el espacio, corresponderá a:


P= (a2, -b2-b3, b1-b4) = (5cm, -5.5cm, 4cm)
Vector D (Ti= 0 grados) aprox

2. T1 = T2 = T3 = T4 = 90°
El punto del efector final en el espacio, es:
P= (b2+b3, 0, b1+a2+a4) = (5.5cm, 0, 5cm)
Figura 7. Vector D y dibujos del brazo

Figura 8. Vector D y dibujos del brazo en lados contrarios


Referencias.
Introducción a la robótica, Subir Kumar Saha, Indian Institute of Technology,
McGraw-Hill 2010
Anexos.
ESPACIO DE TRABAJO
grados = 310 ;resolucion = 10;
i=1;
x=[];
y=[];
z=[];
%Final=zeros(1048577,7);
for T1 = 0:resolucion:(grados)
for T2 = 0:resolucion:(grados)
for T3 = 0:resolucion:(grados)
for T4 = 0:resolucion:(grados)
[x(i),y(i),z(i)]= wTt(T1,T2,T3,T4);
%Final(i)= [T1,T2,T3,T4,[x(i),y(i),z(i)]];
i=i+1;
end
end
end
end
plot3(x,y,z,'.','Markers',3)
%xlswrite('Cinematica.xls',Final)
axis([-25 25 -25 25 -2 25])
grid('on')
xlabel('x')
ylabel('y')
zlabel('z')

Funcion para evaluar espacio de trabajo


function [x,y,z] = wTt(T1,T2,T3,T4)

T1=T1*(2*pi/360);
T2=T2*(2*pi/360);
T3=T3*(2*pi/360);
T4=T4*(2*pi/360);

x = 9*sin(T1) + 5*cos(T1)*cos(T2) -
(24838788000107555*sin(T1)*sin(T2))/81129638414606681695789005144064;
y = (24838788000107555*cos(T1)*sin(T2))/81129638414606681695789005144064
- 9*cos(T1) + 5*cos(T2)*sin(T1);
z= 5*sin(T2) +
608472288109550157428235938774079/81129638414606681695789005144064;

Evaluación de matriz en valores de la tabla DH


syms T1 T2 T3 T4;
a1 = 0;
a2 = 5;
a3 = 0;
a4= 0;

b1 = 7.5;
b2 = 1.5;
b3 = 4;
b4 = 3.5;

A1 = pi/2;
A2 = 0 ;
A3 = 0;
A4 = 0;

Tt1 = [cos(T1),-sin(T1)*cos(A1),sin(T1)*sin(A1),(a1)*cos(T1);
sin(T1),cos(T1)*cos(A1) ,-cos(T1)*sin(A1) ,a1*sin(T1); 0 ,sin(A1),
cos(A1), b1; 0, 0, 0, 1];
Tt2 = [cos(T2),-sin(T2)*cos(A2),sin(T2)*sin(A2),(a2)*cos(T2);
sin(T2),cos(T2)*cos(A2) ,-cos(T2)*sin(A2) ,a2*sin(T2); 0 ,sin(A2),
cos(A2), b2; 0, 0, 0, 1];
Tt3 = [cos(T3),-sin(T3)*cos(A3),sin(T3)*sin(A3),(a3)*cos(T3);
sin(T3),cos(T3)*cos(A3) ,-cos(T3)*sin(A3) ,a3*sin(T3); 0 ,sin(A3),
cos(A3), b3; 0, 0, 0, 1];
Tt4 = [cos(T4),-sin(T4)*cos(A4),sin(T4)*sin(A4),(a4)*cos(T4);
sin(T4),cos(T4)*cos(A4) ,-cos(T4)*sin(A4) ,a4*sin(T4); 0 ,sin(A4),
cos(A4), b4; 0, 0, 0, 1];

Tt= Tt1*Tt2*Tt3*Tt4;

Interfaz con arduino.


close all
clc
clear all
%% Inicializa el puerto serie

delete(instrfind('Port','COM5'));

s = serial('COM5','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
%Se abre el puerto serial
fopen(s);

i=1;
l1 = line(nan,nan,nan,'Color','g','LineWidth',2);
title('Vector D')
ew=150;
while 1>0 %Inicializa el cronómetro
flushinput(s)
x=[zeros(1,ew)];
y=[zeros(1,ew)];
z=[zeros(1,ew)];
a=zeros(1,4);

for i=1:ew
axis([-20 20 -20 20 -2 20])

while ~strcmp(fscanf(s,'%c',1),'/');
end

a = fscanf(s,'%f,%f,%f,%f')'
[x(i),y(i),z(i)] = wTt(a(1),a(2),a(3),a(4));

PosicionXYZ=[x(i),y(i),z(i)]

set(l1,'YData',y,'XData',x,'ZData',z);
xlabel('x')
ylabel('y')
zlabel('z')
drawnow;
grid on;
end

end

fclose(s); %desconecta al objeto de puerto serial "s" del dispositivo


delete(s);
clear s;

//Brazo robótico_Cuatro grados de libertad + MATLAB

int pot1 = A0;

int pot2 = A1;

int pot3 = A2;

int pot4 = A3;

int p1 = 0;

int p2 = 0;

int p3 = 0;

int p4 = 0;

int s1, s2, s3, s4;

void setup() {

Serial.begin(9600);

void loop() {

s1 = analogRead(pot1); //GRADOS DEL POT 300°

p1 = map(s1, 0, 1023, 0, 310);

s2 = analogRead(pot2);

p2 = map(s2, 0, 1023, 0, 310);

s3 = analogRead(pot3);

p3 = map(s3, 0, 1023, 0, 310);

s4 = analogRead(pot4);
p4 = map(s4, 0, 1023, 0, 310);

Serial.print("/");

Serial.print(p1);

Serial.print(",");

Serial.print(p2);

Serial.print(",");

Serial.print(p3);

Serial.print(",");

Serial.println(p4);

También podría gustarte