[Conocimientos matemáticos] Representación del ángulo de Euler de la matriz de rotación espacial tridimensional, representación de cuaterniones, conversión entre los dos, implementación del código Matlab

número de serie contenido
1 [Conocimientos matemáticos] Grado de libertad y método de cálculo de grados de libertad
2 [Conocimientos matemáticos] Cuerpo rígido cuerpo rígido y el movimiento del cuerpo rígido
3 [Conocimientos matemáticos] Movimiento básico de cuerpos rígidos, traslación y rotación.
4 [Conocimientos matemáticos] Multiplicación de vectores, producto interno, producto externo, implementación de código matlab
5 [Conocimientos matemáticos] Método de mínimos cuadrados, comenzando con la regresión lineal, dando ejemplos numéricos y utilizando el método de mínimos cuadrados para resolver el modelo de regresión.
6 [Conocimientos matemáticos] Método de mínimos cuadrados, situación lineal general, proceso de representación matricial, proceso de fórmula de solución de parámetros óptimos
7 [Conocimiento matemático] Covarianza, la covarianza de variables aleatorias, la covarianza cuando las variables aleatorias son números únicos y vectores respectivamente
8 [Conocimiento matemático] Descomposición de valores singulares, entendida desde la perspectiva de la transformación lineal de datos
9 [Conocimientos matemáticos] El proceso de derivación de la matriz de rotación se basa en la rotación del vector, al tiempo que resuelve las limitaciones no lineales de la transformación euclidiana.
10 [Conocimientos matemáticos] Representación del ángulo de Euler de la matriz de rotación espacial tridimensional, representación de cuaterniones, conversión entre los dos, implementación del código Matlab
11 [Conocimiento matemático] Dadas las coordenadas de N> = 3 puntos en los momentos delantero y trasero, encuentre la matriz de traslación y la matriz de rotación del cuerpo rígido, y la distancia entre estos N> = 3 puntos siempre permanece sin cambios, lo que representa un cuerpo rígido

Hemos discutido las matrices de rotación antes. Nuevamente, el orden de rotación es importante y afectará el resultado final. Girar XX primeroEje X , luego gireYYEje Y , rotación finalZZEl resultado obtenido en el eje Z es el mismo que al girar ZZEje Z , luego gireYYEje Y , última rotaciónXXLos resultados obtenidos para el eje X son diferentes. Esta diferencia de orden da como resultado diferentes orientaciones y cambios en la orientación espacial. Es por eso que en aplicaciones prácticas necesitamos especificar explícitamente el orden de rotación para asegurarnos de obtener resultados correctos y consistentes.

Esta vez, basándonos en el espacio tridimensional, discutiremos dos métodos de representación de matrices de rotación, a saber, la representación del ángulo de Euler y la representación del cuaternión, así como la relación de conversión entre los dos.

En el espacio tridimensional, la matriz de rotación RRLas dimensiones de R son3 × 3 3 \times 33×3 , que es una matriz ortogonal con un determinante de1 11 .

1. Representación de los ángulos de Euler

Los ángulos de Euler suelen constar de tres ángulos.

  • Ángulo de balanceo (rollo), el símbolo común es ϕ \phiϕ
  • Ángulo de paso (paso), el símbolo común es θ \thetai
  • Ángulo de guiñada (guiñada), el símbolo común es ψ \psipag

Estos tres ángulos describen los ángulos alrededor de X, Y, ZX, Y, Z respectivamente.x ,Y ,El ángulo de rotación del eje Z.

Alrededor del XXRotación del eje X ϕ \phiLa matriz de rotación del ángulo ϕ es

R x ( ϕ ) = [ 1 0 0 0 porque ⁡ ( ϕ ) − sin ⁡ ( ϕ ) 0 sin ⁡ ( ϕ ) cos ⁡ ( ϕ ) ] R_x(\phi) = \left[\begin{matrix} 1 & 0 & 0 \\ 0 & \cos(\phi) & -\sin(\phi) \\ 0 & \sin(\phi) & \cos(\phi) \\ \end{matrix}\right]Rx( ϕ )= 1000porque ( ϕ )pecado ( ϕ )0pecado ( ϕ )porque ( ϕ )

Y Y Rotación del eje Y θ \thetaLa matriz de rotación del ángulo θ es

R y ( θ ) = [ cos ⁡ ( θ ) 0 sin ⁡ ( θ ) 0 1 0 − sin ⁡ ( θ ) 0 cos ⁡ ( θ ) ] R_y(\theta) = \left[\begin{matrix} \cos (\theta) & 0 & \sin(\theta) \\ 0 & 1 & 0 \\ -\sin(\theta) & 0 & \cos(\theta) \\ end{matrix}\right]Ry( yo )= porque ( θ )0pecado ( θ ).010pecado ( θ )0porque ( θ ).

ZZ _Rotación del eje Z ψ \psiLa matriz de rotación del ángulo ψ es

R z ( ψ ) = [ cos ⁡ ( ψ ) − sin ⁡ ( ψ ) 0 sin ⁡ ( ψ ) cos ⁡ ( ψ ) 0 0 0 1 ] R_z(\psi) = \left[\begin{matrix} \cos (\psi) & -\sin(\psi) & 0 \\ \sin(\psi) & \cos(\psi) & 0 \\ 0 & 0 & 1 \\\end{matrix}\right]Rz( pag )= porque ( ψ )pecado ( ψ )0pecado ( ψ )porque ( ψ )0001

Por ejemplo, para un eje fijo XYZ XYZLa representación del ángulo de Euler de X Y Z , su matriz de rotación es

R = R z ( ϕ ) R y ( θ ) R x ( ψ ) = [ cos ⁡ ( θ ) cos ⁡ ( ψ ) sen ⁡ ( ϕ ) sen ⁡ ( θ ) cos ⁡ ( ψ ) − cos ⁡ ( ϕ ) pecado ⁡ ( ψ ) porque ⁡ ( ϕ ) pecado ⁡ ( θ ) porque ⁡ ( ψ ) + pecado ⁡ ( ϕ ) pecado ⁡ ( ψ ) cos ⁡ ( θ ) pecado ⁡ ( ψ ) pecado ⁡ ( ϕ ) pecado ⁡ ( θ ) pecado ⁡ ( ψ ) + cos ⁡ ( ϕ ) cos ⁡ ( ψ ) cos ⁡ ( ϕ ) pecado ⁡ ( θ ) pecado ⁡ ( ψ ) − pecado ⁡ ( ϕ ) cos ⁡ ( ψ ) − pecado ⁡ ( θ ) pecado ⁡ ( ϕ ) porque ⁡ ( θ ) porque ⁡ ( ϕ ) porque ⁡ ( θ ) ] \begin{aligned} R &= R_z(\phi) R_y(\theta) R_x(\psi) \\ &= \left[ \begin{matrix} \cos(\theta)\cos(\psi) & \sin(\phi)\sin(\theta)\cos(\psi) - \cos(\phi)\sin(\psi) & \cos(\phi)\sin(\theta)\cos(\psi) + \sin(\phi)\sin(\psi) \\ \cos(\theta)\sin(\psi) & \sin(\ phi)\sin(\theta)\sin(\psi) + \cos(\phi)\cos(\psi) & \cos(\phi)\sin(\theta)\sin(\psi) - \sin( \phi)\cos(\psi) \\ -\sin(\theta) & \sin(\phi)\cos(\theta) & \cos(\phi)\cos(\theta)\\ \end{matrix}\right] \end{aligned}R=Rz( ϕ ) Ry( yo ) Rx( pag )= porque ( θ )porque ( ψ )porque ( θ )pecado ( ψ )pecado ( θ ).pecado ( ϕ )pecado ( θ )porque ( ψ )porque ( ϕ )pecado ( ψ )pecado ( ϕ )pecado ( θ )pecado ( ψ )+porque ( ϕ )porque ( ψ )pecado ( ϕ )porque ( θ ).porque ( ϕ )pecado ( θ )porque ( ψ )+pecado ( ϕ )pecado ( ψ )porque ( ϕ )pecado ( θ )pecado ( ψ )pecado ( ϕ )porque ( ψ )porque ( ϕ )porque ( θ ).

Esta matriz representa la primera alrededor del XXRotación del eje X ϕ \phiÁngulo ϕ , luego alrededor deYYRotación del eje Y θ \thetaángulo θ , luego alrededorde ZZRotación del eje Z ψ \psiEl efecto de rotación total del ángulo ψ .

Para obtener más información sobre la derivación y detalles de los ángulos de Euler, consulte el artículo: Capítulo 3 - Conceptos básicos del conocimiento matemático -> El proceso de derivación de la transformación de coordenadas y la matriz de rotación [conocimiento matemático], basado en la rotación de vectores, mientras se resuelve La no linealidad de las limitaciones de la transformación euclidiana .

% 给定欧拉角 phi theta psi
phi   = deg2rad(10);  % 示例:10度,记得转换为弧度
theta = deg2rad(22);  % 示例:22度
psi   = deg2rad(35);  % 示例:35度

R_x = [ 1  0         0
        0  cos(phi) -sin(phi)
        0  sin(phi)  cos(phi)];

R_y = [ cos(theta)  0  sin(theta)
        0           1  0
       -sin(theta)  0  cos(theta)];

R_z = [ cos(psi) -sin(psi)  0
        sin(psi)  cos(psi)  0
        0         0         1];

R = R_z * R_y * R_x;

R = [cos(theta)*cos(psi)  sin(phi)*sin(theta)*cos(psi)-cos(phi)*sin(psi)  cos(phi)*sin(theta)*cos(psi)+sin(phi)*sin(psi)
     cos(theta)*sin(psi)  sin(phi)*sin(theta)*sin(psi)+cos(phi)*cos(psi)  cos(phi)*sin(theta)*sin(psi)-sin(phi)*cos(psi)
    -sin(theta)           sin(phi)*cos(theta)                             cos(phi)*cos(theta)];
R =
    0.7595   -0.5116    0.4018
    0.5318    0.8440    0.0694
   -0.3746    0.1610    0.9131

% 给定点坐标
point_1 = [ 10
            22
            35];
point_2 = R * point_1;

figure()
scatter3(point_1(1), point_1(2), point_1(3), 150, 'r'); hold on;
scatter3(point_2(1), point_2(2), point_2(3), 150, 'b');

Por favor agregue la descripción de la imagen.


2. Representación del cuaternión

El cuaternión está compuesto por 1 11 número real más3 3Está compuesto por 3 números complejos y generalmente se puede expresar como

q = qw + qxi + qyj + qzkq = q_w + q_x \text{i} + q_y \text{j} + q_z \text{k}q=qw+qxi+qyj+qzk

其中qw, qx, qy, qz q_w, q_x, q_y, q_zqw,qx,qy,qzTodos son números reales, i, j, k \text{i, j, k}i, j, k son las primitivas de los cuaterniones y satisfacen la relación de multiplicación como se muestra a continuación

  • i 2 = j 2 = k 2 = ijk = − 1 \text{i}^2 = \text{j}^2 = \text{k}^2 = \text{i}\text{j}\text{ k} = -1i2=j2=k2=yo jk _=1
  • yo 0 = j 0 = k 0 = 1 \text{i}^0 = \text{j}^0 = \text{k}^0 = 1i0=j0=k0=1

También se puede considerar que los cuaterniones consisten en un escalar y un vector, donde qw q_wqwes la parte escalar del cuaternión, qx, qy, qz q_x, q_y, q_zqx,qy,qzConstituye la parte vectorial del cuaternión.


Supongamos que hay dos cuaterniones respectivamente q 1 = ( qw 1 , [ qx 1 , qy 1 , qz 1 ] ) q_1 = (q_{w1}, [q_{x1}, q_{y1}, q_{z1} ])q1=( qw 1,[ qx1 _,qy 1,qcon 1]) ,q 2 = ( qw 2 , [ qx 2 , qy 2 , qz 2 ] ) q_2 = (q_{w2}, [q_{x2}, q_{y2}, q_{z2}])q2=( qw 2,[ qx2 _,qy2_ _,qz 2]) , y seav 1 = [ qx 1 , qy 1 , qz 1 ] v_1 = [q_{x1}, q_{y1}, q_{z1}]v1=[ qx1 _,qy 1,qcon 1]v 2 = [ qx 2 , qy 2 , qz 2 ] v_2 = [q_{x2}, q_{y2}, q_{z2}]v2=[ qx2 _,qy2_ _,qz 2] , entonces existe el siguiente algoritmo

  • Suma de cuaterniones: q 1 + q 2 = ( qw 1 + qw 2 , ( v 1 + v 2 ) ) q_1 + q_2 = (q_{w1}+q_{w2}, (v_1 +v_2))q1+q2=( qw 1+qw 2,( v1+v2))
  • 四元数乘法: q 1 q 2 = qw 1 qw 2 − v 1 ⋅ v 2 + qw 1 v 2 + qw 2 v 1 + v 1 × v 2 = ( qw 1 qw 2 − v 1 ⋅ v 2 , ( qw 1 v 2 + qw 2 v 1 + v 1 × v 2 ) ) q_1 q_2 = q_{w1} q_{w2} - v_1 \cdot v_2 + q_{w1} v_2 + q_{w2} v_1 + v_1 \times v_2 = (q_{w1} q_{w2} - v_1 \cdot v_2, (q_{w1} v_2 + q_{w2} v_1 + v_1 \times v_2))q1q2=qw 1qw 2v1v2+qw 1v2+qw 2v1+v1×v2=( qw 1qw 2v1v2,( qw 1v2+qw 2v1+v1×v2))
  • Módulo del cuaternión: ∥ q 1 ∥ = qw 1 2 + qx 1 2 + qy 1 2 + qz 1 2 \|q_1\| = \sqrt{q_{w1}^2 + q_{x1}^2 + q_ {y1 }^2 + q_{z1}^2}∥q _1=qw 12+qx1 _2+qy 12+qcon 12
  • Cuaternión unitario: ∥ q 1 ∥ = 1 \|q_1\| = 1∥q _1=1
  • Conjugado de cuaternión: q 1 ∗ = ( qw 1 , − v 1 ) q_1^* = (q_{w1}, -v_1)q1=( qw 1,−v _1)
  • Inverso del cuaternión: q 1 − 1 = q 1 ∗ ∥ q 1 ∥ q_1^{-1} = \frac{q_1^*}{\|q_1\|}q1 1=∥q _1q1

Los cuaterniones son un sistema de números complejos extendido que se usa comúnmente para representar rotaciones en un espacio tridimensional.

Un cuaternión unitario (longitud 1 11 ) Puede representar la rotación en el espacio 3D. Se puede rotar un punto a otra posición mediante la multiplicación de cuaterniones.

Alrededor del XXRotación del eje X ϕ \phiEl cuaternión del ángulo ϕ es

q ϕ = ( porque ⁡ ( ϕ 2 ) , sin ⁡ ( ϕ 2 ) , 0 , 0 ) q_\phi = (\cos(\frac{\phi}{2} ), \sin(\frac{\phi} {2}), 0, 0)qϕ=( porque (2ϕ) ,pecado (2ϕ) ,0 ,0 )

Y Y Rotación del eje Y θ \thetaEl cuaternión del ángulo θ es

q θ = (cos ⁡ (θ 2), 0, sin ⁡ (θ 2), 0, 0) q_\theta = (\cos(\frac{\theta}{2}), 0, \sin(\frac {\theta}{2}), 0, 0)qi=( porque (2i) ,0 ,pecado (2i) ,0 ,0 )

ZZ _Rotación del eje Z ψ \psiEl cuaternión del ángulo ψ es

q ψ = ( cos ⁡ ( ψ 2 ) , 0 , 0 , sen ⁡ ( ψ 2 ) ) q_\psi = (\cos(\frac{\psi}{2}), 0, 0, \sin(\frac {\psi}{2}))qpag=( porque (2pag) ,0 ,0 ,pecado (2pag))

El cuaternión rotado total es el producto de estos tres cuaterniones. La multiplicación de cuaterniones no es la multiplicación escalar habitual, tiene reglas de multiplicación específicas.

Dado un cuaternión qqq (la longitud del módulo es 1, existe la relaciónqw 2 + qx 2 + qy 2 + qz 2 = 1 \sqrt{q_w^2+q_x^2+q_y^2+q_z^2}=1qw2+qX2+qy2+qz2 =1 ), asumiendo que el orden de rotación adoptado esXYZ XYZX Y Z , su correspondiente matriz de rotaciónRRR se puede expresar como

R = [ 1 − 2 ( qy 2 + qz 2 ) 2 ( qxqy − qwqz ) 2 ( qxqz + qwqy ) 2 ( qxqy + qwqz ) 1 − 2 ( qx 2 + qz 2 ) 2 ( qyqz − qwqx ) 2 ( qxqz − qwqy ) 2 ( qyqz + qwqx ) 1 − 2 ( qx 2 + qy 2 ) ] \begin{aligned} R &= \left[\begin{matrix} 1 - 2(q_y^2 + q_z^2) & 2 (q_x q_y - q_w q_z) & 2(q_x q_z + q_w q_y) \\ 2(q_x q_y + q_w q_z) & 1 - 2(q_x^2 + q_z^2) & 2(q_y q_z - q_w q_x) \\ 2(q_x q_z - q_w q_y) & 2(q_y q_z + q_w q_x) & 1 - 2(q_x^2 + q_y^2) \\ \end{matrix}\right] \end{aligned}r= 12 ( qy2+qz2)2 ( qxqy+qwqz)2 ( qxqzqwqy)2 ( qxqyqwqz)12 ( qX2+qz2)2 ( qyqz+qwqx)2 ( qxqz+qwqy)2 ( qyqzqwqx)12 ( qX2+qy2)

Los cuaterniones unitarios tienen algunas ventajas al describir rotaciones 3D, que no se ven afectadas por el problema del "bloqueo del cardán" en los ángulos de Euler.

% 给定四元数
quaternion = [0.9376  0.0244  0.2070  0.2782];  

q_w = quaternion(1);
q_x = quaternion(2);
q_y = quaternion(3);
q_z = quaternion(4);

% 计算旋转矩阵 R
R(1,1) = 1 - 2*(q_y^2 + q_z^2);
R(1,2) = 2*(q_x*q_y - q_w*q_z);
R(1,3) = 2*(q_x*q_z + q_w*q_y);
R(2,1) = 2*(q_x*q_y + q_w*q_z);
R(2,2) = 1 - 2*(q_x^2 + q_z^2);
R(2,3) = 2*(q_y*q_z - q_w*q_x);
R(3,1) = 2*(q_x*q_z - q_w*q_y);
R(3,2) = 2*(q_y*q_z + q_w*q_x);
R(3,3) = 1 - 2*(q_x^2 + q_y^2);
R =
    0.7595   -0.5116    0.4017
    0.5318    0.8440    0.0694
   -0.3746    0.1609    0.9131

3. Convertir cuaterniones a ángulos de Euler

La conversión de cuaterniones a ángulos de Euler no es única, ya que para ciertas rotaciones existen múltiples representaciones de los ángulos de Euler. Sin embargo, para la mayoría de las aplicaciones prácticas, se puede calcular un conjunto específico de ángulos de Euler a partir de un cuaternión específico.

Construya q = ( qw , qx , qy , qz ) q = ( q_w , q_x , q_y , q_z )q=( qw,qx,qy,qz) , si desea convertirlo aXYZ XYZÁngulos de Euler de orden X Y Z ( ϕ , θ , ψ ) (\phi, \theta, \psi)( ϕ ,yo ,ψ ) . Aquí se explica cómo convertir de cuaterniones a ángulos de Euler

ϕ = atan2 ( 2 ( qwqx + qyqz ) , 1 − 2 ( qx 2 + qy 2 ) ) θ = arcosin ⁡ ( 2 ( qwqy − qxqz ) ) ψ = atan2 ( 2 ( qwqz + qxqy ) , 1 − 2 ( qy 2 + qz 2 ) ) \begin{aligned} \phi &= \text{atan2} (2(q_w q_x + q_y q_z), 1-2(q_x^2 + q_y^2)) \\ \theta &= \ text{} \arcsin (2(q_w q_y - q_x q_z)) \\ \psi&= \text{atan2} (2(q_w q_z + q_x q_y), 1-2(q_y^2 + q_z^2)) \end {alineado}ϕipag=atan2 ( 2 ( qwqx+qyqz) ,12 ( qX2+qy2))=arcosen ( 2 ( qwqyqxqz))=atan2 ( 2 ( qwqz+qxqy) ,12 ( qy2+qz2) )

donde atan2 ( ) \text{atan2}()atan2 ( ) no esarctan ⁡ ( ) \arctan()arctán ( )

Por ejemplo, si usa arctan ⁡ ( y / x ) \arctan(y/x)arctan ( y / x ) , su valor de retorno está en[ − π / 2 , π / 2 ] [-\pi/2, \pi/2][ π /2 ,π /2 ] , porque no puede distinguir entrexxLos valores positivos y negativos de x . Yatan2 ( y , x ) \text{atan2}(y, x)atan2 ( y ,x ) , su valor de retorno está en[ − π , π ] [-\pi, \pi][ π ,π ] , puedes distinguirxxEl signo de x , por lo que resulta más práctico, sobre todo a la hora de calcular ángulos de Euler. Más importante aún,atan2 ( y , x ) \text{atan2}(y, x)atan2 ( y ,x ) puede manejarx = 0 x=0X=0 , que es útil al calcular ángulos o ángulos de Euler.

Tenga en cuenta que debido al uso de arcsin ⁡ ( ) \arcsin()arcsin ( ) , esteθ \thetaθ está cerca de± 90 ° \pm 90\gradosA ± 90° , puede producirse inestabilidad numérica. Esto se debe a que en estos casos extremos el rumbo y el balanceo se vuelven indistinguibles, lo que se conoce como problema de bloqueo del cardán.

% 给定四元数
quaternion = [0.9376  0.0244  0.2070  0.2782];  

q_w = quaternion(1);
q_x = quaternion(2);
q_y = quaternion(3);
q_z = quaternion(4);

% 转换四元数到欧拉角
phi   = atan2(2*(q_w*q_x + q_y*q_z), 1 - 2*(q_x^2 + q_y^2));
theta = asin(2*(q_w*q_y - q_z*q_x));
psi   = atan2(2*(q_w*q_z + q_x*q_y), 1 - 2*(q_y^2 + q_z^2));

% 如果需要角度形式而不是弧度,可以转换为度
phi_deg   = rad2deg(phi);
theta_deg = rad2deg(theta);
psi_deg   = rad2deg(psi);
phi_deg =
    9.9953

theta_deg =
   21.9990

psi_deg =
   34.9983

4. Convertir los ángulos de Euler en cuaternión

Dados tres ángulos de Euler ϕ , θ , ψ \phi, \theta, \psiϕ ,yo ,ψ , el cuaternión correspondiente es

qw = porque ⁡ ( ϕ 2 ) porque ⁡ ( θ 2 ) porque ⁡ ( ψ 2 ) + pecado ⁡ ( ϕ 2 ) pecado ⁡ ( θ 2 ) pecado ⁡ ( ψ 2 ) qx = pecado ⁡ ( ϕ 2 ) porque ⁡ ( θ 2 ) porque ⁡ ( ψ 2 ) − cos ⁡ ( ψ 2 ) pecado ⁡ ( θ 2 ) pecado ⁡ ( ψ 2 ) qy = cos ⁡ ( ψ 2 ) pecado ⁡ ( θ 2 ) cos ⁡ ( ψ 2 ) + pecado ⁡ (ϕ 2) porque ⁡ (θ 2) pecado ⁡ (ψ 2) qz = porque ⁡ (ϕ 2) porque ⁡ (θ 2) pecado ⁡ (ψ 2) − pecado ⁡ (ϕ 2) pecado ⁡ (θ 2) cos ⁡ ( ψ 2 ) \begin{aligned} q_w &= \cos(\frac{\phi}{2}) \cos(\frac{\theta}{2}) \cos(\frac{\psi}{ 2}) + \sin(\frac{\phi}{2}) \sin(\frac{\theta}{2}) \sin(\frac{\psi}{2}) \\ q_x &= \sin (\frac{\phi}{2}) \cos(\frac{\theta}{2}) \cos(\frac{\psi}{2}) - \cos(\frac{\phi}{2} ) \sin(\frac{\theta}{2}) \sin(\frac{\psi}{2}) \\ q_y &= \cos(\frac{\phi}{2}) \sin(\frac {\theta}{2}) \cos(\frac{\psi}{2}) + \sin(\frac{\phi}{2}) \cos(\frac{\theta}{2}) \sin (\frac{\psi}{2}) \\ q_z &= \cos(\frac{\phi}{2})\cos(\frac{\theta}{2}) \sin(\frac{\psi}{2}) - \sin(\frac{\phi}{2}) \sin(\frac{\theta}{ 2}) \cos(\frac{\psi}{2}) \end{alineado}qwqxqyqz=porque (2ϕ)porque (2i)porque (2pag)+pecado (2ϕ)pecado (2i)pecado (2pag)=pecado (2ϕ)porque (2i)porque (2pag)porque (2ϕ)pecado (2i)pecado (2pag)=porque (2ϕ)pecado (2i)porque (2pag)+pecado (2ϕ)porque (2i)pecado (2pag)=porque (2ϕ)porque (2i)pecado (2pag)pecado (2ϕ)pecado (2i)porque (2pag)

El cuaternión resultante es ( qw , qx , qy , qz ) (q_w, q_x, q_y, q_z)( qw,qx,qy,qz)

phi   = deg2rad(10);  % 示例:10度,记得转换为弧度
theta = deg2rad(22);  % 示例:22度
psi   = deg2rad(35);  % 示例:35度

% 计算四元数
q_w = cos(phi/2) * cos(theta/2) * cos(psi/2) + sin(phi/2) * sin(theta/2) * sin(psi/2);
q_x = sin(phi/2) * cos(theta/2) * cos(psi/2) - cos(phi/2) * sin(theta/2) * sin(psi/2);
q_y = cos(phi/2) * sin(theta/2) * cos(psi/2) + sin(phi/2) * cos(theta/2) * sin(psi/2);
q_z = cos(phi/2) * cos(theta/2) * sin(psi/2) - sin(phi/2) * sin(theta/2) * cos(psi/2);

quaternion = [q_w, q_x, q_y, q_z];
quaternion =
    0.9376    0.0244    0.2070    0.2782

Árbitro

  1. Matriz de rotación - Wikipedia
  2. Colección de información útil: ángulos de Euler, matrices de rotación y cuaterniones.

Supongo que te gusta

Origin blog.csdn.net/weixin_36815313/article/details/132286733
Recomendado
Clasificación