Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Angulos Euler
Angulos Euler
Autor:
V. J. M. J. / A. M. M. J.
Índice general
Introducción
2.- Matrices de giro con ángulos de Euler en el mismo sentido de las agujas del reloj
3.- Matrices de giro con ángulos de Euler en el sentido opuesto de las agujas del reloj
6. Líneas del algoritmo de la función: rotacion3dejex (Dibujar la rotación de un vector sobre el Eje X de un sistema 3D)
7. Líneas del algoritmo de la función: rotacion3dejey (Dibujar la rotación de un vector sobre el Eje Y de un sistema 3D)
8. Líneas del algoritmo de la función: rotacion3dejez (Dibujar la rotación de un vector sobre el Eje Z de un sistema 3D)
9. Líneas del algoritmo del programa: ROTACION3DEJESXYZN3 (Dibujar la rotación secuencial de un vector sobre el Eje
X, el Eje Y, y el Eje Z de un sistema 3D)
Introducción
Los ángulos de Euler constituyen un conjunto de tres coordenadas angulares que sirven para especificar la orientación de un sistema de referencia de
ejes ortogonales, normalmente móvil, respecto a otro sistema de referencia de ejes ortogonales normalmente fijos.
Fueron introducidos por Leonhard Euler en mecánica del sólido rígido para describir la orientación de un sistema de referencia solidario con un sólido
rígido en movimiento.
Dados dos sistemas de coordenadas xyz y XYZ con origen común, es posible especificar la posición de un sistema en términos del
otro usando tres ángulos α, β y γ.
La definición matemática es estática y se basa en escoger dos planos, uno en el sistema de referencia y otro en el triedro rotado.
En el esquema adjunto serían los planos xy y XY. Escogiendo otros planos se obtendrían distintas convenciones alternativas, las
cuales se llaman de Tait-Bryan cuando los planos de referencia son no-homogéneos (por ejemplo, xy y XY son homogéneos,
mientras xy y XZ no lo son).
La intersección de los planos coordenados xy y XY escogidos se llama línea de nodos, y se usa para definir los tres ángulos:
α es el ángulo entre el eje x y la línea de nodos.
β es el ángulo entre el eje z y el eje Z.
γ es el ángulo entre la línea de nodos y el eje X.
Más adelante se establecerá que los tres ángulos de Euler descritos son los valores de las tres rotaciones intrínsecas que describen
el sistema.
1.- Rotaciones con respecto a los ejes X, Y y Z
2.- Matrices de giro con ángulos de Euler en el mismo sentido de las agujas del reloj
3.- Matrices de giro con ángulos de Euler en el sentido opuesto de las agujas del reloj
% p0, p1, color, ancho son parametros de entrada. Se dibuja una flecha que representa un vector desde p0 a p1
function vector3d(p0,p1,color,ancho)
p = p1-p0; % Restamos los valores del punto final (p1) menos los valores del punto inicial (p0)
alpha = 0.07; % Tamaño de la cabeza de flecha relativo a la longitud del vector
beta = 0.2; % Ancho de la base de la cabeza de flecha relativo a su longitud
p = p1-p0; % Restamos los valores del punto final (p1) menos los valores del punto inicial (p0)
alpha = 0.1; % Tamaño de la cabeza de flecha relativo a la longitud del vector
beta = 0.1; % Ancho de la base de la cabeza de flecha relativo a su longitud
hold on
plot(hu(:),hv(:),color,'LineWidth',ancho) % Se grafica la cabeza de flecha
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Estas lineas se activaran SOLO si se ejecuta la funcion desde el Command Window tal como se sugiere en los comentarios de cabecera%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% grid on
% xlabel('EJE X','Color','r') % Dar nombre al eje X
% ylabel('EJE Y','Color','g') % Dar nombre al eje Y
% hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
else
error('p0 y p1 deben tener las mismas dimensiones') % ALERTA para solo aceptar que p0 y p1 seab de igual extension
end
else
error('ATENCION: Esta funcion solo acepta vectores 2D o 3D') % ALERTA que indica los dos tipos de sistemas vectoriales a graficar
end
Se tipea la funcion vector3d en el Command Window con sus respectivos datos para obtener un vector 2D
function circunferencia1(puntox,puntoy,puntoz,x,y,z,radio,angulo1,angulo2,color,ancho)
if puntoz == 0 & puntoy == 1 & puntox == 1 % Graficamos el circulo en el plano XY (El Eje Z puede tener cualquier valor)
h = x; % Valor del Eje X (Punto central de la circunferencia)
i = y; % Valor del Eje Y (Punto central de la circunferencia)
j = z; % Valor del Eje Z (Punto central de la circunferencia)
end
if puntoz == 1 & puntoy == 0 & puntox == 1 % Graficamos el circulo en el plano XZ (El Eje Y puede tener cualquier valor)
h = x; % Valor del Eje X (Punto central de la circunferencia)
i = y; % Valor del Eje Y (Punto central de la circunferencia)
j = z; % Valor del Eje Z (Punto central de la circunferencia)
end
if puntoz == 1 & puntoy == 1 & puntox == 0 % Graficamos el circulo en el plano YZ (El Eje X puede tener cualquier valor)
h = x; % Valor del Eje X (Punto central de la circunferencia)
i = y; % Valor del Eje Y (Punto central de la circunferencia)
j = z; % Valor del Eje Z (Punto central de la circunferencia)
end
end
function rotacion3dejex(Angulo1)
Grafico de rotacion 3D sobre el Eje X (Color rojo) con los datos ingresados en la funcion rotacion3dejex
7. Líneas del algoritmo de la función: rotacion3dejey (Dibujar la rotación de un vector sobre el Eje Y de un sistema 3D)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo rotacion3dejey para hallar resultados de una rotacion en el Eje Y de un espacio 3D
% Se tienen un vector Px que va ha rotar sobre el eje X originando el vector Px1
% Se tienen un vector Pz que va ha rotar sobre el eje Z originando el vector Pz3
%
% Suponer que para un sistema de 3 dimensiones Px=[1 0 0]
% Suponer que para un sistema de 3 dimensiones Pz=[0 0 1]
%
% Puede trabajar igualmente con la funcion roty del Robotics toolbox de MATLAB
% Utiliza las funciones:
% circunferencia1 (Dibujar los angulos de rotacion)
% vector3d (Dibujar los vectores que rotan en el espacion 3D)
%
% Tipeando: rotacion3dejex(pi/4)
% Obtendra una rotacion del vector Px del Eje X y del vector Pz del Eje Z
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function rotacion3dejey(Angulo2)
vector3d(p0,Px1,'r',1) % Graficamos el desplazamiento del vector Px hasta su posicion final como vector Px1
hold on
vector3d(p0,Pz3,'b',1) % Graficamos el desplazamiento del vector Pz hasta su posicion final como vector Pz3
title(['ROTACION: Eje Y',' ','Angulo Theta2 = ' num2str(angulo2_grad)]); % Declaramos un titulo con los resultados de los angulos
axis([-(Longitud2+1) (Longitud2+1) -(Longitud2+1) (Longitud2+1) -(Longitud2+1) (Longitud2+1)]); % Establece sistema ejes fijo del vector Px
pause(0.01)
end
end
Grafico de rotacion 3D sobre el Eje Y (Color verde) con los datos ingresados en la funcion rotacion3dejey
8. Líneas del algoritmo de la función: rotacion3dejez (Dibujar la rotación de un vector sobre el Eje Z de un sistema 3D)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo rotacion3dejez para hallar resultados de una rotacion en el Eje Z de un espacio 3D
% Se tienen un vector Px que va ha rotar sobre el eje X originando el vector Px1
% Se tienen un vector Py que va ha rotar sobre el eje Z originando el vector Py2
%
% Suponer que para un sistema de 3 dimensiones Px=[1 0 0]
% Suponer que para un sistema de 3 dimensiones Py=[0 1 0]
%
% Puede trabajar igualmente con la funcion rotz del Robotics toolbox de MATLAB
% Utiliza las funciones:
% circunferencia1 (Dibujar los angulos de rotacion)
% vector3d (Dibujar los vectores que rotan en el espacion 3D)
%
% Tipeando: rotacion3dejez(pi/4)
% Obtendra una rotacion del vector Px del Eje X y del vector Py del Eje Y
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function rotacion3dejez(Angulo3)
vector3d(p0,Px1,'r',1) % Graficamos el desplazamiento del vector Px hasta su posicion final como vector Px1
hold on
vector3d(p0,Py2,'g',1) % Graficamos el desplazamiento del vector Py hasta su posicion final como vector Py2
Grafico de rotacion 3D sobre el Eje Z (Color azul) con los datos ingresados en la funcion rotacion3dejez
9. Líneas del algoritmo del programa: ROTACION3DEJESXYZN3 (Dibujar la rotación secuencial de un vector sobre el Eje X
(Color rojo), el Eje Y (Color verde), y el Eje Z (Color azul)de un sistema 3D)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo ROTACION3DEJESXYZN3 para verificar una rotacion en los ejes X-Y-Z de un espacio 3D
% IMPORTANTE: Recordar que la matriz de rotacion general X-Y-Z en el mismo sentido a las agujas del reloj del espacio 3D
% se logra de la multiplicacion de matrices en el siguiente orden: Primero Z*Y - Segundo (Z*Y)*X Obteniendose una matriz de rotacion
% Se tienen un vector Puvw que va ha rotar sobre el eje X originando el vector Pxyz1
% Luego este vector girara sobre el eje Y originando el vector Pxyz2 y
% Finalmente hara un nuevo giro sobre el eje Z originando el vector Pxyz3
% Suponer que para un sistema de 3 dimensiones Puvw=[1 0 0] con Theta1=90° (Primer giro) Theta2=90° (Segundo giro) Theta3=45° (Tercer giro).
% Encontrar en forma gráfica las coordenadas con respecto al sistema xyz.
% Solucion 1: Para Theta=90° se debe obtener Pxyz1=[0 0 1]
% Solucion 2: Para Theta=45º se debe obtener Pxyz2=[1 0 0]
% Solucion 3: Para Theta=90º se debe obtener Pxyz3=[0.7 0.7 0]. Este es resultado de la posicion final del vector
% Importante este archivo se usa con la funcion vector3d para n vectores en 3D
% Puede trabajar igualmente con las funciones rotx roty rotz del Robotics toolbox de MATLAB
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Puvw=[0;1;0]; % Coordenadas punto final del primer vector en el sistema de referencia uvw
p0 = [0;0;0]; % Coordenadas punto inicial del primer vector de inicio (Centro de coordenadas)
Angulo1 = pi/2; % Primer angulo a girar (90°)
Angulo2 = pi/2; % Segundo angulo a girar (90°)
Angulo3 = pi/4; % Tercer angulo a girar (45°)
end
pause(0.1)
% Segundo giro en el eje Y del vector inicial Pxyz1
for Theta2=0:0.01:Angulo2
angulo2_rad = acos(cos(Theta2)); % Angulo en radianes
angulo2_grad = (angulo2_rad*360)/(2*pi); % Conversion del angulo en radianes a grados (Theta2)
%Ry = [cos(Theta2) 0 -sin(Theta2);0 1 0;sin(Theta2) 0 cos(Theta2)]; % Matriz de rotacion en el eje Y en el sentido opuesto a las agujas del reloj del espacio 3D
% Ry = [cos(Theta2) 0 sin(Theta2);0 1 0;-sin(Theta2) 0 cos(Theta2)]; % Matriz de rotacion en el eje Y en el mismo sentido a las agujas del reloj del espacio 3D
% Pxyz2 = Ry*Pxyz1 % Rotacion del vector Puvw en el eje Y originando el vector Pyxz1
Pxyz2 = (roty(Theta2))*Pxyz1 % Ecuacion con la funcion roty semejante a la matriz Ry
Longitud2 = norm(Pxyz2); % Hallamos la norma del vector Pyxz2
end
pause(0.1)
% Tercer giro en el eje Z del vector inicial Pxyz2
for Theta3=0:0.01:Angulo3
angulo3_rad = acos(cos(Theta3)); % Angulo en radianes
angulo3_grad = (angulo3_rad*360)/(2*pi); % Conversion del angulo en radianes a grados (Theta3)
%Rz = [cos(Theta3) sin(Theta3) 0;-sin(Theta3) cos(Theta3) 0;0 0 1]; % Matriz de rotacion en el eje Z en el sentido opuesto a las agujas del reloj del espacio 3D
% Rz = [cos(Theta3) -sin(Theta3) 0;sin(Theta3) cos(Theta3) 0;0 0 1]; % Matriz de rotacion en el eje Z en el mismo sentido a las agujas del reloj del espacio 3D
% Pxyz3 = Rz*Pxyz2 % Rotacion del vector Pyxz2 en el eje Z originando el vector Pyxz3
Pxyz3 = (rotz(Theta3))*Pxyz2 % Ecuacion con la funcion rotx semejante a la matriz Rz
Longitud3 = norm(Pxyz3); % Hallamos la norma del vector Pxyz3
axis([-Longitud3 Longitud3 -Longitud3 Longitud3 -Longitud3 Longitud3]); % Establecemos un sistema de ejes fijo para el vector Puvw
pause(0.01)
end
Grafico de la primera rotacion de un vector 3D (Color rojo) con los datos del programa ROTACION3DEJESXYZN3
Grafico de la segunda rotacion de un vector 3D (Color verde) con los datos del programa ROTACION3DEJESXYZN3
Grafico de la tercera rotacion de un vector 3D (Color azul) con los datos del programa ROTACION3DEJESXYZN3