Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

so3

    Description

    L'objet so3 représente une rotation SO(3) en 3D dans un système de coordonnées cartésiennes droitier.

    La rotation SO(3) est une matrice de rotation orthonormée 3x3. Par exemple, ce sont des matrices de rotation orthonormées pour les rotations de ϕ, ψ et θ autour du x-, y- et z-axis, respectivement :

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

    Pour plus d'informations, consultez la section 3-D Orthonormal Rotation Matrix .

    Cet objet agit comme une matrice numérique, vous permettant de composer des rotations par multiplication et division.

    Création

    Description

    Représentations de rotation 3D

    rotation = so3 crée une rotation SO(3) représentant une rotation d'identité sans traduction.

    rotation=[100010001]

    rotation = so3(rotation) crée une rotation SO(3) représentant une rotation pure définie par la rotation orthonormée rotation.

    rotation=[r11r12r13r11r22r23r31r32r33]

    rotation = so3(quaternion) crée une rotation SO(3) à partir des rotations définies par le quaternion quaternion.

    rotation = so3(transformation) crée une rotation SO(3) à partir de la transformation SE(3) transformation.

    Autres représentations numériques de rotation 3D

    exemple

    rotation = so3(euler,"eul") crée une rotation SO(3) à partir des rotations définies par les angles d'Euler euler.

    rotation = so3(euler,"eul",sequence) spécifie la séquence des rotations de l'angle d'Euler sequence. Par exemple, la séquence "ZYX" fait tourner l'axe z, puis l'axe y et x Axe $.

    rotation = so3(quat,"quat") crée une rotation SO(3) à partir des rotations définies par les quaternions numériques quat.

    rotation = so3(axang,"axang") crée une rotation SO(3) à partir des rotations définies par la rotation axe-angle axang.

    rotation = so3(angle,axis) crée une rotation SO(3) à partir des rotations angles autour de l'axe de rotation axis.

    Remarque

    Si des entrées contiennent plus d'une rotation, alors la sortie rotation est un tableau d'éléments N d'objets so3 correspondant à chacun des les rotations d'entrée N .

    Arguments en entrée

    développer tout

    Rotation orthonormale, spécifiée comme une matrice 3 par 3, un tableau 3 par 3 par N, un objet scalaire so3 ou un N-tableau d'éléments d'objets so3 . N est le nombre total de rotations.

    Si rotation est un tableau, le nombre résultant d'objets so3 créés dans le tableau de sortie est égal à N.

    Exemple : eye(3)

    Transformation homogène, spécifiée comme une matrice 4 par 4, un tableau 4 par 4 N , un objet scalaire se3 ou un N- tableau d'éléments d'objets se3 . N est le nombre total de transformations spécifié.

    Si transformation est un tableau, le nombre résultant d'objets so3 créés est égal à N.

    Exemple : eye(4)

    Types de données : single | double

    Quaternion, spécifié comme un objet scalaire quaternion ou comme un tableau d'éléments N d'objets quaternion . N est le nombre total de quaternions spécifiés.

    Si quaternion est un tableau d'éléments N, le nombre résultant d'objets so3 est égal à N.

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

    Angles d'Euler, spécifiés sous la forme d'une matrice N-par-3, en radians. Chaque ligne représente un ensemble d'angles d'Euler avec la séquence de rotation des axes définie par l'argument sequence . La séquence de rotation des axes par défaut est ZYX.

    Si euler est une matrice N-par-3, le nombre résultant d'objets so3 est égal à N.

    Exemple : [pi/2 pi pi/4]

    Types de données : single | double

    Séquence de rotation des axes pour les angles d'Euler, spécifiée comme l'un de ces scalaires de chaîne :

    • "ZYX" (par défaut)

    • "ZYZ"

    • "ZXY"

    • "ZXZ"

    • "YXY"

    • "YZX"

    • "YXZ"

    • "YZY"

    • "XYX"

    • "XYZ"

    • "XZX"

    • "XZY"

    Ce sont des matrices de rotation orthonormées pour les rotations de ϕ, ψ et θ à propos du x- , y- et z-axe, respectivement :

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

    Lors de la construction de la matrice de rotation à partir de cette séquence, chaque caractère indique l'axe correspondant. Par exemple, si la séquence est "XYZ", alors l'objet so3 construit la matrice de rotation R en multipliant la rotation par environ x-axe avec la rotation autour de l'axe y, puis en multipliant ce produit par la rotation autour de l'axe z:

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

    Exemple : so3([pi/2 pi/3 pi/4],"eul","ZYZ") fait pivoter un point de pi/4 radians autour de l'axe z, puis fait pivoter le point de pi/3 radians autour de l'axe y, puis fait pivoter le point de pi/2 radians autour de l'axe z. Cela équivaut à so3(pi/2,"rotz") * so3(pi/3,"roty") * so3(pi/4,"rotz")

    Types de données : string | char

    Quaternion numérique, spécifié comme une matrice N-by-4. N est le nombre de quaternions spécifiés. Chaque ligne représente un quaternion de la forme [qw qx qy qz], où qw est un nombre scalaire.

    Si quat est une matrice N-par-4, le nombre résultant d'objets so3 est égal à N.

    Remarque

    L'objet so3 normalise les quaternions d'entrée avant de convertir les quaternions en une matrice de rotation.

    Exemple : [0.7071 0.7071 0 0]

    Types de données : single | double

    Rotation de l'angle de l'axe, spécifiée sous la forme d'une matrice N-par 4 sous la forme [x y z theta]. N est le nombre total de rotations axe-angle. x, y et z sont des composants vectoriels du x-, y- et z-axis, respectivement. Le vecteur définit l'axe de rotation de l'angle theta, en radians.

    Si axang est une matrice N-par-4, le nombre résultant d'objets so3 est égal à N.

    Exemple : [.2 .15 .25 pi/4] fait pivoter l'axe, défini comme 0.2 dans l'axe x, 0.15 le long du y-axe, et 0.25 le long de l'axe z, par pi/4 radians.

    Types de données : single | double

    Rotation à angle sur un seul axe, spécifiée sous la forme d'une matrice N-par- M . Chaque élément de la matrice est un angle, en radians, autour de l'axe spécifié à l'aide de l'argument axis , et l'objet so3 crée un so3. Objetpour chaque angle.

    Si angle est une matrice N-by- M , le nombre résultant d'objets so3 créés est égal à N.

    L'angle de rotation est positif dans le sens inverse des aiguilles d'une montre lorsque vous regardez le long de l'axe spécifié vers l'origine.

    Types de données : single | double

    Axe à faire pivoter, spécifié comme l'une de ces options :

    • "rotx" — Rotation autour de l'axe x:

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

    • "roty" — Rotation autour de l'axe y:

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

    • "rotz" — Rotation autour de l'axe z:

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

    Utilisez l'argument angle pour spécifier le degré de rotation autour de l'axe spécifié.

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

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

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

    Types de données : string | char

    Fonctions d'objet

    développer tout

    mtimes, *Transformation ou multiplication par rotation
    mrdivide, /Division du droit de transformation ou de rotation
    rdivide, ./Transformation par élément ou division à droite par rotation
    times, .*Transformation par élément ou multiplication par rotation
    interpInterpoler entre les transformations
    distCalculer la distance entre les transformations
    normalizeNormaliser la matrice de transformation ou de rotation
    transformAppliquer une transformation de corps rigide aux points
    axangConvertir la transformation ou la rotation en rotations axe-angle
    eulConvert transformation or rotation into Euler angles
    rotmExtraire la matrice de rotation
    quatConvertir la transformation ou la rotation en quaternion numérique
    trvecExtraire le vecteur de traduction
    tformExtraire la transformation homogène
    xyzquatConvertir la transformation ou la rotation en représentation de pose 3D compacte
    se3SE(3) homogeneous transformation
    quaternionCréer un tableau de quaternions

    Exemples

    réduire tout

    Créez une rotation SO(3) définie par des angles d'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
    
    

    Obtenez les angles d'Euler de la transformation.

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

    Algorithmes

    développer tout

    Capacités étendues

    Génération de code C/C++
    Générez du code C et C++ avec MATLAB® Coder™.

    Historique des versions

    Introduit dans R2022b

    développer tout