メインコンテンツ

se3

R2026b

SE(3) 同次変換

R2026b 以降

    説明

    se3 オブジェクトは、右手直交座標系の並進と回転で構成される 3 次元同次変換行列として SE(3) 変換を表します。

    詳細については、3 次元同次変換行列のセクションを参照してください。

    このオブジェクトは数値行列のように機能し、乗算と除算を使用して姿勢を構成できるようになります。

    作成

    説明

    回転行列、並進ベクトル、および変換行列

    transformation = se3 は、並進のない恒等回転を表す SE(3) 変換を作成します。

    transformation=[1000010000100001]

    transformation = se3(rotation) は、並進のない、正規直交回転 rotation によって定義された純粋な回転を表す SE(3) 変換を作成します。回転行列は、transformation 行列の左上の要素で表されます。

    rotation=[r11r12r13r11r22r23r31r32r33]

    transformation=[r11r12r130r21r22r230r31r32r3300001]

    transformation = se3(rotation,translation) は、正規直交回転 rotation と並進 translation によって定義された回転を表す SE(3) 変換を作成します。関数は、最初に回転行列を適用し、次に並進ベクトルを適用して変換を作成します。

    rotation=[r11r12r13r11r22r23r31r32r33], translation=[t1t2t3]

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

    transformation = se3(transformation) は、同次変換 transformation で定義された並進と回転を表す SE(3) 変換を作成します。

    その他の 3 次元回転の表現

    transformation = se3(euler,"eul") は、オイラー角 euler によって定義された回転から SE(3) 変換を作成します。

    transformation = se3(euler,"eul",sequence) はオイラー角回転のシーケンス sequence を指定します。たとえば、"ZYX" というシーケンスは、z 軸、y 軸、x 軸の順に回転させます。

    transformation = se3(quat,"quat") は、四元数 quat によって定義された回転から SE(3) 変換を作成します。

    transformation = se3(axang,"axang") は、軸角度回転 axang によって定義された回転から SE(3) 変換を作成します。

    transformation = se3(angle,axis) は、回転軸 axis を中心とした回転 angle から SE(3) 変換を作成します。

    transformation = se3(___,translation) は、他のタイプの回転入力引数とともに、並進ベクトル translation から SE(3) 変換を作成します。

    例

    その他の並進と変換の表現

    transformation = se3(translation,"trvec") は、並進ベクトル translation から SE(3) 変換を作成します。

    transformation = se3(pose,"xyzquat") は、3 次元のコンパクトな姿勢 pose から SE(3) 変換を作成します。

    メモ

    入力に複数の回転、並進、または変換が含まれる場合、出力 transformation は、各 N 入力回転、並進、または変換に対応する se3 オブジェクトの N 要素配列になります。

    入力引数

    すべて展開する

    正規直交回転。3 行 3 列の行列、3×3×N の配列、スカラーの so3 オブジェクト、あるいは so3 オブジェクトの N 要素配列として指定します。N は回転の合計数です。

    rotation に複数の回転が含まれており、作成時に translation も指定する場合、translation の並進の数は 1 または rotation の回転数と等しくなくてはなりません。結果として得られる変換オブジェクトの数は、引数 translation または rotation のどちらか大きい方の値と等しくなります。

    例: eye(3)

    データ型: single | double

    並進。3 要素の行ベクトルまたは N 行 3 列の配列として指定します。N は並進の総数で、各並進は [x y z] の形式になります。

    translation に複数の並進が含まれる場合、rotation の回転数は 1 または translation の並進の数に等しくなくてはなりません。結果として作成される変換オブジェクトの数は、引数 translation または rotation のどちらか大きい方の値と等しくなります。

    例: [1 4 3]

    データ型: single | double

    同次変換。4 行 4 列の行列、4×4×N の配列、スカラーの se3 オブジェクト、または se3 オブジェクトの N 要素配列として指定します。N は指定した変換の合計数です。

    transformation が配列の場合、作成される se3 オブジェクトの結果の数は N に等しくなります。

    例: eye(4)

    データ型: single | double

    四元数。スカラーの quaternion オブジェクト、あるいは quaternion オブジェクトの N 要素配列として指定します。N は指定した四元数の合計数です。

    quaternion が N 要素配列の場合、作成される se3 オブジェクトの結果の数は N に等しくなります。

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

    オイラー角。ラジアン単位の N 行 3 列の行列として指定します。各行は、引数 sequence で定義された軸回転シーケンスをもつオイラー角の 1 セットを表します。既定の軸回転シーケンスは ZYX です。

    euler が N 行 3 列の行列の場合、作成される se3 オブジェクトの結果の数は N に等しくなります。

    例: [pi/2 pi pi/4]

    データ型: single | double

    オイラー角の軸回転シーケンス。以下のいずれかの string スカラーとして指定します。

    • "ZYX" (既定)

    • "ZYZ"

    • "ZXY"

    • "ZXZ"

    • "YXY"

    • "YZX"

    • "YXZ"

    • "YZY"

    • "XYX"

    • "XYZ"

    • "XZX"

    • "XZY"

    これらは、それぞれ x 軸、y 軸、および z 軸を中心とした ϕ、ψ、θ の回転の正規直交回転行列です。

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

    このシーケンスから回転行列を作成する際に、それぞれの文字は対応する軸を示します。たとえば、シーケンスが "XYZ" の場合、se3 オブジェクトは、x 軸を中心とした回転と y 軸を中心とした回転を乗算し、その積と z 軸を中心とした回転を乗算することによって回転行列 R を作成します。

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

    例: se3([pi/2 pi/3 pi/4],"eul","ZYZ") は、z 軸を中心に点を pi/4 ラジアンだけ回転し、次にその点を y 軸を中心に pi/3 ラジアンだけ回転してから、その点を z 軸を中心に pi/2 ラジアンだけ回転します。これは、以下の式と等価です。se3(pi/2,"rotz") * se3(pi/3,"roty") * se3(pi/4,"rotz")

    データ型: string | char

    四元数。N 行 4 列の行列として指定します。N は、指定された四元数の数です。各行は [qw qx qy qz] の形式の 1 つの四元数を表します。ここで、qw はスカラー数です。

    quat が N 行 4 列の行列の場合、作成される se3 オブジェクトの結果の数は N に等しくなります。

    メモ

    se3 オブジェクトは、四元数を回転行列に変換する前に、入力四元数を正規化します。

    例: [0.7071 0.7071 0 0]

    データ型: single | double

    軸角度回転。[x y z theta] の形式で N 行 4 列の行列として指定します。N は軸角度回転の総数です。x、y、および z は、それぞれ x 軸、y 軸、z 軸からのベクトル成分です。ベクトルは、角度 theta (ラジアン単位) だけ回転する軸を定義します。

    axang が N 行 4 列の行列の場合、作成される se3 オブジェクトの結果の数は N に等しくなります。

    例: [.2 .15 .25 pi/4] は、x 軸について 0.2、y 軸に沿って 0.15、z 軸に沿って 0.25 として定義された軸を pi/4 ラジアンだけ回転します。

    データ型: single | double

    単一軸角度回転。N 行 M 列の行列として指定します。行列の各要素は、引数 axis を使用して指定された軸を中心としたラジアン単位の角度であり、se3 オブジェクトは角度ごとに se3 オブジェクトを作成します。

    angle が N 行 M 列の行列の場合、作成される se3 オブジェクトの結果の数は N に等しくなります。

    回転角度は、指定軸に沿って原点に向かって見ると、反時計回りが正になります。

    データ型: single | double

    回転軸。次のオプションのいずれかとして指定します。

    • "rotx" — x 軸を中心に回転します。

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

    • "roty" — y 軸を中心に回転します。

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

    • "rotz" — z 軸を中心に回転します。

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

    引数 angle を使用して、指定した軸を中心に回転する量を指定します。

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

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

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

    データ型: string | char

    3 次元のコンパクトな姿勢。N 行 7 列の行列として指定します。ここで、N はコンパクトな姿勢の総数です。各行は [x y z qw qx qy qz] 形式の xyz 位置と四元数で構成される姿勢です。x、y、および z はそれぞれ x 軸、y 軸、および z 軸の位置です。qw、qx、qy、および qz は、合わせて四元数回転です。

    pose が N 行 7 列の行列の場合、作成される se3 オブジェクトの結果の数は N に等しくなります。

    データ型: single | double

    オブジェクト関数

    すべて展開する

    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
    axang変換または回転を軸角度回転に変換する
    eulConvert transformation or rotation into Euler angles
    rotmExtract rotation matrix
    quatConvert transformation or rotation to numeric quaternion
    trvec並進ベクトルを抽出する
    tformExtract homogeneous transformation
    xyzquatConvert transformation or rotation to compact 3-D pose representation
    so3SO(3) 回転
    quaternionCreate quaternion array

    例

    すべて折りたたむ

    回転シーケンス "XYZ" および "xyz" 並進 [6 4 1] を指定してオイラー角回転 [pi/2 0 pi/7] を定義します。

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

    オイラー角と並進を使用して SE(3) 変換を作成します。

    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
    
    

    アルゴリズム

    すべて展開する

    拡張機能

    すべて展開する

    C/C++ コード生成
    MATLAB® Coder™ を使用して C および C++ コードを生成します。

    GPU コード生成
    GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

    バージョン履歴

    R2026b で導入

    参考

    オブジェクト