Lie Group and Lie Algebra
SLAM KR의 SLAM Online Study Season 1에서 Lie Group and Lie Algebra
를 듣고 정리한 포스팅입니다.
SLAM Online Study Season 1 - 링크
Intro
SLAM에서 Lie group과 Lie algebra의 변환이 필요한 이유?
SLAM은 회전과 이동이 포함된 Camera pose 값을 업데이트하며 최적의 값을 찾아야한다.
일반적으로 최적화 문제로 구성을 한 이후에 최적의 $R$을 풀고, $t$를 최소화해서 오류를 최소화하는 방식으로 접근
- 회전 행렬의 경우 행렬식이 1인 직교 행렬이라는 제약조건이 있기 때문에 최적화 복잡도 증가
- Lie군과 Lie대수의 변환 관계를 사용하게 되면 pose추정의 문제를 제약이 없는 최적화 문제로 전환해서 단순화하여 접근이 가능하기 때문에 사용하게 됨.
Lie group, Lie algebra 예시
- 3차원 회전행렬 : $SO(3)$
- 3차원 변환행렬 : $SE(3)$
$SO(3)={ R \in \mathbb{R}^{3 \times 3} | RR^T=I, det(R)=1 }$
$SE(3)={ T=\left[ \begin{matrix} R & t
0^{T} & 1
\end{matrix} \right] \in \mathbb{R}^{4 \times 4} \ | \ R \in SO(3), \ t\in \mathbb{R}^{3} }$
-
회전 행렬 $R_1, \ R_2$가 존재할 때 행렬의 덧셈의 정의를 따르게 되면 이는 더 이상 회전행렬이 아님
$R_1+R_2 \notin SO(3)$ -
곱셈 연산은 회전 행렬과 변환 행렬의 합성에 해당하며, 두 회전 행렬의 곱은 두 개의 회전이 연속적으로 이루어짐을 의미.
$R_1R_2 \in SO(3)$
$T_1T_2 \in SE(3)$
이러한 작업 집합 하나에 대해서만 군(Group) 이라고 부른다.
Lie Group
Lie군은 집합과 연산으로 이루어진 대수적 구조.
어떠한 집합을 A라 하고, 어떠한 연산을 $ \cdot $ 으로 표시했을 때,
군은 $G = (A, \cdot)$ 으로 나타낸다.
Lie Group의 조건
-
Closure(닫힘성)
$\forall a_1,a_2 \in A, \ \ a_1 \cdot a_2 \in A$
$R_z(\theta_1)R_z(\theta_2) \in Lie$ -
Associativity(결합성)
$\forall a_1,a_2,a_3 \in A, \ \ (a_1 \cdot a_2)\cdot a_3=a_1 \cdot (a_2\cdot a_3)$
$[R_z(\theta_1)R_z(\theta_2)]R_z(\theta_3)=R_z(\theta_1)[R_z(\theta_2)R_z(\theta_3)]$ -
Identity element(항등성)
$\exists a_0 \in A, \ \ \forall a \in A, \ \ a_0 \cdot a = a \cdot a_0 = a$
$R_z(\theta) \cdot I = I \cdot R_z(\theta)=R_z(\theta)$ -
Inverse(역)
$\forall a \in A, \ \ \exists a^{-1} \in A, \ \ s.t. \ \ a \cdot a^{-1}=a_0$
$R_z(\theta)R_z^{-1}(\theta) = I$
Lie Group의 유도
- 임의의 회전 행렬에 대해 다음을 만족.
\(RR^T=I\)
-
$R$을 시간에 따라 지속적으로 변환하는 카메라 회전으로,
시간의 함수 $R(t)$로 표기
\(R(t)R(t)^T=I\) -
방정식의 양측에서 시간에 대해 미분을 수행(곱 미분)
$ \dot{R(t)}R(t)^{T} + R(t)\dot{R(t)^{T}}=0 $
$ \dot{R(t)}R(t)^{T} = - (\dot{R(t)}R(t)^{T})^T $
$ - (\dot{R(t)}R(t)^{T})^T = -(R(t)\dot{R(t)^{T}}) $
$A^T = -A$ 만족
- $ \dot{R(t)}R(t)^{T} $ 는 반대칭행렬임을 알 수 있다.
$\wedge$ 연산자로 벡터를 반대칭행렬로 변경함.(hat 연산)
이 말은 어떤 반대칭행렬에서도 그에 대행하는 벡터를 찾을 수 있다는 이야기.
$ \dot{R(t)}R(t)^{T} $ 가 반대칭행렬이기에 이에 상응하는 3차원 벡터 $\phi(t)^{\wedge} \in \mathbb{R}^3$ 를 찾을 수 있다.
\(\dot{R(t)}R(t)^{T} = \phi(t)^{\wedge}\)
이후 방정식의 양쪽에 $R(t)$ 를 곱한다.
$R$은 직교 행렬이기 때문에 다음과 같다.
($RR^T=I$)
시간 $t_0 = 0$ 이라고 할 때, 회전 행렬 $R(0)=I$ 로 정의할 수 있다.
그리고 $R(t)$는 $t=0$ 주변의 1차 테일러 전개로 근사가 가능하다.
또한, Phi(t)가 시간에 의존하지 않으면 아래와 같은 식으로 적을 수 있다.(선형미분방정식으로 변환하기 위해서)
위 공식은 $R$에 대한 미분 방정식이며, 선형미분방정식의 해는 아래와 같다.
\[R(t)=exp(\phi_{0}^{\wedge}t)\]해가 나왔으며, 이는 시간의존성 x
- 결과적으로 $t=0$ 주위에서 회전행렬(이동까지 포함)은 $R(t)=exp(\phi_{0}^{\wedge}t)$ 를 통해 계산된다.
- 회전 행렬이 지수관계를 통해 또 다른 반대칭행렬 $\phi_{0}^{\wedge}t$ 와 관련이 있다는 것을 알 수 있다.
-
그렇다면 특정 순간에 $R$이 주어지면 $R$의 국부 미분 관계를 나타내는 $\phi$를 찾을 수 있음.
$R$에 해당하는 $\phi$는 무엇일까?
-> $\phi$ 가 곧 Lie 대수이다. -
벡터 $\phi$ 가 주어지면 행렬 $exp(\phi_{0}^{\wedge})$ 는 어떻게 계산되는가?
반대로 $R$이 주어질 때는 $\phi$ 를 계산하기 위해 반대의 연산이 가능한가?
-> Lie군과 Lie대수 사이의 지수/로그 매핑이다.
Lie Algebra
- 각 Lie군에는 상응하는 Lie대수가 있다.
- Lie대수는 Lie군의 지역적인 속성이다.
- Lie대수는 벡터 공간 $V$, 실수집합 $F$, 이원 연산 $[,]$(두 개의 항을 갖는 연산)으로 구성
- Lie대수의 조건. $(V,F,[,])$ 는 대수라고 불리고 $\mathscr{G}$ 라고 표시된다.
조건은 다음과 같다.
SO(3)
- SO(3)의 요소 표기법 : 3차원 벡터와 3x3 행렬로 표현 가능하다.
둘의 의미는 같으며 $\wedge$ 와 $\vee$ 를 이용하여 “벡터에서 행렬” 혹은 “행렬에서 벡터”로 변환 및 표기가 가능하다.
$
\begin{equation}
SO(3) = { \phi \in \mathbb{R}^3 \ | \ \Phi = \phi^{\wedge} \in \mathbb{R}^{3 \times 3} }
\end{equation}
$
$
\begin{equation}
\phi = (\phi_{1} \ \phi_{2} \ \phi_{3})^T \in \mathbb{R}^3
\end{equation}
$
$ \Phi = \phi^{\wedge} =
\begin{equation}
\begin{bmatrix}
0 & -\phi_{3} & \phi_{2} |
\phi_{3} & 0 & -\phi_{1} |
-\phi_{2} & \phi_{1} & 0 |
\end{bmatrix}
\in \mathbb{R}^{3 \times 3} \ \ \
\end{equation} $
교환 법칙은 성립되지 않는다.
(commutation raw)
$ \begin{equation} [\phi_{1}, \ \phi_{2}] = (\Phi_{1}\Phi_{2}-\Phi_{2}\Phi_{1})^{\vee} \end{equation} $
SE(3)
- SO(3)의 요소 표기법 : 6차원 벡터와 4x4 행렬로 표현 가능하다.
Translation과 rotation은 $\rho$ 와 $\phi$로 표시가능.
$\wedge$ 와 $\vee$ 를 이용하여 “벡터에서 행렬” 혹은 “행렬에서 벡터”로 변환 및 표기가 가능하다.
지수 및 로그 매핑
사실 이 부분이 가장 중요하다고 생각했고, 이에 대한 자세한 유도는 SLAM Online Study Season 1 - 링크에서도 설명해준다.
Lie Group SO(3)와 Lie Algebra so(3)는 지수 매핑(exponential mapping)과 로그 매핑(logarithm mapping)으로 서로 일대일 매칭되는 특징이 있다.
$exp(w^{\wedge}) = R \in SO(3)$
$log(R) = w^{\wedge} \in so(3)$
위 개념을 통해 벡터를 반대칭행렬로 변경하거나
혹은 반대칭행렬에서도 그에 대응하는 벡터를 찾을 수 있다.
Leave a comment