Forum Docentis - Sección AP, Vol. 2023, Núm. 1 (2023)
ISSN: 2952-3052
doi: https://doi.org/10.33732/FD.v2023.n1.17
Recepción: 29/11/2023, Aceptación: 13/02/2024
Cuaternios en Robótica
1Departmento de Matemática Aplicada, Universidad Rey Juan Carlos
*Autor de correspondencia: guillermo.vera@urjc.es
Resumen
En este trabajo introducimos el álgebra de cuaternios ℍ. Desde la teoría del álgebra lineal, construimos las matrices asociadas a ciertos endomorfismos en ℍ que se identificarán con rotaciones en ℝ3, para acabar con un ejemplo práctico de como describir el movimiento de un brazo robótico en términos de cuaternios.
Palabras clave
Cuaternios — Robótica — Rotaciones
© 2023 Los autores. Publicado por URJC. Este es un artículo de acceso abierto con licencia CC BY.
Cómo citar este artículo: Criado, R. Teora de conjuntos, funciones, familias y cardinalidad; Forum Docentis - AP vol. 2023, (1), e17, 2023
Índice
Introducción
1Operaciones en los cuaternios
2.2 Rotación con vector y ángulo de rotación
3.1 Ecuación de cambio de sistemas de referencias expresada en cuaternios
Introducción
En el siglo XIX, el matemático, físico y astrónomo irlandés W.R. Hamilton definió unos nuevos elementos
donde i, j, k representan unidades imaginarias satisfaciendo
con s, x, y, z ∈ ℝ. Usualmente, para recordar las propiedades (1) se suele hacer alusión al diagrama:

entendiendo además que si un producto va en el sentido horario entonces le acompaña un signo positivo, y si va en sentido antihorario el producto aparecerá con un signo negativo.
Estos elementos reciben el nombre de cuaternios y el conjunto de todos los cuaternios ℍ conforman una estructura de álgebra no conmutativa sobre ℝ.
Sin embargo, introduciremos una notación distinta para expresar un cuaternio, basada en [1]:
donde diremos que s es la parte real del cuaternio y v = xi + yj + zk la parte vectorial del cuaternio. Haciendo un abuso de la notación, denotaremos al cuaternio 1 = [1, 0], i = [0, i], j = [0, j] y k = [0, k].
Diremos que un cuaternio q = [s, v] es un cuaternio puro si s = 0, es decir, q = [0, v] y, diremos que q es un cuaternio real si v = 0, es decir, q = [s, 0].
1. Operaciones en los cuaternios
Durante toda esta sección consideremos los cuaternios
y un escalar λ ∈ ℝ.
Suma
Ejemplo.
Producto por un escalar
Ejemplo.
La suma y producto por un escalar definidos anteriormente dotan a ℍ de estructura de espacio vectorial sobre ℝ. Además, dimℝ ℍ = 4 ya que Bc = {1, i, j, k} constituye una base, que llamaremos base canónica de ℍ.
Producto
donde a · b recuerda al producto escalar usual en ℝ3, es decir,
y a × b también recuerda al producto vectorial en ℝ3, es decir,
Ejemplo. Sean qa = [2, −3i + 2k] y qb = [−1, i + 3j − k]. Entonces
De modo que el producto qaqb es
Aunque este producto así presentado parezca artificial, viene tan sólo de desarrollar
teniendo en cuenta las propiedades (1):
Ejercicio 1. Calcular los siguientes productos: ij, kj, ijk.
Ejercicio 2. Calcular qbqa con qa y qb del ejemplo anterior y comprobar que qaqb ≠ qbqa.
Conjugación
Ejemplo.
Ejercicio 3. Comprobar que
Norma
Diremos que un cuaternio q es unitario si |q| = 1. Una observación inmediata es que |v| ≤ |q| y la igualdad sólo se da si y solo si q es un cuaternio puro, es decir, s = 0.
Ejemplo. Los cuaternios 1, i, j, k son unitarios, es decir,
Ejemplo. Sea q = [s, v] = [−1, 2 i + j − k]. Entonces
Por otra parte, cualquier v = x i + y j + z k se puede reescribir como donde = 1.
Ejemplo. Sea q = [s, v] = [-1, 2i + j − k]. Ya sabemos por el ejemplo anterior que , entonces
es decir, y podemos expresar
Ejercicio 4. Comprobar que |qaqb| = |qa||qb|.
Ejercicio 5. Calcular |q| donde q = [cos(θ), sin(θ)v] y |v| = m.
Ejercicio 6. Comprobar que qq* = [|q|2,0].
Cuaternios unitarios
Todo cuaternio q = [s, v] unitario satisface s2 + |v|2 = 1 por lo que existe θ ∈ [0, 2π) tal que s = cos(θ) y |v| = sin(θ). Así, podemos reescribir q como
Es más, por motivos que veremos más adelante, resultará más interesante considerar en lugar de θ, quedando la expresión, para un cuaternio unitario q:
Ejemplo. Los cuaternios son unitarios, ya que
y
Entonces, para q sabemos que , es decir, , y para q′ sabemos que , es decir, Y por tanto los podemos reescribir como:
Inverso
Ejemplo. Si q = [—2, 3 i — j + k] entonces
y por tanto
Sabiendo la expresión general del inverso de un cuaternio se puede afirmar que un cuaternio q ∈ ℍ es unitario si y solo si q−1 = q*.
Ejercicio 7. Comprobar que qq−1 = 1.
Ejercicio 8. Comprobar que .
1.1 Representación matricial
Como ya hemos visto, los cuaternios ℍ se pueden ver como un espacio vectorial sobre ℝ de dimensión 4 con Bc = {1, i, j, k} una base. Observar que, para cualquier q = [s, v] = [s, xi + yj + zk] ∈ ℍ, las coordenadas de q en Bc son, y denotaremos,
Ejemplo. Sea q = [2, 4i + 7j − 2k] un cuaternio cualquiera:
Ejercicio 9. Hallar las coordenadas de qaqb en la base canónica Bc. Ayuda: desarrolla la expresión (5).
Sea q ∈ ℍ y consideremos las transformaciones Iq : ℍ → ℍ y Dq : ℍ → ℍ, definidas como
es decir, la multiplicación por la izquierda y por la derecha, respectivamente, por un cuaternio cualquiera q. Así, vamos a identificar estas transformaciones con una matriz tal que reflejen el producto entre cuaternios. Antes de nada, se observa que son transformaciones lineales: Sean q,p,p′ ∈ ℍ y α,β ∈ ℝ
De modo que podremos hallar su matriz asociada respecto de la base canonica Bc = {1, i, j, k}. Para ello, para un cuaternio cualquiera q = [s, v] = [s, xi + yj + zk], calculemos
Por tanto, la matriz asociada a Iq respecto de Bc, que representamos por M(Iq) := M(Iq)Bc←Bc, es
que satisface
Ejercicio 10. Comprobar que M(Iq)−1 = M(Iq−1).
Ejercicio 11. Calcular M(Iq)M(Iq)⊤Deducir que q ∈ ℍ es unitario si y solo si M(Iq) es una matriz ortogonal, es decir, M(Iq)⊤ = M(Iq)−1.
Ejercicio 12. Calcular M(Dq):= M(Dq)Bc←Bcy comprobar que M(Dqa)[qb] = [qbqa].
Ejercicio 13. Comprobar que
Ejercicio 14. Si q es unitario comprobar que
Comprobar también que
Por último, también se puede establecer un isomorfismo entre el subespacio vectorial de ℍ generado por los cuaternios puros {i,j,k}, que lo denotaremos por E, y el espacio vectorial ℝ3. Más concretamente,
es un isomorfismo lineal.
2. Rotaciones en ℝ3
En muchos campos de la ingeniería, y en particular en robótica y aeronáutica, es importante conocer tanto la orientación como la posición espacial de los objetos, ya sea un brazo robótico, un objeto volador, etc. En particular, si la orientación y posición puede expreserase en dos sistemas referencias, es interesante estudiar la relación entre ambas expresiones. Esto es, dada una orientación y posición que describa un objeto respecto a un sistema de referencias, el problema consistirá en describir su orientación y posición respecto a otro sistema de referencias. Vamos a suponer que podemos identificar la relación entre orientaciones mediante una rotación, y la relación entre posiciones se podrá identificar con una concatenación de rotaciones y traslaciones.
Primeramente, una orientación respecto a un primer sistema lo describiremos mediante una base ortonormal , y respecto a un segundo sistema mediante otra base ortonormal . Entonces, estudiar la relación existente entre sistemas para conocer la orientación de un objeto es equivalente a conocer las coordenadas de C en términos de B, es decir, la matriz de cambio de base P de C a B (véase, por ejemplo, [2]):
Además, por ser B y C bases ortonormales, sabemos que P es una matriz ortogonal, esto es, PT = P−1 y por tanto P se puede identificar con la matriz de una rotación en ℝ3 o una reflexión. Esto dependerá del determinante de la matriz. De aquí en adelante asumiremos siempre que la relación entre orientaciones ha sido mediante una rotación y por tanto det(P) = 1.
Esto motiva la siguiente pregunta: ¿cómo podemos describir una rotación en ℝ3? Vamos a estudiar cuatro formas:
1. Matriz de cambio de base,
2. ángulos de Euler,
3. vector de rotación y ángulo de rotación y,
4. cuaternios.
La matriz de cambio de base que hemos visto anteriormente, cuenta con varios problemas prácticos. El más relevante es que para definir dicha matriz necesitamos 9 parámetros (redundantes) con su respectivo coste computacional. Además, estos parámetros no esán descritos en términos de una rotación, es decir, no están expresados en términos del vector de rotación y/o en términos de ángulos, por lo que no resulta intuitivo manipular las rotaciones con esta descripción.
Entonces, de cara a realizar el estudio ya mencionado, consideraremos Rot una rotación arbitraria en ℝ3 y la caracterizaremos en distintos términos. La primera, como ya hemos visto, dada dos bases ortonormales B y C, se puede definir la rotación RotB,C : ℝ3 → ℝ3 (que rota la base B en la base C) tal que su matriz asociada M(RotB,C)B ← B coincida con la matriz de cambio de base P de B a C con determinante 1.
B, C bases ortonormales ↦ M(RotB,C)B←B ≡ P matriz de cambio de base de B a C con det (P) = 1
A partir de ahora consideraremos ℝ3 y una base ortornormal B como nuestra base del sistema de referencias inicial, que expresaremos sus vectores como
Nos referiremos a los elementos de B como ejes cartesianos. En términos generales, denotaremos por Rot : ℝ3 → ℝ3 a una rotación en ℝ3 y R = M(Rot)B←B a su matriz asociada en la base B.
2.1 Ángulos de Euler
Para introducir los ángulos de Euler, primero necesitamos describir las rotaciones respecto a cada uno de los vectores de B de ángulo α, β y γ, respectivamente, mediante las siguientes matrices
Ejemplo. Consideremos un vector de ℝ3con coordenadas en B
Entonces las coordenadas del vector rotado un ángulo α respecto del vector sería
Un problema nada trivial es tratar de descomponer una rotación cualquiera en términos de tres rotaciones para unos vectores ya preestablecidos, pudiendo ser o no ortogonales. En nuestro caso, sólo nos preocuparemos cuando los vectores preestablecidos son ortogonales. Dicho en otras palabras, dada una rotación arbitraria Rot queremos hallar α, β y γ tales que
Esta terna (α, β, γ) es la que se conoce como ángulos de Euler de una rotación para el sistema XYZ. Sin embargo, podemos tratar de describir la rotación implicando un número menor de vectores. Por ejemplo, los ángulos de Euler (α, β, γ) para el sistema ZY Z son aquellos que verifican
Esto a su vez puede complicarse si entendemos que el sistema de vectores es intrínseco o extrínseco, es decir, si el sistema se entiende móvil o fijo respecto a las rotaciones anteriores respectivamente. Ya podemos encontrar una de las primeras dificultades de trabajar con ángulos de Euler, y es que no existe un convenio unificado para denotar los ángulos de Euler para sistemas intrínsecos, extrínsecos, ortogonales o no.
Los ángulos de Euler cuentan con la ventaja de que para describir una rotación tan sólo necesitamos conocer 3 parámetros. Sin embargo, el problema de hallar los ángulos de Euler para un sistema de una rotación Rot puede tener infinitas soluciones, provocando un problema de modelado llamado “Gimbal lock” o “bloqueo del cardán”. Este problema surge en la práctica cuando se quiere descomponer una rotación Rot respecto de un sistema donde el primer y tercer vector coinciden tras la primera rotación. Por ejemplo, si el sistema es del tipo XY Z y los ángulos de Euler son del tipo , entonces
Entonces cualquier otra terna (φ, , ψ) tal que α + γ = φ + ψ son también ángulos de Euler para la misma rotación haciendo que el problema pierda un grado de libertad. Este hecho es muy importante, pues sucede que la aplicación de ángulos de Euler a las rotaciones no define un homeomorfismo local en todos sus puntos y, resulta que los ángulos de Euler donde existe esta pérdida de grado de libertad, coincide cuando la continuidad falla. Esta discontinuidad puede llegar a tener consecuencias graves, tal y como ocurrió, aunque por otras razones, en la misión Apollo 11 [3]. En robótica puede provocar el problema conocido como “wrist flip”, cuando un brazo robótico trata de hacer un giro de manera inmediata, debida a la discontinuidad, de 180 grados.
Esta problemática es naturaleza propia de los ángulos de Euler, por lo que es conveniente encontrar otra forma de interpretar una rotación.
2.2 Rotación con vector y ángulo de rotación
Una forma más intuitiva de interpretar una rotación es construyéndola a partir de su vector de rotación (que lo consideraremos normalizado) y su ángulo de rotación θ ∈ [0, 2π), que denotaremos por . Así, podemos construir la base ortonormal donde forman una base ortonormal del plano ortogonal al vector de rotación tal que , y entonces su matriz asociada en esta base es de la forma:
Esta matriz hace referencia a una rotación respecto del vector , de ángulo θ que gira en sentido positivo (véase la Figura 1).
Figura 1. Rotación respecto al vector de ángulo θ en sentido positivo. Los vectores e1, e2 hacen referencia a los vectores ortonormales .

Observaciones importantes:
■
■ Toda matriz de una rotación es semejante a la matriz
■ Como el polinomio característico entre matrices semejantes coincide, entonces una rotación arbitraria Rot siempre tendrá a 1 como autovalor y dos autovalores complejos conjugados cos(θ) ± i sin(θ) = α ± iβ.
Así, se observa que es un autovector asociado al autovalor 1 y, por otro lado, se puede hallar el ángulo de rotación:
■ Para determinar si una rotación gira en sentido positivo se sigue la llamada “regla de la mano derecha”. Esta regla consiste en alinear el pulgar de la mano derecha con el vector de rotación apuntando en la misma dirección y, si el cierre de la mano acompaña al giro, entonces se dirá que gira en sentido positivo, y negativo en caso contrario. La rotación de la Figura 1 es una rotación que gira en sentido positivo.
■ La rotación en ℝ3 se reduce a una rotación en un plano, el plano ortogonal al vector de rotación. Como hemos construido la base D con el plano ortogonal ocupando la segunda y tercera posición, esto se refleja en la submatriz de segunda y tercera filas/columnas de la matriz de la rotación.
Un problema reside cuando queremos concatenar más de una rotación, que necesitaremos expresarlas todas en una base comun para poder operar. Así, podemos reescribir estas matrices respecto de la misma base: Si Q es la matriz de cambio de base de D a B entonces
También si , la fórmula de Euler (o más conocida como fórmula de Rodrigues [4]) nos asegura que
Así,
2.3 Rotación con cuaternios
Consideremos un cuaternio puro p = [0, p] = [0, pxi + pyj + pzk] y un cuaternio unitario
Ya sabemos, por ser unitario, que . Vamos a estudiar el producto qpq* y puesto a que vamos a trabajar únicamente sobre cuaternios puros, reduciremos la matriz (14) a la matriz
Ejemplo. Supongamos que q = i = [0, i] entonces θ = π, x =1 y s = y = z = 0. Calculemos el producto qpq* matricialmente utilizando (18)
Observando que, desde el punto de vista vectorial, hemos obtenido una rotación respecto del vector de un ángulo π.
Ejemplo. Supongamos que entonces . Calculemos el product qpq* matricialmente utilizando (18)
Observando que, desde el punto de vista vectorial, hemos obtenido una rotación respecto del vector de un ángulo .
Ejemplo. Supongamos que entonces . Calculemos el producto qpq* matricialmente producto qpq* matricialmente utilizando (18)
recordando las identidades trigonométricas . Observando que, desde el punto de vista vectorial, hemos obtenido una rotación respecto del vector de un ángulo θ.
Estos ejemplos hacen intuir que, si unitario y p = [0, p] cuaternio puro, realizar el producto qpq* es equivalente a rotar el vector respecto del vector , donde , un ángulo θ.
Ejemplo. Si queremos hallar una rotación de ángulo respecto del vector entonces tendremos que considerar el cuaternio
Y así, para un cuaternio puro p, la operación qpq* equivale a rotar la parte vectorial de p un ángulo θ respecto del vector .
Ejemplo. Si la parte vectorial unitaria de dos cuaternios unitarios coinciden, entonces la concatenación de rotaciones es especialmente sencilla. Sean entonces
que es lo esperable ya que se están realizando dos rotaciones consecutivas respecto al mismo vector de rotación.
De esta forma:
3. Espacio afín ℝ3
De cara a presentar un ejemplo donde utilizar los cuaternios, vamos a introducir brevemente el espacio afín ℝ3 para poder tener una base matemática donde trabajar.
Nos referiremos a ℝ3 como espacio afín y llamaremos puntos a sus elementos en lugar de vectores. A partir de dos puntos A, B ∈ ℝ3 siempre podremos definir un vector que denotaremos por
Además se verifica que:
1. Dados tres puntos A, B, C ∈ ℝ3,
2. Dado y entonces existe B ∈ ℝ3 tal que .
Al igual que en un espacio vectorial podemos utilizar las coordenadas respecto de una base para describir un vector, en un espacio afín utilizaremos un sistema de referencias para describir un punto del espacio. Este está compuesto por un punto O ∈ ℝ3 actuando como origen y una base ortonormal actuando como ejes cartesianos. Así, llamaremos sistema de referencias a la expressión
donde O es un punto de ℝ3 y B es una base de ℝ3. Nosotros asumiremos siempre que B es una base ortonormal. Entonces, dado un sistema de referencias R, las referencias de un punto A ∈ ℝ3 las definimos como las coordenadas del vector respecto de la base B, es decir,
3.1 Ecuación de cambio de sistemas de referencias expresada en cuaternios
Consideremos un punto cualquiera A ∈ ℝ3 y supongamos que tenemos dos sistemas de referencias rectangulares, es decir, las bases son ortonormales, con P la matriz de cambio de base de B′ a B. Del hecho de que , si pensamos en sus coordenadas:
que se puede escribir de manera matricial y compacta como:
En nuestro caso particular, donde asumiremos que la matriz de cambio de base la podremos identificar con la matriz asociada a una rotación, ya que las bases son ortonormales, la ecuación (20) se puede reescribir en términos de cuaternios puros:
con tan solo identificar , con respectivamente, mediante la inversa de la transformación definida en (15), es decir,
Cuando varios sistemas de referencias entran en juego, es interesante tener una indexación para poder generalizar la expresión anterior mejor:
Y por último, para simplificar la notación, denotaremos OnA por An:
donde
■ An se identifica con las referencias de un punto A respecto del sistema Rn,
■ OnOn+1 se identifica con las referencias del origen del sistema Rn+1 respecto del sistema Rn y,
■ qn es un cuaternio unitario que se identifica con la rotación que transforma los ejes del sistema Rn+1 en los ejes del sistema Rn.
4. Ejemplo práctico
Para ejemplificar el uso de los cuaternios estudiaremos una situación de un brazo robótico tal y como se describe en la Figura 2. Este ejemplo también se encuentra en [5, págs. 103-107].
Figura 2. Brazo robótico

En el espacio afín ℝ3, queremos describir la relación entre el sistema de referencias de la base del robot, descrita por , y la posición del extremo final de la mano robótica, . Para analizar esta relación, vamos a construir la matriz de cambio de sistemas de referencias que deberemos descomponer en distintas etapas. Esta relación dependerá de las constantes: l1,l2 y l3, que indican la longitud de los distintos segmentos del brazo; y de las variables: θ1, θ2, α3 y θ4, que hacen referencia a las partes móviles del brazo.
Sea A ∈ ℝ3 un punto cualquiera. Teniendo en cuenta (21), podemos ir escribiendo la ecuación de cambio de sistemas de referencias de un sistema Rn en el siguiente Rn+1:
Así, sustituyendo de manera consecutiva en las expresiones anteriores, se obtiene:
donde
que si realizamos los productos, sumas y rescatamos la parte vectorial obtenemos
donde . Que expresada matricialmente sería
y en forma compacta:
En particular, si hacemos coincidir A con O4, que es el origen del sistema de referencias R4 y coincide con el extremo del brazo, se tiene que y por tanto, las referencias de A = O4 respecto de la base del brazo robótico, el sistema R0, son
Además, la orientación del brazo robótico vendrá dada por la rotación asociada al cuaternio q0q1q3.
Agradecimientos
Quiero agradecer al revisor o revisora los comentarios realizados, que mejoraron y ayudaron a simplificar y clarificar varios puntos del artículo.
Referencias
1 J. Vince, Quaternions for Computer Graphics (Springer, 2011).
2 L. M. Merino González y E. Santos Aláez, Algebra lineal: con métodos elementales, spa, [1a ed., 4a reimp.] (Thomson, Madrid, 2010 - 2006).
3Apollo and Gimbal Lock, https://apollo11space.com/apollo-and-gimbal-lock/#Apollo_11_Gimbal_Lock_Event, [Online; accessed 5-March-2023], 2023.
4 H. Cheng y K. C. Gupta, “An Historical Note on Finite Rotations”, Journal of Applied Mechanics 56, 139–145 (1989).
5 A. Barrientos, L. Penin, C. Balaguer y R. Aracil, Fundamentos de Robótica (McGraw-Hill, 2007).