メインコンテンツ

poseplot

3 次元姿勢プロット

R2021b 以降

説明

poseplot 関数は、指定された 3 次元姿勢 (位置と向き) をパッチの原点に xyz 座標系があるパッチとしてプロットします。

poseplot は、姿勢を座標の原点位置にゼロ回転でプロットします。既定のナビゲーション座標系は北-東-下 (NED) 座標系です。

poseplot(orientation) は、指定された向きの姿勢をプロットします。既定では、位置は [0 0 0] です。

poseplot(___,position) は、姿勢プロットの位置を指定します。

poseplot(___,frame) は、姿勢プロットのナビゲーション座標系を指定します。

poseplot(___,Name=Value) は、1 つ以上の名前と値の引数を使用して pose patch プロパティを指定します。たとえば、poseplot(PatchFaceColor="r") は、赤の面の色で姿勢をプロットします。プロパティのリストについては、PosePatch Properties を参照してください。

poseplot(ax,___) は、姿勢プロットの親座標軸を指定します。

p = poseplot(___) は、PosePatch オブジェクトを返します。pose patch を作成した後でそのプロパティを変更する場合は p を使用します。プロパティのリストについては、PosePatch Properties を参照してください。

すべて折りたたむ

既定の設定で関数 poseplot を使用して、既定の姿勢をプロットします。

poseplot
xlabel("North-x (m)")
ylabel("East-y (m)")
zlabel("Down-z (m)");

Figure contains an axes object. The axes object with xlabel North-x (m), ylabel East-y (m) is empty.

次に、指定した向きと位置の姿勢をプロットします。

q = quaternion([35 10 50],"eulerd","ZYX","frame");
position = [1 1 1];
poseplot(q,position)

Figure contains an axes object. The axes object is empty.

その後、Figure 上に 2 番目の姿勢をプロットし、PosePatch オブジェクトを返します。2 番目の姿勢は、名前と値の引数 ScaleFactor を使用してサイズを小さくしてプロットします。

hold on
p = poseplot(eye(3),[5 5 5],ScaleFactor=0.5)
p = 
  PosePatch with properties:

    Orientation: [3×3 double]
       Position: [5 5 5]

  Show all properties

legend("First Pose","Second Pose")
hold off

Figure contains an axes object. The axes object is empty. These objects represent First Pose, Second Pose.

関数 poseplot を使用して、一連の姿勢をアニメーション化します。まず、初期位置と最終位置を定義します。

ps = [0 0 0];
pf = [10 0 0];

次に、quaternion オブジェクトを使用して初期の向きと最終の向きを定義します。

qs = quaternion([45,0,0],'eulerd','ZYX','frame');
qf = quaternion([-45,0,0],'eulerd','ZYX','frame');

開始姿勢を表示します。

patch = poseplot(qs,ps);
ylim([-2 2])
xlim([-2 12])
xlabel("North-x (m)")
ylabel("East-y (m)")
zlabel("Down-z (m)");

Figure contains an axes object. The axes object with xlabel North-x (m), ylabel East-y (m) is empty.

係数を使用して位置と向きを連続的に変更し、オブジェクト関数 set を使用して姿勢を更新します。

for coeff = 0:0.01:1
    q = slerp(qs,qf,coeff);
    position = ps + (pf - ps)*coeff;
    set(patch,Orientation=q,Position=position); 
    drawnow
end

Figure contains an axes object. The axes object with xlabel North-x (m), ylabel East-y (m) is empty.

関数 poseplot を使用して、向きと位置をメッシュでプロットします。まず、地上ビークルを原点にゼロ回転でプロットします。

poseplot(ones("quaternion"),[0 0 0],MeshFileName="groundvehicle.stl",ScaleFactor=0.3);
xlabel("North-x (m)")
ylabel("East-y (m)")
zlabel("Down-z (m)")

Figure contains an axes object. The axes object with xlabel North-x (m), ylabel East-y (m) is empty.

次に、回転子を位置 [20 20 -20] にゼロ回転でプロットします。

hold on
poseplot(ones("quaternion"),[20 20 -20],MeshFileName="multirotor.stl",ScaleFactor=0.2);

Figure contains an axes object. The axes object with xlabel North-x (m), ylabel East-y (m) is empty.

最後に、固定翼航空機を位置 [5 5 -40] にゼロ回転でプロットします。

poseplot(ones("quaternion"),[5 5 -40],MeshFileName="fixedwing.stl",ScaleFactor=0.4);
view([-37.8 28.4])
hold off

Figure contains an axes object. The axes object with xlabel North-x (m), ylabel East-y (m) is empty.

入力引数

すべて折りたたむ

向き。quaternion オブジェクトまたは 3 行 3 列の正規直交回転行列として指定します。

例: quaternion([pi/2 0 pi/4],"euler","ZYX","frame")

例: eul2rotm([pi/2 0 pi/4],"ZYX")

姿勢プロットの位置。3 要素の実数値ベクトルとして指定します。

例: [1 3 4]

姿勢プロットのナビゲーション座標系。北-東-下座標系の場合は "NED"、東-北-上座標系の場合は "ENU" として指定します。

親座標軸のステータスが hold off の場合、NED ナビゲーション座標系を指定すると、親座標軸の YDir プロパティと ZDir プロパティを設定することで Figure 内の y 軸と z 軸が反転します。

姿勢プロットの親座標軸。Axes オブジェクトとして指定します。座標軸を指定しない場合、関数 poseplot は現在の座標軸を使用します。

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: poseplot(PatchFaceAlpha=0.1)

ここでは、PosePatch プロパティの一部だけを紹介しています。完全な一覧については、PosePatch Properties を参照してください。

姿勢プロットの向き。quaternion (Sensor Fusion and Tracking Toolbox) オブジェクトまたは回転行列として指定します。

姿勢プロットの位置。3 要素の実数値ベクトルとして指定します。

Standard Triangle Language (STL) メッシュ ファイルの名前。メッシュ ファイルの名前を含む string スカラーまたは文字ベクトルとして指定します。この引数を指定した場合、関数 poseplot は向きのボックスの代わりにメッシュをプロットします。

姿勢プロットのスケール係数。非負のスカラーとして指定します。スケール係数は、向きのボックスのサイズを制御します。MeshFileName 引数を指定した場合、スケール係数はメッシュのスケールも変更します。

パッチ面の色。RGB 3 成分、16 進数カラー コード、色名、または省略名として指定します。

  • RGB 3 成分は、色の赤、緑、青成分の強度値を指定する 3 要素の行ベクトルです。強度値は [0, 1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数カラー コードは、ハッシュ記号 (#) で始まり、3 桁または 6 桁の 0 から F までの範囲の 16 進数が続く文字ベクトルまたは string スカラーです。これらの値では大文字小文字は区別されません。したがって、カラー コード "#FF8800""#ff8800""#F80"、および "#f80" は等価です。

次に、よく使用する色とそれに対応する値のリストを示します。

色名省略名RGB 3 成分16 進数カラー コード外観
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

パッチ面の透明度。範囲 [0, 1] のスカラーとして指定します。値 1 は完全に不透明で、値 0 は完全に透明です。

出力引数

すべて折りたたむ

pose patch オブジェクト。PosePatch オブジェクトとして返されます。返されたオブジェクトは、プロットされた姿勢のプロパティのクエリと変更に使用できます。プロパティのリストについては、PosePatch Properties を参照してください。

バージョン履歴

R2021b で導入