10.6 쿼터니언의 곱셈과 비교환성
1. 쿼터니언 곱셈의 정의
두 쿼터니언 \mathbf{q}_1 = q_{1,w} + q_{1,x}i + q_{1,y}j + q_{1,z}k와 \mathbf{q}_2 = q_{2,w} + q_{2,x}i + q_{2,y}j + q_{2,z}k의 곱은 해밀턴의 곱셈 규칙 i^2 = j^2 = k^2 = ijk = -1을 사용하여 분배 법칙을 적용한 결과이다.
곱을 전개하여 정리하면 다음과 같다.
\mathbf{q}_1\mathbf{q}_2 = (q_{1,w}q_{2,w} - q_{1,x}q_{2,x} - q_{1,y}q_{2,y} - q_{1,z}q_{2,z})
$$
- (q_{1,w}q_{2,x} + q_{1,x}q_{2,w} + q_{1,y}q_{2,z} - q_{1,z}q_{2,y})i
- (q_{1,w}q_{2,y} - q_{1,x}q_{2,z} + q_{1,y}q_{2,w} + q_{1,z}q_{2,x})j
- (q_{1,w}q_{2,z} + q_{1,x}q_{2,y} - q_{1,y}q_{2,x} + q_{1,z}q_{2,w})k
$$
2. 스칼라-벡터 표기를 이용한 표현
쿼터니언을 스칼라 부분과 벡터 부분으로 분해하면 곱이 더 간결하게 표현된다.
\mathbf{q}_1\mathbf{q}_2 = (q_{1,w}q_{2,w} - \mathbf{q}_{1,v}\cdot\mathbf{q}_{2,v}, q_{1,w}\mathbf{q}_{2,v} + q_{2,w}\mathbf{q}_{1,v} + \mathbf{q}_{1,v}\times\mathbf{q}_{2,v})
2.1 스칼라 부분
\mathrm{Sc}(\mathbf{q}_1\mathbf{q}_2) = q_{1,w}q_{2,w} - \mathbf{q}_{1,v}\cdot\mathbf{q}_{2,v}
2.2 벡터 부분
\mathrm{Vec}(\mathbf{q}_1\mathbf{q}_2) = q_{1,w}\mathbf{q}_{2,v} + q_{2,w}\mathbf{q}_{1,v} + \mathbf{q}_{1,v}\times\mathbf{q}_{2,v}
3. 곱의 비가환성
쿼터니언 곱은 일반적으로 가환적이지 않다.
\mathbf{q}_1\mathbf{q}_2 \neq \mathbf{q}_2\mathbf{q}_1 \quad \text{(일반적으로)}
3.1 비가환성의 원인
비가환성은 외적 \mathbf{q}_{1,v}\times\mathbf{q}_{2,v}가 비가환적(\mathbf{a}\times\mathbf{b} = -\mathbf{b}\times\mathbf{a})이기 때문이다. 곱의 벡터 부분에 외적이 포함되므로 두 쿼터니언의 순서를 바꾸면 결과의 벡터 부분이 달라진다.
3.2 두 곱의 비교
\mathbf{q}_1\mathbf{q}_2와 \mathbf{q}_2\mathbf{q}_1의 차이는
\mathbf{q}_1\mathbf{q}_2 - \mathbf{q}_2\mathbf{q}_1 = (0, 2\mathbf{q}_{1,v}\times\mathbf{q}_{2,v})
스칼라 부분과 처음 두 벡터 항은 가환적이지만, 외적 항만이 비가환성을 만든다. 차이가 외적의 두 배이므로 두 벡터가 평행하면 곱이 가환한다.
4. 가환성이 성립하는 특수한 경우
다음의 경우에 두 쿼터니언이 가환한다.
4.1 한쪽이 순수 스칼라
한쪽 쿼터니언이 순수 스칼라(벡터 부분이 0)이면 가환한다.
(q_w, \mathbf{0})\mathbf{q} = \mathbf{q}(q_w, \mathbf{0}) = q_w\mathbf{q}
이는 단순히 쿼터니언에 스칼라를 곱하는 것과 같다.
4.2 평행한 벡터 부분
두 쿼터니언의 벡터 부분이 평행이면(같은 방향 또는 반대 방향) 외적이 0이 되어 가환한다.
\mathbf{q}_{1,v} = \alpha\mathbf{q}_{2,v} \quad \Rightarrow \quad \mathbf{q}_{1,v}\times\mathbf{q}_{2,v} = \mathbf{0}
이는 같은 축 주위의 두 회전이 가환한다는 사실의 표현이다.
4.3 쿼터니언과 자신의 거듭제곱
쿼터니언은 자신과 가환한다.
\mathbf{q}\mathbf{q} = \mathbf{q}^2
4.4 항등 쿼터니언
항등 쿼터니언 1 = (1, \mathbf{0})은 모든 쿼터니언과 가환한다.
1 \cdot \mathbf{q} = \mathbf{q} \cdot 1 = \mathbf{q}
5. 곱셈의 대수적 성질
쿼터니언 곱은 다음의 성질을 만족한다.
5.1 결합 법칙
(\mathbf{q}_1\mathbf{q}_2)\mathbf{q}_3 = \mathbf{q}_1(\mathbf{q}_2\mathbf{q}_3)
쿼터니언 곱은 결합적이다. 이는 행렬 곱과 같다.
5.2 분배 법칙
\mathbf{q}_1(\mathbf{q}_2 + \mathbf{q}_3) = \mathbf{q}_1\mathbf{q}_2 + \mathbf{q}_1\mathbf{q}_3
(\mathbf{q}_1 + \mathbf{q}_2)\mathbf{q}_3 = \mathbf{q}_1\mathbf{q}_3 + \mathbf{q}_2\mathbf{q}_3
좌측과 우측 분배 법칙이 모두 성립한다.
5.3 항등원
1 = (1, \mathbf{0})이 항등원이다.
1 \cdot \mathbf{q} = \mathbf{q} \cdot 1 = \mathbf{q}
5.4 역원
영이 아닌 모든 쿼터니언에 역원이 존재한다.
\mathbf{q}^{-1} = \frac{\mathbf{q}^*}{\lVert \mathbf{q} \rVert^2}
이러한 성질로 인해 쿼터니언은 디비전 링(division ring) 또는 스큐 필드(skew field)를 형성한다.
6. 노름의 곱셈성
쿼터니언의 노름은 곱에 대해 보존된다.
\lVert \mathbf{q}_1\mathbf{q}_2 \rVert = \lVert \mathbf{q}_1 \rVert \cdot \lVert \mathbf{q}_2 \rVert
이 성질이 단위 쿼터니언이 곱에 대해 닫혀 있음을 보장한다. 두 단위 쿼터니언의 곱도 단위 쿼터니언이다.
이 성질은 노름 대수(normed algebra)의 정의 조건이며, 쿼터니언이 노름 대수임을 의미한다.
7. 곱의 행렬 표현
쿼터니언 곱은 행렬 곱으로 표현할 수 있다. 두 가지 형태가 가능하다.
7.1 좌측 곱 행렬
\mathbf{q}_1\mathbf{q}_2를 \mathbf{q}_2에 작용하는 행렬로 표현한다.
\mathbf{q}_1\mathbf{q}_2 = \mathbf{L}(\mathbf{q}_1)\mathbf{q}_2
여기서
\mathbf{L}(\mathbf{q}_1) = \begin{bmatrix}q_{1,w} & -q_{1,x} & -q_{1,y} & -q_{1,z} \\ q_{1,x} & q_{1,w} & -q_{1,z} & q_{1,y} \\ q_{1,y} & q_{1,z} & q_{1,w} & -q_{1,x} \\ q_{1,z} & -q_{1,y} & q_{1,x} & q_{1,w}\end{bmatrix}
이 행렬에 \mathbf{q}_2의 4-튜플 표현을 곱하면 \mathbf{q}_1\mathbf{q}_2의 4-튜플이 산출된다.
7.2 우측 곱 행렬
\mathbf{q}_1\mathbf{q}_2를 \mathbf{q}_1에 작용하는 행렬로 표현한다.
\mathbf{q}_1\mathbf{q}_2 = \mathbf{R}(\mathbf{q}_2)\mathbf{q}_1
여기서
\mathbf{R}(\mathbf{q}_2) = \begin{bmatrix}q_{2,w} & -q_{2,x} & -q_{2,y} & -q_{2,z} \\ q_{2,x} & q_{2,w} & q_{2,z} & -q_{2,y} \\ q_{2,y} & -q_{2,z} & q_{2,w} & q_{2,x} \\ q_{2,z} & q_{2,y} & -q_{2,x} & q_{2,w}\end{bmatrix}
좌측과 우측 곱 행렬이 다르므로(블록의 위치가 다름) 비가환성이 행렬 형태에서도 명확하다.
7.3 행렬 표현의 활용
행렬 표현은 다음과 같은 이점이 있다.
- 선형 대수와의 통합: 쿼터니언 곱이 행렬 곱이므로 선형 대수의 도구가 직접 적용된다.
- 자코비안 계산: 쿼터니언 곱에 대한 미분이 행렬 형태에서 더 쉽다.
- 선형 계의 해법: 쿼터니언을 포함하는 선형 방정식을 표준 행렬 방정식으로 변환할 수 있다.
8. 곱의 성능
8.1 직접 계산
쿼터니언 곱을 직접 계산하면 16 곱셈과 12 덧셈이 필요하다. 이는 회전 행렬 곱(27 곱셈, 18 덧셈)보다 효율적이다.
8.2 최적화
곱의 일부 항을 사전 계산하면 추가 최적화가 가능하다. 또한 SIMD 명령으로 가속될 수 있다.
8.3 회전 행렬 곱과의 비교
같은 회전을 표현할 때 쿼터니언 곱이 회전 행렬 곱보다 빠르다는 점이 쿼터니언의 중요한 장점 중 하나이다.
9. 비가환성과 회전 합성
쿼터니언 곱의 비가환성은 회전 합성의 비가환성을 그대로 반영한다. 두 회전을 차례로 적용할 때 순서가 결과에 영향을 준다.
예를 들어 x축 주위 90도 회전 후 y축 주위 90도 회전과, 반대 순서의 회전이 다른 결과를 만든다. 이는 매니퓰레이터의 자세 명령, 자세 추정, 자세 제어에서 중요하다.
10. 곱의 켤레
곱의 켤레는 켤레의 곱의 역순이다.
(\mathbf{q}_1\mathbf{q}_2)^* = \mathbf{q}_2^*\mathbf{q}_1^*
이는 행렬 전치의 곱 규칙 (\mathbf{A}\mathbf{B})^T = \mathbf{B}^T\mathbf{A}^T와 같다. 비가환적 대수에서 자주 나타나는 패턴이다.
11. 곱의 역원
곱의 역원도 역원의 곱의 역순이다.
(\mathbf{q}_1\mathbf{q}_2)^{-1} = \mathbf{q}_2^{-1}\mathbf{q}_1^{-1}
이는 군 이론의 일반적 성질이다.
12. 곱셈의 응용
12.1 회전 합성
두 회전을 순차적으로 적용한 합성 회전이 두 단위 쿼터니언의 곱이다. 이것이 쿼터니언이 회전 표현에 사용되는 가장 기본적인 이유이다.
12.2 벡터 회전
3차원 벡터를 단위 쿼터니언으로 회전시키는 방법은 다음과 같다.
\mathbf{v}' = \mathbf{q}\mathbf{v}\mathbf{q}^*
여기서 \mathbf{v}는 순수 벡터 쿼터니언으로 표현된 벡터이다. 이 식은 두 번의 쿼터니언 곱을 포함한다.
12.3 자세 추정 갱신
자세 추정에서 새로운 자세는 이전 자세에 작은 회전을 곱하여 갱신된다.
\mathbf{q}_{k+1} = \mathbf{q}_k\Delta\mathbf{q}
또는
\mathbf{q}_{k+1} = \Delta\mathbf{q}\,\mathbf{q}_k
좌측 곱과 우측 곱 중 어느 것을 사용하는지는 좌표계 선택(공간 좌표계 또는 본체 좌표계)에 따른다.
12.4 자세 오차
두 자세의 오차는 한 자세의 역과 다른 자세의 곱으로 정의된다.
\Delta\mathbf{q} = \mathbf{q}_1^*\mathbf{q}_2
이는 자세 추정 알고리즘과 자세 제어에서 사용된다.
12.5 외부 캘리브레이션
손-눈 캘리브레이션, LiDAR-카메라 캘리브레이션 등에서 쿼터니언 곱을 포함하는 방정식이 등장한다.
13. 곱셈 표현의 일관성
쿼터니언 곱셈 표기에서 주의해야 할 사항은 곱의 순서이다. 수학 교재에서 \mathbf{q}_1\mathbf{q}_2가 “먼저 \mathbf{q}_1 그 다음 \mathbf{q}_2“를 의미하는 것이 아닌 경우가 많다. 회전 합성 관례에 따라 의미가 다를 수 있다.
회전 합성에서 일반적인 관례는 다음과 같다.
- 행렬 곱의 관례를 따르면 \mathbf{q}_2\mathbf{q}_1이 “먼저 \mathbf{q}_1 그 다음 \mathbf{q}_2“를 의미한다.
- 일부 표기에서는 \mathbf{q}_1 * \mathbf{q}_2와 같이 별도 기호를 사용한다.
코드 구현에서는 함수 이름과 매개변수의 순서로 명확히 지정한다.
14. 참고 문헌
- Hamilton, W. R. (1844). “On Quaternions; or on a New System of Imaginaries in Algebra.” Philosophical Magazine, Vol. 25, 489–495.
- Kuipers, J. B. (1999). Quaternions and Rotation Sequences. Princeton University Press.
- Sola, J. (2017). “Quaternion Kinematics for the Error-State Kalman Filter.” arXiv:1711.02508.
- Conway, J. H., & Smith, D. A. (2003). On Quaternions and Octonions. A K Peters.
- Diebel, J. (2006). “Representing Attitude: Euler Angles, Unit Quaternions, and Rotation Vectors.” Stanford University Technical Report.
version: 1.0