最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ボディのモデル化

ボディとは

ボディは、マルチボディ モデルの基本的な構成要素です。ボディは、モデルを組み立てる際に接続する固体コンポーネントであり、そのモデル内のすべての力とトルクが最終的に作用する対象です。たとえば、太陽系のモデルでは惑星と太陽がボディとして機能し、羽ばたき機構のモデルでは翼がボディとして機能します。

ボディのアセンブリとしての羽ばたき機構

CAD モデリングに精通している場合は、ボディは、それぞれがジオメトリと材料が付随するモジュール式コンポーネントである CAD パーツに概ね相当するものと考えてかまいません。描画するスケッチがないなど、モデル化の方法は異なっている可能性がありますが、概念的に最終結果は同じで、接続、拘束、操作、可視化が可能になります。

ボディ要素

ボディはより単純なボディ要素の集合体 (通常は剛的集合体) です。ボディ要素はジオメトリと慣性をもつ固体ですが、まれに、単純慣性 (ジオメトリが割り当てられていない) や単純ジオメトリ (慣性が関連付けられていない) をもつことがあります。モデル化するボディ要素とその接続方法によって、ボディ全体の属性が決まります。

多くの場合、単純な形状のボディでは、単一の固体が必要です。形状や慣性が複雑なボディでは、複数の固体に加え、単純慣性や単純ジオメトリが時として必要になることがあります。モジュール式作成セットの直方体のように、さまざまなボディ要素の特性は互いに異なる場合があります。望ましいボディが作成されるように、それらの組み合わせはユーザー次第です。

固体の集合体としての翼のボディ

各ボディ要素には、1 つ以上の座標系と一連の材料属性が含まれています。座標系は、ボディ要素どうしの相対的な配置を決定し、ジョイントと拘束の接続点を提供します。属性は、ボディ要素の動的挙動を取り入れ、ジオメトリをもつボディ要素においては外観の決定を補助します。

翼のボディの座標系

材料属性

固体の属性には、慣性と色が含まれます。ジオメトリによって慣性パラメーターの自動計算が可能となり、色を併用することで可視化が可能となります。慣性は、運動の変化に対する抵抗を定量化し、加速を発生させるのに必要な力やトルクの計算に組み込みます。

他のボディ要素の属性は、範囲がもっと制限されています。単純慣性の属性には慣性のみが含まれ、通常は、質量、重心、慣性モーメント、慣性乗積などのパラメーターがあります。

次の図は、標準的なマルチボディ モデル (ここでは羽ばたく翼機構) と関連して、標準的なボディ (ここでは翼) の構造をまとめています。マルチボディ アセンブリ (1) はボディ (2) で構成され、ボディはボディ要素 (3) で構成されます。多くの場合、ボディ要素はすべて固体です。ボディ要素は、それに関連した座標系と任意の材料属性 (4) で構成されます。

関連ブロック

ほとんどのボディは、固体ブロックおよび Rigid Transform ブロックを使用してモデル化できます。固体ブロックは、その名前のとおり、特定のタイプの固体要素を表します。ブロック パラメーターが固体の属性を設定し、R というラベルの付いた座標系端子が、モデルへの接続のための基準座標系を提供します。追加のカスタム座標系を作成し、固体のさまざまな特徴を使用してそれらを配置することができます。

Rigid Transform ブロックは、2 つの座標系間の固定された空間関係を表します。Rigid Transform ブロックを座標系接続ラインに追加する場合は常に、そのラインで元々設定されている一致関係を、ブロックのダイアログ ボックスで指定する回転および並進オフセットと置き換えます。

ボディに他のブロックが含まれることはほとんどありません。Body Elements ライブラリ内にある残りのブロック (GraphicInertia、および Variable Mass サブライブラリ内のすべて) は、特別なケースで使用します。たとえば、グラフィックス マーカーを追加する、複合化を介して慣性を調整する、シミュレーション中に慣性を変化させるなどの目的で使用します。

ボディの可視化

個々の固体とモデル全体の可視化が可能です。使用に適した可視化ツールは、この 2 つのどちらを可視化するかによって異なります。個々の固体は、それぞれの固体ブロックから直接可視化できます。固体ブロックのダイアログ ボックスには、ブロックが表す固体のジオメトリ、座標系、および色を表示する可視化ペインがあります。可視化は、ブロック線図が不完全な場合や無効な場合でも機能します。

標準的な固体の可視化

Simscape Multibody の可視化ユーティリティである Mechanics Explorer を使用すると、モデルとその内部のすべてのボディを可視化できます。モデルには、相互に互換性のないジョイントや拘束によるものなど、運動学的競合があってはなりません。また、トポロジ的に異なるマルチボディ ネットワークごとに 1 つの Solver Configuration ブロックがなければなりません。マルチボディ ネットワークは、それぞれが座標系接続ラインで中断なく接続された Simscape Multibody ブロックのグループです。

Mechanics Explorer では、ブロック線図の更新 ([デバッグ] タブで [モデルの更新] をクリック) を行うたびに、可視化された静的モデルが初期構成で開きます。初期構成は、ジョイントの初期位置と初期角度すべての集計結果であり、それらの値はジョイントの状態ターゲットを使用して指定できます。シミュレーションは、ボディのモデル化中にはあまり行われないタスクですが、実行すると可視化が動的なものになります。

標準的なモデルの可視化

可視化の詳細については、モデルおよびそのコンポーネントの可視化を参照してください。

確認: 標準的なボディ

MATLAB コマンド プロンプトで、「sm_cam_flapping_wing」と入力します。羽ばたく翼機構のモデルが開きます。RightWing という名前の Subsystem ブロックのマスク内部を確認します。これは、ブロックの左下隅にある下矢印をクリックして行うことができます。このサブシステム内のブロックは、標準的なボディの表現です。

固体ブロックは、それぞれ翼のボディのセクションを表します。固体ブロック間の座標系接続ラインと接続ラインの一部に含まれる Rigid Transform ブロックは、固体セクション間に存在する空間関係を定義します。CrossPin という名前の Cylindrical Solid ブロックのダイアログ ボックスを開き、その属性を調べてください。

  • [Geometry] パラメーターは、既定で展開されています。Cylindrical Solid ブロックでは、ある形状が使用され、それに関連する寸法 ([Radius][Length]) が MATLAB 変数 (RpLp) によってパラメーター化されています。すべての変数は、サブシステム マスク内で数値的に定義されています。

  • [Inertia] パラメーターを展開します。このブロックは、ジオメトリおよび質量パラメーター ([Density]) から慣性パラメーターの大部分を計算するように設定されています。このパラメーターも MATLAB 変数 (rho) によってパラメーター化されています。

  • [Graphic] パラメーターを展開します。このブロックでは [Simple] カラー モデルが使用され、固体の表示プロパティ ([Color][Opacity]) が MATLAB 変数 (lclr) によってパラメーター化されるか、数値的に指定 (1.0) されています。

  • 可視化ツールストリップで、[Frame] ボタンをクリックします。可視化ペインに、固体に関連付けられた座標系が表示されます。この固体には単一の座標系があり、これは、あらゆる固体ブロックに既定で設けられているローカル基準座標系です。ジオメトリに対するこの座標系の配置は、モデルのコンテキスト内でのジオメトリの配置に影響します。

  • ブロック線図を更新します。Mechanics Explorer が開き、羽ばたく翼のモデルの静的な可視化が初期構成で表示されます。ツリー ビュー ペイン (Mechanics Explorer の左側) で、[RightWing] ノードを右クリックし、[Show Only This] を選択します。可視化ペインが更新され、選択したコンポーネントを構成するボディ要素のみが表示されます。

ボディの境界

直接接続ラインと Rigid Transform ブロックはボディ要素を 1 つのボディにまとめます。こうした接続は、それらが属するボディの内部として扱われます。それに対し、ジョイント ブロックと拘束ブロックは、固体を別々のボディに分離します。これらのブロックは、ブロックで接続されたボディの境界を特定します。この区分は、Gravitational Field ブロックをもつモデルに実質的な影響を与えます。

次の図は、sm_cam_flapping_wing のブロック線図のフラット化された部分を示しています。RFJRWJ という名前のジョイント ブロックは、右側にあるボディを構成するブロック (影付きの領域で識別) を、そのボディが接続されている隣接ボディ (表示されていない) から分離しています。

重力場への影響

設計上、Gravitational Field ブロックはボディの重心に力を及ぼします。重心は、ボディを構成するすべての Body Elements ブロックの集合体から決定されます。2 つの固体ブロックが Rigid Transform ブロックを介して接続されている場合、それらは同じボディに属します。その場合は、単一の重力がそのボディの重心に作用します。

しかし、Cylindrical Solid ブロックが Revolute Joint ブロックを介して接続されている場合、それらは別々のボディに属します。その場合は、2 つの重力がそれらのボディの個々の重心にかかります。Revolute Joint ブロックを Weld Joint ブロックに置き換えた場合も同様です。タイプにかかわらず、すべてのジョイント ブロックは、それによって接続されたボディ要素を別々のボディに分離します。

次の図は、元々は単一のボディで構成されていたブロック ネットワークに Weld Joint ブロックを追加した場合の影響を示しています。このジョイント ブロックにより、ボディは 2 つに分割されます。つまり、WingLink という名前の Cylindrical Solid ブロックのみで構成されるボディと、それ以外の Cylindrical Solid ブロックおよび Rigid Transform ブロックで構成されるボディです。この場合、モデル内に Gravitational Field ブロックがあれば、その力が各ボディで計算された重心に作用します。

剛体ループに関するメモ

ボディを構成するブロックは剛的に接続され、理想的なケースでは、直列に接続されます。その結果、2 つの任意の座標間のパスが一意であるツリー構造になります。ただし、分岐やツリーの開放端を接続し、閉じた構造の剛体ループを形成するようにブロックを剛結合することも技術的には可能です。

剛体変換ループ

剛体変換ループはモデル内では使用できません。それらには冗長 (かつ不必要) な剛結合が含まれており、そうした剛結合がモデル内にあると、回避可能な数値誤差につながる可能性があります。モデルに剛体運動ループが含まれている場合は、冗長な剛結合を削除することによってループを切断しなければなりません。次の図に例を示します。

Simulink サブシステムとしてのボディ

Simulink Subsystem ブロック内では、ボディに属するブロックを囲むのが一般的な慣行です。結果の Subsystem ブロックは、後ほど別のモデルで使用するために Simulink ライブラリに保存することができます。Subsystem ブロックのマスクは、囲まれたブロックに共通の変数とパラメーター (多くの場合、何らかの長さ、密度、色) を定義する場所となり、モデルのワークスペースは乱雑になりません。

ボディは、マルチボディ モデルでの使用の前にいつでもモデル化して Simulink サブシステムに変換できます。たとえば、ピストン エンジンをモデル化する場合、エンジン ハウジングやコネクティング ロッドにピストンを接続する準備ができるまで、ピストン ボディの作業を後回しにすることができます。ただし、一方のボディの形状とサイズは他方の形状とサイズに依存している場合が多いため、組み立てに注目する前に、少なくともそれらの属性を検討しなければなりません。

確認: 標準的なボディ サブシステム

MATLAB コマンド プロンプトで、「sm_cam_flapping_wing_lib」と入力します。Simulink ライブラリが開き、sm_cam_flapping_wing モデルで使用されているボディのうちの 2 つを表す Subsystem ブロックが表示されます。各ブロックに、モデルに接続するための座標系端子があります。

Peg という名前の Subsystem ブロックをダブルクリックします。カスタム ダイアログ ボックスが開き、このボディを完全に定義するために必要な主要パラメーターが表示されます。ここで指定する値は、この Subsystem ブロックを構成する Cylindrical Solid ブロックと Rigid Transform ブロックで使用されます。

Subsystem ブロックを右クリックして、[マスク][マスクの表示] を選択します。Simulink のマスク エディターが開き、翼のボディに関連したパラメーターとコードが表示されます。パラメーターとそれらに関連付けられた MATLAB 変数は、[パラメーターとダイアログ] タブで定義されています。翼と翼桁の形状のプロファイル生成に使用されるコードは、[初期化] タブで定義されています。

Subsystem ブロックを右クリックし、[マスク][マスク内を表示] を選択します。このサブシステムに対応するブロック線図が開きます。いくつかのブロックのダイアログ ボックを開き、パラメーターの多くを定義するために使用されている MATLAB 変数に注目します。これらは、サブシステム マスクで定義され、Subsystem ブロックのダイアログ ボックスで指定された変数です。

関連するトピック