Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

se3

SE(3) homogene Transformation

Seit R2022b

    Beschreibung

    Das se3-Objekt repräsentiert eine SE(3)-Transformation als 3-D homogene Transformationsmatrix bestehend aus einer Translation und Rotation für ein rechtshändiges kartesisches Koordinatensystem.

    Weitere Informationen finden Sie im Abschnitt 3-D homogene Transformationsmatrix.

    Dieses Objekt fungiert als numerische Matrix, mit der Sie Posen durch Multiplikation und Division zusammenstellen können.

    Erstellung

    Beschreibung

    Rotationsmatrizen, Translationsvektoren und Transformationsmatrizen

    transformation = se3 erstellt eine SE(3)-Transformation, die eine Identitätsrotation ohne Translation darstellt.

    transformation=[1000010000100001]

    transformation = se3(rotation) erstellt eine SE(3)-Transformation, die eine reine Rotation darstellt, die durch die orthonormale Rotation rotation ohne Translation definiert ist. Die Rotationsmatrix wird durch die Elemente oben links in der transformation-Matrix dargestellt.

    rotation=[r11r12r13r11r22r23r31r32r33]

    transformation=[r11r12r130r21r22r230r31r32r3300001]

    transformation = se3(rotation,translation) erstellt eine SE(3)-Transformation, die eine Rotation darstellt, die durch die orthonormale Rotation rotation und die Translation translation definiert ist. Die Funktion wendet zuerst die Rotationsmatrix und dann den Translationsvektor an, um die Transformation zu erstellen.

    rotation=[r11r12r13r11r22r23r31r32r33], translation=[t1t2t3]

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

    transformation = se3(transformation) erstellt eine SE(3)-Transformation, die eine Translation und Rotation darstellt, wie sie durch die homogene Transformation transformation definiert ist.

    Andere 3D-Rotationsdarstellungen

    transformation = se3(euler,"eul") erstellt eine SE(3)-Transformation aus den durch die Euler-Winkel euler definierten Rotationen.

    transformation = se3(euler,"eul",sequence) gibt die Folge der Euler-Winkelrotationen sequence an. Beispielsweise rotiert die Sequenz "ZYX" die z-Achse, dann die y-Achse und dann die x-Achse.

    transformation = se3(quat,"quat") erstellt eine SE(3)-Transformation aus den durch die numerischen Quaternionen quat definierten Rotationen.

    transformation = se3(quaternion) erstellt eine SE(3)-Transformation aus den durch den Quaternion quaternion definierten Rotationen.

    transformation = se3(axang,"axang") erstellt eine SE(3)-Transformation aus den Rotationen, die durch die Achsenwinkelrotation axang definiert sind.

    transformation = se3(angle,axis) erstellt eine SE(3)-Transformation aus den Rotationen angles um die Rotationsachse axis .

    transformation = se3(___,translation) erstellt eine SE(3)-Transformation aus dem Translationsvektor translation zusammen mit allen anderen Rotationseingabeargumenten.

    Beispiel

    Andere Übersetzungen und Transformationsdarstellungen

    transformation = se3(translation,"trvec") erstellt eine SE(3)-Transformation aus dem Translationsvektor translation .

    transformation = se3(pose,"xyzquat") erstellt eine SE(3)-Transformation aus der 3D-Kompaktpose pose.

    Hinweis

    Wenn eine der Eingaben mehr als eine Drehung, Verschiebung oder Transformation enthält, dann ist die Ausgabe transformation ein N-Element-Array von se3-Objekten, die den einzelnen N-Eingabedrehungen, -verschiebungen oder -transformationen entsprechen.

    Eingabeargumente

    alle erweitern

    Orthonormale Rotation, angegeben als 3x3-Matrix, 3x3 x N-Array, skalares so3-Objekt oder N-Element-Array von so3-Objekten. N ist die Gesamtzahl der Rotationen.

    Wenn rotation mehr als eine Rotation enthält und Sie bei der Konstruktion auch translation angeben, muss die Anzahl der Translationen in translation eins oder gleich der Anzahl der Rotationen in rotation sein. Die resultierende Anzahl von Transformationsobjekten entspricht dem Wert des Arguments translation oder rotation, je nachdem, welcher größer ist.

    Beispiel: eye(3)

    Datentypen: single | double

    Übersetzung, angegeben als Zeilenvektor mit drei Elementen oder als N-mal-3-Array. N ist die Gesamtzahl der Übersetzungen und jede Übersetzung hat die Form [x y z].

    Wenn translation mehr als eine Übersetzung enthält, muss die Anzahl der Rotationen in rotation eins oder gleich der Anzahl der Übersetzungen in translation sein. Die resultierende Anzahl der erstellten Transformationsobjekte entspricht dem Wert des Arguments translation oder rotation, je nachdem, welcher größer ist.

    Beispiel: [1 4 3]

    Datentypen: single | double

    Homogene Transformation, angegeben als 4x4-Matrix, 4x 4x N-Array, skalares se3-Objekt oder N-Element-Array von se3-Objekten. N ist die Gesamtzahl der angegebenen Transformationen.

    Wenn transformation ein Array ist, ist die resultierende Anzahl der erstellten se3-Objekte gleich N.

    Beispiel: eye(4)

    Datentypen: single | double

    Quaternion, angegeben als skalares quaternion-Objekt oder als N-Element-Array von quaternion-Objekten. N ist die Gesamtzahl der angegebenen Quaternionen.

    Wenn quaternion ein Array mit N-Elementen ist, ist die resultierende Anzahl der erstellten se3-Objekte gleich N.

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

    Euler-Winkel, angegeben als N-mal-3-Matrix, im Bogenmaß. Jede Zeile stellt einen Satz Euler-Winkel mit der durch das Argument sequence definierten Achsenrotationssequenz dar. Die Standardsequenz für die Achsenrotation ist ZYX.

    Wenn euler eine N-mal-3-Matrix ist, ist die resultierende Anzahl der erstellten se3-Objekte gleich N.

    Beispiel: [pi/2 pi pi/4]

    Datentypen: single | double

    Achsenrotationssequenz für die Euler-Winkel, angegeben als einer dieser String-Skalare:

    • "ZYX" (Standard)

    • "ZYZ"

    • "ZXY"

    • "ZXZ"

    • "YXY"

    • "YZX"

    • "YXZ"

    • "YZY"

    • "XYX"

    • "XYZ"

    • "XZX"

    • "XZY"

    Dies sind orthonormale Rotationsmatrizen für Rotationen von ϕ, ψ und θ um die x-, y- bzw. z-Achse:

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

    Beim Aufbau der Rotationsmatrix aus dieser Folge gibt jedes Zeichen die entsprechende Achse an. Wenn die Sequenz beispielsweise "XYZ" lautet, erstellt das se3-Objekt die Rotationsmatrix R, indem es die Rotation um die x-Achse mit der Rotation um die y-Achse multipliziert und dieses Produkt anschließend mit der Rotation um die z-Achse multipliziert:

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

    Beispiel: se3([pi/2 pi/3 pi/4],"eul","ZYZ") dreht einen Punkt um pi/4 Radiant um die z-Achse, dann dreht er den Punkt um pi/3 Radiant um die y-Achse und dann dreht er den Punkt um pi/2 Radiant um die z-Achse. Dies entspricht se3(pi/2,"rotz") * se3(pi/3,"roty") * se3(pi/4,"rotz")

    Datentypen: string | char

    Numerischer Quaternion, angegeben als N-mal-4-Matrix. N ist die Anzahl der angegebenen Quaternionen. Jede Zeile stellt einen Quaternion der Form [qw qx qy qz] dar, wobei qw eine Skalarzahl ist.

    Wenn quat eine N-mal-4-Matrix ist, ist die resultierende Anzahl der erstellten se3-Objekte gleich N.

    Hinweis

    Das se3-Objekt normalisiert die Eingabequaternionen, bevor es die Quaternionen in eine Rotationsmatrix konvertiert.

    Beispiel: [0.7071 0.7071 0 0]

    Datentypen: single | double

    Achsenwinkelrotation, angegeben als N-mal-4-Matrix in der Form [x y z theta]. N ist die Gesamtzahl der Achsenwinkelrotationen. x, y und z sind Vektorkomponenten der x-, y- und z-Achse. Der Vektor definiert die um den Winkel theta zu drehende Achse im Bogenmaß.

    Wenn axang eine N-mal-4-Matrix ist, ist die resultierende Anzahl der erstellten se3-Objekte gleich N.

    Beispiel: [.2 .15 .25 pi/4] dreht die Achse, definiert als 0.2 in der x-Achse, 0.15 entlang der y-Achse und 0.25 entlang der z-Achse, um pi/4 Radiant.

    Datentypen: single | double

    Einachsige Winkelrotation, angegeben als N-mal-M-Matrix. Jedes Element der Matrix ist ein Winkel in Radiant um die mit dem Argument axis angegebene Achse, und das se3-Objekt erstellt für jeden Winkel ein se3-Objekt.

    Wenn angle eine Nx-M-Matrix ist, ist die resultierende Anzahl der erstellten se3-Objekte gleich N.

    Der Drehwinkel ist gegen den Uhrzeigersinn positiv, wenn Sie entlang der angegebenen Achse in Richtung Ursprung blicken.

    Datentypen: single | double

    Zu drehende Achse, angegeben als eine dieser Optionen:

    • "rotx" — Rotieren um die x-Achse:

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

    • "roty" — Rotieren um die y-Achse:

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

    • "rotz" — Rotieren um die z-Achse:

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

    Verwenden Sie das Argument angle, um anzugeben, wie stark um die angegebene Achse gedreht werden soll.

    Beispiel: Rx = se3(phi,"rotx");

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

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

    Datentypen: string | char

    3D-Kompaktpose, angegeben als N-mal-7-Matrix, wobei N die Gesamtzahl der Kompaktposen ist. Jede Zeile ist eine Pose, bestehend aus einer xyz-Position und einem Quaternion, in der Form [x y z qw qx qy qz]. x, y und z sind die Positionen in den x-, y- und z-Achsen. qw, qx, qy und qz bilden zusammen die Quaternionenrotation.

    Wenn pose eine N-mal-7-Matrix ist, ist die resultierende Anzahl der erstellten se3-Objekte gleich N.

    Datentypen: single | double

    Objektfunktionen

    alle erweitern

    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
    rotmRotationsmatrix extrahieren
    quatConvert transformation or rotation to numeric quaternion
    trvecExtract translation vector
    tformHomogene Transformation extrahieren
    xyzquatConvert transformation or rotation to compact 3-D pose representation
    so3SO(3) rotation
    quaternionCreate quaternion array

    Beispiele

    alle reduzieren

    Definieren Sie eine Euler-Winkelrotation von [pi/2 0 pi/7] mit einer "XYZ"-Rotationssequenz und einer xyz-Translation von [6 4 1].

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

    Erstellen Sie eine SE(3)-Transformation unter Verwendung der Euler-Winkel und der Translation.

    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
    
    

    Algorithmen

    alle erweitern

    Erweiterte Fähigkeiten

    alle erweitern

    C/C++ Codegenerierung
    Generieren Sie C und C++ Code mit MATLAB® Coder™.

    Versionsverlauf

    Eingeführt in R2022b

    alle erweitern