Rabbit 2-Pulley Animator 수학 메모

목적

이 문서는 Achilles가 만든 평면상의 한 붓 경로를, Rabbit2 pulley animator가 어떻게 따라갈 수 있는지 수학적으로 정리한 메모다.

핵심 질문은 하나다.

이 문서는 구현체보다 먼저, 구조를 단순하게 이해하는 데 목적이 있다.

1. 모델

1.1 점과 기호

여기서 AchillesP(t)를 만든다.
Rabbit은 이 P(t)를 받아서 lL(t), lR(t)thetaL(t), thetaR(t)로 바꾼다.

2. 기본 기하

두 줄 길이는 그냥 pulley 중심과 헤드 위치 사이의 거리다.

즉 Rabbit의 가장 기본적인 forward model은 거리 함수 두 개다.

한 줄 요약:

XY 위치 -> 두 줄 길이

3. 모터 각도 변환

줄이 pulley에 감기거나 풀릴 때, 줄 길이 변화는 각도 변화로 바뀐다.

초기 길이를 lL0, lR0, 초기 각도를 thetaL0, thetaR0라고 두면:

즉 Rabbit에서 실제 모터 제어에 필요한 것은:

이다.

4. Achilles와 Rabbit의 관계

Achilles가 만든 경로를:

라고 두면, Rabbit은 단순히 이 함수를 거리 함수에 대입한다.

다시 말해:

  1. Achilles는 평면 경로를 만든다
  2. Rabbit은 그 경로를 좌/우 줄 길이 경로로 바꾼다
  3. 마지막으로 줄 길이를 모터 각도 경로로 바꾼다

한 줄 요약:

Achilles = XY planner

Rabbit = XY -> cable lengths -> motor angles converter

5. 속도와 Jacobian

시간에 따라 움직인다고 하면, 헤드 속도는:

줄 길이 속도는 다음처럼 된다.

행렬로 쓰면:

[ dlL/dt ]   [ (x-xL)/lL   (y-yL)/lL ] [ vx ]
[ dlR/dt ] = [ (x-xR)/lR   (y-yR)/lR ] [ vy ]

이 행렬이 XY velocity -> cable velocity 변환의 Jacobian이다.

모터 속도는 pulley 반지름으로 나누면 된다.

이 식은 매우 중요하다.
나중에 Rabbit이:

을 감지할 때 바로 이 식을 쓴다.

6. 역방향 좌표 복원

반대로 lL, lR에서 현재 헤드 위치를 추정할 수도 있다.

가장 단순한 경우 pulley가 같은 높이에 있고:

이면:

가 된다.

이때 실제 시스템에서는 보통 pulley 아래쪽 해를 선택한다.

즉 두 줄 길이만 알아도 헤드의 평면 위치를 복원할 수 있다.

7. 중력의 의미

Rabbit은 단순 plotter가 아니라, gravity의 영향을 받는 시스템이다.

즉 이상적인 수학 모델은 헤드가 점 P(t)를 정확히 지난다고 가정하지만, 실제 기구는:

이런 현상이 생긴다.

따라서 Rabbit의 물리 모델은 보통 두 층으로 나뉜다.

7.1 이상 기하 모델

7.2 시각/물리 보정 모델

즉 실제 Rabbit 애니메이터에서 보이는 출렁임은, 위의 이상 기하 위에 얹힌 2차 모델이다.

8. 왜 이 수학이 중요한가

이 모델이 있으면 Achilles와 Rabbit의 역할을 깔끔하게 나눌 수 있다.

Achilles의 책임

Rabbit의 책임

즉 Achilles가 무엇을 그릴까를 정하고,
Rabbit이 그걸 pulley가 어떻게 그릴까를 정한다.

9. 앞으로 바로 쓸 수 있는 비용 함수

나중엔 Rabbit을 의식해서 Achilles의 경로 선택에도 비용을 줄 수 있다.

예를 들어:

여기서:

같은 항목을 둘 수 있다.

즉 장기적으로는 Achilles와 Rabbit이 완전히 분리되기보다, Rabbit의 물리 비용이 Achilles의 경로 선택에 다시 피드백될 수 있다.

10. 결론

이 문서의 핵심은 한 문장으로 요약할 수 있다.

Achilles의 한 붓 경로는 Rabbit에서 두 줄 길이 함수로 바뀌고, 그것이 다시 두 모터 각도 함수로 바뀐다.

이 구조만 붙잡고 있으면:

를 같은 수학 위에서 이야기할 수 있다.