본문 바로가기

Fundamental

강체 변환 (Rigid Body Transformation) 개념 정리

내용을 보강하여 3D Rigid Body Transformation 개념 정리 포스트에 업로드하였습니다.

1 Introduction

본 포스트는 강체 변환 (Rigid Body Transformation)에 대해 다룬다. 강체(Rigid Body)란 이론적으로 무한대의 강성을 가지는 물체를 말한다. 따라서 강체에 힘을 가해도 변형이 되지 않으며 무게중심으로 지정되는 하나의 점에 의해 운동이 결정되는 특징이 있다. 필자가 공부하고 있는 Simultaneous Localization and Mapping (SLAM)에서 움직이는 로봇은 형태가 일정하다고 가정하므로 결국 강체 변환 (Rigid Body Transformation)을 사용하여 수학적으로 표현한다.

해당 포스트는 강체 변환에 대해 공부 목적으로 작성한 포스트이고 이미 잘 정리된 여러 블로그 포스트들의 내용을 참고하여 작성하였다.

 

2 Rigid Body Transformation

이전 포스트에서는 회전행렬을 통한 강체의 순수한 회전에 대해 다뤘다. 하지만 3차원 상의 물체는 회전과 이동을 모두 표현할 수 있어야하므로 회전행렬만으로는 부족하다. 따라서 물체의 회전과 이동을 한 번에 표현하는 변환행렬 (homogeneous transformation matrix)를 아래와 같이 정의한다.

위와 같이 고정좌표계 $\{S\}$ 를 기준으로 바위에 붙어있는 이동프레임 $\{B\}$ 가 있다고 가정해보자. 이 때 이동프레임 $\{B\}$ 원점의 좌표 및 축의 회전 각도는 다음과 같이 표현할 수 있다.
\begin{equation}
\begin{aligned}
P =\left[\begin{array}{c}p_{1}\\p_{2}\\p_{3}\end{array}\right], R =\left[\begin{array}{ccc}r_{11}&r_{12}&r_{13}\\r_{21}&r_{22}&r_{23}\\r_{31}&r_{32}&r_{33}\end{array}\right]
\end{aligned}
\end{equation}


이를 통해 $\{S\}$ 좌표계를 기준으로 $\{B\}$ 의 원점과 축의 각도를 표현하면 아래와 같다.
\begin{equation}
\begin{aligned}
\vec{P}=p_1\hat{X}+p_2\hat{Y}+p_3\hat{Z}
\\ \hat{x}=r_{11}\hat{X}+r_{21}\hat{Y}+r_{31}\hat{Z}
\\ \hat{y}=r_{12}\hat{X}+r_{22}\hat{Y}+r_{32}\hat{Z}
\\ \hat{z}=r_{13}\hat{X}+r_{23}\hat{Y}+r_{33}\hat{Z}
\end{aligned}
\end{equation}


이를 아래와 같은 변환행렬을 사용하면 믈체의 이동과 회전을 훨씬 더 간결하게 표현할 수 있다.
\begin{equation}
\begin{aligned}
& T = \left[\begin{array}{ccc|c} r_{11} & r_{12} & r_{13} & p_1 \\ r_{21} & r_{22} & r_{23} & p_2 \\ r_{31} & r_{32} & r_{33} & p_3 \\ \hline 0 & 0 & 0 & 1 \end{array}\right] = \left[\begin{array}{cc} R & P \\ 0 & 1 \end{array}\right] 
\end{aligned}
\end{equation}

\begin{equation}
\begin{aligned}
& \begin{bmatrix}
\hat{x}\\ 
\hat{y}\\ 
\hat{z}\\
1
\end{bmatrix}=
T
\begin{bmatrix}
\hat{X}\\ 
\hat{Y}\\ 
\hat{Z}\\1
\end{bmatrix}
\end{aligned}
\end{equation}


위와 같이 강체의 이동과 회전을 동시에 표현할 수 있는 행렬을 변환행렬 (homogeneous transfomration matrix)라고 한다. 보통 줄여서 homogeneous matrix 또는 transformation matrix라고 부른다.

이 때 변환행렬 $T$ 의 마지막 행은 항상 $\begin{bmatrix} 0 & 0 & 0 & 1 \end{bmatrix}$ 인데 이는 3차원 벡터 $\vec{v}=(x,y,z)$ 의 회전과 이동이 포함된 $R\vec{v}+p$ 를 하나의 간결한 행렬 곱만으로 표현할 수 없기 때문에 마지막 한 행을 추가한 것이다.
\begin{equation}
\begin{aligned}
& \left[\begin{array}{cc}R & p \end{array}\right]\left[\begin{array}{c}v \end{array}\right] = ? 
\end{aligned}
\end{equation}

\begin{equation}
\begin{aligned}
& \rightarrow \left[\begin{array}{cc}R & p \\ {\color{red}{\mathbf{0}_{3\times3}}} & {\color{red}{1}}\end{array}\right]\left[\begin{array}{c}v \\ {\color{red}{1}} \end{array}\right] = \left[\begin{array}{c} Rv+p \\ {\color{red}{1}} \end{array}\right]
\end{aligned}
\end{equation}

이와 같이 기존 3차원 벡터 $[\begin{array}{c}v \end{array}]$ 의 마지막 행에 1을 추가하여 4차원 벡터로 만든 형태 $[\begin{array}{c}v \\ 1 \end{array}]$ 를 homogeneous coordinate라고 부른다.

 

3 Properties of Transformation Matrix

1) 다음과 같은 연속적인 변환을 나타낼 때는 변환행렬의 곱셈을 통해 표현할 수 있다.

   \begin{equation}
   \begin{aligned}
   & ^{a}_{b}T^{b}_{c}T \ =\ ^{a}_{c}T  \quad \text{where,} ^{a}_{c}T = \ (^{a}_{c}R,\ ^{a}_{c}p)=\left[\begin{array}{cc} ^{a}_{c}R & ^{a}_{c}p \\ 0 & 1 \end{array}\right]
   \end{aligned}
   \end{equation}

2) $\{a\} \rightarrow \{b\}$ 로 변환한 다음 다시 $\{b\} \rightarrow \{a\}$ 로 변환하면 원래 $\{a\}$ frame이 된다. 즉, 변환하지 않은 것과 동일하다.



   \begin{equation}
   \begin{aligned}
   ^{a}_{b}T^{b}_{a}T = \mathbf{I}
   \end{aligned}
   \end{equation}


3) 변환행렬의 역행렬은 다음과 같다. 회전행렬은 $R^{-1}=R^{T}$ 이지만 변환행렬은 $T^{-1} \neq T^{T}$ 이다.


   \begin{equation}
   \begin{aligned}
   & ^{a}_{b}T = \left[\begin{array}{cc} ^{a}_{b}R & ^{a}_{b}p \\ 0 & 1 \end{array}\right] \\
   & ^{a}_{b}T^{-1} = \ ^{b}_{a}T = \left[\begin{array}{cc} ^{a}_{b}R^{T} & {\color{red}{-^{a}_{b}R^{T}\ ^{a}_{b}p}} \\ 0 & 1 \end{array}\right]
   \end{aligned}
   \end{equation}

4) $\{b\}$ frame에서 3차원 공간 상의 점 $v$ 를 표현하면 $\vec{v}_{b}$ 와 같고 이를 $\{a\}$ frame에서 $\vec{v}_{a}$ 로 표현하기 위해서는 아래와 같은 변환이 필요하다.



   \begin{equation}
   \begin{aligned}
   & \vec{v}_{a} = \ ^{a}_{b}R\vec{v}_{b} + \ ^{a}_{b}p \\
   & \vec{v}_{a} = \ ^{a}_{b}T\vec{v}_{b}
   \end{aligned}
   \end{equation}


5) frame 뿐만 아니라 특정 벡터를 회전 및 이동하는 연산자로써 변환행렬을 사용할 수 있다. 두 $\{a\}$  frame 위의 벡터 $\vec{v}_{1}, \vec{v}_{2}$ 의 변환관계는 다음과 같이 표현할 수 있다.


   \begin{equation}
   \begin{aligned}
   & \begin{bmatrix} x_{v_{2}}\\ y_{v_{2}}\\ z_{v_{2}}\\ 1 \end{bmatrix} = \begin{bmatrix} r_{11} & r_{13} & r_{13} & p_{x}\\  r_{21} & r_{22} & r_{23} & p_{y} \\  r_{31} & r_{32} & r_{33} & p_{z}\\  0 & 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} x_{v_{1}}\\  y_{v_{1}}\\  z_{v_{1}}\\ 1 \end{bmatrix} \\
   & \vec{v}_{2} = T\vec{v}_{1}
   \end{aligned}
   \end{equation}

 

4 SE(3) Group

이와 같이 강체의 이동과 회전에 관여하는 행렬을 따로 Group으로 묶을 수 있다. 변환행렬의 성질을 만족하는 모든 집합은 Special Euclidean Group (SE)에 속한다. 3차원 공간의 경우 SE(3)이다. SE(3) Group은 Lie Group에 속한다.

 

\begin{equation}
\begin{aligned}
SE(3) = \left \{ T = \begin{bmatrix} R & p \\  \mathbf{0}_{3\times3} & 1 \end{bmatrix} \in \mathbb{R}^{4\times4} \ | \ R \in SO(3), p \in \mathbb{R}^{3}  \right \} 
\end{aligned}
\end{equation}

임의의 변환행렬 $T_{1}, T_{2} \in SE(3)$ 가 존재할 때 이들은 덧셈에 닫혀있지 않고 곱셈에만 닫혀있는 특징이 있다.
\begin{equation}
\begin{aligned}
& T_{1} + T_{2} \notin SE(3) \\
& T_{1}T_{2} \in SE(3)
\end{aligned}
\end{equation}


임의의 변환행렬 $T_{1}, T_{2}, T_{3} \in SE(3)$ 가 존재할 때 이들은 곱셈에 대한 결합법칙은 만족하지만 교환법칙은 만족하지 않는다.
\begin{equation}
\begin{aligned}
& (T_1 T_2) T_3 = T_1 (T_2 T_3) \\
& T_1 T_2 \neq T_2 T_1
\end{aligned}
\end{equation}