Constraint: General

Model ElementConstraint_General要素を使用して、ユーザー定義の一般拘束を指定します。

説明

拘束方程式には、システムの位置と速度の値を含めることができます。MotionSolveでは、選択肢として多くの拘束が用意されていますが(Constraint_Jointを参照)、非標準の拘束が必要になる場合があります。例えば、ホイールが滑らずに回転するという拘束は、Constraint_General要素を使用してモデル化できる非ホロノミックな拘束です。

フォーマット


<Constraint_General
       id                   =  "integer"     
     [ label                =  "string" ]  
     {  
       expr                 =  "motionsolve_expression"     
     | 
       usrsub_dll_name      =  "valid_path_name"
       usrsub_param_string  =  "USER( [[par_1][, ...][, par_n]] )"
       usrsub_fnc_name      =  "fnc_name" >
     |
       script_name          =  "valid_path_name"
       interpreter          =  "PYTHON"| "MATLAB" ]
       usrsub_param_string  =  "USER([[par_1][, ...][, par_n]] )"
     [ usrsub_fnc_name      =  "custom_fnc_name" ]
     } 
     [ is_virtual           = {"FALSE" | "TRUE"} ] 
</Constraint_General>

属性

id
要素識別番号(整数 > 0)。この番号は、すべてのConstraint_General要素の中で一意です。
label
Constraint_General要素の名前。
expr
一般拘束を定義する式(ゼロに設定されます)。
usrsub_dll_name
ユーザーサブルーチンを含むDLLまたは共有ライブラリのパスと名前を指定します。MotionSolveはこの情報を使用して、実行時にDLL内のユーザーサブルーチンを読み込みます。
usrsub_param_string
データファイルからユーザー定義のサブルーチンGCOSUBに渡されるパラメータのリスト。
usrsub_fnc_name
ユーザー作成サブルーチンGCOSUBの代替名を指定します。
script_name
usrsub_fnc_nameで指定されたルーチンを含むユーザー作成スクリプトのパスと名前を指定します。
is_virtual
仮想拘束なのか通常の拘束なのかを定義します。is_virtualTRUEに設定されている場合、拘束は仮想拘束として実装されます。is_virtualFALSEに設定されている場合、拘束は通常の代数拘束として実装されます。このパラメータは省略可能です。デフォルトはFALSEです。仮想ジョイントの詳細については、Constraint: Jointコメント22をご参照ください。
interpreter
Specifies the interpreted language that the user script is written in. Valid choices are MATLAB or PYTHON.

コメント

  1. Constraint_Generalを使用して、ホロノミックな拘束と非ホロノミックな拘束を適用できます。位置の値のみを含む方程式として記述できる拘束は、ホロノミックな拘束と呼ばれます。それ以外の拘束は非ホロノミックな拘束と呼ばれます。
  2. 非ホロノミックな拘束の場合、その拘束が次の2つの条件を満たしていれば、MotionSolveによってシステムの残り部分に適用される拘束の反力は適切です:
    • その拘束が、システムの時間、位置、および速度のみの関数である。
    • 任意の速度項に対するその拘束の2次偏微分の結果がIDゼロになる。

      2つ目の条件は、拘束に速度の項が含まれている場合、拘束が速度に関して線形である必要があることを意味します。これらの条件の一方または両方が満たされていない場合は、拘束反力の特定の項がMotionSolveで無視されます。その結果、無視された項が大きな影響を与えることになった場合に、正しくない動的挙動が生じる可能性があります。

    • VARVAL()を使用して、Constraint_General内のReference_Variableを参照できます。Reference_Variableを定義するには、陽的な式を使用するか、ユーザー作成サブルーチン(VARSUB)を使用します。
    • Constraint_Generalを運動学解析で使用することはできません。これは、動解析でのABAMVSTIFFMSTIFFとも適合しません。
  3. DSTIFFを使用した動解析で使用される場合、この拘束はIndex-3について滑らかである必要があります。この拘束とその1次導関数(勾配)は、Index-2について滑らかである必要があります。この拘束とその1次導関数(勾配)および2次導関数(曲率)は両方とも、Index-1について滑らかである必要があります。