Ejemplo #1 Teniendo el siguiente sistema realizar la simulación: Analizando el movimiento del robot se define los sistemas de coordenadas de la siguiente manera: En base a los sistemas de coordenadas y aplicando el algoritmo DH se obtienen los parámetros característicos del robot: Estos parámetros son introducidos en el programa de simulación de la siguiente forma: clc %Limpiar todo %Cinemática directa de robot usando los parámetros D-H %1. Resolviendo la matriz de transformación a partir de los parámetros D-H %Crea una articulación %L(n)=Link ([th d a alpha Sigma]) -> Sigma=0 rotación; Sigma=1 prismático q1=0;q2=0;q3=0;q4=0; %Valores iniciales para cada articulación L(1)=Link([q1-(pi/2) 10 0 -pi/2 0]); %1ra Articulacion L(2)=Link([-pi/2 q2 0 pi/2 1]); %2da Articulación L(3)=Link([-pi/2 q3 0 0 1]); %3ra Articulación L(4)=Link([q4 0 0 0 0]); %4° Etapa (Actuador) Rob=SerialLink(L) %Crea la tabla de parámetros D-H Rob.name='Scara'; %Le otorga un nombre al robot t=Rob.fkine([q1 q2 q3 q4]) %devuelve la matriz de transformación %-----------------------------------------------------------------------%2. Simulación del robot creado a partir de los parámetros D-H %Ponemos restricciones de movimiento a cada articulación del robot L(1).qlim = [0 pi]; %Coloca los límites de giro a la articulación L(2).qlim = [0 20]; %Coloca los límites de deslizamiento a la articulación L(3).qlim = [0 20]; %Coloca los límites de deslizamiento a la articulación L(4).qlim = [0 pi]; %Coloca los límites de giro a la articulación Rob.plotopt = {'workspace',... [-80 80 -80 80 0 80]}; %delimita la dimensión del grafico Rob.plot([q1,q2,q3,q4]); %Dibuja el robot en 3D %-----------------------------------------------------------------------%Rob.teach %Añade el control deslizante (Control Manual) %-----------------------------------------------------------------------%3. Simulación de movimiento del robot %Simulación de movimiento for q1=0:0.1:pi %Rotación de q1 Rob.plot([q1,q2,q3,q4]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q2=0:1:20 %Traslación de q2 Rob.plot([q1,q2,q3,q4]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q3=0:1:40 %Rotación de q3 Rob.plot([q1,q2,q3,q4]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q4=0:0.1:pi %Traslación de q4 Rob.plot([q1,q2,q3,q4]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for Simulación: Ejemplo #2 Teniendo el siguiente sistema realizar la simulación: En base a los sistemas de coordenadas y aplicando el algoritmo DH se obtienen los parámetros característicos del robot: Estos parámetros son introducidos en el programa de simulación de la siguiente forma: Clc %Limpiar todo %Cinemática directa de robot usando los parámetros D-H %1. Resolviendo la matriz de transformación a partir de los paramentos D-H %Crea una articulación %L(n)=Link([th d a alpha Sigma]) -> Sigma=0 rotación; Sigma=1 prismático q1=0;q2=0;q3=0;q4=0; %Valores iniciales para cada articulación L(1)=Link([q1 25 0 0 0]); %1ra Articulación L(2)=Link([pi/2 q2 0 pi/2 1]); %2da Articulación L(3)=Link([0 q3 0 0 1]); %3ra Articulación L(4)=Link([q4 15 0 0 0]); %4ta Articulación (Actuador) Rob=SerialLink(L) %Crea la tabla de parámetros D-H Rob.name='Scara'; %Le otorga un nombre al robot t=Rob.fkine([q1 q2 q3 q4]) %devuelve la matriz de transformación %-----------------------------------------------------------------------%2. Simulación del robot creado a partir de los parámetros D-H %Ponemos restricciones de movimiento a cada articulación del robot L(1).qlim = [0 pi]; %Coloca los límites de giro a la articulación L(2).qlim = [0 40]; %Coloca los límites de deslizamiento a la articulación L(3).qlim = [0 30]; %Coloca los límites de deslizamiento a la articulación L(4).qlim = [0 pi]; %Coloca los límites de giro a la articulación Rob.plotopt = {'workspace',... [-80 80 -80 80 0 80]}; %delimita la dimensión del grafico Rob.plot([q1,q2,q3,q4]); %Dibuja el robot en 3D %-----------------------------------------------------------------------% Rob.teach %Añade el control deslizante %-----------------------------------------------------------------------%3. Simulación de movimiento del robot %Simulación de movimiento for q1=0:0.1:pi %Rotación de q1 Rob.plot([q1,q2,q3,q4]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q2=0:1:40 %Traslación de q2 Rob.plot([q1,q2,q3,q4]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q3=0:1:30 %Rotación de q3 Rob.plot([q1,q2,q3,q4]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q4=0:0.1:pi %Traslación de q4 Rob.plot([q1,q2,q3,q4]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for Simulación: Ejemplo #3 Teniendo el siguiente sistema realizar la simulación: En base a los sistemas de coordenadas y aplicando el algoritmo DH se obtienen los parámetros característicos del robot: Estos parámetros son introducidos en el programa de simulación de la siguiente forma: Clc % Limpiar todo %Cinematica directa de robot usando los parametros D-H %1. Resolviendo la matriz de transformacion a partir de los paramentros D-H %Crea una articulacion %L(n)=Link([th d a alpha Sigma]) -> Sigma=0 rotacion; Sigma=1 prismatico q1=0;q2=0;q3=0;q4=-pi/2;q5=0;q6=-pi/2;q7=0;q8=0; %Valores iniciales para cada articulacion L(1)=Link([q1 10 0 pi/2 0]); % Articulacion para rotar el sistema L(2)=Link([q2 0 0 -pi/2 0]); %1ra Articulacion L(3)=Link([q3 40 0 pi/2 0]); %2da Articulacion L(4)=Link([q4-(pi/2) 0 -20 pi/2 0]); %3ra Articulacion L(5)=Link([q5 20 0 -pi/2 0]); %4ta Articulacion L(6)=Link([q6 0 0 pi/2 0]); %5ta Articulacion L(7)=Link([0 q7 0 0 1]); %6ta Articulacion L(8)=Link([q8 0 0 0 0]); % Actuador Rob=SerialLink(L) %Crea la tabla de parametros D-H Rob.name='Scara'; %Le otorga un nombre al robot t=Rob.fkine([q1 q2 q3 q4 q5 q6 q7 q8]) %devuelve la matriz de transformacion %-----------------------------------------------------------------------%2. Simulacion del robot creado a partir de los parametros D-H %Ponemos restircciones de movimiento a cada articulacion del robot L(1).qlim = [0 pi]; % Rotacion del robot para simulacion L(2).qlim = [-pi/2 pi/2]; %Coloca los limites de giro a la articulacion L(3).qlim = [0 pi]; %Coloca los limites de giro a la articulacion L(4).qlim = [-pi/2 0]; %Coloca los limites de giro a la articulacion L(5).qlim = [0 pi]; %Coloca los limites de giro a la articulacion L(6).qlim = [0 pi]; %Coloca los limites de giro a la articulacion L(7).qlim = [0 25]; %Coloca los limites de deslizamiento a la articulacion L(8).qlim = [0 pi]; %Actuador Rob.plotopt = {'workspace',... [-80 80 -80 80 0 80]}; %delimita la dimension del grafico Rob.plot([q1,q2,q3,q4,q5,q6,q7,q8]); %Dibuja el robot en 3D %-----------------------------------------------------------------------%Rob.teach %Añade el control deslizante %-----------------------------------------------------------------------%3. Simulacion de movimieto del robot %Simulacion de movimiento for q1=0:0.1:0 %Rotacion de q1 Rob.plot([q1,q2,q3,q4,q5,q6,q7,q8]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q2=-pi/2:0.1:0 %Rotacion de q2 Rob.plot([q1,q2,q3,q4,q5,q6,q7,q8]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q3=0:0.1:pi/2 %Rotacion de q3 Rob.plot([q1,q2,q3,q4,q5,q6,q7,q8]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q4=-pi/2:0.1:-pi/2 %Rotacion de q4 Rob.plot([q1,q2,q3,q4,q5,q6,q7,q8]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q5=0:0.1:pi %Rotacion de q5 Rob.plot([q1,q2,q3,q4,q5,q6,q7,q8]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q6=-pi/2:0.1:0 %Rotacion de q6 Rob.plot([q1,q2,q3,q4,q5,q6,q7,q8]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q7=0:1:25 %Traslacion de q7 Rob.plot([q1,q2,q3,q4,q5,q6,q7,q8]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for for q8=0:0.1:pi %Rotacion de q8 Rob.plot([q1,q2,q3,q4,q5,q6,q7,q8]); %Grafico de las variables cada 0.01 pause(0.01) end %Fin de ciclo for Simulacion: