Model Element Friction 要素は、モデル内の特定のジョイントのジョイント摩擦を指定するために使用します。摩擦は、回転、球、並進、円筒、およびユニバーサルのタイプのジョイントでのみサポートされます。MotionSolve は、摩擦にLuGre(Lundt-Grenoble)モデルを使用します。
説明
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_static ≥ mu_dynamic
mu_dynamic
倍精度
ジョイントの動摩擦係数
μ
d
を指定します。これは、2つのあわせ面が相互にスライドしている場合の摩擦係数です。
属性mu_dynamic は省略可能です。指定しない場合は、mu_dynamic =0.2になります。
指定する場合は、以下のとおりです:
mu_dynamic > 0
mu_dynamic ≤ mu_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軸に関する摩擦力 / トルクを適用します。
例
デフォルトプロパティの回転ジョイントrevjt上に摩擦要素を作成します。jfric = Friction (joint=revjt)
単振り子を作成して、摩擦を追加し、シミュレーションを実行して、摩擦トルクを表示します。
モデル
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.