Jacobiano
Jacobiano
TEMA
INTEGRANTES
JULIO CEDILLO
NRC: 1389
SANGOLQUÍ
2017
Contenido
TABLA DE ILUSTRACIONES ............................................................................................. 2
TEMA ..................................................................................................................................... 3
OBJETIVO ............................................................................................................................. 3
Objetivo Principal ............................................................................................................... 3
Objetivo Especifico ............................................................................................................ 3
MARCO TEÓRICO ............................................................................................................... 3
Problema cinemático inverso ............................................................................................. 3
Matriz Jacobiana ................................................................................................................. 3
Cinemática directa geométrica de un Robot planar 2R ...................................................... 4
Desarrollo ............................................................................................................................... 6
Código en Matlab para planar 2R ....................................................................................... 6
Código en Matlab planar 3R............................................................................................... 9
Resultados............................................................................................................................. 12
Planar 2R .......................................................................................................................... 12
Planar 3R .......................................................................................................................... 13
CONCLUSIONES ................................................................................................................ 14
RECOMENDACIONES ...................................................................................................... 15
REFERENCIAS ................................................................................................................... 15
TABLA DE ILUSTRACIONES
Ilustración 1: Cinemática directa de un robot planar 2R ........................................................ 4
Ilustración 2: Ingreso de datos .............................................................................................. 12
Ilustración 3: Gráfica de las iteraciones ............................................................................... 12
Ilustración 4: Gráfico punto deseado .................................................................................... 13
Ilustración 5: Ingreso de datos .............................................................................................. 13
Ilustración 6: Gráfico de iteraciones ..................................................................................... 14
Ilustración 7: Gráfico del punto deseado .............................................................................. 14
TEMA
Cinemática inversa mediante matriz Jacobiana
OBJETIVO
Objetivo Principal
Realizar un código en Matlab que permita resolver el problema cinemático inverso de
un robot planar 2R y 3R.
Objetivo Especifico
Simular el movimiento del robot planar hacia un punto definido por el usuario
Comprender el uso de la matriz Jacobiana para resolver el problema cinemático
inverso
MARCO TEÓRICO
Problema cinemático inverso
El objetivo del problema cinemático inverso consiste en encontrar los valores que deben
adoptar las coordenadas articulares del robot q, para que su extremo se posicione y
oriente según una determinada localización espacial.
Matriz Jacobiana
Existen varios tipos de matrices jacobianas entre ellas la matriz geométrica que relaciona
el mundo articular con el mundo cartesiano, en un momento determinado nos permite
obtener la velocidad espacial instantánea en base a la posición y velocidad articular.
Cinemática directa geométrica de un Robot planar 2R
La matriz Jacobiana puede obtenerse a partir de derivar parcialmente las funciones que
componen la cinemática directa, al hacer una diferenciación directa obtenemos una matriz
3x2.
Es posible obtener las variables articulares a partir de las velocidades, es decir resolver el
problema cinemático inverso a través de la matriz jacobiana.
Para ello es necesario invertir la matriz jacobiana, cuando se trata de una matriz cuadrada
se puede realizar la operación directamente.
Al tener matrices no cuadradas se recurre la pseudo inversa por izquierda y por derecha, la
matriz por izquierda se usa cuando el número de ecuaciones es mayor el número de
incógnitas y la matriz pseudo inversa por derecha cuando el número de incógnitas es mayor
al número de ecuaciones.
Matriz pseudo inversa por izquierda se define como:
Las ventajas de resolver el problema cinemático inverso mediante la matriz jacobiana son:
Se puede obtener la matriz jacobiana de cualquier robot serie de forma general
Rápido
Preciso
Robusto
Cada columna de la jacobiana nos informa el cambio que sufre el extremo por la variación
de la variable articular, expresado de otra manera se tiene una variación en base a un
incremento infinitesimal respecto del tiempo:
Con esta expresión se puede plantear la relación inversa y la aproximación lineal de la
relación inversa:
Desarrollo
Después de saber las expresiones que nos son útiles para la resolución del problema
cinemático inverso, se puede implementar un algoritmo en Matlab que minimiza el tiempo
de cálculo y reduce costos de recursos.
%Condiciones iniciales
L1=input('Ingrese la longitud L1: ')
L2=input('Ingrese la longitud L2: ')
%L3=input('Ingrese la longitud L2: ')
q1=input('Ingrese el ángulo inicial Q1: ')
q2=input('Ingrese el ángulo inicial Q2: ')
%q3=input('Ingrese el ángulo inicial Q2: ')
x=input('Ingrese el valor X deseado: ')
y=input('Ingrese el valor Y deseado: ')
% Transformacion a radianes
Q1=q1*pi/180;
Q2=q2*pi/180;
%Q3=q3*pi/180;
W=[1 0 0; 0 1 0; 0 0 1];
Pd = [x;y];
dt =.01;
counter = 0;
% Area de trabajo
r=L1+L2;
ang=0:0.1:2*pi;
xw=r*sin(ang);
yw=r*cos(ang);
plot (xw,yw)
axis equal;
hold on
pause(1)
for i = 0:dt:2 %End time should be adjusted for the desired accuracy
%Jacobiano 2x3
J= [-L1*sin(Q1)-L2*sin(Q1+Q2),-L2*sin(Q1+Q2);
L1*cos(Q1)+L2*cos(Q1+Q2),L2*cos(Q1+Q2)];
Error=[x-xo;y-yo];
plot(0,0,'o')
if (mod(counter,10)==0) %plots every 10 iterations
line([0,Joint1(1)],[0,Joint1(2,1)])
hold on
line([Joint1(1),Joint2(1)],[Joint1(2,1),Joint2(2,1)],'marker','o')
line([Joint2(1),PActual(1)],[Joint2(2,1),PActual(2,1)],'marker','o')
plot(PActual(1),PActual(2),'marker','o')
pause(0.08)
end
%Variacion infinitesimal
DeltaQ = 0.01*inv(J)*Error;
%Calculo nuevos q
Q1 = Q1 + DeltaQ(1);
Q2 = Q2 + DeltaQ(2);
end
pause(1)
close all
%Grafico del punto deseado
if Error<0.1
r=L1+L2;
ang=0:0.1:2*pi;
xw=r*sin(ang);
yw=r*cos(ang);
plot (xw,yw)
axis equal;
hold on
plot(0,0,'o')
line([0,Joint1(1)],[0,Joint1(2,1)])
line([Joint1(1),Joint2(1)],[Joint1(2,1),Joint2(2,1)],'marker','o')
line([Joint2(1),PActual(1)],[Joint2(2,1),PActual(2,1)],'marker','o')
plot(PActual(1),PActual(2),'marker','o')
pause(0.08)
disp('Iteraciones')
disp(counter)
disp('Error')
disp(Error)
else
close all
disp('Punto fuera del area de trabajo')
end
%Condiciones iniciales
L1=input('Ingrese la longitud L1: ')
L2=input('Ingrese la longitud L2: ')
L3=input('Ingrese la longitud L3: ')
q1=input('Ingrese el ángulo inicial Q1: ')
q2=input('Ingrese el ángulo inicial Q2: ')
q3=input('Ingrese el ángulo inicial Q3: ')
x=input('Ingrese el valor X deseado: ')
y=input('Ingrese el valor Y deseado: ')
% Transformacion a radianes
Q1=q1*pi/180;
Q2=q2*pi/180;
Q3=q3*pi/180;
W=[1 0 0; 0 1 0; 0 0 1];
Pd = [x;y];
dt =.01;
counter = 0;
% Area de trabajo
r=L1+L2+L3;
ang=0:0.1:2*pi;
xw=r*sin(ang);
yw=r*cos(ang);
plot (xw,yw)
axis equal;
hold on
pause(1)
for i = 0:dt:3 %End time should be adjusted for the desired accuracy
%Jacobiano 2x3
J= [-L1*sin(Q1)-L2*sin(Q1+Q2)-L3*sin(Q1+Q2+Q3),...
-L2*sin(Q1+Q2)-L3*sin(Q1+Q2+Q3),...
-L3*sin(Q1+Q2+Q3);...
L1*cos(Q1)+L2*cos(Q1+Q2)+L3*cos(Q1+Q2+Q3),...
L2*cos(Q1+Q2)+L3*cos(Q1+Q2+Q3),...
L3*cos(Q1+Q2+Q3)];
Error=[x-xo;y-yo];
plot(0,0,'o')
if (mod(counter,10)==0) %plots every 10 iterations
line([0,Joint1(1)],[0,Joint1(2,1)])
hold on
line([Joint1(1),Joint2(1)],[Joint1(2,1),Joint2(2,1)],'marker','o')
line([Joint2(1),PActual(1)],[Joint2(2,1),PActual(2,1)],'marker','o')
plot(PActual(1),PActual(2),'marker','o')
pause(0.08)
end
%Variacion infinitesimal
DeltaQ = 0.01*pinv(J)*Error;
%Calculo nuevos q
Q1 = Q1 + DeltaQ(1);
Q2 = Q2 + DeltaQ(2);
Q3 = Q3 + DeltaQ(3);
end
pause(1)
close all
%Grafico del punto deseado
if Error<0.1
r=L1+L2+L3;
ang=0:0.1:2*pi;
xw=r*sin(ang);
yw=r*cos(ang);
plot (xw,yw)
axis equal;
hold on
plot(0,0,'o')
line([0,Joint1(1)],[0,Joint1(2,1)])
line([Joint1(1),Joint2(1)],[Joint1(2,1),Joint2(2,1)],'marker','o')
line([Joint2(1),PActual(1)],[Joint2(2,1),PActual(2,1)],'marker','o')
plot(PActual(1),PActual(2),'marker','o')
pause(0.08)
disp('Iteraciones')
disp(counter)
disp('Error')
disp(Error)
else
close all
disp('Punto fuera del area de trabajo')
end
Resultados
Planar 2R
Planar 3R
CONCLUSIONES
Se logró simular el movimiento de un robot planar 2R y 3R, hacia un punto definido
por el usuario con errores menores a 0.1 usando aproximaciones lineales por el
método de Newton, siempre y cuando los puntos se encuentren dentro del área de
trabajo del robot.
Se comprendió como usar la matriz Jacobiana para resolver el problema cinemático
inverso, esta permite calcular las variables articulares de cualquier robot de forma
general y es más precisa.
RECOMENDACIONES
Se recomienda probar si se obtienen iguales o mejores resultados usando otros
métodos de aproximación lineal como el CCD la cual permite resolver el problema
cinemático inverso pero sin el uso de la matriz jacobiana.
Es recomendable verificar que usando la matriz jacobiana se tiene una mejor
aproximación a los puntos deseados, que usando métodos como el geométrico o la
matriz homogénea.
REFERENCIAS
Hernando M. Apuntes de robótica. Universidad Politécnica de Madrid (2017).
Disponible en línea:
http://www.elai.upm.es/moodle/pluginfile.php/3637/mod_resource/content/2/Ca
pitulo6_CinematicaDiferencial.pdf
N.A. Problema cinemático inverso. Disponible en línea:
http://icaro.eii.us.es/descargas/Tema%20_4_%20parte_4_y_ultima.pdf
N.A. Cinemática del robot. Universitas Miguel Hernández. Disponible en línea:
http://isa.umh.es/asignaturas/rvc/tema4.pdf
García F. Velocidades en robots manipuladores. Universidad Autónoma del Estado
de Hidalgo. Disponible en línea:
https://www.uaeh.edu.mx/docencia/P_Presentaciones/tizayuca/electronica_tele/C
inematica_TopicosSelectosRobotica.pdf