V2 Dibujar Raplim MNS 2022b EST
V2 Dibujar Raplim MNS 2022b EST
V2 Dibujar Raplim MNS 2022b EST
Ejemplo RAPLIM
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)
datos = importdata(file,'\t');
[nfil,nada]=size(datos);
n_face = 0;
datos_mat=[];
for i = 2:7:nfil-1 % encabezado
n_face = n_face +1;
Cf = textscan(datos{i}, '%s %s %n %n %n');
C1 = textscan(datos{i+2}, '%s %n %n %n');
C2 = textscan(datos{i+3}, '%s %n %n %n');
C3 = textscan(datos{i+4}, '%s %n %n %n');
datos_mat.facet_normal(n_face,:) = [Cf{3} , Cf{4} , Cf{5} ];
datos_mat.vertex1(n_face,:) = [C1{2}, C1{3}, C1{4}];
datos_mat.vertex2(n_face,:) = [C2{2}, C2{3}, C2{4}];
datos_mat.vertex3(n_face,:) = [C3{2}, C3{3}, C3{4}];
end
Importar gráficos STL a Matlab
% 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;
function dibujar_objeto_matlab_from_stl(objeto,A)
for i=1:objeto.n_faces
for j=1:3
p = [ objeto.x(j,i); objeto.y(j,i); objeto.z(j,i); 1];
pa = A*p;
objeto_A.x(j,i) = pa(1);
objeto_A.y(j,i) = pa(2);
objeto_A.z(j,i) = pa(3);
end
end
p=patch(objeto_A.x,objeto_A.y,objeto_A.z,objeto.tcolor);
set(p, 'EdgeColor', 'none' );
Paso 2: Generar animaciones del movimiento de las
geometrías usando MTH
Rotación de un sistema coordenado
alrededor de su eje x
Rotación de un sistema coordenado
alrededor de su eje x
% Ejemplo_Animacion_MTH.m
%
clear, close all, clc
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');
pause(0.2)
end
Rotación de una geometría alrededor de su eje x
Rotación de un sistema coordenado
alrededor de su eje x
% Ejemplo_Animacion_STL.m
%
clear, close all, clc
for theta=0:pi/20:2*pi
figure(1), clf;
A00 = eye(4);
A = MTHtrasz(50)*MTHtrasx(50)*MTHRotx(theta);
dibujar_objeto_matlab_from_stl(objeto,A);
pause(0.2)
end
Paso 3: Dibujar el robot en alambres
Dibujar los sistemas coordenados de los eslabones del robot
Dibujar los sistemas coordenados de los eslabones del robot ( Método no
sistemático
% Diap_raplim_dibujar_robot_alambres_metodo_no_sistematico_part_1.m
clear, close all, clc
% ejemplo_dibujar_lineas.m
%
% Este programa dibuja 3 lineas
% dibujar_linea.m
%
% Esta funcion se encarga de crear una línea entre dos puntos
%
% Ejemplo:
%
% p1 = [-3, -2, 5]; % Punto 1
% p2 = [10, 2, 7]; % Punto 2
% grosor = 3;
% f1=figure(1);, set(f1, 'Color', 'w');
% dibujar_linea(p1,p2,grosor);
% view(50,40);, grid on;
function dibujar_linea(p1,p2,grosor)
% raplim_dibujar_robot_alambres_MNS.m
%
% Esta funcion dibuja el robot en alambres, empleando el metodo no
% sistematico para la localizacion de los sistemas coordenados de los
% eslabones
%
% Ejemplo:
%
% clear, close all, clc
% q = [pi/4,pi/6,pi/7,pi/8]; % Coordenadas articulares del robot
% raplim_dibujar_robot_alambres_MNS(q)
function raplim_dibujar_robot_alambres_MNS(q)
% raplim_cargar_stl.m (Construyendo)
clear, clc, close all
% raplim_dibujar_robot_3D_MNS.m
%
% Esta funcion dibuja el robot en 3D, empleando el metodo no
% sistematico para la localizacion de los sistemas coordenados de los
% eslabones
%
% Ejemplo:
%
% clear, close all, clc
% q = [pi/4,pi/6,pi/7,pi/8]; % Coordenadas articulares del robot
% raplim_dibujar_robot_3D_MNS(q)
% view(130,25), camlight(40,20);, lighting phong;
function raplim_dibujar_3D_alambres_MNS(q)
% transforma_objeto_matlab_from_stl.m
% Esta funcion cambia la localizacion de un objeto importado de STL
% segun la MTH A
% Ejemplo:
% Geometría transformada
% clear, close all, clc
% figure(1);, set(gcf,'Color',[1, 1, 1]);
% objeto = fun_stl2matlab('stl_eslabon2.STL', [1,0,0],0);
% A = MTHtrasz(150)*MTHRotx(pi/2);
% dibujar_objeto_matlab_from_stl(objeto,eye(4));
% objeto = transforma_objeto_matlab_from_stl(objeto,A);
% dibujar_objeto_matlab_from_stl(objeto,eye(4));
% dibujar_sistema_referencia_MTH(eye(4), 225, 5, 'o');
% view(40,20), camlight(40,20);, lighting phong;
Geometría original
function objeto_A = transforma_objeto_matlab_from_stl(objeto,A)
% Ejemplo_Animacion_raplim.m
%
clear;, close all;, clc;
q_ini = [-pi/2;0.7;-0;-0.7]; % Especifica posicion inicial del robot
q_fin = [0; 0; 0; 0]; % Especifica posicion final del robot
n = 20; % Especifica numero de pasos de la animacion
for i=1:n
f1 = figure(1);, clf;, set(f1, 'Color', [1,1,1]);, grid on;
% Coordenadas articulares del robot
q = [vec_q1(i);vec_q2(i);vec_q3(i);vec_q4(i)];
% Dibuja el robot
raplim_dibujar_robot_3D_MNS(q)
view(130,25), camlight(40,20);, lighting phong;
axis([ -100 400 -100 500 -50 300]);
pause(0.2)
end