¿Qué son los cuaterniones y cómo se utilizan para representar la dinámica de las naves espaciales?

El título lo dice todo. Los cuaterniones se utilizan ampliamente para representar la orientación de una nave espacial. ¿Por qué es eso y cómo se comparan los cuaterniones con otras alternativas?

Me pregunto si se aplica la nota al pie en la parte inferior de esta página: github.com/moble/quaternion/blob/master/README.md
@uhoh: haga una búsqueda exacta en Google de "los ángulos de euler son malvados" (exacto significa buscar con las comillas). Obtendrás muchos éxitos.

Respuestas (1)

¿Qué son los cuaterniones y cómo se utilizan en la dinámica de las naves espaciales?

Fondo

La mecánica newtoniana dice que vivimos en un universo con tres dimensiones espaciales y un tiempo universal que es la variable independiente, en el que podemos describir la traslación y la rotación. La teoría de la relatividad dice que vivimos en un universo con tres dimensiones similares al espacio y una dimensión similar al tiempo que están entrelazadas. Esta respuesta ignora los aspectos relativistas.

Con esta suposición, describir la traslación es fácil, al menos en comparación con la rotación. El centro de masa de un objeto tiene una posición en algún marco de referencia (preferiblemente inercial) que cambia con el tiempo. La gravitación, el arrastre y otras interacciones, como disparar los propulsores de traslación, cambian este valor en función del tiempo. Simule estas interacciones y tendrá una simulación de tres grados de libertad (3DOF).

Lo que hace que el modelado 3DOF sea tan fácil es que es un espacio conmutativo. Camine diez metros hacia el norte y luego cinco metros hacia el este y llegará a un lugar determinado. Alternativamente, caminar cinco metros hacia el este y diez metros hacia el norte lo llevará al mismo lugar. La traducción en el espacio euclidiano conmuta. La rotación en el espacio tridimensional no es conmutativa. Tome un libro y gírelo sobre un eje paralelo al lomo del libro y luego gire el libro sobre un eje perpendicular a la cara del libro. Realice estas acciones de manera diferente (primero gire sobre un eje perpendicular a la cara del libro y luego sobre su lomo) y obtendrá un resultado final diferente.

Rotaciones en el espacio tridimensional

Como las rotaciones en el espacio tridimensional no conmutan, sean lo que sean, no son vectores. La conmutatividad es una cualidad esencial de ser un vector. Dado que las rotaciones no son vectores, ¿cómo representarlas? Resulta que hay muchas formas diferentes de representar las rotaciones en un espacio tridimensional. Euler fue uno de los primeros en investigar este tema, dándose cuenta de una serie de conceptos clave. Una es que un cuerpo rígido que gira en un espacio tridimensional siempre puede describirse como girando instantáneamente alrededor de un solo eje. Este concepto es exclusivo del espacio 3D y también es clave en cuanto a por qué los cuaterniones (cuaterniones unitarios) son útiles para describir rotaciones. Me ocuparé de esto un poco más tarde.

También se dio cuenta de que la orientación de un planeta, o de un cuerpo rígido en general, se puede describir en términos de tres rotaciones. Euler usó una secuencia de tres rotaciones: una rotación sobre el eje Z, luego otra sobre el eje X rotado una vez y luego otra sobre el eje Z rotado dos veces. No hay nada especial en esta secuencia canónica ZX'-Z''. Todo lo que se necesita es que la primera y la tercera rotación sean sobre el mismo eje fijo del cuerpo y que el elemento central sea sobre un eje fijo del cuerpo ortogonal al otro eje. Una secuencia relacionada es usar tres ejes ortogonales fijos al cuerpo. Esta elección da como resultado (por ejemplo) una secuencia de alabeo-cabeceo-guiñada. Hay seis secuencias de Euler clásicas (p. ej., ZX'-Z''), más seis secuencias de Tait-Bryan (p. ej., balanceo-cabeceo-guiñada). Otra variación más de este tema es girar sobre un conjunto fijo de ejes. Esto conduce a las secuencias de Euler extrínsecas. En total, hay 24 cosas diferentes que pueden llamarse secuencias de rotación de Euler.

Otra forma de representar las rotaciones es a través de una matriz ortogonal propia. Una matriz ortogonal es una matriz NxN en la que cada fila (o cada columna) es un vector unitario y es ortogonal a todas las demás filas (o columnas). Esta representación es genérica; se aplica a cualquier espacio cartesiano N-dimensional. La representación 3x3 es de especial interés porque vivimos en un universo 3D. Un problema clave con una matriz NxN utilizada para representar la orientación es que las rotaciones en un espacio dimensional N tienen ( norte 2 norte ) / 2 grados de libertad mientras que la matriz tiene norte 2 elementos. Más de la mitad de los elementos de la matriz son redundantes. (Este problema de redundancia también se aplica a los cuaterniones. Las rotaciones en el espacio 3D tienen tres grados de libertad. Los cuaterniones tienen cuatro elementos).

Otra forma más de representar la orientación/rotación en el espacio 3D es a través del teorema del eje único de Euler. No importa cuán extrañamente esté orientado un cuerpo rígido, siempre existe un eje combinado con una rotación de algún ángulo alrededor de ese eje que puede usarse para representar la orientación del cuerpo en cuestión con respecto a algún marco de referencia dado. Esta representación de eje/ángulo está muy cerca de una representación cuaterniónica. Dado un vector unitario tu ^ y un ángulo θ , el cuaternión cuya parte escalar es porque ( θ / 2 ) y cuya parte vectorial es tu ^ pecado ( θ / 2 ) o tu ^ pecado ( θ / 2 ) captura toda la información necesaria para representar la orientación, evitando por completo los problemas de singularidad asociados con las secuencias de Euler y casi evitando el problema de especificación excesiva asociado con las matrices.

WTF son cuaterniones?

Lo anterior plantea la pregunta. Escribí sobre cuaterniones antes de discutir qué son los cuaterniones. William Rowan Hamilton luchó por encontrar una extensión de los números complejos, donde i = 1 . Finalmente tuvo una idea mientras paseaba con su esposa e inventó los cuaterniones. Para asegurarse de que no olvidaría esta increíble idea, talló algunos grafitis en un puente:

i 2 = j 2 = k 2 = i j k = 1

placa en puente con ecuación

Este graffiti aparentemente simple es increíblemente complejo (juego de palabras). Los números complejos tienen dos elementos, una parte real y otra imaginaria. El negativo tiene dos raíces cuadradas en los números complejos. Los cuaterniones tienen cuatro elementos, una parte real y tres partes imaginarias. El negativo tiene incontables raíces cuadradas en los cuaterniones.

Hay una progresión natural a partir de los cuaterniones, descubierta después de Hamilton. Los octoniones tienen ocho elementos, uno de los cuales es parte real y los otros siete son (de alguna manera) imaginarios. Los sedeniones tienen dieciséis elementos, uno de los cuales es real y los otros quince son imaginarios, y así sucesivamente, con potencias de dos. El problema es que en cada peldaño de la escalera cae un concepto matemático clave. Los cuaterniones no conmutan (multiplicativamente), los octoniones ni siquiera se asocian. Sedenions y superiores son generalmente bastante inútiles.

Matemáticas de cuaternión

Los cuaterniones tienen dos operadores binarios clave, suma y multiplicación, además de elementos de identidad aditivos y multiplicativos, inversos aditivos y, excepto cero, inversos multiplicativos. La suma funciona de manera análoga a la suma de un par de vectores cartesianos de cuatro dimensiones. La multiplicación es donde los cuaterniones se vuelven complicados. Del graffiti de Hamilton se puede deducir (por ejemplo) que i j = k pero eso j i = k . La multiplicación de cuaterniones no es conmutativa. Si se considera que los cuaterniones comprenden una parte escalar real y una parte imaginaria vectorial, el producto de dos cuaterniones ( a + b ) ( C + d ) es ( a C b d ) + ( a d + C b + b × d ) .

Esto le da a los cuaterniones la cantidad justa de desorden necesaria para describir la diferencia de rotación entre dos marcos de referencia en un espacio tridimensional. En particular, dado algún cuaternión q y un vector v visto como un cuaternión imaginario puro, la operación de cuaternión q v q 1 es otro cuaternión imaginario puro. Esta operación gira el vector v en el espacio tridimensional. Así es la operación q 1 v q .

cuaterniones unitarios

Debido a que estamos tratando con inversas, tiene sentido escalar esos cuaterniones para que sean unitarios. El inverso de un cuaternión es su conjugado dividido por el cuadrado de la magnitud. Para una unidad de cuaternión q , su conjugado inverso y cuaternión son uno y el mismo: q 1 = q para todos los cuaterniones unitarios q .

Otra razón para usar cuaterniones unitarios es que forman el tipo correcto de estructura matemática necesaria para representar rotaciones en el espacio 3D. Los cuaterniones unitarios son un grupo matemático, al igual que las rotaciones en el espacio 3D. Cada unidad de cuaternión representa alguna rotación en el espacio 3D, y cada rotación en el espacio 3D se puede representar mediante una unidad de cuaternión. En realidad, cada rotación en el espacio 3D se puede representar mediante dos cuaterniones unitarios. Multiplica un cuaternión unitario por -1 y obtendrás otro cuaternión unitario que representa la misma rotación que el primero. Los cuaterniones unitarios forman una doble cubierta en las rotaciones en el espacio 3D.

¿Cómo se usan los cuaterniones para representar rotaciones en el espacio 3D?

Esta es la pregunta clave. La respuesta es que existe una relación muy simple entre la representación de un solo eje de una rotación y un cuaternión unitario. La parte escalar (también conocida como parte real) de este cuaternión es porque ( θ / 2 ) , dónde θ es el ángulo de rotación del eje único, y la parte imaginaria es tu ^ pecado ( θ / 2 ) o tu ^ pecado ( θ / 2 ) , dónde tu ^ es el vector unitario a lo largo del eje de rotación. Si uno usa un signo más o menos es completamente arbitrario. Esto, por supuesto, da lugar a una serie de argumentos sobre "la forma correcta de hacerlo". No hay manera correcta. Ambos enfoques son igualmente válidos.

¿Cuáles son algunas de las trampas?

Si bien los cuaterniones no son malos como lo son los ángulos de Euler, existen problemas asociados con su uso.

  1. Cuaterniones izquierdo versus derecho.
    Hay dos formas de usar cuaterniones unitarios para representar una rotación o transformación en el espacio 3D: q v q o q v q . Ambos enfoques son igualmente válidos matemáticamente; la única diferencia es si el cuaternión no conjugado precede o sigue al vector que se transformará o rotará.
  2. Transformación versus cuaterniones de rotación. Los cuaterniones se pueden usar para representar la rotación física de un vector en el espacio 3D y para representar la transformación del mismo vector de un sistema de coordenadas a otro. Estas resultan ser operaciones conjugadas.
  3. Orden de los elementos.
    Los cuaterniones tienen cuatro elementos, una parte real escalar y una parte imaginaria vectorial. ¿Qué debe ir primero, la parte real o la imaginaria, al almacenarlos o intercambiarlos con otra persona? La respuesta es que no hay una respuesta correcta.
  4. Cómo integrarlos numéricamente.
    Los tres anteriores son solo cuestiones de representación. Este último problema es lo suficientemente complejo como para tratarlo por separado.

Los primeros problemas significan que cuando se trabaja con otra persona (por ejemplo, una simulación integrada conjunta), es mejor que uno aclare la nomenclatura de los dos equipos. Hay muchas probabilidades de que los dos grupos no usen las mismas representaciones, y también hay muchas probabilidades de que ninguno de los equipos cambie su esquema interno. Afortunadamente, la conversión de uno a otro se maneja fácilmente. Habrá muchas acusaciones de que no se maneja.

¿Cómo integrar numéricamente cuaterniones unitarios?

Hay una serie de razones por las que uno puede necesitar integrar una unidad de cuaternión con el tiempo. Una velocidad angular distinta de cero cambia la orientación de una nave espacial. Utilizo cuaterniones de unidad de transformación izquierda en mi trabajo. La derivada temporal de tal cuaternión es q ˙ yo B = 1 2 ω q yo B dónde q yo B es el cuaternión de transformación a la izquierda del cuerpo de la nave espacial inercial y ω es la velocidad angular de la nave espacial expresada en las coordenadas del marco del cuerpo. La integración numérica implica inevitablemente pasos a lo largo de las líneas de X ( t + Δ t ) = X ( t ) + X ˙ ( t ) Δ t .

Esto no es matemáticamente válido para los cuaterniones unitarios; los cuaterniones unitarios no tienen operador de suma. Es válido para cuaterniones en general, pero el resultado es inevitablemente un cuaternión no unitario. Un recurso simple es normalizar el resultado. Esto funciona, un poco, para pasos muy pequeños. Ha habido una gran cantidad de trabajo sobre integradores geométricos en las últimas dos décadas, en particular, integradores de grupo de Lie. Los cuaterniones unitarios son un grupo de Lie bastante simple. El espacio tangente son los cuaterniones imaginarios puros. Este es el espacio en el que viven las velocidades angulares. Los cuaterniones imaginarios puros forman un álgebra, un álgebra de Lie en particular. Todo el trabajo realizado en las técnicas de integración de grupos de Lie se aplica directamente a los cuaterniones unitarios.

Hay mas por venir. Hay libros sobre este tema. No quiero escribir un libro, pero hacer justicia a este tema requiere bastante más que unos pocos párrafos.
A los editores: mi respuesta (hasta ahora) es larga y, por lo tanto, seguramente está repleta de errores gramaticales. Por favor, siéntase libre de corregir.
Un buen artículo general que obviamente no es un secreto, NOFORN: Una introducción a los integradores del grupo Lie: conceptos básicos, nuevos desarrollos y aplicaciones . Es de código abierto y está disponible gratuitamente.
Un breve, ¿cómo se podría convertir un cuartenión al familiar cabeceo-guiñada-balanceo?
@SF Ver web.archive.org/web/20160103223542/http://… . Este es un código que escribí que alguien más convirtió a Java y luego hizo de dominio público. (No tengo quejas. Me alegro de que lo haya hecho). Google ha cerrado googlecode.com, pero archive.org afortunadamente capturó ese enlace. En particular, vea la función set_from_matrix. Esto utiliza una matriz de transformación en lugar de un cuaternión. La transformación de un cuaternión a una matriz de transformación es bastante sencilla.
Me gusta esta respuesta. Pero, ¿qué pasa con algunas palabras sobre el bloqueo del cardán? El bloqueo de cardán es una de las razones más importantes para preferir los cuaterniones a las matrices de 3x3 en muchos cálculos y modelos.
@Polygnome: esas palabras están próximas, Gimbal lock es una de las muchas razones por las que los ángulos de Euler (en los 48 encantamientos) muerden las balas. Los cuaterniones no sufren bloqueo de cardán.
Recientemente entré en otra discusión (también conocida como argumento) sobre cómo usar cuaterniones para representar rotaciones. La otra parte se lamentó por no haber usado el formulario correcto. Si no fuera por el hecho de que estaban pagando indirectamente la factura, EFF ELLOS. Quedan cuaterniones ( q v q ), cuaterniones rectos ( q v q ), y cuaterniones en los que la parte del vector se almacena primero o se almacena en último lugar. No existe una sola "manera correcta" de hacerlo, por lo que debe estar dispuesto y ser capaz de abordar esas ambigüedades cuando trabaje con otra persona.
Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .
Esta respuesta es extremadamente útil para mí porque describe una forma de pensar acerca de los cuaterniones que me da mucha más información que una simple descripción matemática. Saber "cómo funcionan" y lo que pueden hacer hace que ahora sea mucho más fácil abordar las matemáticas. ¿Hay alguna posibilidad de que también pueda arrojar un poco de luz sobre la matriz de transición de estado?
¡Respeto adicional por usar "plantea la pregunta" correctamente y con estilo!
@BobJacobsen - Excepto que no lo usé correctamente. "Suplicar la pregunta" es una falacia lógica, que no creo haber invocado. En cambio, debería haber escrito "plantea la pregunta". Dejaré ese "begs the question" como está y pediré perdón.
@ David-Hammen Bueno, las personas razonables pueden diferir. Mi lectura fue que la pregunta se planteó cuando el OP escribió "Los cuaterniones se usan ampliamente para representar la orientación de una nave espacial. ¿Por qué?" La primera parte de su respuesta estaba en la línea de "Aquí está ahora para representar la orientación". Esa parte de su respuesta, si se hubiera dejado sola, habría "planteado la pregunta" porque asumía que "los cuaterniones se usan para representar... orientación"; no estaba respondiendo al "¿Por qué?". Pero luego diste una respuesta clara y completa a la pregunta formulada. ¡Buen trabajo! Absolutamente no se necesita perdón.