13.44 뉴턴-오일러 재귀 알고리즘의 순방향 재귀

13.44 뉴턴-오일러 재귀 알고리즘의 순방향 재귀

1. 개요

뉴턴-오일러 재귀 알고리즘의 순방향 재귀(forward recursion)는 베이스에서 말단으로 운동학적 양(각속도, 각가속도, 선가속도)을 전파하는 단계이다. 본 절에서는 순방향 재귀의 세부 사항과 수식을 다룬다.

2. 순방향 재귀의 목적

2.1 운동학적 양의 계산

순방향 재귀는 각 링크의 운동학적 양을 계산한다. 이 양들은 후속의 역방향 재귀에서 사용된다.

2.2 계산되는 양

각 링크 i에 대해 다음의 양들이 계산된다.

  • \boldsymbol{\omega}_i: 링크 i의 각속도
  • \dot{\boldsymbol{\omega}}_i: 링크 i의 각가속도
  • \mathbf{a}_{c,i}: 링크 i의 질량 중심의 선가속도

3. 좌표계 표현

3.1 좌표계의 부착

각 링크에 좌표계가 부착된다. 일반적으로 관절 i에 좌표계 i가 부착된다.

3.2 변환 행렬

좌표계 i - 1에서 좌표계 i로의 회전 행렬을 \mathbf{R}_i^{i-1}로 표기한다. 이는 관절 변수에 의존한다.

3.3 링크의 본체 좌표계 사용

운동학적 양은 일반적으로 각 링크의 본체 좌표계에서 표현된다. 이는 관성 텐서가 시간에 무관하게 표현되도록 한다.

4. 각속도의 전파

4.1 회전 관절

회전 관절 i의 경우, 링크 i의 각속도는 다음과 같다.

\boldsymbol{\omega}_i = \mathbf{R}_i^{i-1, T}\boldsymbol{\omega}_{i-1} + \dot q_i\hat{\mathbf{z}}_i

여기서

  • \mathbf{R}_i^{i-1, T}: 좌표계 i - 1에서 좌표계 i로의 변환의 전치
  • \hat{\mathbf{z}}_i: 관절 i의 회전 축의 단위 벡터 (좌표계 i에서 표현)

4.2 직선 관절

직선 관절의 경우 회전이 없으므로 각속도가 변하지 않는다.

\boldsymbol{\omega}_i = \mathbf{R}_i^{i-1, T}\boldsymbol{\omega}_{i-1}

4.3 의미

회전 관절은 그 축 주위의 추가 각속도를 더한다. 직선 관절은 각속도를 변화시키지 않는다.

5. 각가속도의 전파

5.1 회전 관절

각가속도의 전파는 더 복잡하다. 회전 관절의 경우

\dot{\boldsymbol{\omega}}_i = \mathbf{R}_i^{i-1, T}\dot{\boldsymbol{\omega}}_{i-1} + \ddot q_i\hat{\mathbf{z}}_i + \mathbf{R}_i^{i-1, T}\boldsymbol{\omega}_{i-1} \times \dot q_i\hat{\mathbf{z}}_i

마지막 항은 회전 좌표계의 효과로 등장한다.

5.2 직선 관절

직선 관절의 경우 각가속도가 단순히 전파된다.

\dot{\boldsymbol{\omega}}_i = \mathbf{R}_i^{i-1, T}\dot{\boldsymbol{\omega}}_{i-1}

6. 선가속도의 전파

6.1 일반 식

링크 i의 한 점의 선가속도는 인접 링크의 가속도와 회전의 효과로부터 계산된다. 링크 i의 원점의 가속도는

\mathbf{a}_i = \mathbf{R}_i^{i-1, T}[\mathbf{a}_{i-1} + \dot{\boldsymbol{\omega}}_{i-1} \times \mathbf{r}_{i-1, i} + \boldsymbol{\omega}_{i-1} \times (\boldsymbol{\omega}_{i-1} \times \mathbf{r}_{i-1, i})]

여기서 \mathbf{r}_{i-1, i}는 좌표계 i - 1의 원점에서 좌표계 i의 원점으로의 벡터(좌표계 i - 1에서 표현)이다.

6.2 직선 관절의 추가 항

직선 관절의 경우 다음의 항이 추가된다.

\mathbf{a}_i \mathrel{+}= \ddot q_i\hat{\mathbf{z}}_i + 2\boldsymbol{\omega}_i \times (\dot q_i\hat{\mathbf{z}}_i)

이는 직선 운동의 가속도와 코리올리 항이다.

6.3 질량 중심의 가속도

링크 i의 질량 중심의 가속도는 원점의 가속도에 회전 효과를 더한 것이다.

\mathbf{a}_{c,i} = \mathbf{a}_i + \dot{\boldsymbol{\omega}}_i \times \mathbf{r}_{c,i} + \boldsymbol{\omega}_i \times (\boldsymbol{\omega}_i \times \mathbf{r}_{c,i})

여기서 \mathbf{r}_{c,i}는 좌표계 i의 원점에서 링크 i의 질량 중심으로의 벡터이다.

7. 중력의 처리

7.1 중력 보상

중력의 효과는 베이스의 가속도에 추가하여 처리할 수 있다. 베이스의 가속도를 -\mathbf{g}로 설정하면 중력이 자동으로 모든 링크에 적용된다.

\mathbf{a}_0 = -\mathbf{g}

이는 가속하는 좌표계의 가상력으로 중력을 표현하는 트릭이다.

8. 시작 조건

8.1 베이스의 운동학적 양

베이스(고정된 경우)의 운동학적 양은 다음과 같다.

\boldsymbol{\omega}_0 = \mathbf{0}

\dot{\boldsymbol{\omega}}_0 = \mathbf{0}

\mathbf{a}_0 = -\mathbf{g}

(중력 보상 포함)

이로부터 순방향 재귀가 시작된다.

8.2 부유 베이스

베이스가 자유롭게 움직일 수 있는 경우(예: 무인 항공기)에는 베이스의 운동학적 양이 측정값이나 추정값으로 주어진다.

9. 알고리즘의 의사 코드

for i = 1 to n:
    if 회전 관절:
        ω_i = R^{i-1}_i^T (ω_{i-1}) + q_dot_i * z_i
        ω_dot_i = R^{i-1}_i^T (ω_dot_{i-1}) + q_ddot_i * z_i 
                  + R^{i-1}_i^T (ω_{i-1}) × (q_dot_i * z_i)
    else if 직선 관절:
        ω_i = R^{i-1}_i^T (ω_{i-1})
        ω_dot_i = R^{i-1}_i^T (ω_dot_{i-1})
    
    a_i = R^{i-1}_i^T [a_{i-1} + ω_dot_{i-1} × r_{i-1,i} + ω_{i-1} × (ω_{i-1} × r_{i-1,i})]
    if 직선 관절:
        a_i += q_ddot_i * z_i + 2 * ω_i × (q_dot_i * z_i)
    
    a_{c,i} = a_i + ω_dot_i × r_{c,i} + ω_i × (ω_i × r_{c,i})

10. 효율성

10.1 계산 비용

각 링크에 대해 일정한 수의 행렬 곱과 외적이 필요하다. 따라서 전체 계산 비용은 자유도 n에 선형적이다.

10.2 메모리 사용

각 링크의 운동학적 양을 저장해야 한다. 메모리 사용도 n에 선형적이다.

11. 응용

11.1 매니퓰레이터 동역학

순방향 재귀는 매니퓰레이터의 모든 링크의 운동학적 양을 계산한다. 이는 후속의 동역학 계산의 기초이다.

11.2 시뮬레이션

매니퓰레이터의 시뮬레이션에서 순방향 재귀가 매 시간 단계마다 호출된다.

11.3 제어

계산 토크 제어, 모델 기반 제어 등에서 순방향 재귀가 사용된다.

12. 본 절의 의의

본 절은 뉴턴-오일러 재귀 알고리즘의 순방향 재귀를 자세히 다루었다. 이는 운동학적 양을 효율적으로 전파하는 기본 메커니즘이며, 후속의 역방향 재귀와 결합하여 전체 동역학을 계산한다.

13. 학습 권장사항

  • 순방향 재귀의 목적을 이해한다.
  • 각 양의 전파 식을 익힌다.
  • 회전과 직선 관절의 차이를 인식한다.
  • 중력 보상의 트릭을 학습한다.
  • 의사 코드를 따라가 본다.

14. 참고 문헌

  • Luh, J. Y. S., Walker, M. W., & Paul, R. P. (1980). “On-line computational scheme for mechanical manipulators.” Journal of Dynamic Systems, Measurement, and Control, 102(2), 69–76.
  • Featherstone, R. (2008). Rigid Body Dynamics Algorithms. Springer.
  • Murray, R. M., Li, Z., & Sastry, S. S. (1994). A Mathematical Introduction to Robotic Manipulation. CRC Press.
  • Spong, M. W., Hutchinson, S., & Vidyasagar, M. (2020). Robot Modeling and Control (2nd ed.). Wiley.

version: 1.0