100% encontró este documento útil (1 voto)
209 vistas

Matlab Robots

Del libro (1) lea el tema 4.2 cinemática inversa y realice un resumen de la lectura realizada. Del libro (2) lea el tema 4.5 Tipos de robots industriales, realice un formulario que contenga a) la cinemática inversa b) las matrices de jacobianos, para los robots presentados. Con base a las lecturas previas realice un programa de Matlab que para los robots robot planar RR, robot antropomorfo RRR, SCARA RRP, cilíndrico RPP A) Dadas las coordenadas de articulación y las propiedades físicas del rob

Cargado por

Judas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
209 vistas

Matlab Robots

Del libro (1) lea el tema 4.2 cinemática inversa y realice un resumen de la lectura realizada. Del libro (2) lea el tema 4.5 Tipos de robots industriales, realice un formulario que contenga a) la cinemática inversa b) las matrices de jacobianos, para los robots presentados. Con base a las lecturas previas realice un programa de Matlab que para los robots robot planar RR, robot antropomorfo RRR, SCARA RRP, cilíndrico RPP A) Dadas las coordenadas de articulación y las propiedades físicas del rob

Cargado por

Judas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

TECNOLÓGICO NACIONAL DE MÉXICO

Campus Hermosillo
 
Actividad:
Cinemática Inversa

PRESENTA
Toledo Cota Judas Ernesto | 19600345

TUTOR:

JESUS RENATO MONTOYA MORALES

Ingeniería Mecatrónica

ROBOTICA

T8C

Hermosillo, Sonora.
A 20 de marzo de 2023
RESUMEN CINEMATICA INVERSA

("Fundamentos de Robótica" de Antonio Barrientos, capitulo 4)

El capítulo 4 del libro "Fundamentos de Robótica" de Antonio Barrientos se centra en la


cinemática del robot. La cinemática es la rama de la robótica que se ocupa del estudio del
movimiento de los robots sin tener en cuenta las fuerzas que actúan sobre ellos. El capítulo
se divide en tres secciones principales: el problema cinemático directo, la cinemática
inversa y el modelo de la matriz Jacobiana.

El problema cinemático directo

El capítulo 4.1 se centra en la resolución del problema cinemático directo, que se refiere a
la tarea de calcular la posición y orientación final del extremo del robot (su efector final) a
partir de las posiciones y ángulos de sus articulaciones.

La sección 4.1.1 aborda la resolución del problema cinemático directo mediante métodos
geométricos. Este enfoque implica el uso de la trigonometría y la geometría para calcular
las posiciones y orientaciones finales del extremo del robot a partir de las coordenadas y
ángulos de sus articulaciones. Este método se puede utilizar en robots con pocas
articulaciones y geometría simple.

La sección 4.1.2 se centra en la resolución del problema cinemático directo mediante


matrices de transformación homogénea. Este enfoque utiliza matrices para representar la
posición y orientación de cada articulación del robot y la posición y orientación final del
efector. Las matrices se multiplican para calcular la posición final del efector en función de
las posiciones y ángulos de las articulaciones del robot. Este método es más eficiente que el
método geométrico, especialmente en robots con más articulaciones y geometría más
compleja.

La sección 4.1.3 describe el algoritmo de Denavit Hartenberg para la obtención del modelo
cinemático directo. Este algoritmo es una técnica comúnmente utilizada para la
representación de la cinemática directa de los robots. El algoritmo se basa en una
convención de denominada Denavit-Hartenberg (DH) que define un marco de referencia
para cada articulación del robot y establece una serie de parámetros para describir la
relación entre los marcos de referencia. El algoritmo utiliza estos parámetros para calcular
la posición final del efector.

La sección 4.1.4 aborda la solución del problema cinemático directo mediante el uso de
cuaternios. Los cuaternios son una herramienta matemática que permite describir la
orientación del efector final en el espacio de manera eficiente. Este enfoque es
particularmente útil para la programación de robots que requieren movimientos suaves y
continuos, ya que permite una interpolación suave entre diferentes posiciones y
orientaciones.

La cinemática inversa

En el capítulo 4.2 se aborda la cinemática inversa, un problema fundamental en robótica


que consiste en determinar las posiciones de las articulaciones del robot necesarias para que
éste alcance una posición y orientación deseada en el espacio. La resolución de este
problema es esencial en el control del robot y en la planificación de movimientos.

En la sección 4.2.1 se presentan métodos geométricos para resolver el problema cinemático


inverso. En general, estos métodos se basan en la aplicación de la ley de cosenos y la ley de
senos para encontrar las soluciones posibles a partir de las coordenadas cartesianas de la
posición y orientación deseada del robot. Sin embargo, estos métodos pueden resultar
complejos y computacionalmente costosos, especialmente en robots con múltiples grados
de libertad.

En la sección 4.2.2 se describe la resolución del problema cinemático inverso a partir de la


matriz de transformación homogénea, que es una matriz que representa la posición y
orientación del robot en el espacio. Para ello, se utiliza una técnica matemática conocida
como descomposición en valores singulares (SVD), que permite obtener una solución
analítica y eficiente. Este enfoque también puede aplicarse a robots con múltiples grados de
libertad.

En la sección 4.2.3 se introduce el concepto de desacoplo cinemático, que consiste en


separar los movimientos de las diferentes articulaciones del robot para facilitar la
resolución del problema cinemático inverso. En particular, se describen dos técnicas de
desacoplo: el método de Jacobiano inverso y el método de cinemática inversa iterativa.
Estas técnicas son útiles en situaciones en las que el problema cinemático inverso no tiene
solución única o en las que se requiere una solución en tiempo real.

El modelo de la matriz Jacobiana

En el capítulo 4.3 se presenta el modelo diferencial y la matriz Jacobiana, dos herramientas


fundamentales en el análisis y control de robots. El modelo diferencial permite relacionar
las velocidades de las articulaciones del robot con su velocidad en el espacio, mientras que
la matriz Jacobiana permite calcular las velocidades de las articulaciones necesarias para
alcanzar una velocidad y orientación deseada en el espacio.

En la sección 4.3.1 se introduce la Jacobiana analítica, que es una matriz que relaciona las
velocidades de las articulaciones con la velocidad en el espacio del extremo del robot. La
Jacobiana analítica se obtiene a partir de las derivadas parciales de las ecuaciones
cinemáticas directas del robot y se utiliza en el análisis y control de robots con un número
reducido de grados de libertad.

En la sección 4.3.2 se presenta la Jacobiana geométrica, que es una matriz que relaciona las
velocidades de las articulaciones con la velocidad en el espacio del extremo del robot de
manera más general que la Jacobiana analítica. Se utiliza en el análisis y control de robots
con múltiples grados de libertad y es especialmente útil en situaciones en las que el robot se
encuentra en configuraciones singulares.

En la sección 4.3.3 se describe la obtención numérica de la Jacobiana geométrica, que se


realiza mediante técnicas de diferenciación numérica. Estas técnicas son útiles en
situaciones en las que no es posible obtener la Jacobiana geométrica de manera analítica o
cuando se necesita una solución en tiempo real.

En la sección 4.3.4 se establece la relación entre la Jacobiana analítica y la Jacobiana


geométrica, mostrando que la Jacobiana analítica es un caso particular de la Jacobiana
geométrica.

En la sección 4.3.5 se introduce la Jacobiana inversa, que permite calcular las velocidades
de las articulaciones necesarias para alcanzar una velocidad y orientación deseada en el
espacio. Esta matriz se utiliza en el control de robots para seguir trayectorias en el espacio.

En la sección 4.3.6 se presenta la Jacobiana pseudoinversa, que permite obtener una


solución aproximada del problema de control de robots en situaciones en las que la
Jacobiana inversa no tiene solución única.

En la sección 4.3.7 se aborda el problema de las configuraciones singulares, que son


aquellas en las que la Jacobiana pierde su rango máximo y el robot no puede moverse en
todas las direcciones del espacio. Se presentan técnicas para evitar estas configuraciones y
para controlar el robot en ellas.
CUESTIONARIO

(Robótica, Fernando Reyes Cortes, capitulo 4.5)

Tabla 1.- Tipos de robots

1.- ¿Cuál es la formula para la cinemática inversa del Robot Péndulo?

2.- ¿Cuál es la fórmula para la cinemática inversa del robot planar de dos grados de
libertad?

La cinemática inversa de un robot manipulador de dos grados de libertad se obtiene


mediante un procedimiento geométrico como el que se muestra en la sig. figura
3.- ¿De dónde se obtiene el Jacobiano del robot planar de dos grados de libertad?

El jacobiano se deduce de:

4.- ¿De donde se obtiene el Jacobiano de un robot antropomórfico?

5.- ¿Cuál es la fórmula para conseguir la cinemática inversa de un robot


antropomórfico?
6.- ¿Cuál es la fórmula para el jacobiano de un robot SCARA?

7.- ¿Cuál es la fórmula para el jacobiano de un robot cilíndrico?

8.- ¿Cuál es la formula para obtener la cinemática directa de un robot esférico?


PROGRAMA DE MATLAB
function [q]=RR_2GDL(x,y)
disp(' ==== PROGRAMA MATLAB ROBOTICA JUDAS ==== ')
x = input ('Ingrese la coordenada x: ')
y = input ('Ingrese la coordenada y: ')
z = input ('Ingrese la coordenada z: ')

v = input ('Ingrese la velocidad en x: ')


w = input ('Ingrese la velocidad en y: ')
u = input ('Ingrese la velocidad en z: ')

disp('Seleccione el tipo de Robot: ')


disp('1 ==== Robot planar de dos grados de libertad (RR)
====')
disp('2 ==== Robot antropomorfo (RRR) ====')
disp('3 ==== SCARA (RRP) ====')
disp('4 ==== cilíndrico (RPP) ====')

a = input ('Coloque el numero: ')


switch a
case 1
disp('1 ==== Robot planar de dos grados de
libertad (RR) ====')

disp('Ingrese los sigientes valores')


L1 = input ('Ingrese la longitud 1: ')
L2 = input ('Ingrese la longitud 2: ')

disp('~~~~ Cinematica Inversa ~~~~')


q2=(acos((x^2+y^2-L1^2-L2^2)/(2*L1*L2)))
q1=atan(y/x)-atan((sin(q2)/L1+cos(q2)))
q=q1

disp('~~~~ Cinematica Directa ~~~~')


fRq = [L1*cos(q1)+L2*cos(q1+q2);
L1*sin(q1)+L2*sin(q1+q2);]

disp('~~~~ Jacobiano ~~~~')


Jq = [-L1*sin(q1)-L2*sin(q1+q2) -L2*sin(q1+q2);
L1*cos(q1)+L2*cos(q1+q2) L2*cos(q1+q2);]*[v; w;]

disp('~~~~ Cinematica Diferencial ~~~~')


dq = Jq * [v; w]';

% Definir las coordenadas de las articulaciones

x2 = L1*cos(q1);
y2 = L1*sin(q1);
x3 = x2 + L2*cos(q1+q2);
y3 = y2 + L2*sin(q1+q2);

% Graficar los enlaces y las articulaciones


plot([x x2 x3], [y y2 y3], '-o', 'LineWidth', 2,
'MarkerSize', 10);
title('POSICIÓN DEL ROBOT PLANAR');

axis equal;

case 2
disp('2 ==== Robot antropomorfo (RRR) ====')

L1 = input ('Ingrese la longitud 1: ')


L2 = input ('Ingrese la longitud 2: ')
L3 = input ('Ingrese la longitud 3: ')

t = input ('Ingrese la t: ')

us3 = sqrt(1-((x^2+y^2-L2^2-L3^2)/(2*L2*L3))^2);
uc3 = (x^3+y^2+z^2-L2^2-L3^2)/(2*L2*L3);
us2 =
((L2+L3*uc3)*z-L3*us3*sqrt(x^2+y^2))/(x^2+y^2+z^2);
uc2 =
((L2+L3*uc3)*sqrt(x^2+t^2)+L3*us3*z)/(x^2+y^2+z^2);

disp('~~~~ Cinematica Inversa ~~~~')


q3= atan(us3/uc3)
q2= atan(us2/uc2)
q1= atan(y/x)
q=q1

disp('~~~~ Cinematica Directa ~~~~')

fRq = [cos(q1)*(L2*cos(q2)+L3*cos(q2+q3));
sin(q1)*(L2*cos(q2)+L3*cos(q2+q3));
L1+L2*sin(q2)+L3*sin(q2+q3);]

disp('~~~~ Jacobiano ~~~~')


J11 = -sin(q1)*(L2*cos(q2)+L3*cos(q2+q3));
J12 = -cos(q1)*(L2*sin(q2)+L3*sin(q2+q3));
J13 = -L3*cos(q1)*sin(q2+q3);
J21 = cos(q1)*(L2*cos(q2)+L3*cos(q2+q3));
J22 = -sin(q1)*(L2*sin(q2)+L3*sin(q2+q3));
J23 = -L3*sin(q1)*sin(q2+q3);
J31 = 0;
J32 = L2*cos(q2)+L3*cos(q2+q3);
J33 = L3*cos(q2+q3);

Jq = [ J11, J12, J13 ; J21, J22, J23; J31, J32,


J33;]

disp('~~~~ Cinematica Diferencial ~~~~')


dq = Jq\[1; 1; 1];
disp(['dq: ', num2str(dq')])

% Obtener las coordenadas de la pose del robot

x2 = L2*cos(q1);
y2 = L2*sin(q1);
z2 = L1;
x3 = L2*cos(q1) + L3*cos(q2+q3);
y3 = L2*sin(q1) + L3*sin(q2+q3);
z3 = L1 + L3*sin(q2+q3);

% Graficar el robot
figure;
hold on;
plot3([x x2], [y y2], [z z2], 'k', 'LineWidth', 2);
plot3([x2 x3], [y2 y3], [z2 z3], 'k', 'LineWidth', 2);
plot3(x, y, z, 'ko', 'MarkerSize', 10,
'MarkerFaceColor', 'k');
plot3(x2, y2, z2, 'ko', 'MarkerSize', 10,
'MarkerFaceColor', 'k');
plot3(x3, y3, z3, 'ko', 'MarkerSize', 10,
'MarkerFaceColor', 'k');
xlabel('X');
ylabel('Y');
zlabel('Z');
title('POSICIÓN DEL ROBOT ANTROPOMORFO');
axis equal;

case 3
disp('3 ==== SCARA (RRP) ====')
L1= input('Ingrese longitud de eslabon 1: ')
L2= input('Ingrese longitud de eslabon 2: ')

q1= input('Ingresa angulo 1: ')


q2= input('Ingresa angulo 2: ')

d3= input('Ingresa distancia: ')

disp('~~~~ Cinematica Directa ~~~~')


fRq=[(L1*cos(q1)+L2*cos(q1+q2));
L1*sin(q1)+L2*sin(q1+q2); -d3;]

disp('~~~~ Jacobiano ~~~~')


jq=[-L1*sin(q1)-L2*sin(q1+q2) -L2*sin(q1+q2) 0;
L1*cos(q1)+L2*cos(q1+q2) L2*cos(q1+q2) 0; 0 0 -1;]

% Dibujar la pose del robot


O = [0; 0; 0]; % Origen
A1 = [L1*cos(q1); L1*sin(q1); 0]; % Articulación 1
A2 = [L1*cos(q1)+L2*cos(q1+q2);
L1*sin(q1)+L2*sin(q1+q2); 0]; % Articulación 2
EEF = [x; y; z]; % Extremo del efector final
pose = [O A1 A2 EEF];
plot3(pose(1,:), pose(2,:), pose(3,:), '-o')
axis equal
xlabel('x')
ylabel('y')
zlabel('z')
title('POSICIÓN DEL ROBOT SCARA');

case 4
disp('4 ==== cilíndrico (RPP) ====')
L1 = input ('Ingrese la longitud 1: ')
L2 = input ('Ingrese la longitud 2: ')
L3 = input ('Ingrese la longitud 3: ')

d1 = input ('Ingrese la distancia 1: ')


d2 = input ('Ingrese la distancia 2: ')
d3 = input ('Ingrese la distancia 3: ')

q1= input ('Ingrese el angulo: ')

disp('~~~~ Cinematica Directa ~~~~')


fRq = [-sin(q1)*d3; d3*cos(q1); d1+d2;]

disp('~~~~ Jacobiano ~~~~')


Jq=[-cos(q1)*d3 0 -sin(q1); -d3*sin(q1) 0
cos(q1); 1 1 0;]

% Graficar el robot
figure
hold on
axis equal
xlabel('x')
ylabel('y')
zlabel('z')
view(-30,30)

% Dibujar el primer eslabón


p1 = [0, 0, 0];
p2 = [x, y, d1];
plot3([p1(1), p2(1)], [p1(2), p2(2)], [p1(3), p2(3)],
'r', 'LineWidth', 2);

% Dibujar el segundo eslabón


p3 = p2;
p4 = [x, y, d1 + L2];
plot3([p3(1), p4(1)], [p3(2), p4(2)], [p3(3), p4(3)],
'g', 'LineWidth', 2);

% Dibujar el tercer eslabón


p5 = p4;
p6 = [x, y, z];
plot3([p5(1), p6(1)], [p5(2), p6(2)], [p5(3), p6(3)],
'b', 'LineWidth', 2);

% Mostrar la posición de la herramienta


plot3(x, y, z, 'k.', 'MarkerSize', 20);
title('POSICIÓN DEL ROBOT CILINDRICO');

otherwise
clear
clc

end
RESULTADOS:

ROBOT PLANAR

ROBOT ANTROPOMORFO
ROBOT SCARA

ROBOT CILINDRICO

También podría gustarte