Friction

Model ElementFriction要素は、モデル内の特定のジョイントのジョイント摩擦を指定するために使用します。摩擦は、回転、球、並進、円筒、およびユニバーサルのタイプのジョイントでのみサポートされます。MotionSolveは、摩擦にLuGre(Lundt-Grenoble)モデルを使用します。

クラス名

Friction

説明

LuGreモデルは、いくつかの異なる効果を表すことができます:
  • 動摩擦
  • 静摩擦(スティクション)
  • あわせ面が潤滑剤によって押し分けられる効果
  • ストライベック効果(非常に低速の場合)。部分的に流体の潤滑剤が存在する場合、あわせ面間の接触が減少し、これによりスティクションの状態から摩擦が指数関数的に減少します。
  • 速度依存の摩擦現象(変化する最大静止摩擦力や摩擦遅延など)
  • モデルについては、MotionSolveリファレンスマニュアルに詳しく記載されています。

属性の概要

Inputs   = "PRELOAD NONE ALL  REACTION_FORCE BENDING_MOMENT TORSIONAL_MOMENT"

Effect   = "ALL STICTION SLIDING"

Overlaps = "INCREASE DECREASE CONSTANT"
名前 プロパティ コマンドで変更可能か 設計可能か
id Int ()    
label Str ()  
joint Reference (Joint)    
mu_static Double (0.3) FDのみ
mu_dynamic Double (0.2) FDのみ
inactive Enum ("NONE STATIC", default="NONE")    
stiction_transition_velocity Double (0.1) FDのみ
max_stiction_deformation Double (0.01) FDのみ
effect Enum (Effect, default="ALL")  
input_forces EnumStr (Inputs, count=0, default="ALL")  
# 並進      
friction_force_preload Double (0.0) FDのみ
reaction_arm Double (1.0) FDのみ
initial_overlap Double (1000.0) FDのみ
overlap_delta Enum (Overlaps, default="CONSTANT")  
# 回転      
friction_torque_preload Double (0.0) FDのみ
friction_arm Double (1.0) FDのみ
pin_radius Double (1.0) FDのみ
bending_reaction_arm Double (1.0) FDのみ
# ユニバーサル      
yoke Enum ("I J")  
       
# 球      
ball_radius Double (1.0) FDのみ
# 効果:      
bristle_stiffness Double (100.0) FDのみ
damping_effects Double (0.316) FDのみ
viscous_effects Double (0.0004) FDのみ

使用法

Friction (joint=objJoint, optional_arguments)

属性

すべてのジョイントに共通の属性
id
整数
摩擦オブジェクトの要素識別番号を指定します。この番号は、モデル内のすべてのFrictionオブジェクトの中で一意にする必要があります。
この属性は省略可能です。MotionSolveは、IDが指定されていない場合、自動的にこれを作成します。
値の範囲:id > 0
label
文字列
Frictionオブジェクトの名前を指定します。
この属性は省略可能です。指定しない場合は、MotionSolveが代わりにラベルを作成します。
joint
モデル内の既存のジョイントへの参照。
これは、摩擦が作用するジョイントを指定します。
joint属性は必須です。
mu_static
倍精度
ジョイントの静摩擦係数 μ s を指定します。mu_staticは、2つのあわせ面のプロパティです。表面仕上げ、表面組織、潤滑などの要素に依存します。
属性mu_staticは省略可能です。指定しない場合は、mu_static=0.3になります。
指定する場合は、以下のとおりです:
  • mu_static > 0
  • mu_staticmu_dynamic
mu_dynamic
倍精度
ジョイントの動摩擦係数 μ d を指定します。これは、2つのあわせ面が相互にスライドしている場合の摩擦係数です。
属性mu_dynamicは省略可能です。指定しない場合は、mu_dynamic=0.2になります。
指定する場合は、以下のとおりです:
  • mu_dynamic > 0
  • mu_dynamicmu_static
max_stiction_deformation
倍精度
ジョイントで静摩擦に対して生じる可能性のある最大変形を指定します。
ゼロ以外の値を指定した場合、相対速度がゼロであっても有限の静摩擦力が適用されます。
この属性は省略可能です。指定しない場合は、max_stiction_deformation=0.01長さ単位になります。
指定する場合は、max_stiction_deformation > 0です。
stiction_transition_velocity
倍精度
動摩擦から静摩擦に移行する、以下の絶対速度。
この属性は省略可能です。指定しない場合は、stiction_transition_velocity = 0.1長さ単位 / 時間になります。
指定する場合は、stiction_transition_velocity > 0です。
effect
文字列
このジョイントに対して考慮する摩擦効果を指定します。次の中からいずれかを選択します:
  • "ALL":静摩擦と動摩擦の両方を考慮します。
  • "STICTION":静摩擦のみをモデル化します。動摩擦は無視します。
  • "SLIDING":動摩擦のみをモデル化します。静摩擦は無視します。
属性effectは省略可能です。指定しない場合は、デフォルトで"ALL"になります。
inputs
文字列のリスト。
摩擦のモデル化で考慮する力 / トルクの入力を指定します。次の中からいずれかを選択します:
"ALL"
摩擦力に影響を与える可能性のあるすべての力とトルクの入力を考慮します。
"PRELOAD"
摩擦力の計算でジョイントのプリロードを考慮します。
"REACTION_FORCE"
摩擦力の計算でジョイントの反力を考慮します。
"BENDING_MOMENT"
摩擦力の計算でジョイント内の曲げモーメントを考慮します。
"TORSIONAL_MOMENT"
摩擦力の計算でジョイント内のねじりモーメントを考慮します。
"NONE"
どの入力も考慮しません。摩擦力はゼロになります。主に、モデルのデバッグで使用されます。
ジョイントタイプごとに使用可能なオプションを以下に定義します:
回転
Preload、Reaction_Force、Bending_Moment
ユニバーサル
Preload、Reaction_Force、Bending_Moment
フック
Preload、Reaction_Force、Bending_Moment
Preload、Reaction_Force
円筒
Preload、Reaction_Force、Bending_Moment
並進
Preload、Reaction_Force、Bending_Moment、Torsional_Moment
属性inputsは省略可能です。指定しない場合は、inputs = "ALL"になります。
inactive
文字列
静解析でジョイント摩擦を無効にするには、"STATIC"を指定します。
属性inactiveは省略可能です。指定しない場合は、inactive = "NONE"になります。
bristle_stiffness
倍精度
LuGreモデルのブリッスル剛性を指定します。この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
属性bristle_stiffnessは省略可能です。指定しない場合は、bristle_stiffness = 100力単位 / 長さ単位になります。
damping_effects
倍精度
事前に設定された変位(またはスティクション)状態の減衰係数を定義します。その主な役割は、事前に設定された変位状態でのブリッスル振動を弱めることです。
属性damping_effectsは省略可能です。指定しない場合は、damping_effects = 0.316力単位 / 速度単位になります。
viscous_effects
倍精度
相対滑りが実際に始まるときに発生する粘性減衰力の係数を指定します。
属性viscous_effectsは省略可能です。指定しない場合は、viscous_effects = 0.0004力単位 / 速度単位になります。
回転ジョイントに固有の属性
friction_torque_preload
倍精度
ジョイント内のプリロード摩擦トルクを指定します。
属性friction_torque_preloadは省略可能です。指定しない場合は、friction_torque_preload=0になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
friction_arm
倍精度
ジョイントの軸摩擦トルクの計算に使用するモーメントアームを指定します。
属性friction_armは省略可能です。指定しない場合は、friction_arm=1.0長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
pin_radius
倍精度
ピンの半径を指定します。
属性pin_radiusは省略可能です。指定しない場合は、pin_radius=1.0長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
bending_reaction_arm
倍精度
曲げモーメントを計算するためのモーメントアームを指定します。
属性bending_reaction_armは省略可能です。指定しない場合は、bending_reaction_arm=1.0長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
球ジョイントに固有の属性
friction_torque_preload
倍精度
ジョイント内のプリロード摩擦トルクを指定します。
属性friction_torque_preloadは省略可能です。指定しない場合は、friction_torque_preload=0になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
ball_radius
倍精度
球ジョイント内のボールの半径を指定します。
属性ball_radiusは省略可能です。指定しない場合は、ball_radius=1.0長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
並進ジョイントに固有の属性
friction_force_preload
倍精度
ジョイントのプリロード摩擦力を指定します。
属性friction_force_preloadは省略可能です。指定しない場合は、friction_force_preload=0になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
reaction_arm
倍精度
ジョイント軸方向についての反トルクを計算するためのモーメントアームを指定します。
属性reaction_armは省略可能です。指定しない場合は、reaction_arm=1.0長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
initial_overlap
倍精度
ジョイント内の滑りパートの初期オーバーラップを指定します。
属性initial_overlapは省略可能です。指定しない場合は、initial_overlap=1000長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
overlap_delta
文字列
滑りジョイントの摩擦特性を指定します。次の中からいずれかを選択します:
  • "INCREASE":IマーカーがJマーカーのZ軸の正方向に並進すると、オーバーラップが増加します。
  • "DECREASE":オーバーラップがJマーカーの正方向に減少します。
  • "CONSTANT":オーバーラップは、ジョイントのIマーカーとJマーカー間の相対変位とは無関係です。
属性overlap_deltaは省略可能です。指定しない場合は、overlap_delta = "CONSTANT"になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
円筒ジョイントに固有の属性
friction_force_preload
倍精度
ジョイントのプリロード摩擦力を指定します。
属性friction_force_preloadは省略可能です。指定しない場合は、friction_force_preload=0になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
friction_torque_preload
倍精度
ジョイント内のプリロード摩擦トルクを指定します。
属性friction_torque_preloadは省略可能です。指定しない場合は、friction_torque_preload = 0になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
pin_radius
倍精度
ピンの半径を指定します。
属性pin_radiusは省略可能です。指定しない場合は、pin_radius=1.0長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
initial_overlap
倍精度
ジョイント内の滑りパートの初期オーバーラップを指定します。
属性initial_overlapは省略可能です。指定しない場合は、initial_overlap=1000長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
overlap_delta
文字列
滑りジョイントの摩擦特性を指定します。次の中からいずれかを選択します:
  • "INCREASE":IマーカーがJマーカーのZ軸の正方向に並進すると、オーバーラップが増加します。
  • "DECREASE":オーバーラップがJマーカーの正方向に減少します。
  • "CONSTANT":オーバーラップは、ジョイントのIマーカーとJマーカー間の相対変位とは無関係です。
属性overlap_deltaは省略可能です。指定しない場合は、overlap_delta = "CONSTANT"になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
ユニバーサル / フックジョイントに固有の属性
friction_torque_preload
倍精度
ジョイント内のプリロード摩擦トルクを指定します。
属性friction_torque_preloadは省略可能です。指定しない場合は、friction_torque_preload=0になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
friction_arm
倍精度
ジョイントの軸摩擦トルクの計算に使用するモーメントアームを指定します。
属性friction_armは省略可能です。指定しない場合は、friction_arm=1.0長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
bending_reaction_arm
倍精度
曲げモーメントを計算するためのモーメントアームを指定します。
属性bending_reaction_armは省略可能です。指定しない場合は、bending_reaction_arm=1.0長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
pin_radius
倍精度
ピンの半径を指定します。
属性pin_radiusは省略可能です。指定しない場合は、pin_radius=1.0長さ単位になります。
この属性の詳細については、MotionSolveリファレンスマニュアルをご参照ください。
yoke
文字列
摩擦力が適用されるフックジョイントとユニバーサルジョイントのヨーク選択を指定します。次の中からいずれかを選択します。
  • "I":IマーカーのZ軸に関する摩擦力 / トルクを適用します。
  • "J":JマーカーのZ軸に関する摩擦力 / トルクを適用します。

  1. デフォルトプロパティの回転ジョイントrevjt上に摩擦要素を作成します。
    jfric = Friction (joint=revjt)
  2. 単振り子を作成して、摩擦を追加し、シミュレーションを実行して、摩擦トルクを表示します。

モデル

from msolve import *

def PendulumWithFriction():
  m = Model ()
  Units      (mass="KILOGRAM", length="MILLIMETER", time="SECOND", force="NEWTON")
  Accgrav    (jgrav=-9800)
  Integrator (error=1e-5)
  Output     (reqsave=True)
  
  length = Dv (label="Link Length", b=600)
  
  pivot  = Point (0,0,0)
  pz     = pivot + Vector (0,0,1) # along global Z
  px     = pivot + Vector (1,0,0) # along global X
  
  midpt  = Point (length/2,0,0)
  mz     = midpt + Vector (1,0,0) # along global X
  mx     = midpt + Vector (0,1,0) # along global Y
  
  ground = Part (ground=True)
  
  # Pendulum Link
  pend = Part (mass=1.4702, ip=[44144.717,44144.717,73.5132,0,0,0])
  pend.cm = Marker (part=pend, qp=midpt, zp=mz, xp=mx)
  
  # Joint w/ rotation axis = global Z axis
  jim = Marker (part=pend,   qp=pivot, zp=pz, xp=px)
  jjm = Marker (part=ground, qp=pivot, zp=pz, xp=px)
  rev = Joint (type="REVOLUTE", i=jim, j=jjm)
  
  # Joint friction
  jfric = Friction (joint=rev, mu_static=0.6, mu_dynamic=0.2, effect="ALL", friction_torque_preload=20)

  # Requests
  m.r1 = Request (type="DISPLACEMENT", i=pend.cm, j=jjm, comment="Pend CM Displacement")
  m.r2 = Request (type="VELOCITY",     i=pend.cm, j=jjm, comment="Pend CM Velocity")
  m.r3 = Request (type="ACCELERATION", i=pend.cm, j=jjm, comment="Pend CM Acceleration")
  m.r4 = Request (type="FORCE",        i=jim,     j=jjm, comment="Reaction forces in Joint")
  
  return m
###############################################################################
## Entry Point ################################################################
###############################################################################
if __name__ == "__main__":
  model = PendulumWithFriction()
  model.simulate (type="DYNAMICS", end=4, dtout=.01)

結果



図 1.

コメント

  1. プロパティの概要、使用理由、および拡張方法については、プロパティをご参照ください。
  2. Frictionの詳細については、Constraint: Generalをご参照ください。Constraint: General