メインコンテンツ

smimport

CAD モデル、URDF モデル、Robotics System Toolbox モデルをインポート

    説明

    [H,dataFileName] = smimport(modelSource) は、CAD モデル、URDF モデル、または Robotics System Toolbox™ モデルから Simscape™ Multibody™ モデルを作成します。

    modelSource は、インポートするファイルまたはオブジェクトの名前です。CAD モデルの場合は XML ファイル、URDF モデルの場合は URDF ファイル、Robotics System Toolbox モデルの場合は rigidBodyTree (Robotics System Toolbox) オブジェクトを使用します。XML ファイルは Simscape Multibody の XML スキーマ、URDF ファイルはサポートされている URDF の要素と属性に準拠していなければなりません。rigidBodyTree オブジェクトの作成には Robotics System Toolbox のライセンスが必要です。

    H はモデル ハンドルで、dataFileName はインポートされた CAD モデルに含まれるサポート ファイルの名前です。これは、ブロックで参照される MATLAB 変数が取り込まれた構造体配列にブロック パラメーターの数値を格納したファイルです。データ ファイルにより、CAD モデルに変更があった場合にインポート モデルを更新するメカニズムが提供されます。URDF ファイルまたは rigidBodyTree オブジェクトからインポートされたモデルでは、ブロック パラメーターはデータ ファイルに依存しません。

    XML ファイルはさまざまなソースから得られます。たとえば、smexportonshape 関数は Onshape® CAD モデルを XML ファイルに変換します。Autodesk Inventor®、PTC®、SolidWorks® の CAD モデルは、Simscape Multibody Link プラグインで XML ファイルに変換できます。それ以外の CAD アプリケーションやマルチボディ モデリング ツールについては、Simscape Multibody の XML スキーマを使用して、モデルをエクスポートするカスタム アプリを作成できます。

    CAD、URDF、rigidBodyTree の各モデルは、いずれも同じコンポーネントを共有します。1 つ目は剛体で、CAD モデルではパーツ、URDF モデルではリンクとも呼ばれます。2 つ目は運動学的拘束で、場合によってはジョイントとしてパッケージ化されています。剛体は、固体と Rigid Transform ブロックをもつ Simulink® サブシステムとしてインポートされます。拘束は、ジョイント、ギア、およびその他の拘束ブロックにマッピングされます。

    URDF モデルには <link> 要素があり、その中に <joint> 要素があります。同様に、rigidBodyTree オブジェクトには rigidBody オブジェクトと rigidBodyJoint オブジェクトが含まれています。作成された Simscape Multibody モデルでは、ジョイントは剛体の兄弟になり、剛体サブシステムの内部に含まれるのではなく、それらと並ぶ機能になります。ジョイントの範囲とホーム位置は維持され、以降に該当するジョイント ブロックで位置状態ターゲットとして使用されます。

    メモ

    ジョイントの範囲は、URDF モデルと rigidBodyTree モデルからはインポートされますが、CAD モデルからはインポートされません。CAD モデルのジョイントの範囲が必要な場合は、ジョイント ブロックでジョイントの範囲を有効にし、位置の制限を適切な値に設定することで手動で再現します。

    ___ = smimport(___,Name,Value) は、CAD モデル、URDF モデル、または Robotics System Toolbox モデルからカスタム名で Simscape Multibody モデルを作成するか、以前にインポートされた CAD モデルのデータ ファイルを再生成します。ほとんどの名前と値のペアの引数は CAD モデルにのみ適用されます。ImportMode を使用してパラメーター データ ファイルを再生成し、PriorDataFile を使用してモデルに対する誤った変更 (パーツの削除やその名前の変更など) を見つけます。

    すべて折りたたむ

    この例では、XML ファイルをインポートしてモデルを作成する方法を示します。

    XML ファイルと対応するジオメトリ ファイルを現在の MATLAB® セッションのパスに追加するには、MATLAB コマンド プロンプトで次のように入力します。

    openExample("sm/ImportedCADModelExample");
    addpath(genpath("ImportedCADModelSupport"));
    

    既定の名前での CAD モデルのインポート

    モデルを開いて既定の名前でメモリに格納するには、MATLAB コマンド プロンプトで次のように入力します。

    smimport("sm_robot");
    

    このモデルは XML 形式であるため、ファイル拡張子は省略できます。生成されたモデルのブロックは、MATLAB 変数としてパラメーター化されます。これらの変数の数値は sm_robot_DataFile.m という名前のデータ ファイルで定義され、生成されたモデルと同じアクティブ フォルダーに格納されます。

    カスタム名での CAD モデルのインポート

    また、robotto などのカスタム名で CAD モデルをインポートすることもできます。データ ファイルは robottos_data_file.m です。

    smimport("sm_robot","ModelName","robotto",...
    "DataFileName","robottos_DataFile");
    

    インポートした CAD モデルの更新

    インポートしたロボット アーム CAD モデルのデータ ファイルを再生成します。元のデータ ファイルが上書きされるのを防ぐため、新しいファイルに robottos_new_DataFile という名前を付けます。

    smimport('sm_robot','ImportMode','dataFile','DataFileName',...
    'robottos_new_DataFile','PriorDataFile','robottos_DataFile');
    

    インポートしたモデルが新しいデータ ファイルを指すようにし、モデル ワークスペースを再初期化します。

    hws = get_param(bdroot,'modelworkspace');
    hws.DataSource = 'MATLAB File';
    hws.FileName = 'robottos_new_DataFile';
    hws.reload
    

    同じことをモデル エクスプローラーで行うには、まず [モデル化][設計][モデル ワークスペース] の順に選択して、モデル エクスプローラーを開きます。次に、モデル エクスプローラーの [モデルの階層構造] で [モデル ワークスペース] を左クリックします。[モデル ワークスペース] ペインの [ファイル名] パラメーターに「robottos_new_DataFile.m」と入力し、[ソースから再初期化] ボタンをクリックして変更を適用します。

    URDF モデルを Simscape™ Multibody™ 環境にインポートすることができます。インポート処理は、関数 smimport をベースにした単一の手順で行います。関数 smimport は、URDF モデルを等価の Simscape Multibody モデルへと直接変換します。

    例の概要

    この例では、ヒューマノイド ロボット アセンブリの Onshape® モデルをインポートする方法を説明します。モデルは、ロボットの胴部、頭部、および四肢を表すさまざまなパーツ (URDF 用語では "リンク") で構成されています。パーツは、回転ジョイントと溶接ジョイント (それぞれ "連続" と "固定") を介して接続されています。

    モデルのインポート

    URDF ファイルを現在の MATLAB® セッションの検索パスに追加するには、次のように入力します。

    openExample("sm/DocImportedURDFModelExample");
    addpath(genpath("ImportedURDFSupport"));
    

    URDF モデルをインポートします。

    smimport("Humanoid.urdf")
    

    この関数によって、ヒューマノイド ロボットの Simscape Multibody モデルが生成されます。インポート ファイルを URDF として識別するには、ファイル拡張子が必要です。インポートしたモデルを更新し ([モデル化] タブで [モデルの更新] をクリック)、静的な可視化を初期状態で開きます。次の図に結果を示します。

    各部のジョイントを作動させる制御システムの追加などを行い、モデルの作成を進めます。制御された例を見るには、MATLAB コマンド プロンプトで次のように入力します。

    openExample("sm/ImportedURDFExample")
    

    モデルをシミュレーションし、単純なアニメーションを表示します。

    LBR iiwa シリアル マニピュレーターの rigidBodyTree オブジェクトをインポートします。このモデルは、Robotics System Toolbox インストールに含まれている iiwa14.urdf という名前の URDF モデルです。

    URDF モデルを rigidBodyTree オブジェクトに変換します。

    iiwaRBT = importrobot('iiwa14.urdf');

    メモ

    importrobot (Robotics System Toolbox) の実行には Robotics System Toolbox のライセンスが必要です。

    iiwaRBT オブジェクトを Simscape Multibody にインポートします。

    iiwaSM = smimport(iiwaRBT);

    Multibody Explorer を使用し、図を更新してモデルを初期構成で可視化します。[シミュレーション] セクションで [モデルの更新] ボタンをクリックします。

    メモ

    Robot Library のすべてのロボット モデルにメッシュ ファイルが含まれているわけではありません。すべてのロボット モデル用のソース メッシュ ファイルを入手し、モデルを Simscape Multibody に適切にインポートするには、Robotics System Toolbox Robot Library Data サポート パッケージをダウンロードしてインストールします。詳細については、Robotics System Toolbox Robot Library Data サポート パッケージのインストール (Robotics System Toolbox)を参照してください。

    入力引数

    すべて折りたたむ

    インポートするファイルまたはオブジェクトの名前。string スカラーまたは文字ベクトルとして指定します。CAD モデルの場合は XML ファイル、URDF モデルの場合は URDF ファイル、Robotics System Toolbox モデルの場合は rigidBodyTree オブジェクトを使用します。ファイル拡張子がない場合、モデルは XML 形式であるものと見なされます。ファイル パスがない場合、ファイルは MATLAB® パス上にあるものと見なされます。

    例: 'robotto.xml'

    データ型: char | string

    名前と値の引数

    すべて折りたたむ

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

    R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

    例: smimport('sm_robot','ModelName','robotto','DataFileName','robottos_data_file');

    CAD インポート時に使用するモデル トポロジ単純化モード。ModelSimplification の設定は次のとおりです。

    • bringJointsToTop — 剛結合されたパーツをサブシステムにグループ化し、ジョイントをモデルの階層構造の最上位にプロモートする。

    • groupRigidBodies — 剛結合されたパーツをサブシステムにグループ化し、ジョイントはモデルの階層構造内の元の場所に残す。

    • None — モデルを単純化せず、そのままインポートする。

    モデルの最上位に移されたジョイントの名前は、ジョイント タイプをベースとする一般的な名前に変更されます (例: Revolute_Joint1)。剛結合されたコンポーネントをグループ化したサブシステムには、RigidSubsystem という文字列をベースとする一般的な名前が付けられます (例: RigidSubsystem1)。この引数は CAD インポートにのみ適用されます。

    例: 'ModelSimplification','bringJointsToTop'

    データ型: char | string

    新しいモデルを生成するか既存のモデル データを更新するかのオプション。新しいモデルとデータ ファイルを生成するには、ImportModemodelAndDataFile に設定します。以前にインポートしたモデルの新しいデータ ファイルを生成するには、ImportModedataFile に設定します。この関数ではブロック線図そのものは更新されません。ImportMode を指定しない場合、関数は modelAndDataFile モードで実行されます。この引数は CAD インポートにのみ適用されます。

    例: 'ImportMode','dataFile'

    データ型: char | string

    Simscape Multibody モデルの名前。'ModelName' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。モデルは SLX 形式で保存されます。この引数は、ImportModedataFile に設定されている場合は有効ではありません。ModelName を指定しない場合、モデル ファイルの名前はマルチボディ記述ファイルに従った名前になります。マルチボディ記述ファイルの名前が MATLAB の命名規則と整合しない場合、わずかに変更したバージョンが代わりに使用されます。

    例: 'ModelName','robotto'

    データ型: char | string

    パラメーター データ サポート ファイルの名前。'DataFileName' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。データ ファイルは、インポートされた Simscape Multibody モデルで参照されるブロック パラメーターの値を含む M ファイルです。DataFileName を指定しない場合、データ ファイルの名前はマルチボディ記述ファイルに従った名前になります。マルチボディ記述ファイルの名前が MATLAB の命名規則と整合しない場合、変更したバージョンが代わりに使用されます。この引数は CAD インポートにのみ適用されます。

    例: 'DataFileName','robottos_new_data'

    データ型: char | string

    前回使用したパラメーター データ ファイルの名前。'PriorDataFile' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。前回のデータ ファイルは、新しい物理単位、コンポーネントの追加と削除、モデル トポロジの変更など、特に注意が必要な変更を特定するのに役立ちます。この引数は、ImportModedataFile に設定されている場合にのみ有効です。この引数は CAD インポートにのみ適用されます。

    例: 'PriorDataFile','robottos_original_data'

    データ型: char | string

    パラメーター データ ファイルで提供される MATLAB データ構造体の名前。'VariableName' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。この構造体に Simscape Multibody モデルのすべてのブロック パラメーターの数値が格納されます。PriorDataFileVariableName のどちらも指定しない場合、データ構造体に smiData という名前が付けられます。PriorDataFile を指定し、VariableName は指定しない場合、データ構造体の名前は前回のデータ ファイルから派生します。この引数は CAD インポートにのみ適用されます。

    例: 'VariableName','robottosData'

    データ型: char | string

    出力引数

    すべて折りたたむ

    Simscape Multibody モデル。モデル ハンドルとして返されます。このモデル ハンドルは、たとえば get_param 関数や set_param 関数を使用してモデル パラメーターを取得または設定する際に使用します。

    データ型: double

    パラメーター データ ファイルの名前。文字ベクトルとして返されます。このファイルは、インポートされた Simscape Multibody モデルで参照されるブロック パラメーターの値を含む M ファイルです。この出力は CAD インポートにのみ適用されます。

    データ型: char

    バージョン履歴

    R2012b で導入