Contenido principal

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 3D que consiste en un sistema de coordenadas cartesianas a la derecha.

    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 las rotaciones de ϕ, ψ y θ sobre los ejes x, y y z, 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 Matriz de rotación ortonormal en 3D.

    Este objeto actúa como una matriz numérica que permite componer rotaciones utilizando la multiplicación y la división.

    Creación

    Descripción

    Representaciones de rotación en 3D

    rotation = so3 crea una rotación SO(3) que representa una rotación de identidad sin traslació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 del vector de la transformación SE(3) transformation.

    Otras representaciones de rotación numérica en 3D

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

    ejemplo

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

    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 del ángulo del eje axang.

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

    Nota

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

    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 arreglo de N elementos de objetos so3. 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 por N, un objeto se3 escalar o un arreglo de N elementos de objetos se3. 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 quaternion escalar o como un arreglo de N elementos de objetos quaternion. N es el número total de cuaterniones especificados.

    Si quaternion es un arreglo de N elementos, 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 de N por 3 en radianes. Cada fila representa un conjunto de ángulos de Euler con la secuencia de rotación de ejes definida por el argumento sequence. La secuencia de rotación de ejes predeterminada es ZYX.

    Si euler es una matriz de 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 las rotaciones de ϕ, ψ y θ sobre los ejes x, y y z, 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", el objeto so3 construye la matriz de rotación R multiplicando la rotación sobre el eje x por la rotación sobre el eje y y, después, multiplicando ese producto por la rotación sobre el eje z:

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

    Ejemplo: so3([pi/2 pi/3 pi/4],"eul","ZYZ") hace girar un punto por pi/4 radianes sobre el eje z, después hace girar el punto por pi/3 radianes sobre el eje y y, después, hace girar el punto por pi/2 radianes sobre el eje z. Esto es equivalente 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 de N por 4. N es el número de cuaterniones especificados. Cada fila representa un cuaternión con la forma [qw qx qy qz], donde qw es un número escalar.

    Si quat es una matriz de 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 convertir los cuaterniones a 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 de N por 4 con el formato [x y z theta]. N es el número total de rotaciones del ángulo del eje. x, y y z son componentes de vector del eje x, y y z, respectivamente. El vector define el eje que se debe girar por el ángulo theta, en radianes.

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

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

    Tipos de datos: single | double

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

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

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

    Tipos de datos: single | double

    Eje que se desea girar, especificado como una de estas opciones:

    • "rotx": girar sobre el eje x:

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

    • "roty": girar sobre el eje y:

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

    • "rotz": girar sobre el eje z:

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

    Utilice el argumento angle para especificar cuánto girar sobre el 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

    expandir todo

    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