13.45 뉴턴-오일러 재귀 알고리즘의 역방향 재귀
1. 개요
뉴턴-오일러 재귀 알고리즘의 역방향 재귀(backward recursion)는 말단에서 베이스로 동역학적 양(힘, 토크)을 전파하는 단계이다. 순방향 재귀에서 계산된 운동학적 양을 사용하여 각 링크에 작용하는 힘과 토크를 계산하고, 결국 각 관절의 토크를 산출한다. 본 절에서는 역방향 재귀의 세부 사항과 수식을 다룬다.
2. 역방향 재귀의 목적
2.1 동역학적 양의 계산
역방향 재귀는 각 링크에 작용하는 힘과 토크, 그리고 각 관절에 필요한 토크를 계산한다.
2.2 계산되는 양
각 링크 i에 대해 다음의 양들이 계산된다.
- \mathbf{F}_i: 관성력 (질량 곱하기 가속도)
- \mathbf{N}_i: 관성 토크
- \mathbf{f}_i: 링크에 작용하는 힘
- \boldsymbol{\tau}_i: 링크에 작용하는 토크
- \tau_{j,i}: 관절 i의 토크
3. 관성력과 관성 토크
3.1 관성력
링크 i의 관성력은 뉴턴 방정식에서 얻어진다.
\mathbf{F}_i = M_i\mathbf{a}_{c,i}
여기서 M_i는 링크 i의 질량이고, \mathbf{a}_{c,i}는 질량 중심의 가속도(순방향 재귀에서 계산됨)이다.
3.2 관성 토크
링크 i의 관성 토크는 오일러 방정식에서 얻어진다.
\mathbf{N}_i = \mathbf{I}_{c,i}\dot{\boldsymbol{\omega}}_i + \boldsymbol{\omega}_i \times (\mathbf{I}_{c,i}\boldsymbol{\omega}_i)
여기서 \mathbf{I}_{c,i}는 질량 중심에 대한 관성 텐서이다.
4. 힘과 토크의 전파
4.1 힘의 전파
링크 i - 1이 링크 i에 가하는 힘 \mathbf{f}_i는 다음과 같이 계산된다.
\mathbf{f}_i = \mathbf{R}_{i+1}^i\mathbf{f}_{i+1} + \mathbf{F}_i
여기서 \mathbf{f}_{i+1}은 링크 i가 링크 i + 1에 가하는 힘이다(역의 부호로 작용-반작용).
4.2 토크의 전파
링크 i - 1이 링크 i에 가하는 토크 \boldsymbol{\tau}_i는 다음과 같이 계산된다.
\boldsymbol{\tau}_i = \mathbf{R}_{i+1}^i\boldsymbol{\tau}_{i+1} + \mathbf{N}_i + \mathbf{r}_{c,i} \times \mathbf{F}_i + \mathbf{r}_{i,i+1} \times (\mathbf{R}_{i+1}^i\mathbf{f}_{i+1})
여기서
- \mathbf{r}_{c,i}: 좌표계 i의 원점에서 질량 중심으로의 벡터
- \mathbf{r}_{i,i+1}: 좌표계 i의 원점에서 좌표계 i + 1의 원점으로의 벡터
4.3 의미
이 식들은 각 링크에 작용하는 힘과 토크의 평형을 표현한다. 다음 링크에서 받는 반력과 자체의 관성력이 합쳐진다.
5. 시작 조건
5.1 말단의 외부 힘과 토크
말단 링크에 가해지는 외부 힘 \mathbf{f}_{\text{ext}}와 토크 \boldsymbol{\tau}_{\text{ext}}가 알려져 있어야 한다. 외력이 없는 경우
\mathbf{f}_{n+1} = \mathbf{0}
\boldsymbol{\tau}_{n+1} = \mathbf{0}
이로부터 역방향 재귀가 시작된다.
5.2 외부 부하의 처리
매니퓰레이터가 객체를 잡고 있는 등 외부 부하가 있는 경우, 그 부하의 힘과 토크가 시작 조건에 포함된다.
6. 관절 토크의 추출
6.1 회전 관절
회전 관절의 토크는 링크 i에 작용하는 토크의 관절 축 방향 성분이다.
\tau_{j,i} = \boldsymbol{\tau}_i^T\hat{\mathbf{z}}_i
여기서 \hat{\mathbf{z}}_i는 관절 i의 회전 축의 단위 벡터이다.
6.2 직선 관절
직선 관절의 힘은 링크 i에 작용하는 힘의 관절 축 방향 성분이다.
\tau_{j,i} = \mathbf{f}_i^T\hat{\mathbf{z}}_i
6.3 의미
관절 토크/힘은 액추에이터가 제공해야 하는 양이며, 매니퓰레이터의 동역학 분석의 최종 출력이다.
7. 알고리즘의 의사 코드
// 외력 초기화 (외부 부하가 없는 경우)
f_{n+1} = 0
τ_{n+1} = 0
// 역방향 재귀
for i = n to 1:
F_i = M_i * a_{c,i}
N_i = I_{c,i} * ω_dot_i + ω_i × (I_{c,i} * ω_i)
f_i = R^i_{i+1} * f_{i+1} + F_i
τ_i = R^i_{i+1} * τ_{i+1} + N_i + r_{c,i} × F_i + r_{i,i+1} × (R^i_{i+1} * f_{i+1})
if 회전 관절:
tau_joint_i = τ_i^T * z_i
else if 직선 관절:
tau_joint_i = f_i^T * z_i
8. 효율성
8.1 계산 비용
각 링크에 대해 일정한 수의 행렬 곱과 외적이 필요하다. 따라서 전체 계산 비용은 자유도 n에 선형적이다 (O(n)).
8.2 메모리 사용
각 링크의 동역학적 양을 저장해야 한다. 메모리 사용도 n에 선형적이다.
8.3 비교
라그랑주 방법으로 직접 계산하면 O(n^4)이다. 뉴턴-오일러 재귀 알고리즘이 훨씬 효율적이다.
9. 응용
9.1 역동역학 계산
역방향 재귀는 역동역학 (주어진 운동에 필요한 토크 계산)에 가장 효율적이다.
9.2 매니퓰레이터 제어
계산 토크 제어, 모델 기반 제어 등에서 역방향 재귀가 사용된다. 실시간 제어가 가능하다.
9.3 시뮬레이션
매니퓰레이터의 시뮬레이션에서 역동역학이 일부 알고리즘에 사용된다.
9.4 매개변수 식별
매개변수 식별 실험에서 측정된 운동에 대해 예상 토크를 계산한다. 측정 토크와의 비교로 매개변수를 추정한다.
10. 외부 부하의 처리
10.1 말단의 부하
매니퓰레이터의 말단 장치에 부하가 있는 경우, 그 무게와 관성을 외력으로 추가한다.
\mathbf{f}_{n+1} = M_{\text{load}}\mathbf{g}
(부하의 자세에 따른 추가 토크도 고려할 수 있다.)
10.2 임의의 외력
다른 링크에 외력이 작용하는 경우(예: 손가락이 객체와 접촉), 그 링크의 운동 방정식에 외력을 추가한다.
11. 본 절의 의의
본 절은 뉴턴-오일러 재귀 알고리즘의 역방향 재귀를 자세히 다루었다. 순방향 재귀와 함께 역방향 재귀가 매니퓰레이터의 동역학을 효율적으로 계산한다. 이는 실시간 제어와 시뮬레이션의 기초이다.
12. 학습 권장사항
- 역방향 재귀의 목적을 이해한다.
- 힘과 토크의 전파 식을 익힌다.
- 시작 조건을 학습한다.
- 관절 토크의 추출을 인식한다.
- 효율성을 평가한다.
13. 참고 문헌
- 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