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.

se3

Transformación homogénea SE(3)

Desde R2022b

    Descripción

    El objeto se3 representa una transformación SE(3) como una matriz de transformación homogénea 3-D que consta de una traslación y una rotación:

    Para obtener más información, consulte la sección Matriz de transformación homogénea 3D .

    Este objeto actúa como una matriz numérica que le permite componer poses mediante multiplicación y división.

    Creación

    Descripción

    Matrices de rotación, vectores de traducción y matrices de transformación

    transformation = se3 crea una transformación SE(3) que representa una rotación de identidad sin traducción.

    transformation=[1000010000100001]

    transformation = se3(rotation) crea una transformación SE(3) que representa una rotación pura definida por la rotación ortonormal rotation sin traducción. La matriz de rotación está representada por los elementos en la parte superior izquierda de la matriz transformation .

    rotation=[r11r12r13r11r22r23r31r32r33]

    transformation=[r11r12r130r21r22r230r31r32r3300001]

    transformation = se3(rotation,translation) crea una transformación SE(3) que representa una rotación definida por la rotación ortonormal rotation y la traslación translation. La función aplica primero la matriz de rotación y luego el vector de traducción para crear la transformación.

    rotation=[r11r12r13r11r22r23r31r32r33], translation=[t1t2t3]

    transformation=[r11r12r13t1r21r22r23t2r31r32r33t30001]=[100t1010t2001t30001]·[r11r12r130r21r22r230r31r32r3300001]

    transformation = se3(transformation) crea una transformación SE(3) que representa una traslación y rotación definida por la transformación homogénea transformation.

    Otras representaciones de rotación 3D

    transformation = se3(euler,"eul") crea una transformación SE(3) a partir de las rotaciones definidas por los ángulos de Euler euler.

    transformation = se3(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.

    transformation = se3(quat,"quat") crea una transformación SE(3) a partir de las rotaciones definidas por los cuaterniones numéricos quat.

    transformation = se3(axang,"axang") crea una transformación SE(3) a partir de las rotaciones definidas por la rotación eje-ángulo axang.

    transformation = se3(angle,axis) crea una transformación SE(3) a partir de las rotaciones angles sobre el eje de rotación axis.

    ejemplo

    transformation = se3(___,translation,"trvec") crea una transformación SE(3) a partir del vector de traducción translation junto con cualquier otro tipo de argumentos de entrada de rotación.

    Otras traducciones y representaciones de transformación

    transformation = se3(translation,"trvec") crea una transformación SE(3) a partir del vector de traducción translation.

    transformation = se3(pose,"xyzquat") crea una transformación SE(3) a partir de la pose compacta 3-D pose.

    Nota

    Si alguna entrada contiene más de una rotación, traslación o transformación, entonces la salida transformation es un arreglo de elementos N de se3 objetos correspondientes a cada una de las rotaciones, traslaciones o transformaciones 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 contiene más de una rotación y también especifica translation en la construcción, el número de traslaciones en translation debe ser uno o igual al número de rotaciones en rotation. El número resultante de objetos de transformación es igual al valor del argumento translation o rotation , el que sea mayor.

    Ejemplo: eye(3)

    Tipos de datos: single | double

    Traducción, especificada como un vector fila de tres elementos o un arreglo N por 3. N es el número total de traducciones y cada traducción tiene la forma [x y z].

    Si translation contiene más de una traducción, el número de rotaciones en rotation debe ser uno o igual al número de traducciones en translation. El número resultante de objetos de transformación creados es igual al valor del argumento translation o rotation , el que sea mayor.

    Ejemplo: [1 4 3]

    Tipos de datos: single | double

    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 se3 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 se3 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 se3 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 se3 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: se3([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 se3(pi/2,"rotz") * se3(pi/3,"roty") * se3(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 se3 creados es igual a N.

    Nota

    El objeto se3 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 eje-ángulo. 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 se3 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 se3 crea un se3 objeto para cada ángulo.

    Si angle es una matriz N-por- M , el número resultante de objetos se3 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 = se3(phi,"rotx");

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

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

    Tipos de datos: string | char

    Pose compacta 3-D, especificada como una matriz N por 7, donde N es el número total de poses compactas. Cada fila es una pose, compuesta por una posición xyz y un cuaternión, en la forma [x y z qw qx qy qz]. x, y, y z son las posiciones en el x-, y- y z-ejes, respectivamente. qw, qx, qy y qz juntos son la rotación del cuaternión en w, x, y y z, respectivamente.

    Si pose es una matriz N-por-7, el número resultante de objetos se3 creados es igual a N.

    Tipos de datos: single | double

    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
    so3rotación SO(3)
    quaternionCrear arreglo de cuaterniones

    Ejemplos

    contraer todo

    Defina una rotación de ángulo de Euler de [pi/2 0 pi/7] con una secuencia de rotación "XYZ" y una traducción xyz de [6 4 1].

    angles = [pi/2 0 pi/7];
    trvec = [6 4 1];

    Cree una transformación SE(3) utilizando los ángulos de Euler y la traslación.

    TF = se3(angles,"eul","XYZ",trvec)
    TF = se3
        0.9010   -0.4339         0    6.0000
        0.0000    0.0000   -1.0000    4.0000
        0.4339    0.9010    0.0000    1.0000
             0         0         0    1.0000
    
    

    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