Está en la página 1de 6

MICHAEL YESID LOMBANA DIAZ ROBOTICA CUATERNIOS Son una extensin de los nmeros reales, similar a la de los nmeros

complejos, generada de manera anloga aadiendo las unidades imaginarias: i, j y k a los nmeros reales y tal que i2 = j2 = k2 = ijk = 1. Esto se puede resumir en esta tabla de multiplicacin: la Tabla de Cayley (ingls). 1 i j k 1 1 i j K I i -1 k -j J j -k -1 i k k j -i -1 1, i, j, k, son entonces las "bases" de las componentes de un cuaternin. EL ALGEBRA DE LOS CUATERNIOS As, un cuaternio es un elemento (; x; y; z) , pero considerando a este espacio no solamente como un espacio vectorial sino con una estructura algebraica que lo hace ser una algebra de divisin, como explicamos a continuacin. Dados dos elementos , la suma p + q ser la suma usual Entonces: es decir, si

Asimismo, definimos el producto de dos elementos

por:

Es fcil verificar que

es un anillo asociativo con 1, donde 1=(1,0,0,0).

Ms aun, la base usual para el espacio vectorial

Es de particular importancia ya que bajo el producto (3.1) se tiene:

Por otra parte, si se introducen los smbolos

Se tiene que el conjunto es una base para y un c_alculo directo nos muestra que ij = k, mientras que ji = -k. Asimismo, jk = i, kj = -i. Finalmente, ki = j, mientras que ik = -j. De esta manera, representaremos un cuaternio por medio de una expresi_on de la Forma

Donde, x,y y z son numeros reales. Los simbolos" o unidades imaginarias" i, j, k satisfacen las propiedades:

FORMAS ALTERNATIVAS DE REPRESENTAR A LOS CUATERNIOS Abordaremos ahora otras maneras de representar los cuaternios, las cuales nos permiten ver de forma mucho mas natural al conjunto y as, estar seguros de que estos nmeros" realmente son realizables. Los cuaternios como matrices reales. Consideremos ahora el conjunto de las matrices de la forma:

Es claro que si p; q

, su suma, p + q ,

. Lo que no resulta evidente es que el producto

tambin esta en . En efecto, si p; q

De esta manera, pq

. Con cada cuaternio + xi + yj + zk

, asociamos una matriz en

de la siguiente manera:

Esta correspondencia nos define una funcin

tal que:

Giro de un punto arbitrario del espacio alrededor de un eje arbitrario del espacio mediante cuaternios Representar un punto (o un vector, o un eje que pasa por el origen) del espacio en forma de cuaternio es muy fcil, dado el vector: v = (x, y, z) El cuaternio que le corresponde es: q = (0, x, y, z) Es decir, un cuaternio que contiene al vector, pero cuya magnitud w es igual a 0. Un cuaternio construido como veremos a continuacin, de alguna manera, representa la rotacin de un punto cualquiera alrededor de un eje del espacio arbitrario. Por qu? Consideremos un eje del espacio que pasa por el origen (o lo que es lo mismo, un vector):

v = (x, y, z) Consideremos tambin un punto arbitrario del espacio P que queremos girar "theta" radianes alrededor de ese eje: P = (x0, y0, z0) Ahora generemos un cuaternio unitario a partir del eje y del ngulo de esta manera: q = qw + qx*i + qy*j + qz*k Donde: qw = cos(theta/2) qx = +-sin(theta/2)*x/|v| qy = +-sin(theta/2)*y/|v| qz = +-sin(theta/2)*z/|v| Es decir: q = (cos(theta/2), +-sin(theta/2)*v/|v|) Pues bien, dado este cuaternio generado a partir del eje (o vector) v y del ngulo theta, obtenemos el siguiente sorprendente resultado: P' = q*(0, P)*q-1 Es decir, que el punto P una vez rotado, esto es P', viene dado por este simple producto de cuaternios (Esto se podra hacer tambin con cuaternios q no unitarios pero, puesto que hay que elegir, y puesto que es muy fcil calcular la inversa de un cuaternio unitario, es mejor hacerlo con unitarios.) Es factible pensar que Hamilton tuviera en cuenta y buscase stas y otras sorprendentes propiedades de los cuaternios cuando los descubri en 1843, a la edad de 38 aos. El producto citado representa la rotacin de P alrededor de un eje que pasa por el origen. Como antes, si lo que queremos es girar el punto "P" "theta" radianes alrededor de un eje "AB" y no respecto a un eje paralelo a "AB" que pase por el origen, la frmula es: P' = A +f(P - A),donde: f(P) = q*(0, P)*q-1 P' = A + q*(0, P - A)*q-1 Esta frmula es ms general que la 3 porque sirve para girar cualquier punto alrededor de cualquier eje del espacio, incluso alrededor de uno que no pase por el origen.

MATLAB
15

15

10

10

Eje Z

Z Y X

Eje Z

Z Y X

YZ Z YX 5 X

0 10 0 -10 Eje Y

Z Z Y YX X 10 0 -10 Eje X
0 -15 -10 -5 Z Z Y YX 0 X Eje X

10

15

15
15

10

Z YX Z YX
10

Eje Y

Eje Z

Y Z X YZX

YZ Y 5 X Z X

-5

-10

-15 -15

-10

-5

0 Eje X

10

15

0 -15

-10

-5

Z X YY 0X Eje Y

10

15

CONCLUSIONES El mtodo de Hamilton solo rota un punto alrededor de un eje, pero este permanece en su posicin inicial, dificultando la cinemtica para 2 o ms puntos. Se recomienda utilizar cinemtica de cuaternios para puntos mvil, en donde se crean matrices de referencia para nuevos movimientos con respecto al anterior Se recomienda graficar 2 o mas mtodos superpuestos en el plot, para verificar el correcto funcionamiento del mtodo a estudiar, en este caso se comparo el mtodo de Hamilton con el mtodo de matrices de trasformacin homognea.

BIBLIOGRAFIA [1]Cipri Santiago Zaragoza, Los Cuaternios De Hamilton Departamento de Matemticas, 2002 [2] Carlos Alberto Edo Soler Rotaciones en MatLab mediante Matrices de Rotacin y Cuaterniones

ANEXO clear all close all clc l1=8; l2=5; q1=90; q2=45; q3=30; %Transformacin Homognea P0=[0 0 0 1]'; A0=eye(4); A01=eye(4); A01=A01*Rz(q1); A01=A01*Ry(q2); A02=eye(4); A02(3,4)=l1; A02=A02*Ry(q3); A03=eye(4); A03(3,4)=l2; A04=eye(4); R3=A01*A02*A03*P0; view(3); grid on;hold on; axis([-15 15 -15 15 0 15]) axis square frame(A0,'b',1'); frame(A01,'r',1'); frame(A01*A02,'r',1'); frame(A01*A02*A03,'r',1'); % CUATERNIOS P01=[cosd(q1/2),0,0,sind(q1/2)]; P12=[cosd(q2/2),0,sind(q2/2),0]; P23=[cosd(q3/2),0,sind(q3/2),0]; P01c=[cosd(q1/2),0,0,-sind(q1/2)]; P12c=[cosd(q2/2),0,-sind(q2/2),0]; P23c=[cosd(q3/2),0,-sind(q3/2),0]; p2=[0,0,l1]; p3=[0,0,l2]; r=[0,0,0]; r2=QT(QT(P12,[0,r+p2]),P12c); r2=[r2(2),r2(3),r2(4)]; r2=QT(QT(P01,[0,r2]),P01c);r2=[r2(2),r2(3),r2(4)]; r3= QT(QT(P23,[0,p3]),P23c); r3=[R3(1),R3(2),R3(3)]; plot3([r(1),r2(1)],[r(2),r2(2)],[r(3),r2(3)],'b','linewidth',3.0) plot3([r2(1),r3(1)],[r2(2),r3(2)],[r2(3),r3(3)],'b','linewidth',3.0)