拘束のモデリング

拘束は、ボディの運動が他のボディへの結合によって制限される際に起こります。

例えば、2つのボディがボールジョイントで結合されている場合、それらは互いについてのみ回転することが可能です。相対的な並進自由度は、ボールジョイントによって削除されます。ボディはボールジョイントに拘束されている、と言われます。数学的には、ボールジョイントは、拘束方程式と呼ばれる代数方程式として示されます。

拘束は、いくつかの方法で分類されます。1つの中心的な分類法は、拘束が明示的に時間に依存しているかどうかに基づいています。時間依存なしの拘束は、ボールジョイントやユニバーサルジョイントなどのジョイントをモデル化するのに使用されます。時間依存のある拘束は、タービンの定速回転モーションなどの規定された動きをシステムに表わすために使用されます。その他の分類については、J. H. GinsbergによるAdvanced Engineering Dynamicsなど、動力学のテキストをご参照ください。

各拘束は、その拘束によって示される代数的な関係を実行する拘束力、モーメント、またはその両方を内部的に導入します。これらの拘束力とモーメントは、MotionSolveを使って計算し、機構内の接合を通して作用する荷重を得ることができます。規定された動きの場合、拘束力は駆動力とモーメントを与え、これは、これらのモーションを達成するためにアクチュエータが必要とする能力を推測するのに役立ちます。

ジョイント

ジョイントは、コンポーネント間の相互結合のモデルです。もっとも身近なジョイントの例はドアの蝶番で、これは回転ジョイントとしてモデル化できます。このジョイントは、ジョイント軸周りの回転に対応し、自由度は1です。

下の一覧は、各種拘束タイプおよびそれらが与える拘束方程式の数を示したものです。
拘束タイプ 平行移動拘束 回転拘束 拘束の総数
Constraint_Coupler     1
Constraint_CVCV     3
Constraint_CVSF     1
Constraint_Gear     1
Constraint_Joint: CONSTANT_VELOCITY 3 1 4
Constraint_Joint:CYLINDRICAL 2 2 4
Constraint_Joint: FIXED 3 3 6
Constraint_Joint: FREE 0 0 0
Constraint_Joint: INLINE 2 0 2
Constraint_Joint: INPLANE 1 0 1
Constraint_Joint: ORIENTATION 0 3 3
Constraint_Joint: PARALLEL_AXES 0 2 2
Constraint_Joint: PERPENDICULAR 0 1 1
Constraint_Joint: PLANAR 1 2 3
Constraint_Joint: RACK_PINION     1
Constraint_Joint: REVOLUTE 3 2 5
Constraint_Joint: SCREW     1
Constraint_Joint:SPHERICAL 0 3 3
Constraint_Joint: TRANSLATIONAL 2 3 5
Constraint_Joint: UNIVERSAL 3 1 4
Constraint_PTCV     2
Constraint_PTSF     1
Constraint_SFSF     1
Constraint_PTDCV     2
Constraint_PTDSF     1

これらのジョイントは、速度の項を必要とすることなく純粋にシステムのコンフィギュレーションの形で表現され得るため、コンフィギュレーション拘束条件と呼ばれます。さらに、これらは時間の関数でもありません。このような拘束条件は、システムにエネルギーを追加したり削除したりしないため、“ワークレス拘束条件”とも呼ばれます。

ジョイントは、クリアランスや摩擦といった影響を考慮しないことによって自動車やトラックの車体全体のアセンブリのような複雑な機構システムのシミュレーションに多大な計算効率を与えます。しかしながら、これらの影響は重要である場合もあります。MotionSolveでは、これらの影響を違った方法でモデル化することが可能です。例えば、クリアランスをモデル化するには、ジョイントを接触力要素で置き換えることができます。ジョイント内の摩擦をモデル化するには、ジョイントの反力運動学の関数としてフォースまたはトルクが使用できます。

モーション

ジョイントと同様、モーションは、アクチュエータの理想化された表現です。モーションは、いくつかの自由度を拘束し、指定された時間の関数として変化します。発生する拘束力は、モーションを生成するために必要な作用力です。モーションは、システムにエネルギーを追加、もしくは削除する場合があります。

余剰な拘束条件

多くの拘束条件を与えすぎて、システムを過拘束にしてしまうことがあります。過拘束されたシステムの典型例としてドアが挙げられます。通常、ドアにはドアフレームへと繋がる3つのヒンジ(蝶番)がついています。ヒンジが回転ジョイントとして表現される場合、モデル内には1つのヒンジのみが必要とされます。ヒンジは理想化され、変形したり曲がったりすることはありません。残りの2つのヒンジはシステムに新しい影響を与えることはないため、“余剰”です。数学的に、残り2つのヒンジによる拘束方程式の2つのセットは、最初のヒンジによるセットと区別がつきません。

この余剰は、MotionSolveによって内部的に生成されるマトリックス内でランク欠損となっています。この時点でエラーで終了する代わりに、MotionSolveはこういった状況を検知し、余剰な拘束条件を自動的に削除することで、固有のソリューションが得られ、シミュレーションが進行できるように設計されています。

このような場合は、MotionSolveは次のような警告メッセージを出力します:
WARNING: The following redundant constraints were removed:
 -------------------------------------------------
 (1) Joint/301004 : DOT1 between X of Part/30101 & Z of Part/30103
 (2) Joint/301004 : SPH_Y between Part/30101 & Part/30103
 (3) Joint/301002 : DOT1 between Y of Part/30102 & Z of Part/30104
 -------------------------------------------------
NOTE: DOT1 is the perpendicular constraint between two axes.
      DOT2 is the perpendicular constraint between an axis and a vector rj->ri.
      SPH_X(or Y,Z) is the coincidental constraint between the X(or Y,Z) of two points.
      DIST is the distance constraint between two points.
      The existence of redundant constraints may indicate potential modeling errors.
      See Users Manual for further info and remarks.
上記の警告ステートメントについて、次の図で説明します:


図 1.
余剰な拘束条件を持つジョイントに応じて、拘束のタイプは次のいずれかになります:
DOT1
この拘束は2つのベクトル間で定義されています。各ベクトルは、各ボディに結合されているマーカーに属する軸です。この拘束は、これら2つの軸が互いに垂直であることを必要とします。この拘束は、MotionSolveにおいて、固定ジョイント、回転ジョイント、円筒ジョイントなどいくつかのジョイントで使用されます。例として、2つのボディ間の固定ジョイントで使用されているDOT1拘束を図 2図 3に示します。


図 2. ポイントPで固定ジョイントを使用して地面に結合されたBody 1


図 3. Body 1上のZ軸と地面上のX軸の間のDOT1拘束
DOT2
この拘束は、DOT1と同様に2つのベクトル間で定義されています。一方のベクトルは、一方のボディに結合されているマーカーに属する軸です。もう一方のベクトルは、2つのボディの間で定義されています。この拘束は、これら2つのベクトルが互いに垂直であることを必要とします。この拘束は、MotionSolveにおいて、平面ジョイント、インラインジョイント、面内ジョイントなどいくつかのジョイントで使用されます。例として、2つのボディ間の面内ジョイントで使用されているDOT2拘束を図 4図 5に示します。


図 4. ポイントPで面内ジョイントを使用して地面に結合されたBody 1
図 5. Body 1のマーカー原点からGroundのマーカー原点に向かうベクトルとBody 1上のZ軸の間のDOT2拘束
SPH_X、SPH_Y、SPH_Z
球拘束も2つのマーカーの間で作用します。SPH_X、SPH_Y、およびSPH_Zの各拘束は、2つのマーカー原点のX、Y、およびZ位置がそれぞれ同じであることを必要とします。これらの拘束のうち1つ以上が固定ジョイント、ボールジョイント、回転ジョイントなどで使用されます。図 6および図 7は、球ジョイントまたはボールジョイントの場合を示しています。


図 6. ポイントPでボールジョイントを使用してBody 2に結合されたBody 1


図 7. 2つのマーカーの位置ベクトル間のSPH_X、SPH_Y、およびSPH_Z拘束
DIST
この拘束も、SPH_*拘束と同様に2つのマーカーの原点間の距離を規定します。DIST拘束は、2つのマーカーの原点の位置ベクトル間の差異の大きさが、特定の値と等しくなることを必要とします。この値がゼロの場合、この拘束は、SPH_X、SPH_Y、およびSPH_Zの各拘束を組み合わせたものと等しくなります。これは、図 8に示すとおりです。


図 8. 2つのマーカーの位置ベクトル間のDIST拘束
これらの拘束の使用法をさらに例示するため、次の表に、これらの拘束を使用してボディ間の一般的なジョイントをモデル化する方法を示します。
拘束タイプ 説明 ジョイントのタイプ
SPH_X、SPH_Y、SPH_Z 3つの並進変位の拘束 固定ジョイント
3 DOT1 3つの回転変位の拘束
SPH_X、SPH_Y、SPH_Z 3つの並進変位の拘束 ボールジョイントまたは球ジョイント
SPH_X、SPH_Y、SPH_Z 3つの並進変位の拘束 回転ジョイント
2 DOT1 2つの回転変位の拘束
ただし、削除された拘束条件に対応する拘束力は、ゼロ(拘束なし、フォースなし)とレポートされる点に注意が必要です。これはすなわち、機構内の他のジョイントは非現実的に大きい拘束力、モーメント、またはその両方を有しているかもしれないことを意味します。現実的な拘束力を得たい場合、下記のアプローチのいずれかを使用する必要があります。
  1. 余剰な拘束条件が存在しないことを確実にするような形で拘束タイプを選択します。

    または、

  2. 理想化されたジョイントを荷重/トルクベースの結合(例えばブッシュ)と置き換えます。
  3. ジョイントが作用するパートの弾性変形をモデル化します。剛体を弾性体と置き換えることにより、より多くの自由度が導入され、このパートにかかるジョイント式の冗長性が回避されます。