MV-7007:ジョイントへの摩擦の追加

本チュートリアルでは、MotionSolveのジョイント摩擦モデルの詳細、MotionView/MotionSolveでのジョイント摩擦のモデル化方法、摩擦結果の確認方法について学習します。

摩擦とは、運動に対抗する抵抗力と定義されます。摩擦は、接触している2つのサーフェスの間の物理的な接触面に現れます。摩擦力は、主に接触面での接着、サーフェスの粗さ、および掘り起こしにより発生します。
  • 接触面がより滑らかになり、より近づけられると、分子接着力が運動に対する抵抗を形成します。
  • 接触面の粗さが大きいと摺動時に摩耗が発生し、表面の粗さが運動に抵抗します。
  • 一方の接触面が比較的軟らかい場合は、掘り起こしの効果によりほとんどの抵抗が発生します。
発生する摩擦力は下記に依存します:
  • サーフェスの接触形状とトポロジー
  • バルク材と表面材の特性
  • 変位と相対速度
  • 潤滑

摩擦は非線形性が高く、静摩擦状態、過渡状態、滑り(または)動摩擦状態のようなシステム状態に依存しています。

図 1. 摩擦関数の3つの特性
摩擦力は、その状態(上の図に示す)に応じて変化します。(a)はクーロン摩擦、(b)は静摩擦+クーロン摩擦、(c)はストライベック効果とも呼ばれる潤滑により静摩擦レベルから連続的に摩擦力が減少する場合があることを示しています。
摩擦の動力学
摩擦と速度の関係または摩擦の減衰特性は、振動を減衰させるのに役立ちます。また、動解析では、プリスライドや潤滑剤の流体力学的効果などの摩擦挙動が見られます。駆動系や高精度サーボ機構の設計では、上記の効果による抵抗力を考慮する必要があります。そのため、システムのダイナミクスを捉えるためには、摩擦を正確にモデル化することが重要です。
ジョイントの摩擦
ジョイント内の摩擦は、その形状に依存しています。MotionSolveは、形状、初期荷重、トルク、潤滑に基づいて、さまざまなジョイントの摩擦を解析モデルで表現します。
LuGre摩擦モデルを用いたジョイントの摩擦の特性評価
MotionSolveは、LuGreモデルを用いて摩擦を表現します。LuGreモデルは、制御アプリケーション用に開発されたブリスルモデルです。LuGreモデルはCanudas de Wit、Olsson、Åstro¨m、Lischinskyによって発表されました。ルンド工科大学(スウェーデン)とフランスのグルノーブル研究所(Laboratoire d'Automatique de Grenoble)の研究者の共同研究から生まれたLuGreモデルは、滑り摩擦の速度・加速度依存性からヒステリシス効果、プリスリップ変位、潤滑まで、実験で観察されたさまざまな挙動を捉えます。
図 2. 摩擦を表すブリッスルモデル

LuGreモデルは、ジョイントの形状、初期荷重、モーメントアーム、力、トルクを考慮した摩擦をモデル化することができます。摩擦は、回転、球、並進ジョイント、円筒およびユニバーサルジョイントのサブセットでサポートされています。各制約の摩擦についての詳細な説明は、MotionSolveオンラインヘルプをご参照ください。

本チュートリアルでは、“テーブルの上を滑るブロック”の実験モデルを用いて、スティックスリップ状態での摩擦力と摩擦力の周波数依存性を実証します。

mbd_modeling\motionsolveフォルダーにあるSlidingTable.mdlファイルを、自身の作業ディレクトリ<working directory>にコピーします。


図 3.

リーダーとフォロワーモデルは、2つの剛体すなわちLeaderとFollowerを構成しており、それらはそれぞれ並進ジョイントによってGroundボディに接続され、線形ばねで内部接続されています。以下のステップでは、摩擦を追加し、運動を付与して、並進ジョイントの摩擦挙動を検証します。

ジョイントの摩擦の追加

  1. ProjectブラウザからJointsフォルダーに進み、Follower Translation Jointを選択します。
  2. JointsパネルからFriction Propertiesタブに進みます。
  3. Friction Propertiesタブから、Use Frictionオプションにチェックマークを入れ、ジョイントの摩擦をアクティブにします。
    図 4.
    注: MotionViewはパネルにN、mm、秒の単位で適切なデフォルトのプロパティを表示します。Stiction Transition Velocity、Force Preload、形状のプロパティ(Initial Overlap、Reaction Arm)といったプロパティを単位に応じてスケーリングする必要があります。
  4. デフォルトの設定を次のように変更します:Dynamic friction coefficientを0.1に、Static friction coefficientを0.15に、Stiction Transition Velocityを1.0に。Bending MomentとTorsion Momentのオプションからチェックマークを外し、形状のズレによるジョイント反力を除外します。Initial Overlapの値を10mmに修正し、残りの値はデフォルトの設定のままとします。
    図 5.
  5. LuGre Parametersタブを選択し、Bristleのプロパティを修正します。Damping Coefficient値を0.0316に変更します。
    図 6.
    注: ブリスルのデフォルトのプロパティは、N、mm、秒の単位で適切です。
  6. LuGreパラメータはすべて、デフォルト値のままとします。

摩擦力に出力リクエストを追加

このステップでは、Follower並進ジョイントの摩擦力を測定するための出力を作成します。

  1. General MDL EntityツールバーでOutputアイコンを右クリックします。
    Add Outputダイアログが表示されます。
  2. LabelをFriction_Forceに変更します。
  3. Variableをo_frictionに変更します。
    図 7.
  4. OKをクリックし、出力リクエストを追加します。
  5. Propertiesタブから出力タイプにExpressionsを選択します。
    図 8.
  6. F2Expression欄内をクリックします。
  7. ボタンをクリックします。
    Expression Builderダイアログが表示されます。
  8. Expression BuilderでFRICTION関数式に以下のように入力します:`FRICTION({j_contact.id},1)`.
    Follower Translation Joint ID
    = {j_contact.id},
    Fx component
    = 1
    図 9.
  9. OKをクリックします。
  10. F3、F4、F6、F7、F8について、手順を繰り返します。2番目のパラメータはそれぞれ2、3、4、5、6に変更します。
    関数FRICTION(ID, comp)は、ジョイントIDに対応するcompで指定された摩擦力成分を計算します。
    ID ジョイントのID
    comp 力成分。現在は、1~18の範囲がサポートされています。
      1 = ジョイントのJマーカーのx軸に沿った摩擦力FX。
      2 = ジョイントのJマーカーのy軸に沿った摩擦力FY。
      3 = ジョイントのJマーカーのz軸に沿った摩擦力FZ。
      4 = ジョイントのJマーカーのx軸周りの摩擦トルクTX。
      5 = ジョイントのJマーカーのy軸周りの摩擦トルクTY。
      6 = ジョイントのJマーカーのz軸周りの摩擦トルクTZ。
    図 10.

滑り速度に出力リクエストを追加

摩擦力は、接触している物体間の相対速度に関して特徴づけられます。したがって、出力リクエストを作成し、Followerボディの速度を測定します。

  1. General MDL EntityツールバーのOutputsアイコン を右クリックします。
    Add Outputダイアログが表示されます。
  2. LabelにFollower_Velocityと入力します。
  3. Variableにo_velocityと入力します。
  4. OKをクリックし、出力リクエストを追加します。
  5. Propertiesタブから出力タイプにVelocityを選択します。
    図 11.
  6. Velocityの下のドロップダウンメニューでEntityを選択します。
    図 12.
  7. エンティティタイプがとなるよう選択します。
  8. はGlobal Frameのままとします。
    図 13.

Leader Translation Jointに定速運動を追加

本ステップでは、Leaderボディに一定速度を追加します。線形ばねで結合されたFollowerボディは、摩擦力によりスティックスリップ運動を呈します。

  1. ConstraintツールバーのMotionアイコンを右クリックします。
    Add Motion or MotionPairダイアログが表示されます。
  2. LabelにStick Slipと入力します。
  3. Variableにmot_leaderと入力します。
  4. OKをクリックし、運動を追加します。
  5. Connectivityタブで:
    1. Define motionのドロップダウンメニューからOn Jointを選択します。
    2. Leader Translation Jointを選択します。
    3. PropertyのドロップダウンメニューからVelocityを選択します。
      図 14.
  6. Propertiesタブで:
    1. Define byのドロップダウンメニューからLinearを選択します。
    2. Valueに100と入力します。
      図 15.

モデルの解析

  1. アイコンをクリックし、モデルをチェックします。
  2. Runアイコンをクリックし、Runパネルに切り替えます。
  3. Mainタブの下でアイコンをクリックし、MotionSolve .xmlファイルの名称と場所を指定します。ファイルを作業ディレクトリにStick_Slip.xmlとして保存します。
    図 16.
  4. ファイルを保存すると、右側のRunボタンがアクティブになります。
  5. End timeを25 secに指定し、Print intervalの値を0.001に変更します。残りの値はデフォルト設定のままとします。
  6. Runボタンをクリックし、シミュレーションを実行します

アニメーションとプロットの確認

実行が完了したら、パネルの右側にある別のボタン群がアクティブになります。

  1. Animateボタンをクリックし、アニメーションを表示します。
    これでHyperViewが起動され、Stick_Slip.h3dアニメーションファイルを読み込みます。
  2. 続いて、プロットを確認するために、Plotボタンをクリックします。
    これでHyperGraphが起動され、Stick_Slip.abf結果ファイルを読み込みます。
  3. HyperGraphウィンドウ上をクリックし、アクティブウィンドウとします。
  4. Followerの速度vs.時間をプロットします。
    1. TimeにX-axis Data Typeを選択します。
    2. 下記のY軸データを選択します:
      Y Type Marker Velocity
      Y Request Follower_Velocity - (Follower上)
      Y Component VX
    3. Scale速度値をmm/secからm/secに変更します。
      • Adv. Options ボタンをクリックします。
      • Advanced Plot OptionsダイアログのCategoryの下でCurve Optionを選択します。
      • Preferenceの下で、Y Scalefactor値を0.00100に変更します。
      • OKをクリックします。
  5. 摩擦力vs.時間をプロットします。
    1. TimeにX-axis Data Typeを選択します。
    2. 下記のY軸データを選択します:
    オプション 説明
    Y Type Expression
    Y Request Friction_Force
    Y Component F4
    図 17. アニメーションウィンドウとプロットウィンドウ
  6. アニメーションを開始するには、ツールバーのStart/Pause Animation アイコンをクリックします。
  7. Stick_Slip運動は、アニメーションとプロットで明らかに認められます。
    図 18. 時間スケール上での速度と摩擦力

    等速で移動するLeaderボディは、ばねを伸長させ、ばねの力を直線的に増加させます。摩擦力はばねの力に対抗し、付与された力が離脱力に達するとFollowerボディの変位が小さくなります。

    離脱力 = mu static x Normal Load
      = 0.15x1x9.81
      = 1.47 Newton.

Follower並進ジョイントに時間変化速度を追加

このステップでは、Follower並進ジョイントに“時間変化速度”を追加します。1 rad/sec、10rad/sec、25rad/secの異なる周波数で1.1mm/secから3mm/secの間で速度を変化させ、摩擦のヒステリシスを観察しています。

  1. ConstraintツールバーのMotionsアイコン を右クリックします。
    Add Motion or MotionPairダイアログが表示されます。
  2. LabelにHysteresisと入力します。
  3. Variableにmot_freq_varyingと入力します。
    図 19.
  4. OKをクリックし、運動を追加します。
  5. Connectivityタブで:
    1. Define motionのドロップダウンメニューからOn Jointを選択します。
    2. Follower Translation Jointを選択します。
    3. PropertyのドロップダウンメニューからVelocityを選択します。
      図 20.
  6. Propertiesタブで:
    1. Define byのドロップダウンメニューからExpressionを選択します。
    2. ボタンをクリックします。
      Expression Builderが表示されます。
    3. Expression Builderで以下式を入力します:`1.1+1.9*ABS(sin(PI*(time)))`
      図 21.

      この式は、1 rad/secの周波数で1.1mm/secから3mm/secまで速度を変化させます。

      図 22. 速度の変化
      注: 10に`time`を乗算すると、25はそれぞれ10rad/secと25 rad/secの周波数で速度を変化させることができます。
      図 23.
  7. 前のステップで作成したLeader並進ジョイントの運動を無効にします。

異なる周波数で速度が変化するモデルのシミュレーション

  1. アイコンをクリックし、モデルをチェックします。
  2. Runアイコンをクリックし、Runパネルに切り替えます。
  3. Mainタブの下でアイコンをクリックし、MotionSolve .xmlファイルの名称と場所を指定します。ファイルを作業ディレクトリにHysteresis_1radpersec.xmlとして保存します。
  4. End timeを3秒、Print interval値を0.0001秒に指定します。
    図 24.
  5. Runボタンをクリックし、シミュレーションを実行します
  6. Follower並進ジョイントの速度式を修正し、下の表に指定したファイル名と終了時刻でモデルを実行します:
    Frequency Expression File name End Time (sec)
    10 rad/sec
    `1.1+1.9*ABS(sin(PI*(10*time)))`
    Hysteresis_10radpersec.xml 0.3
    25 rad/sec
    `1.1+1.9*ABS(sin(PI*(25*time)))`
    Hysteresis_10radpersec.xml 0.12

ヒステリシスカーブのプロット

  1. ウィンドウをクリックしてHyperGraphを選択します。
  2. 1 rad/secの周波数の結果を読み込みます。
    1. Open Data Fileアイコン をクリックします。
    2. 作業ディレクトリをブラウズし、Hysteresis_1radpersec.abfファイルを選択します。
      図 25.
  3. Followerの速度vs.時間をプロットします。
    1. TimeにX-axis Data Typeを選択します。
    2. 下記のY軸データを選択します:
      Y Type Marker Velocity
      Y Request Follower_Velocity- (on Follower
      Y Component VX
  4. Friction force とTimeをプロットします。
    1. TimeにX-axis Data Typeを選択します。
    2. 下記のY軸データを選択します:
      Y Type Expression
      Y Request Friction_Force
      Y Component F4
      図 26. Followerの速度と摩擦力
  5. 摩擦ヒステリシスカーブ(摩擦力対速度)のプロッティング。
    摩擦力の値には初期遷移があるため、1サイクル目のデータを除いたヒステリシスカーブをプロットします(つまり、0~1秒)。
    1. PloブラウザでFollower VelocityおよびFriction Forceカーブを選択し、右クリックしてコンテキストメニューからTurn Offを選択します。
    2. CurvesツールバーのDefine Curves アイコンをクリックします。
    3. Addボタンをクリックし、新しいカーブを追加します。
      図 27.
    4. Curve3の名称を1rad/secに変更します。
      図 28.
    5. XおよびYデータにSourceタイプにMathを選択します。
      図 29.
    6. サブレンジ関数を使用して、時間間隔1~3秒間の速度を選択するためにXデータを入力します: p1w2c1.y[subrange(p1w2c1.x,1,3)]
      図 30.
    7. サブレンジ関数を使用して、時間間隔1~3秒間の摩擦力を選択するためにYデータを入力します: p1w2c2.y[subrange(p1w2c1.x,1,3)]
      図 31.
    8. Apply ボタンをクリックします。
      図 32.
  6. 同様に、上記の手順3 -5に従って、周波数10rad/sec(Hysteresis_10radpersec.abf)および25 rad/sec(Hysteresis_10radpersec.abf)のヒステリシスカーブをプロットします。
    図 33. 異なる周波数におけるヒステリシスカーブ

    より高い周波数で速度が変化すると、ヒステリシスループが大きくなります。