Main Content

ジョイントの作動入力の指定

作動モード

ジョイント ブロックには 2 つの作動パラメーターがあります。これらのパラメーター [Force]/[Torque][Motion] によって、シミュレーション時のジョイントの動作が決まります。選択するパラメーター設定によって、ジョイント ブロックは作動パラメーターを入力として受け入れるか、シミュレーション時に自動的に値を計算することができます。

もう 1 つの設定 ([None]) を使用すると、作動力と作動トルクを直接ゼロに設定できます。ジョイント プリミティブはシミュレーション時に自由に動くことができますが、アクチュエータ入力をもっているわけではありません。運動は間接的にはモデルの他の場所に作用する力とトルクによって、直接的には速度状態ターゲットによって引き起こされます。

ジョイント ブロックのすべてのパラメーターと同様に、作動パラメーター設定も各ジョイント プリミティブに対して別々に選択します。同じブロックにある別々のジョイント プリミティブは、同じ作動設定を共有していなくてもかまいません。たとえば、Pin Slot Joint ブロックを使用して、[Z Revolute Primitive (Rz)] については運動入力を設定して作動トルクを自動的に計算させ、[X Prismatic Primitive (Px)] については作動力なしで運動を自動的に計算させることができます。

異なる [Force]/[Torque][Motion] の作動設定を組み合わせることで、異なるジョイント作動モードが得られます。順ダイナミクス モードと逆ダイナミクス モードは、2 つの一般的な例です。順ダイナミクス モードでは、作動力と作動トルクを入力として与え、運動を自動的に計算させることで、ジョイント プリミティブを作動させます。反対に、逆ダイナミクス モードでは、運動を入力として与え、作動力と作動トルクを自動的に計算させることで、ジョイント プリミティブを作動させます。

すべて計算するモードやすべて指定するモードなど、その他のジョイント作動モードも使用できます。次の表は、作動パラメーター設定を操作することで得られる各種の作動モードをまとめています。

ジョイントの作動モード

一般的には、ジョイントの作動を、量 (力/トルクと運動) を指定するか、計算するかという点で考えると、より実用的なモデル化アプローチが得られます。ジョイントに適切なモードは必ずしもわからないかもしれませんが、モデルを事前に計画していれば、次の 2 つの問いに対する答えは常にわかるはずです。

  • ジョイント プリミティブは機械的に作動させているか

  • ジョイント プリミティブの目的の軌跡はわかっているか

これらの問いに対する答えに基づいてジョイントの作動設定を選択することで、それぞれのジョイントを必ず用途に適した設定にすることができます。次の図に、答えに基づく適切な設定を示します。

ジョイント プリミティブの作動設定の選択

運動入力

ジョイント プリミティブの運動入力は、そのプリミティブの軌跡を指定する timeseries オブジェクトです。直進プリミティブでは、この軌跡はプリミティブ軸沿いの位置座標で、時間の関数として与えられます。座標は、base 座標系の原点に対する、follower 座標系の原点の位置を提供します。プリミティブ軸は、base 座標系で解決されます。

回転プリミティブでは、軌跡はプリミティブ軸を中心とした角度で、時間の関数として与えられます。この角度は、プリミティブ軸を中心とした、base 座標系に対する follower 座標系の回転を提供します。軸は base 座標系で解決されます。

球面ジョイント プリミティブには、運動作動オプションはありません。このプリミティブに作動トルクを指定することはできますが、軌跡をあらかじめ指定することはできません。軌跡は常に、シミュレーション時にモデル ダイナミクスから自動的に計算されます。

ゼロ運動の指定

[Actuation][Force/Torque] とは異なり、[Actuation][Motion] パラメーターには、シミュレーション時の固定のジョイント プリミティブに対応するゼロ入力オプションはありません。ただし、他のすべてのタイプの運動と同じ方法でゼロ運動を指定することはできます。つまり、Simscape™ ブロックや Simulink® ブロックを使用する方法です。

Simscape Multibody™ では、運動入力の信号は位置を中心としています。ジョイント プリミティブの位置を指定すると、信号が 2 次のフィルターで処理される場合であれば、Simulink-PS Converter ブロックによって信号が平滑化されるとともに、2 つの時間微分が自動的に与えられます。この動作により、ゼロ運動の指定が簡単になります。ジョイント プリミティブの運動作動入力端子に、一定の信号を指定して、シミュレーションを実行するだけです。

次の図に、ゼロ運動の指定の例を示します。Simulink Constant ブロックは、一定の位置の値を提供します。Simulink-PS Converter ブロックはこの Simulink 信号を、Base-Crank Revolute Joint ブロックの運動作動入力端子と互換性のある Simscape 信号に変換します。アセンブリとシミュレーションが成功したと仮定すると、このジョイントによって、固定の角度である 30 度が維持されます。これは、Simulink Constant ブロックに設定した値と、Simulink-PS Converter ブロックに設定した単位に対応します。

入力の取り扱い

ジョイント プリミティブの軌跡を指定する際には、位置を単一の入力として指定し、Simulink-PS Converter ブロックを使用してその入力をフィルター処理するのが実用的です。このフィルターは 2 次フィルターである必要があり、運動入力の 2 つの時間微分を自動的に提供します。フィルターは入力信号の平滑化も行うため、Simulink の Step ブロックを使用したときに存在するような急激な変化や不連続点によって引き起こされるシミュレーションの問題を防ぐのに役立ちます。

フィルター処理では、入力をフィルター処理する時定数の順の時間スケールにわたって、入力信号が平滑化されます。時定数が大きいほど、信号の平滑化が大きくなり、信号のひずみも大きくなる傾向があります。時定数が小さいほど、フィルター処理した信号は入力信号に近くなりますが、モデルの剛性も大きくなるため、シミュレーション速度が低下します。

目安として、入力をフィルター処理する時定数は、モデルにおいて関連する時間スケールのうち最も小さい値と同じくらい小さくする必要があります。既定では、値は 0.001 秒です。この値は多くのモデルで適切ですが、Simscape Multibody モデルでは小さすぎることがよくあります。シミュレーションを高速化するには、値 0.01 秒から始めてください。精度を上げるには、この値を減らしてください。

運動入力信号の 2 つの時間微分がわかっている場合は、それらを直接指定できます。このアプローチは、単純な微分をもつ単純な軌跡で最も便利です。ただし、2 つの微分信号が位置信号と互換性があることを確認しなければなりません。そうでない場合は、シミュレーションが実行されても、結果が不正確になることがあります。

アセンブリとシミュレーション

運動入力をもつ Simscape Multibody ジョイントは、入力信号によって左右される初期位置でシミュレーションを開始 (Ctrl + T) します。この初期位置は、アセンブリ後の状態とは異なる場合があります。アセンブリ後の状態は、ジョイントの状態ターゲットが指定されている場合、それを満たすために最適化されたアセンブリ アルゴリズムに左右されるからです。ジョイントの状態ターゲットが存在しない場合でも、アセンブリ後の状態はシミュレーション時間ゼロでの状態と異なることがあります。

メモ

アセンブリ後の状態は、Ctrl + D キーを押すなどしてブロック線図を更新するたびに得られます。シミュレーションの初期状態は、Ctrl + T キーを押すなどしてシミュレーションを実行し、時間ゼロで一時停止するたびに得られます。

2 つの状態が異なるため、Model Report では、運動入力のないモデルの場合にのみ、正確な初期状態データを提供します。運動入力をもつモデルの場合、このデータは、運動入力信号によって指定された初期位置が、ジョイントの状態ターゲットに指定された運動入力信号と完全に一致する場合にのみ正確です。

同様に、Mechanics Explorer でジョイントの初期状態が正確に表示されるのは、運動入力のないモデルのみです。Mechanics Explorer ではアセンブリ後の状態からシミュレーションの初期状態に移行するため、ジョイントの状態ターゲットと互換性のない運動入力がモデルに含まれていると、Mechanics Explorer に急激な不連続が現れることがあります。ジョイントの運動入力によって指定された初期位置を、ジョイントの状態ターゲットによって指定された初期位置と等しくすることで、突然の変化をなくすことができます。

運動入力の微分の指定

Simulink-PS Converter ブロックを使用して入力信号をフィルター処理している場合、必要なのは位置信号の指定だけです。微分はブロックによって自動的に計算されます。ただし、ブロックのダイアログ ボックスで 2 次フィルター処理を選択しなければなりません。

  1. Simulink-PS Converter ブロックのダイアログ ボックスを開き、[入力の取り扱い] をクリックします。

  2. [フィルター処理と微分] で、[入力のフィルター処理、微分の算出] を選択します。

  3. [入力フィルター次数] で、[2 次フィルター処理] を選択します。

  4. [入力フィルター処理時定数 (秒)] に、フィルターが信号を平滑化するために使用する特性時間を入力します。適切な開始値は 0.01 秒です。

入力微分を直接指定する場合は、それらの微分値を最初に計算しなければなりません。その後、Simulink-PS Converter ブロックを使用して、ターゲット ジョイント ブロックに対して値を指定できます。入力微分を直接指定するには、次を行います。

  1. 入力信号を受け取る Simulink-PS Converter ブロックを開き、[入力の取り扱い] タブをクリックします。

  2. [フィルター処理と微分] で、[Provide input derivative(s)] を選択します。

  3. 両方の微分を指定するには、[Input derivatives][Provide first and second derivatives] を選択します。

ブロックには追加の物理量信号端子が微分ごとに 1 つ、合計 2 つ表示されます。

関連するトピック