Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

se3

SE(3) trasformazione omogenea

Da R2022b

    Descrizione

    L'oggetto se3 rappresenta una trasformazione SE(3) come una matrice di trasformazione omogenea 3-D costituita da una traslazione e una rotazione per un sistema di coordinate cartesiane destrorse.

    Per ulteriori informazioni, vedere la sezione Matrice di trasformazione omogenea 3D.

    Questo oggetto funziona come una matrice numerica, consentendo di comporre pose utilizzando moltiplicazione e divisione.

    Creazione

    Descrizione

    Matrici di rotazione, vettori di traslazione e matrici di trasformazione

    transformation = se3 crea una trasformazione SE(3) che rappresenta una rotazione di identità senza traslazione.

    transformation=[1000010000100001]

    transformation = se3(rotation) crea una trasformazione SE(3) che rappresenta una rotazione pura definita dalla rotazione ortonormale rotation senza traslazione. La matrice di rotazione è rappresentata dagli elementi in alto a sinistra della matrice transformation.

    rotation=[r11r12r13r11r22r23r31r32r33]

    transformation=[r11r12r130r21r22r230r31r32r3300001]

    transformation = se3(rotation,translation) crea una trasformazione SE(3) che rappresenta una rotazione definita dalla rotazione ortonormale rotation e dalla traslazione translation. La funzione applica prima la matrice di rotazione, poi il vettore di traslazione per creare la trasformazione.

    rotation=[r11r12r13r11r22r23r31r32r33], translation=[t1t2t3]

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

    transformation = se3(transformation) crea una trasformazione SE(3) che rappresenta una traslazione e una rotazione come definite dalla trasformazione omogenea transformation .

    Altre rappresentazioni di rotazione 3D

    transformation = se3(euler,"eul") crea una trasformazione SE(3) dalle rotazioni definite dagli angoli di Eulero euler .

    transformation = se3(euler,"eul",sequence) specifica la sequenza delle rotazioni dell'angolo di Eulero sequence . Ad esempio, la sequenza "ZYX" ruota l'asse z, quindi l'asse y e l'asse x.

    transformation = se3(quat,"quat") crea una trasformazione SE(3) dalle rotazioni definite dai quaternioni numerici quat .

    transformation = se3(quaternion) crea una trasformazione SE(3) dalle rotazioni definite dal quaternione quaternion .

    transformation = se3(axang,"axang") crea una trasformazione SE(3) dalle rotazioni definite dalla rotazione asse-angolo axang .

    transformation = se3(angle,axis) crea una trasformazione SE(3) dalle rotazioni angles attorno all'asse di rotazione axis .

    transformation = se3(___,translation) crea una trasformazione SE(3) dal vettore di traslazione translation insieme a qualsiasi altro tipo di argomento di input di rotazione.

    esempio

    Altre traduzioni e rappresentazioni di trasformazione

    transformation = se3(translation,"trvec") crea una trasformazione SE(3) dal vettore di traslazione translation .

    transformation = se3(pose,"xyzquat") crea una trasformazione SE(3) dalla posa compatta 3-D pose.

    Nota

    Se uno qualsiasi degli input contiene più di una rotazione, traslazione o trasformazione, l'output transformation è un array di elementi N di oggetti se3 corrispondenti a ciascuna delle rotazioni, traslazioni o trasformazioni di input N.

    Argomenti di input

    espandi tutto

    Rotazione ortonormale, specificata come matrice 3x3, array 3x3xN, oggetto scalare so3 o array di oggetti so3 con elementi N. N è il numero totale di rotazioni.

    Se rotation contiene più di una rotazione e si specifica anche translation durante la costruzione, il numero di traslazioni in translation deve essere pari o superiore a uno al numero di rotazioni in rotation. Il numero risultante di oggetti di trasformazione è uguale al valore dell'argomento translation o rotation, a seconda di quale sia maggiore.

    Esempio eye(3)

    Tipi di dati: single | double

    Traduzione, specificata come un array a tre elementi in riga o un array N per 3. N è il numero totale di traduzioni e ciascuna traduzione è nella forma [x y z].

    Se translation contiene più di una traduzione, il numero di rotazioni in rotation deve essere uno o uguale al numero di traduzioni in translation. Il numero risultante di oggetti di trasformazione creati è uguale al valore dell'argomento translation o rotation, a seconda di quale sia maggiore.

    Esempio [1 4 3]

    Tipi di dati: single | double

    Trasformazione omogenea, specificata come matrice 4x4, array 4x4xN, oggetto scalare se3 o array di elementi N di oggetti se3. N è il numero totale di trasformazioni specificate.

    Se transformation è un array, il numero risultante di oggetti se3 creati è uguale a N.

    Esempio eye(4)

    Tipi di dati: single | double

    Quaternione, specificato come oggetto scalare quaternion o come array di oggetti quaternion con elementi N. N è il numero totale di quaternioni specificati.

    Se quaternion è un array di elementi N, il numero risultante di oggetti se3 creati è uguale a N.

    Esempio quaternion(1,0.2,0.4,0.2)

    Angoli di Eulero, specificati come matrice N-by-3, in radianti. Ogni riga rappresenta un insieme di angoli di Eulero con la sequenza di rotazione degli assi definita dall'argomento sequence. La sequenza di rotazione degli assi predefinita è ZYX .

    Se euler è una matrice N per 3, il numero risultante di oggetti se3 creati è uguale a N.

    Esempio [pi/2 pi pi/4]

    Tipi di dati: single | double

    Sequenza di rotazione dell'asse per gli angoli di Eulero, specificata come uno di questi scalari di stringa:

    • "ZYX" (predefinito)

    • "ZYZ"

    • "ZXY"

    • "ZXZ"

    • "YXY"

    • "YZX"

    • "YXZ"

    • "YZY"

    • "XYX"

    • "XYZ"

    • "XZX"

    • "XZY"

    Queste sono matrici di rotazione ortonormali per rotazioni di ϕ, ψ e θ rispettivamente attorno agli assi x, y e z:

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

    Quando si costruisce la matrice di rotazione da questa sequenza, ogni carattere indica l'asse corrispondente. Ad esempio, se la sequenza è "XYZ", allora l'oggetto se3 costruisce la matrice di rotazione R moltiplicando la rotazione attorno all'asse x con la rotazione attorno all'asse y, e quindi moltiplicando quel prodotto con la rotazione attorno all'asse z:

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

    Esempio se3([pi/2 pi/3 pi/4],"eul","ZYZ") ruota un punto di pi/4 radianti attorno all'asse z, quindi ruota il punto di pi/3 radianti attorno all'asse y e quindi ruota il punto di pi/2 radianti attorno all'asse z. Questo è equivalente a se3(pi/2,"rotz") * se3(pi/3,"roty") * se3(pi/4,"rotz")

    Tipi di dati: string | char

    Quaternione numerico, specificato come matrice N per 4. N è il numero di quaternioni specificati. Ogni riga rappresenta un quaternione della forma [qw qx qy qz], dove qw è un numero scalare.

    Se quat è una matrice N per 4, il numero risultante di oggetti se3 creati è uguale a N.

    Nota

    L'oggetto se3 normalizza i quaternioni di input prima di convertirli in una matrice di rotazione.

    Esempio [0.7071 0.7071 0 0]

    Tipi di dati: single | double

    Rotazione asse-angolo, specificata come matrice N per 4 nella forma [x y z theta]. N è il numero totale di rotazioni asse-angolo. x, y e z sono componenti vettoriali rispettivamente degli assi x, y e z. Il vettore definisce l'asse da ruotare dell'angolo theta, in radianti.

    Se axang è una matrice N per 4, il numero risultante di oggetti se3 creati è uguale a N.

    Esempio [.2 .15 .25 pi/4] ruota l'asse, definito come 0.2 sull'asse x, 0.15 lungo l'asse y e 0.25 lungo l'asse z, di pi/4 radianti.

    Tipi di dati: single | double

    Rotazione angolare su un solo asse, specificata come matrice N per M. Ogni elemento della matrice è un angolo, in radianti, attorno all'asse specificato utilizzando l'argomento axis, e l'oggetto se3 crea un oggetto se3 per ogni angolo.

    Se angle è una matrice N per M, il numero risultante di oggetti se3 creati è uguale a N.

    L'angolo di rotazione è positivo in senso antiorario se si guarda lungo l'asse specificato verso l'origine.

    Tipi di dati: single | double

    Asse da ruotare, specificato come una di queste opzioni:

    • "rotx" — Ruota attorno all'asse x:

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

    • "roty" — Ruota attorno all'asse y:

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

    • "rotz" — Ruota attorno all'asse z:

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

    Utilizzare l'argomento angle per specificare di quanto ruotare attorno all'asse specificato.

    Esempio Rx = se3(phi,"rotx");

    Esempio Ry = se3(psi,"roty");

    Esempio Rz = se3(theta,"rotz");

    Tipi di dati: string | char

    Posa compatta 3D, specificata come matrice N per 7, dove N è il numero totale di pose compatte. Ogni riga è una posa, composta da una posizione xyz e un quaternione, nella forma [x y z qw qx qy qz]. x, y e z sono le posizioni rispettivamente negli assi x-, y- e z-. qw, qx, qy e qz insieme costituiscono la rotazione del quaternione.

    Se pose è una matrice N per 7, il numero risultante di oggetti se3 creati è uguale a N.

    Tipi di dati: single | double

    Funzioni oggetto

    espandi tutto

    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
    rotmMatrice di rotazione dell'estrazione
    quatConvert transformation or rotation to numeric quaternion
    trvecExtract translation vector
    tformEstrarre la trasformazione omogenea
    xyzquatConvert transformation or rotation to compact 3-D pose representation
    so3SO(3) rotation
    quaternionCreate quaternion array

    Esempi

    comprimi tutto

    Definire una rotazione di Eulero di [pi/2 0 pi/7] con una sequenza di rotazioni "XYZ" e una traslazione xyz di [6 4 1].

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

    Creare una trasformazione SE(3) utilizzando gli angoli di Eulero e la traslazione.

    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
    
    

    Algoritmi

    espandi tutto

    Funzionalità estese

    espandi tutto

    Generazione di codice C/C++
    Genera codice C e C++ con MATLAB® Coder™.

    Cronologia versioni

    Introdotto in R2022b

    espandi tutto