Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Robotica ORIENTACION Y LOCALIZACION HERRAMIENTAS
Robotica ORIENTACION Y LOCALIZACION HERRAMIENTAS
Sistema de Coordenadas
La manipulacin de piezas requiere el
cilndrico, esfrico
Matrices de transformaciones: Traslacin y
rotacin. Mtodo de Denavit- Hartenberg.
Cuaternios.
Coordenadas Cartesianas
Se trabaja en un
sistema coordenado
OXYZ.
Cualquier punto a
est expresado por
las componentes
(x,y,z).
Este punto tiene
asociado un vector
p(x,y,z).
Cilndrico
Se trabaja en un
sistema coordenado
OXYZ.
Se utilizan
coordenadas polares
p(r, ,z)
r es la distancia del
origen O al extremo
del vector p.
es el ngulo que forma
el vetor p con el eje
OX.
z representa la
proyeccin sobre el eje
OZ
Esfrico
El vector p(r, ) es el
Ejemplo
Sea el vector en coordenadas cartesianas [2,3,5], encontrar su
Representacin de la Orientacin
Adems de la posicin es necesario definir la
Matriz de rotacin
Sea el sistema de coordenadas
OXY y OUV
Vectores unitarios:
Matriz de rotacin
Si el sistema esta rotado
Como
Entonces
Matriz de rotacin
La matriz de rotacin esta dada por:
Ejemplo
Suponer que para un sistema
de 2 dimensiones Puv=[1,2]
y =90 y 45. Encontrar en
forma grfica las coordenadas
con respecto al sistema xy.
Sol. Para =90
Pxy=[-2, 1].
Para =45
Pxy=[-0.7071,2.1213]
%Cdigo de Matlab
Puv=[1;2];
teta=pi/2;
R=[cos(teta),
sin(teta);sin(teta),cos(teta)];
pxy=R*Puv
pause
teta2=pi/4;
R2=[cos(teta2),sin(teta2);sin(teta2),cos(teta2)];
pxy2=R2*Puv
Rotacin en 3d
Sistema OXYZ
Vectores unitarios
Rotacin en 3d
Rotacin en 3d
La matriz de rotacin R en tres dimensiones es:
Ejemplo Rotacin OY
Encontrar el vector Pxyz, cuando el punto Puvw=[1,1,2],
clear; close;
Puvw=[1;2;3];
Puvw=[1;2;3];
afi=pi/2
afi=pi/4
Ry=[cos(afi),0,sin(afi);
Ry=[cos(afi),0,sin(afi);
0 1 0;
0 1 0;
-sin(afi),0,cos(afi)];
-sin(afi),0,cos(afi)];
Pxyz=Ry*Puvw
Pxyz=Ry*Puvw
Ejemplo Rotacin OX
Ejemplo: Sea el punto Puvw=[1,2,3], referenciado a un
clear; close;
Puvw=[1;2;3];
Puvw=[1;2;3];
afi=pi/2
afi=pi/4
Ry=[cos(afi),0,sin(afi);
Rx=[1,0,0;0,cos(afi),-
0 1 0;
sin(afi);0,sin(afi),cos(afi)];
Pxyz=Rx*Puvw
-sin(afi),0,cos(afi)];
Pxyz=Ry*Puvw
Ejemplo Rotacin OZ
Si se hace una rotacin tomando como eje de giro al OZ, la
Ejemplo Rotacin OZ
Ejemplo: Sea el punto Puvw=[4,6,5], referenciado a un
Varias Rotaciones
Para encontrar la orientacin con respecto a un punto,
Varias Rotaciones
ngulos de Euler
Pare expresar las rotaciones y orientacin
se requieren 9 elementos.
Una alternativa que solo usa 3 ngulos se le
llaman ngulos de Euler.
De lo ngulos de Euler, existen 3
posibilidades, estas son:
ngulos de Euler ZXZ
ngulos de Euler ZYZ
Roll, Pitch and Yaw (Alabeo, cabeceo
guiada) XYZ.
html
Ejemplo
Encontrar la matriz de transformacin con del punto
Coordenadas Homogneas
Las matrices de transformacin homognea se utilizan para:
Representar la posicin y orientacin de un sistema girado y
dimensin 4x4
Representan la transformacin de un vector de coordenadas
homogneas de un sistema a otro.
Esta compuesta por 4 trminos: Escalamiento
, traslacin
rotacin
y perspectiva
.
Coordenadas Homogeneas
Para robtica
Para encontrar el punto con respecto al sistema fijo, se obtiene con:
Traslacin
Supngase un sistema OUVW que
por:
El punto referenciado con respecto
al eje OXYZ es
El punto referenciado con respecto
al eje OXYZ es
Traslacin
Rotacin
Cuando el sistema OUVW
Rotacin
Ejemplo
Ejemplo: Sistema girado 90 con respecto al eje OZ,
encontrar
Solucin:
si
Traslacin y Rotacin
Es la matriz homogenes que se consigue despus de trasladar
Traslacin y Rotacin
Rotacin y Traslacin
Es el resultado de rotar con respecto a un eje fijo y posteriormente
trasladar.
Son 3 las matrices de transformacin homognea. Con respecto al eje z
es:
P1=P2;
P2=rotz(pi/2)*P1;
X=[P1(1),P2(1)];Y=[P1(2),P2(2)]; Z=[P1(3),P2(3)];
L4=line(X,Y,Z,'Color','c','LineWidth',4)
pause
%Modifica un objeto
Z=get(L4,'zdata');
Z=Z+1;
set(L4,'zdata',Z)
pause
Z=Z-1;
set(L4,'zdata',Z)
%Objeto Cuadro. Lo manipula
Cuadro=[L1;L2;L3;L4];
manipulaObjeto(Cuadro,rotz(pi/4));
for r=0:pi/10:2*pi
manipulaObjeto(Cuadro,rotz(r));
end
Funcin: manipulaObjeto
function Objeto = manipulaObjeto(Dato1,Transfor)
%Transfor=rotz(pi/4);
%Dato1=Cuadro
N=size(Dato1);
for i=1:N
Li=Dato1(i);
Xi=get(Li,'xdata');
Yi=get(Li,'ydata');
Zi=get(Li,'zdata');
Pi1=[Xi(1);Yi(1);Zi(1);1];
Pi2=[Xi(2);Yi(2);Zi(2);1];
Pi1=Transfor*Pi1;
Pi2=Transfor*Pi2;
Xi=[Pi1(1);Pi2(1)];
Yi=[Pi1(2);Pi2(2)];
Zi=[Pi1(3);Pi2(3)];
set(Li,'xdata',Xi, 'ydata',Yi,'zdata',Zi);
pause(0.2)
end
Objeto=1;
P1=[1;2;3];
P2=-P1;
N=100;
dt=1/N
i=1;
Close
for t=0:dt:1
temp=(P2-P1)*t+P1;
X2(i)=temp(1);
Y2(i)=temp(2);
Z2(i)=temp(3);
Tiempo2(i)=t;
i=i+1;
subplot(2,2,1), plot(Tiempo2,X2)
grid
subplot(2,2,2), plot(Tiempo2,Y2)
grid
subplot(2,2,3), plot(Tiempo2,Z2)
grid
subplot(2,2,4), plot3(X2,Y2,Z2)
grid
pause(0.1)
end
Ejemplo de Aplicacin
Toolbox de Robtica
Provee varias funciones que son utiles en robtica
especificada
Presionar el boton: Add Folder
Queda listor
Para probar que ha quedado bien instalado dar en la lnea de
Traslacin
>> transl([1 2 3])
ans =
ans =
1.0000
0
0
0
0 0.0000 -1.0000
0
0 1.0000 0.0000
0
0
0
0 1.0000
>>
1
0
0
0
>>
0
1
0
0
0
0
1
0
1
2
3
1
Generacin de un Robot
>> L1=link([0 1 0 0 0],'standard');
>> L2=link([0 1 0 0 0], 'standard');
>> r=robot({L1 L2});
>> L1=link([0 1 0 0 0],'standard');
>> L2=link([0 1 0 0 0], 'standard');
>> r=robot({L1 L2})
1
yz x
r=
Z
0
noname
-1
-2
2
alpha
0.000000
0.000000
theta
1.000000
R
1.000000
R
A
R/P
0.000000
(std)
0.000000
(std)
2
1
0
0
-1
0.000000
0.000000
-1
-2
-2
Manipulacin de un Cubo
pause
clear; close;
for r=0:pi/6:2*pi
Cubo=CreaCubo(largo,Color,Ancho)
RotaCubo(Cubo,rotx(r)*roty(r1)*rotz(r2));
view(3)
pause(0.2)
grid
v=[-largo,largo,-largo,largo,-largo,largo];
axis(10*v);
hold on
rango1=1;
mmm=1
while mmm
r=LimitaRango(rand,rango1)*pi;
r1=LimitaRango(rand,rango1)*pi;
r2=LimitaRango(rand,rango1)*pi;
rx=LimitaRango(rand,rango1)*largo/10;
ry=LimitaRango(rand,rango1)*largo/10;
rz=LimitaRango(rand,rango1)*largo/10;
Pxyz=[rx,ry,rz];
RotaCubo(Cubo,transl(Pxyz)*rotx(r)*roty(r1)*rotz(r2));
pause(0.3)
end
for r1=0:pi/6:2*pi
for r2=0:pi/10:2*pi
end
end
end
Manipulacin de un Cubo
Funcin CreaCubo.m
P1=[largo,-largo,-largo,1]';
Cuadro1=CreaCuadro2(P1,rotz(pi/2),Color,Ancho);
Funcin CreaCuadro2.m
P2=P1;
P2(3)=P2(3)+2*largo;
Cuadro2=CreaCuadro2(P2,rotz(pi/2),'r',4);
pause(0.2)
for i=1:4
La=Cuadro1(i);
Lb=Cuadro2(i);
Xa=get(La,'xdata'); Xb=get(Lb,'xdata');
Ya=get(La,'ydata'); Yb=get(Lb,'ydata');
Za=get(La,'zdata'); Zb=get(Lb,'zdata');
P1=[Xa(1),Ya(1),Za(1),1]'; P2=[Xb(1),Yb(1),Zb(1),1]';
Li(i)=CreaLinea(P1,P2,'b',Ancho);
end
Cubo=[Cuadro1,Cuadro2,Li'];
function Cuadro =
CreaCuadro2(P1,Transfor,Color,Ancho)
P2=Transfor*P1;
L1=CreaLinea(P1,P2,Color,Ancho);
P1=P2;
P2=Transfor*P1;
L2=CreaLinea(P1,P2,Color,Ancho);
P1=P2;
P2=Transfor*P1;
L3=CreaLinea(P1,P2,Color,Ancho);
P1=P2;
P2=Transfor*P1;
L4=CreaLinea(P1,P2,Color,Ancho);
Cuadro=[L1;L2;L3;L4];
Manipulacin de un Cubo
Funcin CreaLinea.m
Funcin RotaCubo.m
function Linea =
CreaLinea(P1,P2,Color,An
cho)
X=[P1(1),P2(1)];
Y=[P1(2),P2(2)];
Z=[P1(3),P2(3)];
Linea=line(X,Y,Z,'Color',
Color,'LineWidth',Ancho)
%Transform=rotz(pi/4);
for i=1:3
for j=1:4
La=Cubo(j,i);
Xa=get(La,'xdata');Ya=get(La,'ydata');Za=get(La,'zdata');
P1=[Xa(1),Ya(1),Za(1),1]';
P2=[Xa(2),Ya(2),Za(2),1]';
P1=Transform*P1; P2=Transform*P2;
Xa=[P1(1),P2(1)];Ya=[P1(2),P2(2)];Za=[P1(3),P2(3)];
set(La,'xdata',Xa,'ydata',Ya,'zdata',Za);
%pause(0.1)
end
end
Cinemtica
La cinemica del robot estudia el
Cinemtica
Codo Abajo
Codo Arriba
Robot Scara
Robot Scara
Robot Scara
Robot Antropomrfico
Robot Antropomrfico
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Los 4 parmetros de D-H dependen nicamente de las caractersticas geomtricas de cada eslabn
y de las articulaciones que le unen con el anterior y el siguiente.
Robot Antropomorfico
for t=0:pi/20:2*pi
clf
%26/Mayo/09
x(k)=xo+radio*cos(t-pi/2);
clear; close;
y(k)=yo+radio*sin(t-pi/2); z(k)=zo;
Long=[50,50,50];0
P0=[x(k),y(k),z(k)];
r=generaAntropo(Long);
Q=CinversaAntropo(P0,Long);
plot(r,Q);
plot(r,[0,0,0]);
hold on
plot3(x,y,z)
i=1;
pause(0.1)
Puntos=[0,0,0;xo,yo,zo;40,-90,60];
k=k+1;
M=size(Puntos);
end
k=1;
P1=[x(k-1),y(k-1),z(k-1)]; P2=[0,0,0];
N=20
Pxy=Traylinea(P1,P2,N);
for i=1:M(1)-1
for j=1:N+1
N=30;
clf
P1=Puntos(i,:); P2=Puntos(i+1,:);
Pxy=Traylinea(P1,P2,N);
P0=Pxy(j,:);
for j=1:N+1
Q=CinversaAntropo(P0,Long);
clf
plot(r,Q);
hold on
P0=Pxy(j,:);
plot3(x,y,z)
Q=CinversaAntropo(P0,Long);
pause(0.1)
plot(r,Q);
hold on
plot3(x,y,z)
pause(0.1)
k=k+1;
end
end
k=k+1;
end
clear; close;
l1=1;l2=1,l3=1;
Long=[l1,l2,l3];
r=generaAntropo(Long);
plot(r,[0,0,0]);
i=1;
escala=10;
P1=[0,0,0]; P2=[1,-1,1];
i=1;
for t=0:escala/20:escala
clf
P=generalinea(P1,P2,t,escala);
Q=CinversaAntropo(P,Long);
tiempo(i)=t;
%subplot(1,2,1),
plot(r,Q); Hold on
plot3(X,Y,Z)
grid
%subplot(1,2,2), plot(tiempo,aq1,tiempo,aq2,tiempo,aq3);
grid
i=i+1;
pause(0.5)
end
Funciones
Cinemtica Inversa del
Robot Antropomrfico
q1=atan2(y,x);
q2=gama-alfa;
q3=acos((c^2-l2^2-l3^2)/(2*l2*l3));
Q=[q1,q2,q3];
for i=1:M(1)-1
N=30;
P1=Puntos(i,:); P2=Puntos(i+1,:);
Pxy=Traylinea(P1,P2,N);
for j=1:N+1
clf
x(k)=Pxy(j,1); y(k)=Pxy(j,2);
z(k)=Pxy(j,3);
P0=Pxy(j,:);
Q=CinversaAntropo(P0,Long);
plot(r,Q);
hold on
plot3(x,y,z)
pause(0.1)
k=k+1;
end
end
Funcin TrayLinea.m
ObjRobot=r;