Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2017
Mini-Curso:
Fundamentos de
Robótica
Ph.D. César Augusto Peña Cortés
Universidad de Pamplona
1
LACAR 2017
Contenido
• Introducción
• Herramientas matemáEcas
• CinemáEca Directa
• CinemáEca Inversa
2
Nota: Este material esta diseñado para solo dos horas y media, dada la amplitud de los
temas su profundidad se encuentra notablemente limitada (curso introductorio)
LACAR 2017
HERRAMIENTAS
MATEMÁTICAS
3
LACAR 2017
Localización Espacial
4
Representación de la posición
Vector de posición en coordenadas
• Cartesianas
• Cilíndricas
• Esféricas
5
Ejercicio:
Obtener las componentes de los vectores U y V sobre los ejes
coordenados X, Y. Teniendo en cuenta los vectores unitarios ix, jy y
conociendo que que U y V son ortogonales.
U = ( U cos(θ )) i x + ( U sen(θ )) jy
U = ( U • i x ) i x + ( U • jy ) jy
V = ( V cos(90 + θ )) i x + ( V sen(90 + θ )) jy 6
V = ( V • i x ) i x + ( V • jy ) jy
V = (− V sen(θ )) i x + ( V cos(θ )) jy
Representación de la Orientación Mediante
Matrices de Rotación. Caso 2D
7
Representación de la Orientación Mediante
Matrices de Rotación. Caso 2D
P = pui u + pv jv P = px i x + py jy
pu = P ⋅ i u px = P ⋅ i x 8
pv = P ⋅ jv py = P ⋅ jy
€ €
Representación de la Orientación Mediante
Matrices de Rotación. Caso 2D
9
Representación de la orientación mediante
Matrices de Rotación. Caso 2D
P = px i x + py jy P = pui u + pv jv
px = P ⋅ i x = ( pui u + pv jv ) ⋅ i x
py = P ⋅€jy = ( pui u + pv jv ) ⋅ jy
€
Representación de la Orientación Mediante
Matrices de Rotación. Caso 3D
11
Matrices de Rotación. Composición
de Rotaciones
Concatenación de rotaciones Multiplicación de matrices
12
Matrices de Rotación. Interpretación
Geométrica
Si {xyz}R{uvw} representa la matriz de rotación que relaciona el sistema {UVW}
con el sistema {XYZ}
ux vx wx
{xyz}R
{uvw} = uy vy wy
uz vz wz
13
Matrices de Rotación.
Interpretación Geométrica
ux vx wx 0 0 1
{xyz}R
{uvw} = uy vy wy = 0 -1 0
uz vz wz 1 0 0
14
Representación conjunta
mediante matrices
15
Matrices de transformación homogénea
• Matriz 4x4 que representa la transformación de un vector en coordenadas
homogéneas de un sistema de coordenadas a otro
⎡ R 3x3 p3x1⎤ ⎡ Rotacion Traslacion⎤
T=⎢ ⎥=⎢ ⎥
⎢⎣ f 1x3 w1x1⎥⎦ ⎣ Perspectiva Escalado ⎦
• R3x3: matriz de rotación
• p3x1: vector de traslación
• f1x3: transformación de perspecEva ((0,0,0) en el caso de robóEca)
• w1x1: escalado global (1 en el caso de robóEca)
! $
# Rotación 3x3 Traslación 3x1 &
T= 16
# 0 0 0 1 &
" %
MTH Para la Nigura de abajo, encuentre las matrices de transformación de
4x4 y para i=1, 2, 3, 4, 5
i −1 0
Ai Ai
⎡ nx sx ax px ⎤
⎢n sy ay p y ⎥⎥ " %
F =⎢ y −1 0 0 0
⎢ nz sz az pz ⎥ $ '
0 0 −1 e + c
⎢ ⎥ 0
A1 = $ '
⎣0 0 0 1⎦ $ 0 −1 0 a − d '
c $ 0 0 0 1 '
# &
z3
b y3
⎡0 − 1 0 b ⎤
x3 ⎢0 0 − 1 a − d ⎥
z5 d
1
x5
A2 = ⎢ ⎥
⎢1 0 0 0 ⎥
y5 z4 ⎢ ⎥
e
⎣ 0 0 0 1 ⎦
a x4 y4 z2 ⎡0 1 0 −b ⎤
x2 ⎢− 1
z1 x1 y2 0 0 0 e + c ⎥⎥
A2 = ⎢ 17
z0
y1
⎢0 0 1 0 ⎥
⎢ ⎥
x0
y0 ⎣0 0 0 1 ⎦
Aprender Haciendo
18
Representación de un Sistema
por medio de MTHs
20
Representación de un Sistema
por medio de MTHs
22
Traslación: Pre-multiplicación
0
A2 = MTHtray(300) 0 A1
! 1 0 0 0 $! −1 0 0 250 $ ! −1 0 0 250 $
# &# & # &
0
A2 = #
0 1 0 300 &# 0 0 1 100 & # 0 0 1 400 &
= 23
# 0 0 1 0 &# 0 −1 0 50 & # 0 −1 0 50 &
# 0 0 0 1 &%#" 0 0 0 1 &% #" 0 0 0 1 &%
"
Traslación: Pre-multiplicación
% Diap_Traslacion.m!
!
clear, close all, clc!
f1 = figure(1), set(f1, 'Color', [1,1,1]), clf!
A00 = eye(4);!
A01 = [-1, 0, 0, 250;!
0, 0, 1, 100;!
0, -1, 0, 50;!
0, 0, 0, 1];!
A02 = MTHtrasy(300)*A01;!
dibujar_sistema_referencia_MTH(A00, 70, 5, '0');!
dibujar_sistema_referencia_MTH(A01, 70, 5, '1');!
dibujar_sistema_referencia_MTH(A02, 70, 5, '2');!
view(40,20);, grid on;, hold on;!
24
Traslación: Pos-multiplicación
0
A2 = 0 A1MTHtray(300)
26
Rotación: Pre-multiplicación
0
A2 = MTHrotz(π ) 0 A1
28
Rotación: Pos-multiplicación
0
A2 = 0 A1MTHrotz(π )
30
Concatenación MTH
1. Traslación a lo largo del eje x fijo 250 unidades
2. Rotación alrededor del eje z fijo un ángulo de 180 grados
3. Traslación a lo largo del eje y móvil 400 unidades
1
0
A1 = MTHtrasx(250)
2 1
0
A2 = MTHrotz(π )MTHtrasx(250)
2 1 3
0
A3 = ( MTHrotz(π )MTHtrasx(250)) MTHtrasy(400)
Concatenación MTH
% Diap_Concatenacion.m!
!
clear, close all, clc!
f1 = figure(1), set(f1, 'Color', [1,1,1]), clf!
A00 = eye(4);!
A01 = MTHtrasx(250);!
A02 = MTHRotz(pi)*MTHtrasx(250);!
A03 = MTHRotz(pi)*MTHtrasx(250)*MTHtrasy(400);!
dibujar_sistema_referencia_MTH(A00, 70, 5, '0');!
dibujar_sistema_referencia_MTH(A01, 70, 5, '1');!
dibujar_sistema_referencia_MTH(A02, 70, 5, '2');!
dibujar_sistema_referencia_MTH(A03, 70, 5, '3');!
view(40,60);, grid on;, hold on;!
!
axis([-400 400 -500 300 0 80]);!
!
32
Generar animaciones del movimiento
usando MTH
33
Traslación de un sistema coordenado
alrededor de su eje z
34
Traslación de un sistema coordenado
alrededor de su eje z
% Ejemplo_Animacion_traslacion_MTH_1.m!
%!
clear, close all, clc!
!
% Color de fondo!
f1 = figure(1), set(f1, 'Color', [1,1,1]), clf!
!
% traslacion eje Z!
for L=0:2:50 !
figure(1), clf;!
A00 = eye(4);!
A = MTHtrasz(L); !
dibujar_sistema_referencia_MTH(A00, 25, 5, '0');!
dibujar_sistema_referencia_MTH(A, 25, 5, '1'); !
axis([ -60 60 -60 60 -60 80]);!
grid on;!
view(40,20), camlight(40,20);, lighting phong;!
pause(0.2) !
end!
! 35
Traslación de un sistema coordenado
alrededor de su eje x móvil (conEnuación)
36
Traslación de un sistema coordenado
alrededor de su eje x móvil (conEnuación)
% Ejemplo_Animacion_traslacion_MTH_2.m!
%!
clear, close all, clc!
!
% Color de fondo!
f1 = figure(1), set(f1, 'Color', [1,1,1]), clf!
!
% traslacion eje x (movil)!
for L2=0:2:50!
figure(1), clf;!
A00 = eye(4);!
A = MTHtrasz(50)*MTHtrasx(L2);!
dibujar_sistema_referencia_MTH(A00, 25, 5, '0');!
dibujar_sistema_referencia_MTH(A, 25, 5, '1'); !
axis([ -60 60 -60 60 -60 80]);!
grid on;!
view(40,20), camlight(40,20);, lighting phong;!
pause(0.2) !
end!
! 37
Rotación de un sistema coordenado
alrededor de su eje x móvil (conEnuación)
38
Rotación de un sistema coordenado
alrededor de su eje x móvil (conEnuación)
% Ejemplo_Animacion_MTH.m!
%!
clear, close all, clc!
!
f1 = figure(1), set(f1, 'Color', [1,1,1]), clf!
!
for theta=0:pi/20:2*pi!
!
figure(1), clf;!
A00 = eye(4);!
A = MTHtrasz(50)*MTHtrasx(50)*MTHRotx(theta);!
dibujar_sistema_referencia_MTH(A00, 25, 5, '0');!
dibujar_sistema_referencia_MTH(A, 25, 5, '1');!
!
axis([ -60 60 -60 60 -60 60]);!
grid on;!
view(40,20), camlight(40,20);, lighting phong;!
!
pause(0.2) !
end!
!
39
Dibujar/Importar Geometrías 3D en
Matlab/Octave
40
Dibujar una cara de objeto
%ejemplo dibujo de un triangulo usando la funcion patch!
f3=figure(3), clf, set(f3,'Color',[1, 1, 1]); !
hold on, grid on;!
% Puntos de los vertices de la cara!
p1 = [0,0,0];!
p2 = [1,0,0];!
p3 = [0.5,1,1];!
% Dibuja la Cara!
patchi=patch([p1(1), p2(1), p3(1)], [p1(2), p2(2), p3(2)], ...!
[p1(3), p2(3), p3(3)],'g'); !
% Establece el color de los bordes!
set(patchi, 'EdgeColor', 'k' ); !
xlabel('x','FontSize',15); !
ylabel('y','FontSize',15); !
zlabel('z','FontSize',15); !
view(55,15)!
41
Importar graficos STL a Matlab/Octave
solid ascii!
facet normal 1.000000e+000 0.000000e+000 0.000000e+000!
outer loop!
vertex 2.800000e+001 -1.100000e+001 1.000000e+001!
vertex 2.800000e+001 -1.100000e+001 0.000000e+000!
vertex 2.800000e+001 2.800000e+001 1.000000e+001!
endloop!
endfacet!
facet normal 1.000000e+000 0.000000e+000 0.000000e+000!
outer loop!
vertex 2.800000e+001 2.800000e+001 1.000000e+001!
vertex 2.800000e+001 -1.100000e+001 0.000000e+000!
vertex 2.800000e+001 2.800000e+001 0.000000e+000!
endloop!
endfacet!
...
% fun_stl2matlab.m!
% importa datos de un fichero stl!
% Ejemplo:!
!
!
clear, close all, clc!
objeto_matlab = fun_stl2matlab('cubostl.stl', [1,0,0],1)!
!
43
Dibujar gráNicos importados
!
de STL a Matlab
function dibujar_objeto_matlab_from_stl(objeto,A)!
!
% dibujar_objeto_matlab_from_stl.m!
% Esta funcion dibuja un objeto importado de STL segun la !
% la MTH A!
% Ejemplo:!
clear, close all, clc!
objeto = fun_stl2matlab('fig3d1.stl', [1,0,0],0);!
A = [ 1, 0, 0, 30; ...!
0, cos(pi/6), -sin(pi/6), 20; ...!
0, sin(pi/6), cos(pi/6), 50; ...!
0, 0, 0, 1];!
dibujar_objeto_matlab_from_stl(objeto,A);!
view(40,20), camlight(40,20);, lighting phong; !
44
Rotación de una geometría
alrededor de su eje x (móvil)
45
Rotación de una geometría
alrededor de su eje x (móvil)
% Ejemplo_Animacion_STL.m!
%!
clear, close all, clc!
!
% Carga la geometria en Matlab!
objeto = fun_stl2matlab('fig3d1.stl', [1,0,0],0);!
% Color de fondo!
f1 = figure(1), set(f1, 'Color', [1,1,1]), clf!
!
for theta=0:pi/20:2*pi !
figure(1), clf;!
A00 = eye(4);!
A = MTHtrasz(50)*MTHtrasx(50)*MTHRotx(theta); !
dibujar_sistema_referencia_MTH(A00, 25, 5, '0');!
dibujar_sistema_referencia_MTH(A, 50, 5, '1');!
!
dibujar_objeto_matlab_from_stl(objeto,A);!
!
axis([ -60 60 -60 60 -60 60]);!
grid on;!
view(40,20), camlight(40,20);, lighting phong;!
end!
pause(0.2)! 46
!
Evolución MTH
47
Código: Ejemplo_Animacion_traslacion_Rotacion_STL.m