Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

so3

rotación SO(3)

Desde R2022b

    Descripción

    El objeto so3 representa una rotación SO(3) en 3-D en un sistema de coordenadas cartesiano diestro.

    La rotación SO(3) es una matriz de rotación ortonormal de 3 por 3. Por ejemplo, estas son matrices de rotación ortonormal para rotaciones de ϕ, ψ y θ sobre x-, y- y z-eje, respectivamente:

    Rx(ϕ)=[1000cosϕsinϕ0sinϕcosϕ], Ry(ψ)=[cosψ0sinψ010sinψ0cosψ], Rz(θ)=[cosθsinθ0sinθcosθ0001]

    Para obtener más información, consulte la sección 3-D Orthonormal Rotation Matrix .

    Este objeto actúa como una matriz numérica, permitiéndole componer rotaciones mediante multiplicación y división.

    Creación

    Descripción

    Representaciones de rotación 3D

    rotation = so3 crea una rotación SO(3) que representa una rotación de identidad sin traducción.

    rotation=[100010001]

    rotation = so3(rotation) crea una rotación SO(3) que representa una rotación pura definida por la rotación ortonormal rotation.

    rotation=[r11r12r13r11r22r23r31r32r33]

    rotation = so3(quaternion) crea una rotación SO(3) a partir de las rotaciones definidas por el cuaternión quaternion.

    rotation = so3(transformation) crea una rotación SO(3) a partir de la transformación SE(3) transformation.

    Otras representaciones numéricas de rotación tridimensional

    ejemplo

    rotation = so3(euler,"eul") crea una rotación SO(3) a partir de las rotaciones definidas por los ángulos de Euler euler.

    rotation = so3(euler,"eul",sequence) especifica la secuencia de rotaciones del ángulo de Euler sequence. Por ejemplo, la secuencia "ZYX" gira el eje z, luego el eje y y x-eje.

    rotation = so3(quat,"quat") crea una rotación SO(3) a partir de las rotaciones definidas por los cuaterniones numéricos quat.

    rotation = so3(axang,"axang") crea una rotación SO(3) a partir de las rotaciones definidas por la rotación eje-ángulo axang.

    rotation = so3(angle,axis) crea una rotación SO(3) a partir de las rotaciones angles sobre el eje de rotación axis.

    Nota

    Si alguna entrada contiene más de una rotación, entonces la salida rotation es un arreglo de elementos N de objetos so3 correspondientes a cada uno de las rotaciones de entrada N .

    Argumentos de entrada

    expandir todo

    Rotación ortonormal, especificada como una matriz de 3 por 3, un arreglo de 3 por 3 por N, un objeto escalar so3 o un N arreglo de elementos de so3 objetos. N es el número total de rotaciones.

    Si rotation es un arreglo, el número resultante de objetos so3 creados en el arreglo de salida es igual a N.

    Ejemplo: eye(3)

    Transformación homogénea, especificada como una matriz de 4 por 4, un arreglo de 4 por 4 N , un objeto escalar se3 o un N arreglo de elementos de se3 objetos. N es el número total de transformaciones especificadas.

    Si transformation es un arreglo, el número resultante de objetos so3 creados es igual a N.

    Ejemplo: eye(4)

    Tipos de datos: single | double

    Cuaternión, especificado como un objeto escalar quaternion o como un arreglo de elementos N de objetos quaternion . N es el número total de cuaterniones especificados.

    Si quaternion es un arreglo de elementos N , el número resultante de objetos so3 creados es igual a N.

    Ejemplo: quaternion(1,0.2,0.4,0.2)

    Ángulos de Euler, especificados como una matriz N-por-3, en radianes. Cada fila representa un conjunto de ángulos de Euler con la secuencia de rotación del eje definida por el argumento sequence . La secuencia de rotación del eje predeterminada es ZYX.

    Si euler es una matriz N-por-3, el número resultante de objetos so3 creados es igual a N.

    Ejemplo: [pi/2 pi pi/4]

    Tipos de datos: single | double

    Secuencia de rotación del eje de los ángulos de Euler, especificada como uno de los siguientes escalares de cadena:

    • "ZYX" (predeterminado)

    • "ZYZ"

    • "ZXY"

    • "ZXZ"

    • "YXY"

    • "YZX"

    • "YXZ"

    • "YZY"

    • "XYX"

    • "XYZ"

    • "XZX"

    • "XZY"

    Estas son matrices de rotación ortonormal para rotaciones de ϕ, ψ y θ sobre x- , y- y z-eje, respectivamente:

    Rx(ϕ)=[1000cosϕsinϕ0sinϕcosϕ], Ry(ψ)=[cosψ0sinψ010sinψ0cosψ], Rz(θ)=[cosθsinθ0sinθcosθ0001]

    Al construir la matriz de rotación a partir de esta secuencia, cada carácter indica el eje correspondiente. Por ejemplo, si la secuencia es "XYZ", entonces el objeto so3 construye la matriz de rotación R multiplicando la rotación alrededor de x-eje con la rotación alrededor del y-eje, y luego multiplicando ese producto con la rotación alrededor del z-eje:

    R=Rx(ϕ)·Ry(ψ)·Rz(θ)

    Ejemplo: so3([pi/2 pi/3 pi/4],"eul","ZYZ") gira un punto en pi/4 radianes sobre el eje z, luego gira el punto en pi/3 radianes sobre el eje y, y luego gira el punto en pi/2 radianes sobre el eje z. Esto equivale a so3(pi/2,"rotz") * so3(pi/3,"roty") * so3(pi/4,"rotz")

    Tipos de datos: string | char

    Cuaternión numérico, especificado como una matriz N-por-4. N es el número de cuaterniones especificados. Cada fila representa un cuaternión de la forma [qw qx qy qz], donde qw es un número escalar.

    Si quat es una matriz N-por-4, el número resultante de objetos so3 creados es igual a N.

    Nota

    El objeto so3 normaliza los cuaterniones de entrada antes de convertirlos en una matriz de rotación.

    Ejemplo: [0.7071 0.7071 0 0]

    Tipos de datos: single | double

    Rotación del ángulo del eje, especificada como una matriz N-por 4 en la forma [x y z theta]. N es el número total de rotaciones de ángulo de eje. x, y y z son componentes vectoriales de x-, y- y z-eje, respectivamente. El vector define el eje a girar en el ángulo theta, en radianes.

    Si axang es una matriz N-por-4, el número resultante de objetos so3 creados es igual a N.

    Ejemplo: [.2 .15 .25 pi/4] gira el eje, definido como 0.2 en el eje x, 0.15 a lo largo del y, y 0.25 a lo largo del eje z, por pi/4 radianes.

    Tipos de datos: single | double

    Rotación de ángulo de un solo eje, especificada como una matriz N-por- M . Cada elemento de la matriz es un ángulo, en radianes, alrededor del eje especificado usando el argumento axis , y el objeto so3 crea un so3 objeto para cada ángulo.

    Si angle es una matriz N-por- M , el número resultante de objetos so3 creados es igual a N.

    El ángulo de rotación es positivo en el sentido contrario a las agujas del reloj cuando se mira a lo largo del eje especificado hacia el origen.

    Tipos de datos: single | double

    Eje a rotar, especificado como una de estas opciones:

    • "rotx" — Girar alrededor del eje x:

      Rx(ϕ)=[1000cosϕsinϕ0sinϕcosϕ]

    • "roty" — Girar alrededor del eje y:

      Ry(ψ)=[cosψ0sinψ010sinψ0cosψ]

    • "rotz" — Girar alrededor del eje z:

      Rz(θ)=[cosθsinθ0sinθcosθ0001]

    Utilice el argumento angle para especificar cuánto girar alrededor del eje especificado.

    Ejemplo: Rx = so3(phi,"rotx");

    Ejemplo: Ry = so3(psi,"roty");

    Ejemplo: Rz = so3(theta,"rotz");

    Tipos de datos: string | char

    Funciones del objeto

    expandir todo

    mtimes, *Multiplicación de transformación o rotación.
    mrdivide, /División derecha de transformación o rotación.
    rdivide, ./Transformación por elementos o división por rotación hacia la derecha
    times, .*Transformación por elementos o multiplicación de rotación
    interpInterpolar entre transformaciones
    distCalcular la distancia entre transformaciones.
    normalizeNormalizar matriz de transformación o rotación
    transformAplicar transformación de cuerpo rígido a puntos.
    axangConvertir transformación o rotación en rotaciones de eje-ángulo
    eulConvertir transformación o rotación en ángulos de Euler
    rotmExtraer matriz de rotación
    quatConvertir transformación o rotación a cuaternión numérico
    trvecExtraer vector de traducción
    tformExtraer transformación homogénea.
    xyzquatConvierta la transformación o rotación en una representación de pose tridimensional compacta
    se3Transformación homogénea SE(3)
    quaternionCrear arreglo de cuaterniones

    Ejemplos

    contraer todo

    Cree una rotación SO (3) definida por ángulos de Euler.

    eul1 = [pi/4 pi/3 pi/8]
    eul1 = 1×3
    
        0.7854    1.0472    0.3927
    
    
    R = so3(eul1,"eul")
    R = so3
        0.3536   -0.4189    0.8364
        0.3536    0.8876    0.2952
       -0.8660    0.1913    0.4619
    
    

    Obtén los ángulos de Euler a partir de la transformación.

    eul2 = eul(R)
    eul2 = 1×3
    
        0.7854    1.0472    0.3927
    
    

    Algoritmos

    expandir todo

    Capacidades ampliadas

    Generación de código C/C++
    Genere código C y C++ mediante MATLAB® Coder™.

    Historial de versiones

    Introducido en R2022b

    expandir todo

    Consulte también

    Funciones

    Objetos