1. Rotaci´on espacial mediante la multiplicaci´on de cuaternios
Spatial rotation by quaternion multiplication
Tarea 03: Fundamentos de Rob´otica 2014
Gustavo Rodrigo L´opez Mendoza
tavolopezmendoza@gmail.com
13 de octubre de 2014
1. Abstract
The aim of this paper is to present a synthesis of
the mathematics generated of group the quaternions
and compare their methodology with homogeneous
matrices, this group not commutative but associative
and distributive over addition allow rotating coordi-
nate systems axes or vectors multiplying a quaternion
unit norm and its conjugate to the vector will be
rotated. The symmetry of the two methods is found
to achieve the same result, with the wide difference
in the number of digits occupied for the generation
of a matrix versus the 4 digit occupied a quaternion,
greatly reducing the programmable controller of a
robotic system.
Keywords: Quaternions, rotate
2. Res´umen
El objetivo de este documento es presentar una s´ınte-
sis de la matem´atica generada del grupo de los cuater-
nios y comparar su metodolog´ıa con las matrices ho-
mog´eneas, este grupo no conmutativo pero asociativo y
distributivo sobre la suma permiten rotar sistemas de
ejes coordenadas o vectores multiplicando un cuaternio
de norma unitaria y su conjugado al vector que ser´a ro-
tado. La simetr´ıa de los dos m´etodos se comprueba al
obtener el mismo resultado, con la gran diferencia de la
cantidad de d´ıgitos ocupados para la generaci´on de una
matriz versus los 4 d´ıgitos ocupados en un cuaternio,
reduciendo considerablemente el programa-controlador
de un sistema robotico.
3. Introducci´on
En la d´ecada de 1840 sir William Rowan Hamil-
ton(v´ease [1] para mayor informaci´on), f´ısico ma-
tem´atico se encontraba estancado en la b´usqueda de
alg´un sistema matem´atico que pudiera representar
puntos en el espacio tridimensional como lo describen
los n´umeros complejos en el plano, descubriendo un
m´etodo que empleaba 4 d´ıgitos para la representaci´on
del espacio a la que denomino cuaternios.
Hoy en d´ıa las rotaciones de vectores tienen un
papel protag´onico en la rob´otica, siendo el lenguaje
vertebral en el movimiento de sistemas automatizados.
En este documento se presenta un resumen del ´alge-
bra de los cuaterniones, para posteriormente aplicar
su matem´atica y rotar un sistema de ejes coordenados
en torno al eje x y luego en torno al eje y, compa-
rando el resultado con matrices de transformaciones
homog´eneas, concluyendo satisfactoriamente en la ho-
mogeneidad de los m´etodos.
4. M´etodos
Como ya se ha mencionado los cuaternios son una
extensi´on de los n´umeros complejos, heredando ciertas
propiedades y caracter´ısticas de ellos, describi´endolas
a continuaci´on:
1. Sea q y q1 cuaternios definidos como
q = a + bi + cj + dk q1 = a1 + b1i + c1j + d1k
(1)
donde a, a1, b, b1, c, c1, d y d1 son n´umeros reales
y i, j y k son n´umeros complejos, entonces
i2
= j2
= k2
= −1 (2)
2. Como i, j y k son representaci´on de ejes ortogo-
nales entre ellos se tiene por ´algebra vectorial que
el producto entre ellos es igual a
ij = k = −ji jk = i = −kj ki = j = −ik
(3)
de (3) se concluye que los cuaternios no conmutan
en la multiplicaci´on, pero si se asocian y distribu-
yen en la adici´on. En [2] se contempla la completa
demostraci´on de estos axiomas.
3. Se define el conjugado de q como
q∗
= a − bi − cj − dk (4)
1
2. 4. Se define el producto punto como
q·q1 = aa1 − bb1 − cc1 − dd1
+ ab1i + ba1i + cd1i − dc1i
+ ac1j − bd1j + ca1j + db1j
+ ad1k + bc1k − cb1k + da1k
5. Del punto anterior y usando la definici´on del con-
jugado se obtiene para cualquier par de cuaternios
(q·q1)∗
= aa1 − bb1 − cc1 − dd1
− ab1i − ba1i − cd1i + dc1i
− ac1j + bd1j − ca1j − db1j
− ad1k − bc1k + cb1k − da1k
= a1(a − bi − cj − dk)
− b1i(a − bi − cj − dk)
− c1j(a − bi − cj − dk)
− d1k(a − bi − cj − dk)
= (a1 − b1i − c1j − d1k)
·(a − bi − cj − dk)
(q·q1)∗
= q∗
1·q∗
6. Se define la norma como |q| igual a
|q| ≡
√
qq∗
= (a + bi + cj + dk)·(a − bi − cj − dk)
= a2 + b2 + c2 + d2
7. Extendiendo lo anterior se deduce que
|qq1| = |q| |q1| (5)
Haciendo ´enfasis en la conmutatividad de los cua-
ternios al multiplicarlos por n´umeros reales.
8. Sea r y q cuaterniones puros1
de la forma r =
xi + yj + zk y q = q1i + q2j + q3k, (x,y,z) pue-
den representar un punto en el espacio de R3
. El
cuaternio q tendr´a norma 1, tal que, qq∗
= 1 o
q2
1 + q2
2 + q2
3 = 1.
Entonces,
qrq∗
= −r + 2(q1x + q2y + q3z)q
= −r + 2 |q| |r| cos(θ)q Como |q| = 1
= −r + 2 |r| cos(θ)q
r ≡ −qrq∗
= r − 2 |r| cos(θ)q
1Se define cuaterni´on puro cuando la parte real vale cero,
q = 0 + bi + cj + dk
θ es el angulo entre los vectores (x, y, z) y
(q1, q2, q3), adem´as qrq∗
es otro cuaternio puro
que corresponde a otro punto de R3
.
Sea Q el plano en R3
que pasa por el origen y es
normal a (q1, q2, q3), |r| cos(θ) es la proyecci´on de
(x, y, z) en la direcci´on (q1, q2, q3), por lo que r re-
presenta la imagen de r bajo la reflexi´on del plano
Q. En otras palabras se estable un eje ortogonal a
q, y r se encuentra a θ grados de q.
9. Considerando ahora el cuaternio puro p = p1i +
p2j + p3k de norma unitaria, y del ´ıtem anterior,
se obtiene que
r ≡ −pr p∗
= −p(−qrq∗
)p∗
= (pq)r(pq)∗
donde
pq =(p1i + p2j + p3k)(q1i + q2j + q3k)
= − (p1q1 + p2q2 + p3q3) − (q2p3 − q3p2)i
− (q3p1 − q1p3)j − (q1p2 − q2p1)k
= − cos(φ) − sin(φ)n
n es un cuaternion puro de norma uno que repre-
senta una direcci´on normal a q y p con el senti-
do dado por la regla de la mano derecha, φ es el
angulo entre las direcciones q y p. La aplicaci´on
de r → (pq)r(pq∗
) representa una rotaci´on en R3
siendo n el eje de la rotaci´on, quedando invariante
bajo esta aplicaci´on. Esta rotaci´on se efect´ua a un
valor de dos veces el valor φ.
10. Resumiendo, para efectuar una rotacion en torno
a un eje n y un angulo de α se componete la mul-
tiplicacion de cuaternios de la siguente forma
r = (cos(
α
2
)+sin(
α
2
)n)r(cos(
α
2
)−sin(
α
2
)n) (6)
donde |n| = 1, generalizando q = cos(α
2 ) + sen(α
n )
es el cuaternio de norma unitaria que representa
la rotaci´on en torno a la direcci´on n a cualquier
cuaternio puro r que tendr´a representaci´on en el
espacio R3
.
5. Resultados
Ejercicio: Un sistema ha sido girado 30o
alrededor
del eje OX y luego 60o
alrededor del eje OY. Calcular
las coordenadas (rx, ryrz) del vector r de coordenadas
ruvw = (−3, 4, −11). De igual forma que con la ma-
trices homog´eneas se puede componer cuaternios para
representar giros sucesivos.
Para desarrollar el ejercicio propuesto se realizar la
2
3. composici´on del cuaternio q que representara la ro-
taci´on. Sea q el cuaternio que representa la primera
rotaci´on y p la segunda tenemos
q = cos(30/2) + sin(30/2)i
p = cos(60/2) + sin(60/2)j
pq = cos(15)cos(30) + (sin(15)cos(30))i
+ (cos(15)sin(30))j + (sin(15)sin(30))k
rxyz = (pq)ruvw(pq)∗
= −8, 02i + 8, 96j − 1, 17k
La multiplicaci´on se comprueba con el programa Sa-
gemath, adem´as, usando matrices de transformaci´on
homog´eneas se obtiene el mismo resultado.
A continuaci´on se visualiza los resultados usando el
programa Sagemath, en la figura 1 se aprecia las mul-
tiplicaci´on de cuaternios y el resultado al final de la
figura, y en la figura 2 usando el m´etodo de matrices
de transformaci´on homog´enea. Ambos resultado coin-
ciden en exactitud.
Figura 1: Cuaternios
Figura 2: Matrices de transformaci´on homog´enea
El resultado gr´afico se aprecia en la figura 3, a
continuaci´on se presenta el script que fue usado en
Sagemath para la creaci´on del gr´afico.
orig=vector([0,0,0])
eje_x=line([(-5,0,0),(5,0,0)],color=’black’)
eje_y=line([(0,-5,0),(0,5,0)],color=’black’)
eje_z=line([(0,0,-5),(0,0,5)],color=’black’)
ejes=eje_x+eje_y+eje_z
vect_x=vector([3,0,0])
vect_y=vector([0,3,0])
vect_z=vector([0,0,3])
vector_uvw=vector([-3,4,-11])
arrow_x=arrow3d(orig,vect_x,color=’red’,width=3)
arrow_y=arrow3d(orig,vect_y,color=’blue’,width=3)
arrow_z=arrow3d(orig,vect_z,color=’green’,width=3)
arrow_uvw=arrow3d(orig,vector_uvw,color=’orange’,width=3)
oxyz=arrow_x+arrow_y+arrow_z
oxyz_1=arrow_x+arrow_y+arrow_z+arrow_uvw
ouvw=(oxyz_1.rotateX(-pi/6)).rotateY(-pi/3)
r=point(([-8.02,8.97,-1.17]),size=3.5,color=’red’)
show(oxyz+ouvw+ejes+r)
Figura 3: Arriba plano YZ, abajo plano XZ
El punto de color rojo representa el vector rxyz =
(−8,02, 8,97, −1,17)
6. Discusiones
Si bien el m´etodo de multiplicacion de cuaternios
concuerda con los resultados de matrices de trans-
formaci´on homog´enea, existen ciertas limitaciones en
este m´etodo que queda a la discuci´on la efectividad
del m´etodo, como el hecho de que solo se pueden
usar cuaternios unitarios en su ejecuci´on, restringiendo
una inmensa cantidad de posibilidades de aplicaciones,
adem´as, el ´algebra abstracta dificulta su total compren-
si´on, como dijo Albert Einstein ”Si no puedo dibujarlo,
es que no lo entiendo”.
7. Conclusiones
Este m´etodo a pesar de sus complicaciones posee un
ventaja sobre su semejante, para componer una matriz
3
4. necesitamos de al menos 16 bits, lo cual no es mucho,
pero si llevamos esta cifra a cada matriz y generamos
un movimiento complejo de un instrumento automati-
zado que en su programa ocupe matrices para repre-
sentar una rotaci´on o traslaci´on, estamos hablando de
centenas de mega bits que ocupar´ıa su programa, com-
parado con los 4 bits que ocupa un cuaterni´on, redu-
ciendo considerablemente la memoria ocupada en su
programa.
Referencias
[1] Victor Rodriguez Bouza, Sobre los cuaternio-
nes, ´algebra de Lie, y matrices de Pauli, 2012-2013.
[2] G. F. Torres del Castillo, La representaci´on
de rotaciones mediante cuterniones,p´ags. 43–50,
Universidad Aut´onoma de Puebla, Departamento
de F´ısica Matem´atica, Mexico, 1999.
4