FRICTION

FRICTION関数は、IDに対応するForce_JointFrictionの出力とcompで指定された成分インデックスを計算します。

フォーマット

FRICTION(ID, comp, rm)

引数

ID
Force_JointFrictionのID。
comp
力成分。現在は、1~18の範囲がサポートされています。
1 = ジョイントのJマーカーのx軸に沿った摩擦力FX。
2 = ジョイントのJマーカーのy軸に沿った摩擦力FY。
3 = ジョイントのJマーカーのz軸に沿った摩擦力FZ。
4 = ジョイントのJマーカーのx軸周りの摩擦トルクTX。
5 = ジョイントのJマーカーのy軸周りの摩擦トルクTY。
6 = ジョイントのJマーカーのz軸周りの摩擦トルクTZ。
7 = ジョイントのJマーカーのx軸に沿った並進摩擦係数。
8 = ジョイントのJマーカーのy軸に沿った並進摩擦係数。
9 = ジョイントのJマーカーのz軸に沿った並進摩擦係数。
10 = ジョイントのJマーカーのx軸周りの回転摩擦係数。
11 = ジョイントのJマーカーのy軸周りの回転摩擦係数。
12 = ジョイントのJマーカーのz軸周りの回転摩擦係数。
13 = ジョイントのJマーカーのx軸に沿った並進滑り速度。
14 = ジョイントのJマーカーのy軸に沿った並進滑り速度。
15 = ジョイントのJマーカーのz軸に沿った並進滑り速度。
16 = ジョイントのJマーカーのx軸周りの回転滑り速度。
17 = ジョイントのJマーカーのy軸周りの回転滑り速度。
18 = ジョイントのJマーカーのz軸周りの回転滑り速度。
rm
この属性により、上記結果を計算するフレームが関連付けられているマーカーを指定することができます。指定しない場合、rmはデフォルトで摩擦モデルに関連付けられたジョイントのJマーカーになります。

  1. 下の例は、1つのリクエストでREVOLUTEジョイント内の摩擦に関するすべての情報を取得する方法を示しています。Force_JointFriction/39を使用してジョイント内の摩擦力が定義されているものとします。
    <Post_Request
      id      = "1039"
      type    = "EXPRESSION"
      comment = "FRICTION force"
      expr2   = "FRICTION(39, 6)"  <!--Obtain TZ value-->
      expr3   = "FRICTION(39, 12)" <!--Obtain µRZ value-->
      expr4   = "FRICTION(39, 18)" <!--Obtain WZ value-->
    />
  2. 下の例は、1つのリクエストでSPHERICALジョイント内の摩擦に関する情報を取得する方法を示しています。Force_JointFriction/40を使用してジョイント内の摩擦力が定義されているものとします。
    <Post_Request
      id      = "1040"
      type    = "EXPRESSION"
      comment = "FRICTION force"
      expr2   = "FRICTION(40, 4)"  <!--Obtain TX value-->
      expr3   = "FRICTION(40, 5)"  <!--Obtain TY value-->
      expr4   = "FRICTION(40, 6)"  <!--Obtain TZ value-->
      expr6   = "FRICTION(40, 10)" <!--Obtain µRX value-->
      expr7   = "FRICTION(40, 11)" <!--Obtain µRY value-->
      expr8   = "FRICTION(40, 12)" <!--Obtain µRZ value-->
    />
  3. 下の例は、1つのリクエストでTRANSLATIONALジョイント内の摩擦に関する情報を取得する方法を示しています。Force_JointFriction/41を使用してジョイント内の摩擦力が定義されているものとします。
    <Post_Request
      id      = "1041"
      type    = "EXPRESSION"
      comment = "FRICTION force"
      expr2   = "FRICTION(41, 3)"   <!--Obtain FZ value-->
      expr3   = "FRICTION(41, 9)"   <!--Obtain µZ value-->
      expr4   = "FRICTION(41, 15)"  <!--Obtain VZ value-->
    />
  4. 下の例は、1つのREQUESTPLANARジョイント内の摩擦に関する情報を取得する方法を示しています。Force_JointFriction/41を使用してジョイント内の摩擦力が定義されているものとします。
    <Post_Request
      id      = "1041"
      type    = "EXPRESSION"
      comment = "FRICTION force"
      expr2   = "FRICTION(41, 1)"  <!--Obtain FX value-->
      expr3   = "FRICTION(41, 2)"  <!--Obtain FY value-->
      expr4   = "FRICTION(41, 6)"  <!--Obtain TZ value-->
      expr1   = "FRICTION(41, 7)"  <!--Obtain µX value-->
      expr2   = "FRICTION(41, 8)"  <!--Obtain µY value-->
      expr3   = "FRICTION(41, 12)" <!--Obtain µRZ value-->
    />

コメント

  1. Friction()関数は、Post_RequestおよびSensor_Eventのモデルステートメントでのみ使用できます。Force_Scalar_TwoBodyForce_Vector_TwoBodyControl_StateEqnなどの運動方程式の項に実際に寄与するモデル要素には使用できません。
  2. ジョイントタイプによっては、Friction()関数の成分の多くが常に0になります。ジョイントタイプによって、常に0の成分タイプが決まります。下の表は、この0の成分を示しています。
    成分 名前 回転 ユニバーサル 並進 円筒 平面
    1 FX 0   0 0 0  
    2 FY 0   0 0 0  
    3 FZ 0   0     0
    4 TX 0     0 0 0
    5 TY 0     0 0 0
    6 TZ       0    
    7 µX 0   0 0 0  
    8 µY 0   0 0 0  
    9 µZ 0   0     0
    10 µRX 0     0 0 0
    11 µRY 0     0 0 0
    12 µRZ       0    
    13 VX 0   0 0 0  
    14 VY 0   0 0 0  
    15 VZ 0   0     0
    16 WX 0     0 0 0
    17 WY 0     0 0 0
    19 WZ       0