copy
ロボット モデルをコピー
説明
例
既存の rigidBodyTree オブジェクトに変更を加えます。剛体ツリーのジョイント、ボディ、およびサブツリーを置換できます。
Robotics System Toolbox™ loadrobotから ABB IRB-120T マニピュレーターを読み込みます。rigidBodyTree オブジェクトとして指定します。
manipulator = loadrobot("abbIrb120T");ロボットを show で表示し、showdetails を使用してロボットの詳細を読み取ります。
show(manipulator);

showdetails(manipulator)
-------------------- Robot: (8 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 base base_link-base fixed base_link(0) 2 link_1 joint_1 revolute base_link(0) link_2(3) 3 link_2 joint_2 revolute link_1(2) link_3(4) 4 link_3 joint_3 revolute link_2(3) link_4(5) 5 link_4 joint_4 revolute link_3(4) link_5(6) 6 link_5 joint_5 revolute link_4(5) link_6(7) 7 link_6 joint_6 revolute link_5(6) tool0(8) 8 tool0 joint6-tool0 fixed link_6(7) --------------------
プロパティを検査する特定のボディを取得します。link_3 ボディの唯一の子は link_4 ボディです。特定のボディをコピーすることもできます。
body3 = getBody(manipulator,"link_3");
childBody = body3.Children{1}childBody =
rigidBody with properties:
Name: 'link_4'
Joint: [1×1 rigidBodyJoint]
Mass: 1.3280
CenterOfMass: [0.2247 1.5000e-04 4.1000e-04]
Inertia: [0.0028 0.0711 0.0723 1.3052e-05 -1.3878e-04 -6.6037e-05]
Parent: [1×1 rigidBody]
Children: {[1×1 rigidBody]}
Visuals: {'Mesh Filename link_4.stl'}
Collisions: {'Mesh Filename link_4.stl'}
FrameNames: {'link_4'}
ParentFrame: 'link_3'
body3Copy = copy(body3);
link_3 ボディのジョイントを置き換えます。下流のボディ ジオメトリへの影響を確実に防ぐために、新しい Joint オブジェクトを作成し、replaceJoint を使用しなければなりません。必要に応じて、既定の単位行列を使用する代わりに、setFixedTransform を呼び出してボディ間の変換を定義します。
newJoint = rigidBodyJoint("prismatic"); replaceJoint(manipulator,"link_3",newJoint); showdetails(manipulator)
-------------------- Robot: (8 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 base base_link-base fixed base_link(0) 2 link_1 joint_1 revolute base_link(0) link_2(3) 3 link_2 joint_2 revolute link_1(2) link_3(4) 4 link_3 prismatic fixed link_2(3) link_4(5) 5 link_4 joint_4 revolute link_3(4) link_5(6) 6 link_5 joint_5 revolute link_4(5) link_6(7) 7 link_6 joint_6 revolute link_5(6) tool0(8) 8 tool0 joint6-tool0 fixed link_6(7) --------------------
removeBody を使用してボディ全体を削除し、結果のサブツリーを取得します。削除されたボディはサブツリーに含まれます。
subtree = removeBody(manipulator,"link_4")subtree =
rigidBodyTree with properties:
NumBodies: 4
Bodies: {[1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody]}
Base: [1×1 rigidBody]
BodyNames: {'link_4' 'link_5' 'link_6' 'tool0'}
BaseName: 'link_3'
Gravity: [0 0 0]
DataFormat: 'struct'
FrameNames: {'link_3' 'link_4' 'link_5' 'link_6' 'tool0'}
show(subtree);

変更した link_3 ボディを削除します。コピーされた元の link_3 ボディを link_2 ボディに追加し、次に返されたサブツリーも追加します。ロボット モデルはそのままにします。showdetails で詳細な比較を確認します。
removeBody(manipulator,"link_3"); addBody(manipulator,body3Copy,"link_2") addSubtree(manipulator,"link_3",subtree) showdetails(manipulator)
-------------------- Robot: (8 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 base base_link-base fixed base_link(0) 2 link_1 joint_1 revolute base_link(0) link_2(3) 3 link_2 joint_2 revolute link_1(2) link_3(4) 4 link_3 joint_3 revolute link_2(3) link_4(5) 5 link_4 joint_4 revolute link_3(4) link_5(6) 6 link_5 joint_5 revolute link_4(5) link_6(7) 7 link_6 joint_6 revolute link_5(6) tool0(8) 8 tool0 joint6-tool0 fixed link_6(7) --------------------
入力引数
ロボット モデル。rigidBodyTree オブジェクトとして指定します。
出力引数
ロボット モデル。rigidBodyTree オブジェクトとして返されます。
拡張機能
使用上の注意および制限:
rigidBodyTree オブジェクトの作成時には、ロボット モデルにボディを追加する上限として MaxNumBodies を指定する構文を使用します。また、DataFormat プロパティを、名前と値のペアとして指定しなければなりません。以下に例を示します。
robot = rigidBodyTree("MaxNumBodies",15,"DataFormat","row")
データの使用量を最小限に抑えるには、上限をモデル内の必要なボディ数に近い数にします。すべてのデータ形式がコード生成用でサポートされています。ダイナミクス関数を使用するには、データ形式を "row" または "column" に設定しなければなりません。
関数 show および showdetails ではコード生成はサポートされません。
バージョン履歴
R2016b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)