Constraint_General은 사용자 정의 구속 조건을 정의 하는데 사용됩니다.
일반적으로 정의된 구속방정식에는 시스템 내에서 측정되어지는 변위와 속도를 포함합니다.
MotionSolve는 회전 조인트(Revolute)와 같이 일반화된 구속조건(Joint)를 기본적으로 제공하고 있습니다.
하지만 모델링 과정에 있어 이러한 구속 조건만으로 모델링이 어려운 경우가 있으며, 이러한 상황에서 Constraint_General을 이용하여 사용자 지정 구속을 정의 하실 수 있습니다.

Constraint_General은 Template를 이용하여 정의가 가능하며 포맷은 아래와 같습니다.

<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” ] >
}
/>

Example.
XYZ 병진방향으로 자유로우며, Global Y축으로 일정한 각속도로 회전하는 구

=> 해당 예제는 Marker Motion으로 정의 할 수도 있지만, 이번 예제에서는 Constraint_General을 이용해 보도록 하겠습니다.

아래와 같이 Template를 추가하여 Constraint_General을 정의 할 수 있습니다.
사용된 expr이 0이 되는 구속조건이 모델에 적용이 되게 됩니다.  따라서 아래의 경우 Body의 Y축에 대한 회전속도는 1rad/s 라는 값을 만족하기 위한 구속 조건이 적용이 됩니다.

<Constraint_General
id = “1”
label = “gcon_1”
expr = “WY({b_0.cm.id})-1”
/>

 

 

gcon

 

이번 포스팅에서는 간단한 예를 들어봤지만 보다 다양하고 복잡한 구속조건식을 표현하기에 유용한 기능 입니다.