9.42 3차원 동차 변환 행렬의 구조
1. 동차 변환 행렬의 정의
3차원 공간의 강체 변환(rigid body transformation)은 회전과 병진의 조합으로 기술된다. 유클리드 좌표에서는
\mathbf{p}' = \mathbf{R}\mathbf{p} + \mathbf{t}
의 아핀 형태로 표현되나, 동차 좌표를 사용하면 단일한 4 \times 4 행렬 곱으로 통합된다.
\mathbf{T} = \begin{bmatrix}\mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1\end{bmatrix} \in \mathbb{R}^{4 \times 4}
여기서 \mathbf{R} \in SO(3)은 3 \times 3 회전 행렬, \mathbf{t} \in \mathbb{R}^3는 병진 벡터, \mathbf{0} = (0, 0, 0)^T이다. 이 행렬을 **동차 변환 행렬(homogeneous transformation matrix)**이라 한다.
2. 블록 구조의 자세한 전개
4 \times 4 행렬의 구조를 원소별로 표현하면 다음과 같다.
\mathbf{T} = \begin{bmatrix} r_{11} & r_{12} & r_{13} & t_x \\ r_{21} & r_{22} & r_{23} & t_y \\ r_{31} & r_{32} & r_{33} & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix}
2.1 좌상단 3 \times 3 블록
회전 부분 \mathbf{R}을 담는 부분이다. 이 블록은 특수 직교군 SO(3)의 원소이며, 정규 직교성과 \det = +1을 만족한다.
2.2 우상단 3 \times 1 블록
병진 벡터 \mathbf{t} = (t_x, t_y, t_z)^T를 담는 부분이다. 이는 원점이 변환 후 어디로 옮겨지는지를 나타낸다.
2.3 하단 1 \times 4 행
(0, 0, 0, 1)로 고정된 행이며, 행렬이 강체 변환 형태를 유지하도록 보장한다. 이 행은 변환에 관여하지 않지만 행렬의 차원과 대수적 구조를 완성한다.
3. 변환의 적용
3.1 점의 변환
유클리드 점 \mathbf{p} = (x, y, z)^T를 동차 형태로 (x, y, z, 1)^T로 표현하고 \mathbf{T}를 곱한다.
\mathbf{T}\begin{bmatrix}\mathbf{p} \\ 1\end{bmatrix} = \begin{bmatrix}\mathbf{R}\mathbf{p} + \mathbf{t} \\ 1\end{bmatrix}
결과 벡터의 네 번째 성분이 1로 유지되며, 첫 세 성분이 변환된 점의 유클리드 좌표이다.
3.2 방향 벡터의 변환
방향 벡터 \mathbf{v} = (v_x, v_y, v_z)^T를 동차 형태로 (v_x, v_y, v_z, 0)^T로 표현한다.
\mathbf{T}\begin{bmatrix}\mathbf{v} \\ 0\end{bmatrix} = \begin{bmatrix}\mathbf{R}\mathbf{v} \\ 0\end{bmatrix}
네 번째 성분이 0이므로 병진 \mathbf{t}의 기여가 사라지고, 방향은 회전에 의해서만 변환된다.
4. 자유도
4.1 회전 부분의 자유도
회전 행렬 \mathbf{R} \in SO(3)은 9개의 원소를 가지나 정규 직교 제약에 의해 자유도가 3이다.
4.2 병진 부분의 자유도
병진 벡터 \mathbf{t}는 3개의 독립 성분을 가진다.
4.3 전체 자유도
동차 변환 행렬은 총 6자유도를 가진다.
\dim(SE(3)) = \dim(SO(3)) + \dim(\mathbb{R}^3) = 3 + 3 = 6
이는 3차원 강체 변환의 자연스러운 자유도 수와 일치한다.
5. 합성: 행렬 곱
두 동차 변환의 합성은 행렬 곱이다.
\mathbf{T}_{1,3} = \mathbf{T}_{2,3}\mathbf{T}_{1,2}
여기서 \mathbf{T}_{i,j}는 좌표계 \{i\}에서 \{j\}로의 변환을 나타낸다. 행렬 곱을 전개하면
\begin{bmatrix}\mathbf{R}_2 & \mathbf{t}_2 \\ \mathbf{0}^T & 1\end{bmatrix}\begin{bmatrix}\mathbf{R}_1 & \mathbf{t}_1 \\ \mathbf{0}^T & 1\end{bmatrix} = \begin{bmatrix}\mathbf{R}_2\mathbf{R}_1 & \mathbf{R}_2\mathbf{t}_1 + \mathbf{t}_2 \\ \mathbf{0}^T & 1\end{bmatrix}
가 되며, 이는 다음의 블록 규칙을 제공한다.
- 합성된 회전: \mathbf{R}_2\mathbf{R}_1
- 합성된 병진: \mathbf{R}_2\mathbf{t}_1 + \mathbf{t}_2
6. 역변환
동차 변환 행렬의 역은 다음과 같이 블록 형태로 표현된다.
\mathbf{T}^{-1} = \begin{bmatrix}\mathbf{R}^T & -\mathbf{R}^T\mathbf{t} \\ \mathbf{0}^T & 1\end{bmatrix}
이는 일반 행렬 역을 계산하지 않고 회전 부분의 전치(\mathbf{R}^T = \mathbf{R}^{-1})와 병진의 간단한 변환으로 얻어진다. 역변환의 기하학적 의미는 다음과 같다.
- 회전 역: 원래 회전의 반대 방향 회전
- 병진 역: 원점을 원래 위치로 되돌리되, 새 좌표계에서 표현
일반 4 \times 4 역행렬 계산이 O(n^3)의 비용을 요구하는 반면, 동차 변환 행렬의 역은 상수 시간의 간단한 연산으로 구할 수 있다.
7. 구조적 성질의 확인
7.1 블록 역
\mathbf{T}\mathbf{T}^{-1} = \mathbf{I}_4를 블록 단위로 확인한다.
\begin{bmatrix}\mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1\end{bmatrix}\begin{bmatrix}\mathbf{R}^T & -\mathbf{R}^T\mathbf{t} \\ \mathbf{0}^T & 1\end{bmatrix} = \begin{bmatrix}\mathbf{R}\mathbf{R}^T & -\mathbf{R}\mathbf{R}^T\mathbf{t} + \mathbf{t} \\ \mathbf{0}^T & 1\end{bmatrix} = \begin{bmatrix}\mathbf{I}_3 & \mathbf{0} \\ \mathbf{0}^T & 1\end{bmatrix} = \mathbf{I}_4
7.2 행렬식
\det(\mathbf{T}) = \det(\mathbf{R}) = 1
이는 블록 삼각 행렬의 행렬식이 대각 블록 행렬식의 곱이라는 사실과 \det(\mathbf{R}) = 1로부터 직접 얻어진다.
8. SE(3) 특수 유클리드군
동차 변환 행렬의 집합은 행렬 곱 연산에 관해 군을 이루며, 이를 **특수 유클리드군 SE(3)**이라 한다.
SE(3) = \left\{\begin{bmatrix}\mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1\end{bmatrix} : \mathbf{R} \in SO(3), \mathbf{t} \in \mathbb{R}^3\right\}
SE(3)은 SO(3)과 \mathbb{R}^3의 반직접 곱(semidirect product)으로 표현될 수 있다.
SE(3) = SO(3) \ltimes \mathbb{R}^3
이는 회전 부분이 독립적인 SO(3) 구조이고, 병진 부분이 회전에 의존적으로 변환되는 구조를 반영한다.
9. 단순 변환의 동차 변환 행렬
9.1 순수 병진
\mathbf{T}_{\text{trans}}(\mathbf{t}) = \begin{bmatrix}\mathbf{I}_3 & \mathbf{t} \\ \mathbf{0}^T & 1\end{bmatrix}
9.2 순수 회전 (원점 고정)
\mathbf{T}_{\text{rot}}(\mathbf{R}) = \begin{bmatrix}\mathbf{R} & \mathbf{0} \\ \mathbf{0}^T & 1\end{bmatrix}
9.3 기본 축 회전
x, y, z축 주위의 회전에 대응하는 동차 변환 행렬은 좌상단 3 \times 3 블록에 해당 기본 회전 행렬을 배치한 형태이다.
10. 병진과 회전의 분해
동차 변환 행렬은 순수 병진과 순수 회전의 곱으로 분해될 수 있다.
\mathbf{T} = \mathbf{T}_{\text{trans}}(\mathbf{t}) \cdot \mathbf{T}_{\text{rot}}(\mathbf{R})
순서에 주의가 필요하다. 이 분해는 “먼저 회전하고 병진하는” 표준 관례에 해당한다. 반대 순서로 분해하면 병진 벡터가 달라진다.
\mathbf{T} = \mathbf{T}_{\text{rot}}(\mathbf{R}) \cdot \mathbf{T}_{\text{trans}}(\mathbf{R}^T\mathbf{t})
11. 수치 저장의 효율성
11.1 메모리 사용
4 \times 4 동차 변환 행렬은 16개의 실수를 저장한다. 그러나 실제로 독립적인 정보는 회전 행렬(9개)과 병진 벡터(3개)이므로 12개이며, 마지막 행 (0, 0, 0, 1)은 상수이다. 메모리 최적화를 위해 3 \times 4 형태로 저장하기도 한다.
11.2 계산 효율성
동차 변환의 합성과 역은 일반 4 \times 4 행렬 연산보다 훨씬 효율적으로 구현할 수 있다. 마지막 행이 고정되어 있음을 이용한 특수 루틴이 표준적으로 사용된다.
12. 참고 문헌
- Siciliano, B., Sciavicco, L., Villani, L., & Oriolo, G. (2009). Robotics: Modelling, Planning and Control. Springer.
- Craig, J. J. (2018). Introduction to Robotics: Mechanics and Control (4th ed.). Pearson.
- Spong, M. W., Hutchinson, S., & Vidyasagar, M. (2020). Robot Modeling and Control (2nd ed.). Wiley.
- Murray, R. M., Li, Z., & Sastry, S. S. (1994). A Mathematical Introduction to Robotic Manipulation. CRC Press.
- Lynch, K. M., & Park, F. C. (2017). Modern Robotics: Mechanics, Planning, and Control. Cambridge University Press.
version: 1.0