3 minute read

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$ 만족




$\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)가 시간에 의존하지 않으면 아래와 같은 식으로 적을 수 있다.(선형미분방정식으로 변환하기 위해서)

\[\dot{R}(t)= \phi(t_0)^{\wedge}R(t) => \phi_{0}^{\wedge}R(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)$


위 개념을 통해 벡터를 반대칭행렬로 변경하거나
혹은 반대칭행렬에서도 그에 대응하는 벡터를 찾을 수 있다.

Tags:

Categories:

Updated:

Leave a comment