Está en la página 1de 28

Robótica y Manufactura Integrada

Introducción a la cinemática
Introducción a la cinemática

• Objetivos:

– Explicar el problema de cinemática directa

– Realizar cálculos de cinemática directa en base a


composiciones de operaciones elementales

– Explicar el problema de cinemática inversa

– Resolver problemas de cinemática empleando software


Estructura cinemática de un robot
Cadena cinemática
• Cinemáticamente, un robot se puede representar como una
cadena de eslabones y articulaciones, empezando desde la base
y terminando en la herramienta (efector final).

• Tomando como ejemplo el robot de la diapositiva anterior, se


puede identificar lo siguiente:

• Articulación 1: q1 (acción rotativa)


• Articulación 2: q2 (acción rotativa)
• Articulación 3: q3 (acción traslacional)

• Una articulación permite el movimiento de su eslabón de salida


respecto a su eslabón de entrada.
Problema cinemático
• Dada la estructura tipo cadena de un robot, esto implica un
movimiento relativo desde la base (pasando por todos los
eslabones) hasta llegar a la posición de la herramienta final.

• Podemos preguntarnos:
• ¿Qué configuración de articulaciones (q1, q2, q3, etc.) permite
ubicar (x, y, z) y orientar (φ, θ, ψ) la herramienta de alguna forma
deseada?

• Encontrar la relación que existe entre las articulaciones de un


cierto robot y la posición / orientación de su herramienta final
constituye el problema cinemático.
Problema cinemático
• Cinemática directa: Calcular la posición y orientación de la
herramienta a partir de la configuración de las articulaciones.

• Cinemática inversa: Calcular la configuración de las


articulaciones que se corresponde con una posición y orientación
deseada de la herramienta.
Operaciones matemáticas
• Dada la estructura de un robot y sus accionamientos, las
operaciones matemáticas más importantes a considerar son las
traslaciones y rotaciones (en 2D y 3D).
Traslación en MATLAB
• Escriba la siguiente función en MATLAB:

function r_new = traslacion(r_old, t)


r_new = r_old + t;

• Ejemplo de uso:

r_old = [4; 3];


t = [3; 0.5];
r_new = traslacion(r_old, t)
quiver(0,0,r_old(1),r_old(2),'k'); hold
on
quiver(0,0,r_new(1),r_new(2),'b')
legend('old', 'new')
Rotación 2D en MATLAB
• Escriba la siguiente función en MATLAB:

function r_new = rotacion_2D(r_old, th)


r_new = [cosd(th) -sind(th); sind(th) cosd(th)]*r_old;

• Ejemplo de uso:
r_old = [4; 3];
th = 90;
r_new = rotacion_2D(r_old, th)
quiver(0,0,r_old(1),r_old(2),'k'); hold on
quiver(0,0,r_new(1),r_new(2),'b')
legend('old', 'new')
axis square
axis ([-5 5 -5 5])
Rotación 3D en MATLAB
• Escriba las siguientes funciones en MATLAB:

function r_new = rotacion_x(r_old, th)


r_new = [1 0 0; 0 cosd(th) -sind(th); 0 sind(th) cosd(th)]*r_old;

function r_new = rotacion_y(r_old, th)


r_new = [cosd(th) 0 sind(th); 0 1 0; -sind(th) 0 cosd(th)]*r_old;

function r_new = rotacion_z(r_old, th)


r_new = [cosd(th) -sind(th) 0; sind(th) cosd(th) 0; 0 0 1]*r_old;
Rotación 3D en MATLAB eje X
• Ejemplos de aplicación:
Rotación 3D en MATLAB eje X

r_old = [0; 10; 0];


th = 90;
r_new = rotacion_x(r_old, th)
quiver3(0,0,0,r_old(1),r_old(2),r_old(3),'k'); hold on
quiver3(0,0,0,r_new(1),r_new(2),r_new(3),'b')
xlabel('X'); ylabel('Y'); zlabel('Z')
legend('old', 'new')
Rotación 3D en MATLAB eje Y

• Ejemplos de aplicación:
Rotación 3D en MATLAB eje Y

r_old = [0; 0; 10];


th = 90;
r_new = rotacion_y(r_old, th)
quiver3(0,0,0,r_old(1),r_old(2),r_old(3),'k'); hold on
quiver3(0,0,0,r_new(1),r_new(2),r_new(3),'b')
xlabel('X'); ylabel('Y'); zlabel('Z')
legend('old', 'new')
Rotaciones sucesivas
• Ejemplo de aplicación de rotaciones sucesivas:

• Secuencia: Z(+90°), Y(-90°), Z(-90°)


• Aplica secuencia comenzando desde el final
Ejemplo de aplicación
Ejemplo de aplicación

r_old = [1; 0; 0];


th1 = 90;
th2 = -90;
th3 = -90;
r_new1 = rotacion_z(r_old, th3);
r_new2 = rotacion_y(r_new1, th2);
r_new = rotacion_z(r_new2, th1)
quiver3(0,0,0,r_old(1),r_old(2),r_old(3),'k'); hold on
quiver3(0,0,0,r_new(1),r_new(2),r_new(3),'b')
xlabel('X'); ylabel('Y'); zlabel('Z')
legend('old', 'new')
Caso de estudio: Robot SCARA

• Robot Staubli TS60 Estructura cinemática


Secuencia de operaciones

• Traslación Z (Lz0)
• Rotación Z (q1)
• Traslación X (Lx1)
• Traslación Z (Lz1)
• Rotación Z (q2)
• Traslación X (Lx2)
• Traslación Z (q3)
• Rotación Z (q4)
Código MATLAB Cinemática Directa
Código MATLAB
Lz0 = 0.4; %Articulaciones
Lx1 = 0.4;
Lz1 = 0.1;
Lx2 = 0.3;
q1 = 45; %Rotación
q2 = 60; %Rotación
q3 = 0.2; %Traslación
q4 = 60; %Rotación

r_old = [0; 0; 0]; %TCP


r_new1 = rotacion_z(r_old, q4);
r_new2 = traslacion(r_new1, [0; 0; q3]);
r_new3 = traslacion(r_new2, [Lx2; 0; 0]);
r_new4 = rotacion_z(r_new3, q2);
r_new5 = traslacion(r_new4, [0; 0; Lz1]);
r_new6 = traslacion(r_new5, [Lx1; 0; 0]);
r_new7 = rotacion_z(r_new6, q1);
r_new = traslacion(r_new7, [0; 0; Lz0])
quiver3(0,0,0,r_new(1),r_new(2),r_new(3),'b')
xlabel('X'); ylabel('Y'); zlabel('Z')
Cinemática inversa
• Para el ejemplo desarrollado, la posición del TCP resulta ser:
x_new = [0.2052; 0.5726; 0.7000]

• Utilizaremos un código en MATLAB para encontrar la


configuración de articulaciones que consigan esta posición de la
herramienta, para esto utilizaremos el comando fsolve.
Código MATLAB
function err = ejemplo_scara(q, r_goal)

Lz0 = 0.4;
Lx1 = 0.4;
Lz1 = 0.1;
Lx2 = 0.3;
q1 = q(1); %Valores desconocidos
q2 = q(2);
q3 = q(3);
q4 = q(4);

r_old = [0; 0; 0];


r_new1 = rotacion_z(r_old, q4);
r_new2 = traslacion(r_new1, [0; 0; q3]);
r_new3 = traslacion(r_new2, [Lx2; 0; 0]);
r_new4 = rotacion_z(r_new3, q2);
r_new5 = traslacion(r_new4, [0; 0; Lz1]);
r_new6 = traslacion(r_new5, [Lx1; 0; 0]);
r_new7 = rotacion_z(r_new6, q1);
r_new = traslacion(r_new7, [0; 0; Lz0]);

err = (r_new - r_goal).^2;


Código MATLAB
• En un script diferente:

q0 = rand(4,1);
r_goal = [0.2052; 0.5726; 0.7000];
q_goal = fsolve(@(q) ejemplo_scara(q, r_goal), q0)
Ejercicios para el informe
1. Modifique el código de la diapositiva 17 de tal forma que se
pueda graficar una trayectoria del TCP.
Ejercicios para el informe
2. Para el robot plano de 3 grados de libertad, las ecuaciones de
cinemática directa resultan como sigue:

• Asigne valores adecuados a los eslabones del


• robot y resuelva el problema de cinemática
• inversa para algunos valores deseados de
• (x, y, ϕ) usando MATLAB.

También podría gustarte