重複制約
重複制約がモデルにどのように表示され、ソリューションにどのような影響を与えるかについて説明します。
重複制約とは何ですか?
剛体マルチボディダイナミクスでは、複数の剛体ジョイントや特定のタイプの入力が、それぞれパートの同じ自由度(DOF)を1つまたは複数制御しようとするときに重複制約が発生します。
弾性(有限要素)体は、メッシュ要素をつなぐ多くのノードがあるため、数百から数千のDOFを持つことができます。弾性体パートにジョイントを追加すると、制約のポイントに近いノードが制約されますが、パートの残りの部分のノードは自由に動かせるのでパートは柔軟に曲がることができます。パートを過剰制約することなく、ジョイントを追加できます。
剛体は6 DOFのみです。ボディ全体は、3つの並進DOF(x、y、z)に沿って空間内で移動し、3つのDOF(x、y、z)に対して回転することしかできません。剛体パートに1つのキネマティックジョイントを追加すると、パートの6 DOFのうち1つ以上が制約されます。したがって、剛体パートの場合、特定のタイプのキネマティックジョイントを1つのパートに2つ以上追加すると、すぐに過剰制約を受ける可能性があります。
剛体(キネマティック)ジョイントは、理想化されたジョイントで、そのタイプに基づいてDOFを除去します。現実のジョイントのように変形させることはできません。以下に、剛体ジョイントの例と、剛体ジョイントが除去するDOFを示します。
ジョイントタイプ | DOFを除去する | 許可内容 |
---|---|---|
ヒンジまたはピン | 5 | 1回転 |
円筒形ピンまたはスライディングピン | 4 | 1回転 1並進 |
ボールとソケット | 3 | 3回転 |
並進 | 5 | 1並進 |
平面 | 3 | 1回転 2 並進 |
さらに、コントローラを使用しない非力ベースのモーターやアクチュエータは制約とみなされます。これらは、そのその動作方向のDOFを除去します。
モデルの全システムDOFを決定するには、Grueblerカウントという数式が使用されます:
可動部のDOF - 制約のDOF = 全システムのDOF
重複制約はどのように構築されるのか?
次のようなシナリオを考えてみましょう:
- (剛体)ドアが2つの(剛体)ヒンジにぶら下がっていて、そのヒンジがドアフレームに接続されていて、ドアフレームはキネマティックジョイントを介して接地しています。
- ドアにかかる負荷は重力のみです。
マルチボディモデルを構築する際、現実世界に存在するのと同じ数のヒンジを使ってドアをフレームに接続しようとする自然な傾向があります。しかし、これは重複制約につながる可能性があります。

システムの冗長化の理由は?
上記のシナリオでは、ドアを地面に接続するため最初のヒンジジョイントを追加した際にドアの6 DOFのうち5 DOFが除去されました。このソリューションは、ヒンジ軸を中心とする回転を1回転DOFと完全に定義していました。2つ目のヒンジジョイントを追加する際に、1つ目のジョイントで除去した同じ5 DOFを除去しようとしました。その結果、この2つのジョイントは互いに冗長になってしまいました。2つ目のジョイントによって導入された制約方程式は、1つ目のジョイントと同一であり、ソリューションに必要なものではありませんでした。
以下は、上記のシナリオで完成したGrueblerGrueblerカウントの例です。
パート | DOF |
---|---|
ドア | +6 |
ヒンジ1 | -5 |
ヒンジ2 | -5 |
トータル | -4 |
重複制約の結果
解決時に、重複制約が存在する場合、ソルバーが自動的に該当する制約方程式を削除して、冗長性を除去しようとします。これはソルバーによる半不規則なプロセスです。その結果、除去された制約DOFには反作用力やモーメントの結果はありません。たとえば、ヒンジジョイントは回転DOFを1つ許可しています。ソルバーによってその制約並進DOFのいずれかが除去されると、ジョイントのx、y、zの線形反作用力の結果はありません。
例1:2つのヒンジがあるドア
下のイメージでは、左側のドアと右側のドアは異なるモデルになっています。荷重反作用のタイプとその方向の違いに着目します。左側のドアは、両方のヒンジではなく、片方のヒンジに1反作用力と曲げモーメントがかかっています。これは、ソルバーが上側のヒンジの制約が下側のヒンジの制約と重複していると判断し、関連する制約方程式を削除したためです。その結果、削除された制約に対して反作用力は計算されませんでした。一方、他の接続方法を使用した場合、右ドアの結果は経験則に一致し、適切な反作用タイプと方向が示されました。
例2:ベアリングでサポートされたシャフト
下の画像では、シャフトは2つのベアリング(剛体ヒンジジョイント)によるサポート対象です。マルチボディモデルを構築する際、現実世界に存在するのと同じ数のベアリングを使ってシャフトとベアリングを接続しようとする自然な傾向があります。これは、重複制約につながる可能性があります。

左シャフトは反作用力と曲げモーメントが1つですが、右のイメージに見られるように、2つの等しい垂直反作用があるはずです。この剛体問題の仮想表現では、2つの剛体ヒンジジョイントは不要です。ソルバーは、1つまたは複数のヒンジ制約が他の制約と重複していると判断して、競合する制約DOFの除去を選択しました。その結果、除去された制約に対して反作用力は計算されませんでした。右のシャフトの結果は正しいです。
重複制約を作らないようにする方法
- 変形するジョイントを使用します。Inspire Motionでは、剛体パートでモデリングする際に重複制約を防ぐために、デフォルトで変形するジョイントを採用しています。変形するジョイントは、制約方程式ではなく、荷重のバランスを使用するため、重複制約が発生することはありません。複数の変形するジョイントを剛体パートに追加しても、重複制約になることはありません。
- 数百または数千のDOFで構成される弾性体を使用します。複数の剛体キネマティックジョイントを弾性体パートに追加しても、過剰制約にはなりません。また、ジョイント摩擦をモデル化する際に、摩擦を考慮してジョイントを剛体にする必要があるため、これは良い選択肢です。
- モーション接触を使用します。形状で可能である場合は、ジョイントの代わりにモーション接触を使用できます。接触は制約方程式を使用しないため、重複を導入することはできません。
-
バーチャルジョイントを使用します。バーチャルジョイントは、理想的なキネマティックジョイントと同じ制約動作をしますが、例外として、そのソリューション上、重複を導入することはできません。バーチャルジョイントは、一般的なモーション方程式を解く別の数値アプローチを採用しています。
最後に:
重複制約は、通常、荷重またはモーメントを求める際にのみ懸念されます。すべての過剰制約モデルが不正確な結果をもたらすわけではありません。それは、結果が求められる場面とそのタイプによって異なります。たとえば、シフトにはある種の重複があるため適切な垂直反作用は生成されないとしても、角速度は正しく生成されます。フォースエクスプローラは、さまざまなジョイントに特定の荷重反作用力が存在することを素早く検証できる優れたツールです。