Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

CAD 変換

CAD モデルの変換

CAD モデルを等価の Simscape™ Multibody™ ブロック線図に変換することができます。変換は、XML マルチボディ記述ファイルの名前を主要引数とする関数 smimport に依存します。XML ファイルは、元のモデルを作成し直すために必要なデータを Simscape Multibody ソフトウェアに渡し、サポートされていない拘束がモデルに存在する場合にはその近似を渡します。

CAD モデルの変換は、エクスポートとインポートの 2 つの手順で行います。エクスポート手順では、CAD アセンブリ モデルを、XML マルチボディ記述ファイルと STEP または STL 形式の一連のパーツ ジオメトリ ファイルに変換します。インポート手順では、マルチボディ記述ファイルとパーツ ジオメトリ ファイルを SLX Simscape Multibody モデルと M データ ファイルに変換します。モデルはすべてのブロック パラメーター入力をデータ ファイルから取得します。

CAD 変換の手順

変換されたモデルに含まれるもの

変換されたモデルは、複数の固体ブロックと Rigid Transform ブロックから成る Simulink® サブシステムを使用して CAD パーツを表します。CAD パーツは、Simscape Multibody ソフトウェアではボディと呼ばれます。固体ブロックはボディのジオメトリ、慣性、および色を提供します。Rigid Transform ブロックは、ボディ間の接続で必要とされる姿勢とともに座標系を提供します。

図に示された CAD ロボット アーム モデルの上腕部ボディについて考えます。このボディの Simulink サブシステムは、1 つの固体ブロックを Rigid Transform ブロックのペアに接続して構成されます。Solid ブロックは、上腕部のジオメトリ ファイルへの参照と CAD モデル由来の慣性特性を提供します。Rigid Transform ブロックは、ロボットのベースと前腕部のボディに接続するための座標系を提供します。

上腕部のボディを表す Simulink サブシステム

CAD のジョイント、拘束、メイトは、Simscape Multibody ソフトウェアにジョイント ブロックと拘束ブロックの組み合わせとして変換されます。CAD のロボット アームの例では、上腕部と前腕部の間の拘束は Revolute Joint ブロックに変換されます。このブロックは、上腕部と前腕部のボディを表す Simulink Subsystem ブロックの間に配置されます。

上腕部のボディを表す Simulink サブシステム

既定では、変換されたモデルで元の CAD モデルの階層構造が維持されます。ソース モデルがマルチボディ サブアセンブリを含む CAD モデルである場合、サブアセンブリは Simscape Multibody ソフトウェア内でマルチボディ Simulink サブシステムに変換されます。CAD のロボット アーム モデルについてもう一度考えます。次の図に模式的に示すように、モデルには、7 つのボディをもつグリップのマルチボディ サブアセンブリが含まれています。

CAD のロボット アーム モデルの階層構造

変換時に、グリップのサブアセンブリは、それぞれが各ボディに対応する 7 つの Simulink サブシステムをもつ Simulink サブシステムに変換されます。

ボディ Simulink サブシステムをもつマルチボディ Simulink サブシステム

データ ファイルに含まれるもの

変換済みモデルのブロックは、データ ファイルに定義された MATLAB® 変数としてパラメーター化されています。これらの変数は、各種のブロック タイプに従って名前を付けられた構造体配列に格納されます。構造体配列は、smiData という名前の親データ構造体か、指定したカスタム文字列の中に入れ子になります。

smiData という名前のデータ構造体をもつ、インポートしたモデルを考えます。モデルに Revolute Joint ブロックがある場合、これらのブロックのパラメーター データは、構造体配列 smiData.RevoluteJoint です。この構造体配列には、それぞれが異なるブロック パラメーターに対応する複数のデータ フィールドが含まれています。

構造体配列のフィールドには、ブロック パラメーターに従って名前が付けられます。たとえば、Revolute Joint ブロックの位置状態ターゲット データは、Rz_Position_Target という名前のフィールドにあります。モデルに 2 つの Revolute Joint ブロックがある場合、このフィールドには smiData.RevoluteJoint(1).Rz_Position_TargetsmiData.RevoluteJoint(2).Rz_Position_target の 2 つのエントリが含まれます。

それぞれの構造体配列の添字は、インポートしたモデルの特定のブロックに対応します。更新した XML マルチボディ記述ファイルからデータ ファイルを再生成すると、添字の割り当てが変更される場合があります。関数 smimport では、前のデータ ファイルを指定した場合にそれをチェックして、添字の割り当てが同じ値に維持されることを確認します。既存のデータ ファイルの更新を参照してください。

CAD モデルのエクスポート

技術的には、どのような CAD アプリケーションからでも CAD アセンブリ モデルをエクスポートできます。Simscape Multibody Link CAD プラグインは、有効な XML 形式でモデルをエクスポートする 1 つの手段を提供します。このプラグインは、SolidWorks®、PTC® Creo™、および Autodesk®Inventor® という 3 つのデスクトップ CAD アプリケーションと互換性があります。プラグインは、XML マルチボディ記述ファイルだけでなく、変換された最終的なモデルでの可視化に必要なあらゆるジオメトリ ファイルも生成します。

Simscape Multibody の関数 smexportonshape は、Onshape® という名前のクラウド アプリケーションから CAD モデルをエクスポートするという、CAD モデル エクスポートのもう 1 つの手段を提供します。この関数は、新形式の Simscape Multibody ブロックのみと互換性がある形式でエクスポートを行います。Onshape アカウントからの CAD モデルのエクスポート (およびインポート) の詳細については、Onshape インポートを参照してください。

サポートされていない CAD アプリケーションを使用している場合には、マルチボディ記述ファイルとパーツ ジオメトリ ファイルを生成するために、CAD API と Simscape Multibody の XML スキーマを使用するプログラムを作成できます。このタスクには、XML ドキュメント、XSD スキーマ定義および CAD API の知識が必要です。XSD スキーマ定義の詳細については、スキーマの Web サイトを参照してください。SolidWorks CAD API に基づいて作成されたプログラム例は、MATLAB Central を参照してください。

CAD アプリケーション用の URDF コンバーターがある場合は、モデルを URDF 形式に変換し、その URDF ファイルを Simscape Multibody 環境にインポートできる可能性があります。ただし、URDF の仕様では、4 節リンク機構やギア アセンブリなどの閉連鎖モデルのトポロジが禁止されていることに注意してください。詳細については、URDF モデルのインポートを参照してください。

エクスポート エラーに関するメモ

Simscape Multibody Link プラグインでパーツ ジオメトリ ファイルをエクスポートできない場合や、CAD 拘束セットを変換できない場合、ソフトウェアでエラー メッセージが表示されます。エラー メッセージでは、ジオメトリ ファイルを欠いたボディや、サポートされていない拘束が特定されます。生成した XML マルチボディ記述ファイルを Simscape Multibody ソフトウェアにインポートすることはできますが、結果のモデルは元の CAD アセンブリ モデルを正確に表していない可能性があります。

CAD モデルのインポート

Simscape Multibody の関数 smimport を既定のインポート モードで使用して、XML マルチボディ記述ファイルをインポートします。この関数はファイルを解析し、Simscape Multibody モデルと関連データ ファイルを生成します。CAD アセンブリ モデルを、その XML マルチボディ記述ファイルを介してインポートする詳しい手順は、CAD アセンブリ モデルのインポートを参照してください。

メモ

ソフトウェアの Version R2017b 以降、Simscape Multibody Link プラグインでは、Simscape Multibody Second Generation ソフトウェアとのみ互換性がある XML 形式でエクスポートが行われます。このような XML ファイルは、すべて関数 smimport を使用してインポートしなければなりません。この関数で生成されたモデルは、Second Generation のブロックのみで構成されます。これらのブロックには、MATLAB コマンド プロンプトでコマンド sm_lib を入力することによってアクセスできます。

Simscape Multibody First Generation ソフトウェアはサポートが終了しており、関数 mech_import は使用できなくなっています。

CAD インポート エラー

パーツ ジオメトリ ファイルが無効であるか欠損している場合、対応するボディは Simscape Multibody 可視化ユーティリティには表示できません。CAD アセンブリ モデルで、サポートされていない拘束の組み合わせがボディ間に含まれている場合、Simscape Multibody ソフトウェアでは剛結合によってボディを結合します。剛結合は座標系を直接接続するライン、Rigid Transform ブロック、または Weld Joint ブロックの形式をとることができます。

サポートされていない拘束を原因とする剛結合

Simscape Multibody ソフトウェアが CAD 拘束の組み合わせを変換できない場合、警告メッセージが MATLAB コマンド ウィンドウに表示され、影響を受けるボディとその接続座標系が特定されます。次に例を示します。

Warning: The set of constraints between upperarm_1_RIGID and forearm_1_RIGID
could not be mapped to a joint. A rigid connection has been added between port F
of upperarm_1_RIGID and port F1 or forearm_1_RIGID for these constraints.

モデル トポロジの単純化

CAD モデルを、トポロジを単純化してインポートできます。これを実行できるように、関数 smimport には ModelSimplification 引数が備わっています。この引数は次のように設定できます。

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

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

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

CAD モデルに剛結合されたコンポーネント (ナットとボルトなど) が多数含まれる場合は、bringJointsToTop または groupRigidBodies のオプションを使用します。たとえば、ブロック線図を見ただけでモデルの主要コンポーネントをより直感的に把握するには、グループ化が好ましいです。

CAD モデルのサブアセンブリ内にジョイントがあり、たとえば、ジョイントをさまざまなサブシステム内で探さなくともジョイントの作動と検出信号を扱えるよう、それを最上位レベルに表示する場合は、bringJointsToTop オプションを使用します。

モデルの単純化は、CAD インポートでのみ利用できることに注意してください。URDF モデルのトポロジは平易であり、単純化はほとんど必要ありません。

既存のデータ ファイルの更新

以前にインポートしたモデルのデータ ファイルを再生成するには、関数 smimportdataFile モードで実行します。このモードは、オプションの ImportModeName,Value のペアの引数を使用して指定します。この関数では以前のデータ ファイルを使用して、構造体配列の添字とブロックのマッピングの一貫性を維持します。

データ ファイルを再生成する前に、更新済みの CAD アセンブリ モデルから新しい XML マルチボディ記述ファイルをエクスポートしなければなりません。関数 smimport は新しいマルチボディ記述ファイルのデータを使用して新しいデータ ファイルを生成します。

この関数は、dataFile モードで実行した場合、ブロック線図を更新しません。ソースの CAD アセンブリ モデルでボディの追加や削除を行った場合は、以前にインポートしたモデル内の対応するブロックを手動で追加または削除しなければなりません。

CAD の更新