MV-9003:LuGre摩擦のチュートリアル
本チュートリアルでは、新規MotionSolveオブジェクトの実装および使用法を学習します。
- LuGre摩擦モデルを使用し、また、クラスを用いたオブジェクト指向設計を使用して、並進ジョイントに摩擦力を作成します。
クラスとは、より高レベルのエンティティを作成し、それを他のMotionSolveオブジェクトと同じように扱うことができる青写真、またはテンプレートのことです。
この例では、一連のMotionSolveエンティティをLuGreというクラスに結合し、新しい挙動を示す新規モデリング要素を定義します。この処理は集約と呼ばれ、MotionSolveはそのようなオブジェクトを表現するための特別なCompositeクラスを提供します。
Composite(複合)は、パート、マーカー、フォース、微分方程式、その他のMotionSolveプリミティブなどのエンティティを集約することを可能にする特別なクラスです。Compositeクラスオブジェクトは他のソルバーオブジェクトと同じように動作しますが、扱いやすいようにまとめてパッケージ化されたエンティティの集合という点が異なります。これらのオブジェクトはアトミックエンティティとして動作するため、複数回インスタンス化できます。
複合クラスを使う利点は、LuGreオブジェクトが基底クラスから動作を継承することです。特に、パートやマーカーなどの他のMotionSolveプリミティブオブジェクトに対して modify コマンドを発行するのと同じように、実行時にLuGreオブジェクトを修正することができます。次の例では、独自の複合クラスを作成する方法を示します。はじめに、LuGre摩擦モデルを検証します。
LuGre摩擦モデル
- = 静摩擦から動摩擦への遷移速度
- = 静摩擦係数
- = 動摩擦係数
- = ブリスル剛性
- = ブリスル減衰
- = 粘性係数
- ジョイント内の速度 v =
- ストライベック係数
- 垂直抗力
- クーロン摩擦
- 静摩擦
- ブリスルたわみzを定義する常微分方程式
- 摩擦力
- ブリスルたわみを定義するDIFF
- 摩擦力の作用点を定義するMARKER
- 摩擦力を定義するFORCE
- ブロック上の摩擦力を取り込むREQUEST
msolveモジュールの読み込み
モデルの作成
これでLuGreクラスを完全に定義し、SforceとDiffの2つのメソッド を実装したので、テストに適したモデルを作成する必要があります。
滑りブロック上の2つのボディ間に定義された単純な摩擦要素を使用することができます。滑りブロックは並進ジョイントによって拘束され、強制機能が作用します。
静的摩擦係数μsを変更することで、計算された摩擦力に与える影響をシミュレーション間で修正して検討することができます。
モデルは、以下のコードセル内の_slidingblockという関数の中に作成されます。これは純粋に便宜上行われます。