10.39 이중 쿼터니언 기반 기구학 모델링
1. 이중 쿼터니언 기구학의 개요
이중 쿼터니언 기반 기구학(dual quaternion kinematics)은 로봇 매니퓰레이터의 순기구학, 역기구학, 자코비안 계산 등을 이중 쿼터니언으로 수행하는 방법이다. 동차 변환 행렬 기반 접근의 대안이며, 회전과 병진을 통일적으로 다룬다.
본 절에서는 이중 쿼터니언을 사용한 매니퓰레이터 기구학 모델링의 원리와 응용을 다룬다.
2. 매니퓰레이터 기구학의 목표
2.1 순기구학 (Forward Kinematics)
주어진 관절 변수 \boldsymbol{\theta}로부터 말단 장치의 자세 \mathbf{T}(\boldsymbol{\theta}) \in SE(3)를 계산한다.
\mathbf{T} = f(\boldsymbol{\theta})
2.2 역기구학 (Inverse Kinematics)
주어진 말단 장치 자세 \mathbf{T}로부터 관절 변수 \boldsymbol{\theta}를 계산한다.
\boldsymbol{\theta} = f^{-1}(\mathbf{T})
2.3 자코비안
관절 변수 미분과 말단 장치 속도의 관계를 나타내는 행렬이다.
\dot{\mathbf{x}} = \mathbf{J}(\boldsymbol{\theta})\dot{\boldsymbol{\theta}}
3. 동차 변환 행렬과의 비교
전통적인 기구학 모델링은 동차 변환 행렬을 사용한다. 이중 쿼터니언은 이의 대안으로 다음의 차이를 가진다.
3.1 매개변수 수
- 동차 변환 행렬: 4 \times 4 = 16 성분
- 이중 쿼터니언: 8 성분
이중 쿼터니언은 메모리 효율이 더 좋다.
3.2 연산 복잡도
- 동차 변환 행렬 곱: 64 곱셈, 48 덧셈
- 이중 쿼터니언 곱: 약 48 곱셈
이중 쿼터니언이 합성에서 약간 더 효율적이다.
3.3 수치 안정성
이중 쿼터니언은 단위 조건을 정규화하기 쉽다. 동차 변환 행렬의 정규 직교성 유지보다 간단하다.
4. 순기구학 모델링
4.1 링크 변환
매니퓰레이터의 각 링크 변환을 이중 쿼터니언으로 표현한다.
\hat{\mathbf{q}}_i = \mathbf{q}_{r,i} + \mathbf{q}_{d,i}\epsilon
각 \hat{\mathbf{q}}_i는 링크 i-1에서 i로의 변환을 나타낸다.
4.2 연쇄 곱
베이스에서 말단 장치까지의 누적 변환은 이중 쿼터니언의 연쇄 곱이다.
\hat{\mathbf{q}}_{0,n} = \hat{\mathbf{q}}_1\hat{\mathbf{q}}_2\cdots\hat{\mathbf{q}}_n
이는 동차 변환 행렬의 연쇄 곱과 같은 구조이다.
4.3 DH 매개변수의 이중 쿼터니언 표현
표준 DH 매개변수 (a, \alpha, d, \theta)로부터 이중 쿼터니언은 다음과 같이 구성된다.
네 기본 변환의 이중 쿼터니언이 각각 계산되고 합성된다.
- \mathrm{Rot}_z(\theta) \to 이중 쿼터니언 (회전만)
- \mathrm{Trans}_z(d) \to 이중 쿼터니언 (병진만)
- \mathrm{Trans}_x(a) \to 이중 쿼터니언 (병진만)
- \mathrm{Rot}_x(\alpha) \to 이중 쿼터니언 (회전만)
이들의 곱이 링크 변환이다.
5. 기본 변환의 이중 쿼터니언
5.1 z축 회전
\hat{\mathbf{q}}_{\mathrm{Rot}_z(\theta)} = (\cos(\theta/2), 0, 0, \sin(\theta/2), 0, 0, 0, 0)
실수 부분이 z축 회전 쿼터니언이고 이중 부분이 0이다.
5.2 z축 병진
\hat{\mathbf{q}}_{\mathrm{Trans}_z(d)} = (1, 0, 0, 0, 0, 0, 0, d/2)
실수 부분이 항등 쿼터니언이고 이중 부분이 z축 방향의 병진 정보를 담는다.
5.3 x축 병진
\hat{\mathbf{q}}_{\mathrm{Trans}_x(a)} = (1, 0, 0, 0, 0, a/2, 0, 0)
5.4 x축 회전
\hat{\mathbf{q}}_{\mathrm{Rot}_x(\alpha)} = (\cos(\alpha/2), \sin(\alpha/2), 0, 0, 0, 0, 0, 0)
6. 순기구학 알고리즘
function forward_kinematics_dual_quaternion(theta, dh_params):
q_total = Identity_DualQuaternion()
for i in range(len(theta)):
a, alpha, d, theta_i = dh_params[i]
if is_revolute[i]:
theta_i += theta[i]
else:
d += theta[i]
q_rot_z = dq_rot_z(theta_i)
q_trans_z = dq_trans_z(d)
q_trans_x = dq_trans_x(a)
q_rot_x = dq_rot_x(alpha)
q_link = q_rot_z * q_trans_z * q_trans_x * q_rot_x
q_total = q_total * q_link
return q_total
7. 자코비안 계산
매니퓰레이터의 자코비안은 관절 속도와 말단 장치 트위스트의 관계이다.
7.1 공간 자코비안
\boldsymbol{\xi}_s = \mathbf{J}_s(\boldsymbol{\theta})\dot{\boldsymbol{\theta}}
여기서 \boldsymbol{\xi}_s는 공간 좌표계에서의 말단 장치 트위스트이다.
7.2 본체 자코비안
\boldsymbol{\xi}_b = \mathbf{J}_b(\boldsymbol{\theta})\dot{\boldsymbol{\theta}}
여기서 \boldsymbol{\xi}_b는 본체 좌표계에서의 말단 장치 트위스트이다.
7.3 이중 쿼터니언 기반 자코비안
이중 쿼터니언에서 자코비안의 각 열은 관련된 관절의 스크류 축이다. 이는 동차 변환 행렬 기반 자코비안과 같은 구조이다.
\mathbf{J}(\boldsymbol{\theta}) = [\boldsymbol{\xi}_1, \boldsymbol{\xi}_2, \ldots, \boldsymbol{\xi}_n]
각 \boldsymbol{\xi}_i는 현재 자세에서의 i번째 관절의 스크류 축이다.
8. 역기구학
역기구학은 일반적으로 비선형이며 닫힌 형태의 해가 드물다. 수치 해법이 사용된다.
8.1 수치 역기구학
반복적 방법으로 역기구학을 푼다.
- 초기 관절 변수 추정
- 현재 자세 \hat{\mathbf{q}}(\boldsymbol{\theta}) 계산
- 오차 \Delta\hat{\mathbf{q}} = \hat{\mathbf{q}}_{\text{desired}}\cdot\hat{\mathbf{q}}(\boldsymbol{\theta})^{-1} 계산
- 로그 사상으로 트위스트 형태로 변환
- 자코비안의 역(또는 의사 역)으로 관절 변수 업데이트
- 수렴까지 반복
8.2 오차의 이중 쿼터니언 표현
오차를 이중 쿼터니언으로 표현하면 회전과 병진 오차를 통일적으로 다룰 수 있다. 이는 최적화에서 장점이 있다.
9. 이중 쿼터니언 기구학의 장점
9.1 통일된 표현
회전과 병진을 하나의 객체로 다룬다. 별도의 처리를 피할 수 있다.
9.2 수치 안정성
정규화가 단순하다. 동차 변환 행렬의 정규 직교성 유지보다 쉽다.
9.3 보간의 자연스러움
이중 쿼터니언 보간이 강체 변환의 매끄러운 보간을 제공한다. 궤적 생성에서 유용하다.
9.4 스크류 운동의 직접 표현
각 관절의 운동이 스크류 축으로 표현되며, 이는 이중 쿼터니언과 자연스럽게 대응한다.
9.5 최적화 변수의 수
이중 쿼터니언의 8 매개변수는 자유도 6의 SE(3)을 매개화한다. 동차 변환 행렬(16 매개변수)보다 작다.
10. 이중 쿼터니언 기구학의 한계
10.1 점 변환의 복잡성
점 변환이 샌드위치 곱을 요구하므로, 행렬-벡터 곱보다 복잡하다. 점군 변환 등에서 단점이 될 수 있다.
10.2 학습 곡선
이중 쿼터니언의 추상적 개념이 학습을 어렵게 한다. 대부분의 로봇 공학 교재가 동차 변환 행렬을 사용한다.
10.3 라이브러리 지원
많은 로봇 공학 라이브러리(MoveIt, OMPL, Pinocchio 등)가 동차 변환 행렬 또는 쿼터니언 + 병진 벡터 형태를 사용한다. 이중 쿼터니언의 직접적 지원이 제한적이다.
10.4 계산 이점의 제한
최적화된 동차 변환 행렬 구현이 이중 쿼터니언과 비슷한 성능을 제공할 수 있다. 실제 성능 이점이 크지 않을 수 있다.
11. 이중 쿼터니언 기반 동역학
이중 쿼터니언은 기구학뿐만 아니라 동역학에도 적용될 수 있다.
11.1 트위스트와 렌치
트위스트(강체 속도)와 렌치(일반화된 힘)는 \mathfrak{se}(3)와 그 쌍대 공간의 원소이다. 이중 쿼터니언의 리 대수가 \mathfrak{se}(3)이므로, 동역학 분석에 직접 활용된다.
11.2 Lagrangian 동역학
이중 쿼터니언 기반 Lagrangian 동역학이 개발되어 있으나, 전통적 접근보다 복잡할 수 있다.
12. 응용 사례
12.1 매니퓰레이터 제어
일부 고급 매니퓰레이터 제어 알고리즘이 이중 쿼터니언을 사용한다. 특히 자세 제어와 임피던스 제어에서 이중 쿼터니언 오차가 활용된다.
12.2 궤적 생성
이중 쿼터니언 스플라인을 사용한 궤적 생성이 매끄러운 강체 변환 경로를 만든다.
12.3 손-눈 캘리브레이션
Daniilidis(1999)의 유명한 논문은 이중 쿼터니언을 사용한 손-눈 캘리브레이션 알고리즘을 제시한다. 이는 회전과 병진의 분리 없이 동시 최적화를 가능하게 한다.
12.4 시각 SLAM
일부 시각 SLAM 시스템이 카메라 자세를 이중 쿼터니언으로 표현한다. 매끄러운 궤적 최적화에 유용하다.
12.5 강체 시뮬레이션
강체 동역학 시뮬레이션에서 이중 쿼터니언이 사용될 수 있다. 수치 안정성이 장점이다.
13. 소프트웨어 구현
이중 쿼터니언 기구학의 소프트웨어 구현은 다음의 도구를 활용한다.
13.1 C++ 라이브러리
- Eigen: 이중 쿼터니언 확장이 있음
- Sophus: SE(3)을 다루며, 이중 쿼터니언과 관련됨
- DQ Robotics: 이중 쿼터니언 기반 로봇 라이브러리
13.2 Python
- numpy/scipy: 직접 구현 필요
- DQ Robotics Python: Python 인터페이스
14. DQ Robotics 라이브러리
DQ Robotics는 이중 쿼터니언 기반 로봇 공학을 위한 라이브러리이다. Matlab, C++, Python 인터페이스를 제공하며, 다음의 기능을 포함한다.
- 이중 쿼터니언 기본 연산
- 매니퓰레이터 기구학 (DH 매개변수로부터)
- 자코비안 계산
- 제어 알고리즘
- 시각화 도구
이 라이브러리는 이중 쿼터니언 기반 로봇 공학 연구에 기여해 왔으며, 학술적으로 널리 사용된다.
15. 결론
이중 쿼터니언 기반 기구학 모델링은 동차 변환 행렬의 대안으로, 회전과 병진을 통일적으로 다룬다. 매끄러운 보간, 수치 안정성, 통일된 최적화 변수 등의 장점이 있지만, 학습 곡선과 라이브러리 지원의 한계가 있다. 특정 응용(손-눈 캘리브레이션, 스크류 운동 분석 등)에서는 이중 쿼터니언이 우아한 해를 제공하지만, 대부분의 실용적 매니퓰레이터 응용에서는 동차 변환 행렬이 여전히 표준이다.
16. 참고 문헌
- Daniilidis, K. (1999). “Hand-Eye Calibration Using Dual Quaternions.” International Journal of Robotics Research, 18(3), 286–298.
- Adorno, B. V. (2017). Robot Kinematic Modeling and Control Based on Dual Quaternion Algebra — Part I: Fundamentals. Preprint.
- Selig, J. M. (2005). Geometric Fundamentals of Robotics (2nd ed.). Springer.
- McCarthy, J. M. (1990). Introduction to Theoretical Kinematics. MIT Press.
- Figueredo, L. F., Adorno, B. V., Ishihara, J. Y., & Borges, G. A. (2013). “Robust Kinematic Control of Manipulator Robots Using Dual Quaternion Representation.” IEEE ICRA, 1949–1955.
version: 1.0