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