{{ post.title }} 글 편집 글 편집 (이전 에디터) 작성자 {{ post.author.name }} 작성일

Version {{ post.target_version }} Product
{{ product.name }}
Tutorial/Manual {{ post.manual_title }} Attached File {{ post.file.upload_filename }}

RecurDyn에서 Marker의 자세를 정할 때,

Coordinate타입으로 지정 후, Slave Point를 무한대 값을 이용하여 설정하면, Master만 컨트롤하면 자세를 결정할 수 있습니다. 이 팁은 Marker의 자세를 Parametric Point를 통해 조정하고자 할 때 특히 유용합니다.


이해하기 어렵다면, 아래 내용만 기억하면 됩니다.

"Slave를 무한대값(아주 큰 값)이 포함된 벡터로 설정하면 Master만으로 자세를 결정할 수 있다."

  • Slave 가 무한대가 아닌 값으로 설정하면 Master를 변경했을 때, 최종 자세가 Slave값의 영향도 받습니다.
  • Slave가 무한대값으로 설정되면 slave의 방향은 항상 고정된 셈이므로, 항상 동일한 방향으로 향한 벡터라고 볼 수 있다. (무시할만한 차이만이 발생)


예를 들어, 아래에서 Slave Point를 0, 0, 1.e+15으로 입력하였습니다. (무한대를 입력할 수는 없기에 아주 큰 값 입력) 이렇게 입력하면 사실상 어떤 점을 기준으로 해도 Slave Point는 Z축과 평행한 벡터로 고정됩니다. (물론 완전히 평행하지는 않지만, 그 오차는 무시할만합니다.)


이제 그 이유를 설명해보겠습니다. Coordinate타입의 경우, 자세가 결정되는 방식을 이해하면 이유를 알 수 있습니다.Coordinate 타입에서 master를 +Z 로 Slave를 +X로 하여 선택하면,  


Master와 Slave를 가지고 아래와 같이 자세를 결정합니다.

우선 Origin에 대한 Master의 방향을 Z축으로 결정한 후, 

  1. Origin에 대한 Master와 Slave의 외적을 계산하여 Y축을 결정
  2. Z축과 Y축의 외적을 계산하여 X축을 결정. (Master와 Slave가 서로 직교가 아닐 수 있으므로 X를 재계산)


즉, master뿐만 아니라 slave가 축방향을 정하는 데 영향을 줍니다. 만일 Origin이 변경될 경우, 자세를 유지하려면 master와 slave를 모두 origin에 맞춰 변경해줘야 합니다.

하지만 slave를 무한대 값으로 설정해버리면, 사실상 origin에 관계없이 slave는 항상 동일한 방향 벡터라고 할 수 있습니다. (오차가 매우 적음) 즉, Slave는 항상 동일한 방향을 가리키고 있으므로, master만으로 자세를 컨트롤할 수 있게 됩니다.

첨부 모델은 위의 원리를 이용하여 Slave를 일정하게 유지한 채, Origin과 Master만 함께 변경하면 일정한 자세를 유지할 수 있게 한 예제입니다. (Marker만 있는 모델입니다.)


모델설명

  • Marker1은 Origin에 대해 Master는 Global X, slave는 Global Z방향으로 설정
    • Origin 205, 5, 0
    • Master 206, 5, 0 (즉, 방향벡터는 1, 0, 0)
    • Slave 205, 5, 1 (즉, 방향벡터는 0, 0, 1)
  • Marker2, Marker3는 origin의 변화에 따라 적절히 master, slave를 함께 변경해주어, 일정한 자세 유지.
  • Marker3_DifferentSlave는 Marker3의 Slave를 적절히 변경해주지 않은 탓에 자세가 다소 틀어졌음 (Euler Angle이 90, 90, 90이 아님)
    • Origin 210, -5, 0
    • Master 211, -5, 0 (즉, 방향벡터는 1, 0, 0)
    • Slave 205, 5, 1 (즉, 방향벡터는 -5, 10, 1)
  • 하지만 Marker3_Infinity의 경우, Slave를 0, 0, 1.e+15으로 입력하여 Marker1, Marker2, Marker3와 동일한 자세 유지.  (Slave는 항상 Global Z방향)
    • Marker3_Infinity에 대해 origin과 Master만 상대적인 값을 함께 변경해주면 계속 동일한 자세 유지(Slave는 0, 0, 1e+15로 유지)