getTransform
ボディ座標系間の変換を取得
構文
説明
は、transform
= getTransform(robot
,configuration
,bodyname
)bodyname
座標系の点をロボットの base 座標系へと変える変換を、指定したロボット コンフィギュレーションを使用して計算します。
は、ソース ボディ座標系の点をターゲット ボディ座標系へと変える変換を、指定したロボット コンフィギュレーションを使用して計算します。transform
= getTransform(robot
,configuration
,sourcebody
,targetbody
)
例
ロボット コンフィギュレーションの座標系間の変換を取得
特定のロボット コンフィギュレーションについて、2 つの座標系間の変換を取得します。
Robotics System Toolbox™ loadrobot
から Yaskawa Motoman MH-5 マニピュレーターを読み込みます。
motoman = loadrobot("yaskawaMotomanMH5");
showdetails(motoman)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 link_s joint_s revolute base_link(0) link_l(2) 2 link_l joint_l revolute link_s(1) link_u(3) 3 link_u joint_u revolute link_l(2) link_r(4) 4 link_r joint_r revolute link_u(3) link_b(5) 5 link_b joint_b revolute link_r(4) link_t(6) 6 link_t joint_t revolute link_b(5) --------------------
特定のコンフィギュレーションが指定された motoman
ロボットの "link_1"
ボディと "link_t"
ボディの間の変換を取得します。この変換により、"link_l"
座標系の点が "link_t"
座標系に変換されます。
q = randomConfiguration(motoman); show(motoman,q);
transform = getTransform(motoman,q,"link_l","link_t")
transform = 4×4
0.7787 0.0961 -0.6199 0.3115
0.5256 0.4396 0.7283 -0.4624
0.3425 -0.8930 0.2918 -0.1886
0 0 0 1.0000
入力引数
robot
— ロボット モデル
rigidBodyTree
オブジェクト
ロボット モデル。rigidBodyTree
オブジェクトとして指定します。
configuration
— ロボット コンフィギュレーション
構造体配列
ロボット コンフィギュレーション。ロボット モデル内にあるすべてのボディのジョイント名とジョイント位置をもつ、構造体配列として指定します。コンフィギュレーションは、homeConfiguration(robot)
や randomConfiguration(robot)
を使用するか、構造体配列内で独自のジョイント名とジョイント位置を指定することによって生成できます。
bodyname
— ボディ名
string スカラー | 文字ベクトル
ボディ名。string スカラーまたは文字ベクトルとして指定します。このボディは、robot
で指定したロボット モデル上になければなりません。
データ型: char
| string
targetbody
— ターゲット ボディ名
string スカラー | 文字ベクトル
ターゲット ボディ名。文字ベクトルとして指定します。このボディは、robot
で指定したロボット モデル上になければなりません。ターゲット座標系は、点の変換先の座標系です。
データ型: char
| string
sourcebody
— ボディ名
string スカラー | 文字ベクトル
ボディ名。string スカラーまたは文字ベクトルとして指定します。このボディは、robot
で指定したロボット モデル上になければなりません。ソース座標系は、点の変換元の座標系です。
データ型: char
| string
出力引数
transform
— 同次変換
4 行 4 列の行列
同次変換。4 行 4 列の行列として返されます。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用に関するメモと制限:
rigidBodyTree
オブジェクトの作成時には、ロボット モデルにボディを追加する上限として MaxNumBodies
を指定する構文を使用します。また、DataFormat
プロパティを、名前と値のペアとして指定しなければなりません。次に例を示します。
robot = rigidBodyTree("MaxNumBodies",15,"DataFormat","row")
データの使用量を最小限に抑えるには、上限をモデル内の必要なボディ数に近い数にします。すべてのデータ形式がコード生成用でサポートされています。ダイナミクス関数を使用するには、データ形式を "row"
または "column"
に設定しなければなりません。
関数 show
および showdetails
ではコード生成はサポートされません。
バージョン履歴
R2016b で導入R2024a: 静的なメモリ割り当てのサポート
getTransform
で、動的なメモリ割り当てを無効にしたコード生成がサポートされるようになりました。動的なメモリ割り当ての無効化の詳細については、動的メモリ割り当てしきい値の設定 (MATLAB Coder)を参照してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)