Main Content

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 en 3D que consiste en una traslación y rotación para un sistema de coordenadas cartesianas a la derecha.

    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 permite componer poses utilizando multiplicación y división.

    Creación

    Descripción

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

    transformation = se3 crea una transformación SE(3) que representa una rotación de identidad sin traslació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 traslación. La matriz de rotación está representada por los elementos en la parte superior izquierda de la matriz de 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, después, el vector de traslació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 según lo definido en la transformación homogénea transformation.

    Otras representaciones de rotación en 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 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.

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

    transformation = se3(quaternion) crea una transformación SE(3) a partir de las rotaciones definidas por el cuaternión quaternion.

    transformation = se3(axang,"axang") crea una transformación SE(3) a partir de las rotaciones definidas por la rotación del ángulo del eje 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) crea una transformación SE(3) a partir del vector de traslación translation junto con cualquier otro tipo de argumentos de entrada de rotación.

    Otras representaciones de traslación y transformación

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

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

    Nota

    Si cualquier entrada contiene más de una rotación, traslación o transformación, la transformation de salida es un arreglo de N elementos de objetos se3 que corresponde a cada una de las N rotaciones, traslaciones o transformaciones 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 so3 escalar o un arreglo de N elementos de objetos so3. N es el número total de rotaciones.

    Si rotation contiene más de una rotación y además especifica translation durante la construcción, el número de traslaciones de translation debe ser uno o igual al número de rotaciones de 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

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

    Si translation contiene más de una traslación, el número de rotaciones de rotation debe ser uno o igual al número de traslaciones de 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 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 se3 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 se3 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 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 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 se3 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: se3([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 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 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 se3 creados es igual a N.

    Nota

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

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

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

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

    Tipos de datos: string | char

    Pose compacta en 3D, especificada como una matriz de 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 con el formato [x y z qw qx qy qz]. x, y y z son las posiciones en los ejes x, y y z, respectivamente. qw, qx, qy y qz juntos son la rotación del cuaternión.

    Si pose es una matriz de 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, *Transformation or rotation multiplication
    mrdivide, /Transformation or rotation right division
    rdivide, ./Element-wise transformation or rotation right division
    times, .*Element-wise transformation or rotation multiplication
    interpInterpolate between transformations
    distCalculate distance between transformations
    normalizeNormalize transformation or rotation matrix
    transformApply rigid body transformation to points
    axangConvert transformation or rotation into axis-angle rotations
    eulConvert transformation or rotation into Euler angles
    rotmExtraer matriz de rotación
    quatConvert transformation or rotation to numeric quaternion
    trvecExtract translation vector
    tformExtraer transformación homogénea
    xyzquatConvert transformation or rotation to compact 3-D pose representation
    so3SO(3) rotation
    quaternionCrear un arreglo de cuaterniones

    Ejemplos

    contraer todo

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

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

    Cree una transformación SE(3) con 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