Main Content

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

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

Rack and pinion illustration

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

モデルを開く

MATLAB® コマンド プロンプトで、「smdoc_rack_pinion_c」と入力して、ラック アンド ピニオン モデルを開きます。Blocks and signals in the rack and pinion model

作動トルクの検出

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

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

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

    Block diagram with the new blocks highlighted

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

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

  5. トルクをプロットします。MATLAB コマンド プロンプトに以下を入力します。

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

    Plot of the actuator torques

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

    Plot of the input torque

拘束力の検出

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

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

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

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

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

  5. モデルのシミュレーションを実行し、拘束力をプロットします。MATLAB コマンド プロンプトに以下を入力します。

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

    Constrain force plot

ヒント

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

合計トルクの検出

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

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

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

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

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

  5. 合計トルクをプロットします。MATLAB コマンド プロンプトに以下を入力します。

    figure;
    plot(simout);

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

    Plot of the total torque in the revolute joint

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

参考

関連するトピック