Main Content

CAD 変換

CAD モデルの変換

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

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

CAD 変換の手順

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

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

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

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

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

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

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

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

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

ボディ金宝appサブシステムをもつマルチボディ金宝appサブシステム

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

変換済みモデルのブロックは、データ ファイルに定義された 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 LinkCADプラグインは,有効な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 に基づいて作成されたプログラム例は、MATLABCentralを参照してください。

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 アセンブリ モデルのインポートを参照してください。

メモ

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

Simscape MultibodyFirst 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 の更新