Main Content

poseplot

3 次元姿勢プロット

R2021b 以降

説明

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

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

poseplot(R) は、回転行列 R で指定された向きの姿勢をプロットします。既定では、位置は [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: [3x3 double]
       Position: [5 5 5]

  Use GET to 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 列の正規直交行列として指定します。

例: eye(3)

姿勢プロットの位置。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 で導入