メインコンテンツ

Spatial Contact Force

R2026b

2 つのジオメトリ間の空間接触をモデル化する

  • Spatial Contact Force block

ライブラリ:
Simscape / Multibody / Forces and Torques

説明

Spatial Contact Force ブロックは、3 次元空間における 1 対のジオメトリ間の接触をモデル化します。組み込みのペナルティ法を使用するか、カスタムの法線と摩擦力の法則を提供して、接触をモデル化できます。

サポートされるジオメトリ

Spatial Contact Force ブロックは、さまざまなジオメトリ ペア間の接触をモデル化できます。Body Elements サブライブラリの固体ブロックからエクスポートされたジオメトリ、または Curves and Surfaces サブライブラリの点および表面ブロックのジオメトリを使用できます。

一部の固体は凹形状である場合がありますが、エクスポートされたすべてのジオメトリは、対応する固体の凸包表現です。次の図は、L 型固体の実際のジオメトリと凸包表現を示しています。

True geometry and convex hull representation of an L-shape solid.

慣性特性を計算する際、固体ブロックは実際のジオメトリを使用することに注意してください。

Spatial Contact Force ブロックは、特定のジオメトリ ペア間の接触はモデル化しません。次の表は、サポートされているペアの一覧です。

 固体の凸包円盤グリッド表面無限平面点点群
固体の凸包はいはいいいえはいはいはい
円盤はいいいえいいえはいいいえいいえ
グリッド表面いいえいいえいいえいいえはいはい
無限平面はいはいいいえいいえはいはい
点はいいいえはいはいいいえいいえ
点群はいいいえはいはいいいえいいえ

接触力

次のイメージは、Spatial Contact Force ブロックが 2 つの 3 次元ジオメトリ間の空間接触問題をモデル化する仕組みを示しています。この例では、青色の base ジオメトリと赤色の follower ジオメトリの間で接触があり、接触点は 1 つです。

接触の間、各ジオメトリが接触フレームをもちます。接触フレームは常に同位置にあり、接触点に位置します。接触フレームの xy 平面は、接触平面を定義します。接触フレームの z 方向は、base ジオメトリにとっては外向きの法線ベクトルですが、follower ジオメトリにとっては内向きの法線ベクトルです。連続的な接触の間、接触点の移動に伴い、接触フレームはジオメトリ上を移動します。

このブロックは、ニュートンの第三法則に従って、接触フレームの原点でジオメトリに次の接触力を適用します。

  1. 垂直抗力 fn。これは、接触フレームの z 軸と揃います。この力は、侵入を減らすためにジオメトリを引き離します。

  2. 摩擦力 ff。これは接触平面にあります。この力はジオメトリ間の相対接線速度に抵抗します。

垂直接触力を指定するには、[垂直抗力] セクションで、[メソッド] パラメーターを [滑らかなバネ-ダンパー] または [入力により指定] に設定します。[滑らかなバネ-ダンパー] を選択した場合、垂直抗力は次のようになります。

fn=s(d,w)⋅(k⋅d+b⋅d'),

ここで、

  • fn は、接触している各ジオメトリに、大きさは同じで方向は反対という方法で適用される垂直抗力です。

  • d は、接触している 2 つのジオメトリ間の侵入深度です。

  • w は、ブロックで指定されている遷移領域幅です。

  • d' は、侵入深度の 1 階時間微分です。

  • k は、ブロックで指定されている垂直抗力の剛性です。

  • b は、ブロックで指定されている垂直抗力の減衰です。

  • s(d,w) は平滑化関数です。

力の法則は、侵入の開始時付近では平滑化されます。d < w のとき、平滑化関数は区間 [0, w] にわたって連続的かつ単調に増加します。この関数は、d = 0 のときは 0 で、d = w のときは 1 です。また、区間の端点で d に関して 0 の微分値をとります。

[遷移領域の幅] パラメーターの値が小さいときに接触をより適切に検出するために、Spatial Contact Force ブロックはオプションのゼロクロッシング検出をサポートしています。ゼロクロッシング イベントは、分離距離が正またはゼロから負に変化するとき、またはその逆に変化するときにのみ発生します。

メモ

Spatial Contact Force ブロックのゼロクロッシング検出は、From File や Integrator など、他の Simulink® ブロックのゼロクロッシング検出とは異なります。Spatial Contact Force の力の方程式は連続であるためです。Simulink ブロックでのゼロクロッシング検出の詳細については、ゼロクロッシング検出を参照してください。

摩擦力を指定するには、[摩擦力] セクションで、[メソッド] パラメーターを [滑らかなスティックスリップ]、[入力により指定]、または [なし] に設定します。[滑らかなスティックスリップ] を選択した場合、摩擦力は常に接触点における相対速度の方向と正反対になり、相対速度の大きさに応じて変化する摩擦係数を介して垂直抗力に関連付けられます。

|ff|=μ⋅|fn|,

ここで、

  • ff は摩擦力です。

  • fn は垂直抗力です。

  • μ は有効摩擦係数です。

有効摩擦係数は、[静的摩擦係数]、[動的摩擦係数]、および [臨界速度] パラメーターの値と、相対接線速度の大きさの関数です。相対速度が高い場合、有効摩擦係数の値は動摩擦係数の値に近くなります。臨界速度において、有効摩擦係数は最大値に達します。これは静摩擦係数と等しい値です。このグラフは、μstatic > μdynamic である典型的ケースでの基本的な関係を示しています。この例では、モデルは、接線速度が非常に小さいときに、より高い有効摩擦係数を使用することで、静止摩擦を近似できます。

plot of effective coefficient of friction

例

端子

ジオメトリ

すべて展開する

base ジオメトリに関連付けられたジオメトリ端子。

follower ジオメトリに関連付けられたジオメトリ端子。

入力

すべて展開する

base ジオメトリと follower ジオメトリ間の垂直接触力の大きさを受け入れる物理量信号入力端子。このブロックは、負の値をゼロとして扱います。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、入力信号は垂直接触力を指定するスカラーである必要があります。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[垂直抗力] セクションで、[メソッド] を [入力により指定] に設定します。

base ジオメトリと follower ジオメトリ間の摩擦力を受け入れる物理量信号入力端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、入力信号は、接触フレームで分解される、適用された摩擦力の x 成分と y 成分を指定する 2 行 1 列の配列である必要があります。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[摩擦力] セクションで、[メソッド] を [入力により指定] に設定します。

出力

すべて展開する

base ジオメトリと follower ジオメトリの接触状態を出力する物理量信号出力端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力はジオメトリが接触しているかどうかを示すスカラーです。出力が 1 の場合はジオメトリが接触しており、出力が 0 の場合は離れています。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[計測] セクションで、[接触信号] を選択します。

base ジオメトリと follower ジオメトリ間の侵入深度を出力する物理量信号出力端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力はジオメトリが互いに侵入しているかどうかを示すスカラーです。互いに侵入している場合、出力は正であり、侵入深度と等しくなります。そうでない場合、出力は 0 です。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[計測] セクションで、[侵入深度] を選択します。

base ジオメトリと follower ジオメトリ間の分離距離を出力する物理量信号出力端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力はスカラーです。ジオメトリが互いに侵入していない場合、出力は非負で、2 つのジオメトリ間の最小距離と等しくなります。そうでない場合、出力は負で、絶対値は侵入深度と等しくなります。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[計測] セクションで、[分離距離] を選択します。

base ジオメトリと follower ジオメトリの接触点間の相対垂直速度を出力する物理量信号出力端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は、2 つのジオメトリの接触点間の相対速度の z 成分と等しいスカラーです。出力は接触フレームで分解されます。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[計測] セクションで、[相対垂直速度] を選択します。

base ジオメトリと follower ジオメトリの接触点間の相対接線速度を出力する物理量信号出力端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は、2 つのジオメトリの接触点間の相対速度の x 成分および y 成分と等しい 2 行 1 列の配列です。出力は接触フレームで分解されます。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[計測] セクションで、[相対接線速度] を選択します。

力/トルク

base ジオメトリと follower ジオメトリ間の垂直抗力のための物理量信号出力端子。このブロックは、指定された分解フレームの座標で測定値を分解します。また、[方向] パラメーターの設定は、測定値の符号に影響します。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は垂直抗力を示す 3 次元ベクトルを表します。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[力/トルク] セクションで、[垂直抗力] を選択します。

垂直抗力の大きさのための物理量信号出力端子。[方向] および [分解フレーム] パラメーターは測定値に影響しません。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は垂直抗力の大きさです。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[力/トルク] セクションで、[垂直抗力の大きさ] を選択します。

垂直抗力によって生じるトルクのための物理量信号出力端子。測定値は、垂直抗力と、指定された分解フレームを基準とする接触点の位置ベクトルのクロス積です。[方向] パラメーターは測定値の符号に影響します。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は垂直抗力によるトルクを示す 3 次元ベクトルを表します。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[力/トルク] セクションで、[垂直トルク] を選択します。

base ジオメトリと follower ジオメトリ間の摩擦力のための物理量信号出力端子。このブロックは、指定された分解フレームの座標で測定値を分解します。また、[方向] パラメーターの設定は、測定値の符号に影響します。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は摩擦力を示す 3 次元ベクトルを表します。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[力/トルク] セクションで、[摩擦力] を選択します。

base ジオメトリと follower ジオメトリ間の摩擦力の大きさのための物理量信号出力端子。[方向] および [分解フレーム] パラメーターは測定値に影響しません。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は摩擦力の大きさです。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[力/トルク] セクションで、[摩擦力の大きさ] を選択します。

摩擦力によって生じるトルクのための物理量信号出力端子。測定値は、摩擦力と、指定された分解フレームを基準とする接触点の位置ベクトルのクロス積です。[方向] パラメーターは測定値の符号に影響します。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は摩擦力によるトルクを示す 3 次元ベクトルを表します。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[力/トルク] セクションで、[摩擦トルク] を選択します。

base ジオメトリと follower ジオメトリ間の合計接触力のための物理量信号出力端子。合計接触力には、垂直抗力と摩擦力が含まれます。このブロックは、指定された分解フレームの座標で測定値を分解します。[方向] パラメーターの設定は、測定値の符号に影響します。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は合計接触力を示す 3 次元ベクトルを表します。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[力/トルク] セクションで、[合計力] を選択します。

接触力によって生じる合計接触トルクのための物理量信号出力端子。測定値は、接触力と、指定された分解フレームを基準とする接触点の位置ベクトルのクロス積です。[方向] パラメーターは測定値の符号に影響します。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は合計接触力によるトルクを示す 3 次元ベクトルを表します。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[力/トルク] セクションで、[合計トルク] を選択します。

接触フレーム

base ジオメトリの基準フレームに対する接触フレームの回転行列を出力する物理量信号端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は、接触フレームのベクトルを base ジオメトリの基準フレームのベクトルにマッピングする 3 行 3 列の回転行列です。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[計測]、[接触フレーム] セクションで、[base の回転] を選択します。

base ジオメトリの基準フレームに対する接触点の位置を出力する物理量信号端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は、base ジオメトリの基準フレームに対する接触点の座標を含む 3 行 1 列の配列です。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[計測]、[接触フレーム] セクションで、[base の並進] を選択します。

follower ジオメトリの基準フレームに対する接触フレームの回転行列を出力する物理量信号端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は、接触フレームのベクトルを follower ジオメトリの基準フレームのベクトルにマッピングする 3 行 3 列の回転行列です。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[計測]、[接触フレーム] セクションで、[follower の回転] を選択します。

follower ジオメトリの基準フレームに対する接触点の位置を出力する物理量信号端子。

それぞれに単一のジオメトリ要素が含まれるジオメトリ間の接触をモデル化する場合、出力は、follower ジオメトリの基準フレームに対する接触点の座標を含む 3 行 1 列の配列です。

複数の要素が含まれるジオメトリ間の接触をモデル化する場合、この信号の次元は変化します。詳細については、信号の次元節を参照してください。

依存関係

この端子を有効にするには、[計測]、[接触フレーム] セクションで、[follower の並進] を選択します。

パラメーター

すべて展開する

垂直抗力

垂直接触力を指定する方法。[滑らかなバネ-ダンパー] または [入力により指定] のいずれかとして指定します。

変更されたバネ-ダンパー手法を使用して垂直接触力をモデル化するには [滑らかなバネ-ダンパー] を選択し、垂直接触力としてカスタムの力を入力するには [入力により指定] を選択します。

ジオメトリの侵入に対する接触バネの抵抗。スカラーとして指定します。接触中、バネ剛性は一定です。バネ剛性の値が大きいほど、ジオメトリ間の接触が硬くなります。

依存関係

このパラメーターを有効にするには、[垂直抗力] セクションで、[メソッド] を [滑らかなバネ-ダンパー] に設定します。

ジオメトリが侵入している間の動きに対する接触ダンパーの抵抗。スカラーとして指定します。減衰係数は、衝突しているジオメトリによって失われるエネルギーを表す定数値です。減衰係数の値が大きいほど、ジオメトリ同士が衝突したときに失われるエネルギーが大きくなり、接触の振動がより速く減衰します。エネルギーが保存される、完全弾性衝突をモデル化するには、値 0 を使用します。

依存関係

このパラメーターを有効にするには、[垂直抗力] セクションで、[メソッド] を [滑らかなバネ-ダンパー] に設定します。

バネ-ダンパー力が最大値まで増加する領域。スカラーとして指定します。領域が小さいほど、接触の発生が急激になり、ソルバーの必要なタイム ステップが小さくなります。遷移領域を小さくするとモデルの精度が向上する一方、遷移領域を大きくするとシミュレーション速度が向上します。

依存関係

このパラメーターを有効にするには、[垂直抗力] セクションで、[メソッド] を [滑らかなバネ-ダンパー] に設定します。

摩擦力

摩擦力を指定する方法。[滑らかなスティックスリップ]、[なし]、または [入力により指定] として指定します。

摩擦を除外するには [なし]、変更されたスティックスリップ手法を使用して摩擦力を計算するには [滑らかなスティックスリップ]、カスタムの摩擦力を入力するには [入力により指定] を選択します。

接線速度がゼロに近いときの、摩擦力の大きさと垂直抗力の大きさの比。正のスカラーとして指定します。

この値は、接触しているジオメトリの材料特性によって決まります。このパラメーターの値は多くの場合 1 未満ですが、高摩擦材料の場合は 1 より大きい値になる可能性もあります。ほとんどの場合、この値は動摩擦係数よりも大きくなるはずです。

依存関係

このパラメーターを有効にするには、[摩擦力] セクションで、[メソッド] を [滑らかなスティックスリップ] に設定します。

接線速度が大きいときの、摩擦力の大きさと垂直抗力の大きさの比。非負のスカラーとして指定します。

この値は、接触しているジオメトリの材料特性によって決まります。このパラメーターの値は多くの場合 1 未満ですが、高摩擦材料の場合は 1 より大きい値になる可能性もあります。ほとんどの場合、この値は静摩擦係数よりも小さくなるはずです。

依存関係

このパラメーターを有効にするには、[摩擦力] セクションで、[メソッド] を [滑らかなスティックスリップ] に設定します。

静摩擦係数と動摩擦係数の間の切り替わりを決定する速度。スカラーとして指定します。

臨界速度が接線速度の大きさと等しい場合、有効摩擦係数は [静的摩擦係数] パラメーターの値と等しくなります。接線速度の大きさが指定した臨界速度を超えて上昇するにつれて、有効摩擦係数は [動的摩擦係数] パラメーターの値に漸近的に近づきます。

依存関係

このパラメーターを有効にするには、[摩擦力] セクションで、[メソッド] を [滑らかなスティックスリップ] に設定します。

計測

Force/Torque

測定の方向。以下のいずれかの値として指定します。

  • base から follower — ブロックは、base ジオメトリが follower ジオメトリに及ぼす力およびトルクを検出します。

  • follower から base — ブロックは、follower ジオメトリが base ジオメトリに及ぼす力およびトルクを検出します。

このパラメーターは、[力/トルク] セクションのベクトル出力にのみ影響します。この方向を反転すると、測定の符号が変わります。詳細については、力とトルクの測定の方向を参照してください。

測定値の分解に使用されるフレーム。以下のいずれかの値として指定します。

  • Contact — ブロックは接触フレームの座標で測定値を分解します。

  • Base — ブロックは base フレームの座標で測定値を分解します。

  • Follower — ブロックは follower フレームの座標で測定値を分解します。

このパラメーターは、[力/トルク] セクションのベクトル出力にのみ影響します。

ゼロクロッシング

各接触の開始と終了をゼロクロッシング イベントとして検知するには、オンにします。ゼロクロッシング イベントは、分離距離が正またはゼロから負に変化するとき、またはその逆に変化するときに発生します。

詳細

すべて展開する

拡張機能

すべて展開する

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2019b で導入

すべて展開する