Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ジョイントに作用する力とトルクの測定

この例では、作動トルク、拘束力、Revolute Jointブロックに作用する総トルクを測定する方法を説明します。この例では、ラック アンド ピニオン モデルを使用します。

intro_schematic.png

Simscape™ Multibody™ のジョイント ブロックには、力とトルクを測定する端子があります。これらの端子を使用して、ジョイントに直接作用する各種の力とトルクを計算して出力できます。力とトルクの詳細については、力とトルクの検出を参照してください。

モデルを開く

MATLAB® コマンド プロンプトで、次を入力して、ラック アンド ピニオン モデルを開きます。

openExample('sm/DocRackPinionExample','supportingFile','DocRackPinion.slx')

cfs_base_model_diagram.png

作動トルクの検出

ラック アンド ピニオン モデルはSignal Editorブロックを使用して、ピニオンを駆動する作動トルクを指定します。Simulink-PS Converterブロックの [入力フィルター次数] プロパティが Second-order filtering に設定されているため、ブロックでは急激な変化や不連続点がある場合には平滑化して入力トルクを処理します。Revolute Joint ブロックで作動トルクを測定するには、次のようにします。

  • Revolute Joint ブロックをダブルクリックしてブロックのダイアログを開きます。 [Z Revolute Primitive (Rz)][Sensing] で、[Actuator Torque] を選択します。このブロックは作動トルクを出力する端子 [t] を表示します。このトルクは、ジョイント プリミティブで作用する 3 次元ベクトルの物理量信号です。

  • PS-Simulink Converter ブロックおよびTo Workspaceブロックをモデルに追加し、ブロック間を図に示すように接続します。

cfs_add_output_blocks_a.png

  • PS-Simulink Converter ブロックをダブルクリックします。[出力信号単位] パラメーターを N*m に設定します。

  • モデルのシミュレーションを実行します。To Workspace ブロックによって、作動トルクが MATLAB ベース ワークスペースの変数 simout に出力されます。

  • トルクをプロットします。MATLAB コマンド プロンプトで、次を入力します。

figure;
plot(simout);

MATLAB によって、ジョイント作動トルクがプロットされます。"z" 成分以外はすべて、シミュレーション全体を通じてゼロです。

actuator_torque_plot.png

作動トルクのプロットを、Signal Editor ブロックで指定された入力トルクと比較します。2 次フィルター処理による信号の平滑化を無視すれば、2 つの信号は同一です。次の図は、入力トルクを示します。

actuator_torque_input_signal.png

拘束力の検出

ジョイントの拘束力はジョイントのプリミティブ軸の法線方向に働き、与えられた自由度に運動を制限します。このモデルでは、Revolute Joint ブロックで作用している拘束力は重力に逆らい、ピニオンの位置をワールド座標系に対して維持します。拘束力を検出するには、次を行います。

  • Mechanism Configuration ブロックで、[Uniform Gravity]Constant に設定します。[Gravity] パラメーターが [0 0 -9.80665] であることを確認します。

  • Revolute Joint ブロックで、[Composite Force/Torque Sensing][Constraint Force] を選択します。ブロックに端子 [fc] が表示されます。端子は、ジョイントに作用する拘束力を出力して、並進拘束を維持します。

  • [Z Revolute Primitive (Rz)][Sensing] で、[Actuator Torque] を選択解除します。

  • PS-Simulink Converter ブロックをダブルクリックして、[出力信号単位] パラメーターを N に設定します。PS-Simulink Converter ブロックが端子 [fc] に接続していることを確認します。

  • モデルのシミュレーションを実行し、拘束力をプロットします。MATLAB コマンド プロンプトで、次を入力します。

figure;
plot(simout);

MATLAB で、時間に対する拘束力がプロットされます。"x" 成分と "y" 成分はシミュレーション全体を通じてゼロです。重力ベクトルに抵抗する z 成分は、ジョイント座標系を定位置に保持するのに必要な唯一の成分です。

sense_constraint_force.png

ヒント:

Weld Jointブロックで、拘束力によって、base 座標系と follower 座標系が必ず互いに対して固定されたままになります。Weld Joint ブロックをボディ サブシステム内に配置して、シミュレーション中にそのボディ内で働く内力と内部トルクを測定できます。これを二重振子モデルで行う方法の例については、ジョイントの拘束力の測定を参照してください。

合計トルクの検出

合計の力または合計トルクとは、ジョイントの base 座標系と follower 座標系間に働くすべての力またはトルクの合計であり、作動力、拘束力、内力またはトルクからの寄与を含みます。回転ジョイントに働く合計トルクを測定するには、次のようにします。

  • Revolute Joint ブロックをダブルクリックしてブロック線図を開きます。[Composite Force/Torque Sensing] で、[Total Torque] を選択します。ブロックに端子 [tt] が表示されます。この端子は、ジョイントに働く合計トルクを出力します。

  • [Composite Force/Torque Sensing][Constraint Force] を選択解除します。

  • PS-Simulink Converter ブロックをダブルクリックして、[出力信号単位] パラメーターを N*m に設定します。PS-Simulink Converter ブロックが端子 [tt] に接続していることを確認します。

  • モデルのシミュレーションを実行します。

  • 合計トルクをプロットします。MATLAB コマンド プロンプトで、次を入力します。

figure;
plot(simout);

MATLAB によって、3 次元ベクトルである合計トルクが、時間の関数としてプロットされます。x 成分と y 成分はシミュレーション全体を通じてゼロです。z 成分には、作動トルクと内部トルクからのトルク寄与が含まれています。

sense_total_torque.png

プロットで、トルクのピークは作動トルクによるものです。これらのピークは、Revolute Joint ブロックで指定した内部減衰トルクによって、時間とともに減衰します。減衰トルクは、エネルギーの散逸を発生させます。この散逸は、合計トルクのプロットの過渡部分ではっきり見られます。

参考

関連するトピック