Introduction 이번 포스트에서는 3차원 변환을 나타내는 Lie Group SE(3)에서 Lie Algebra se(3)를 유도해 보도록 하겠습니다. 또한, 둘 간의 변환 관계를 지수, 로그 변환을 통해 정리하도록 하겠습니다. 많은 수학적 지식과 증명이 필요하나 수학자가 아닌 엔지니어로서 필요한 정도만 설명하는 게 목표이니 참고 바랍니다. Lie Algebra se(3) 이전 포스트에서 회전 변환을 나타내는 SE(3) 군이 Lie 군에 속함을 살펴보았습니다. SE(3) 군이 항등원과 역원이 존재하며 곱셈에 닫혀있음과 동시에 결합 법칙이 성립함을 알아봤습니다. $$SE(3)=\left\{ \mathbf{T}=\begin{bmatrix} \mathbf{R} & \mathbf{t} \\ 0^T & 1 ..
Introduction 이번 포스트에서는 회전 변환을 나타내는 Lie Group SO(3)에서 Lie Algebra so(3)를 유도해 보도록 하겠습니다. 또한, 둘 간의 변환 관계를 지수, 로그 변환을 통해 정리하도록 하겠습니다. 많은 수학적 지식과 증명이 필요하나 수학자가 아닌 엔지니어로서 필요한 정도만 설명하는 게 목표이니 참고 바랍니다. Lie Algebra so(3) 이전 포스트에서 회전 변환을 나타내는 SO(3) 군이 Lie 군에 속함을 살펴보았습니다. SO(3) 군이 항등원과 역원이 존재하며 곱셈에 닫혀있음과 동시에 결합 법칙이 성립함을 알아봤는데요. 여기에 추가적으로 SO(3) 자체의 제약(constraint)으로 교환 법칙이 성립되지 않고, $det(R)=1$임을 기억해 주시기 바랍니다...
Introduction 앞선 포스트들에서 회전(rotation)과 이동(translation)을 포함한 3차원 변환(3D transformation)을 다루었습니다. 그러면서 SO(3)와 SE(3)라는 낯선 이름들을 중간에 언급했었는데요. 이번 시리즈에서는 이들이 속한 군(Lie group)의 개념과 각각의 정의들, 그리고 실전에서 사용하기 위한 테크닉(Lie algebra)을 다루겠습니다. Group 수학적으로 군(group)은 집합(A)과 두 원소 간의 이항 연산(binary operation, *)으로 이루어진 대수적 구조를 의미합니다. 표현으로는 G(A, *)로 나타낼 수 있습니다. 군이 되기 위해서는 몇 가지 조건을 만족해야 하는데요. 아래 그 조건들을 나열해 봤습니다. A. Closure (C..
Introduction 앞서 Epipolar Geometry를 소개하며 2D-2D feature를 이용한 포즈 추정 방법을 알아보았습니다. 그러나 2D 이미지만을 가지고 포즈 추정을 하게 되면 필연적으로 오차가 생길 수밖에 없으며, 속도 또한 정확도 대비 느리다는 문제가 있습니다. 그렇기에 monocular 카메라를 사용해야만 하는 상황이 아니라면 RGB-D, stereo vision을 사용하거나 좀 돈이 많은 곳은 라이다(lidar)를 사용해 정교한 정보들을 추출합니다. 더 많은 정보가 있을 때 우리는 어떻게 포즈를 추정할 수 있을까요? 앞선 포스트에서 2D-2D, 3D-2D, 3D-3D feature가 있을 때 각각 어떠한 방법을 사용해야하는지 소개했는데요. 오늘은 3D point cloud와 2D ..
Introduction 앞선 포스트에서는 회전을 직관적으로 표현할 수 있는 Euler Angle과 Axis-Angle Rotation에 대해 다뤘습니다. 하지만 직관적인 대신 Euler angle은 Gimbal lock, Axis-Angle rotation은 높은 연산량으로 인해 실시간이며 높은 정확도를 요구하는 SLAM에서는 실제 적용이 어렵습니다. 이런 문제를 해결하기 위해 벡터의 등장과 함께 거의 사장되었던 사원수(Quaternion)가 재조명되었는데, 이는 벡터의 등장 이전에 3차원을 표현하기 위해 제안된 방식이었습니다. 사원수의 성질 자체는 매우 간단하지만, 회전과 무슨 관계가 있길래 사용하는지 그 원리에 대한 이해는 꽤 어렵습니다. 하지만 이를 모르면 사원수는 단순히 회전을 표현하기 위해 끼워..
Introduction 앞선 포스트에서는 3차원 공간에 존재하는 어떠한 점(point)이나 벡터(vector)는 어떤 좌표계(coordinate system)에서 보는지에 따라 다른 좌표(coordinate)를 가지고 있음을 살펴보았습니다. 그리고 좌표계간 상관관계를 이용해 변환 행렬을 구해봤는데요. 이를 통해 획득한 $\mathbf{R}$(rotation matrix), $\mathbf{t}$(translation vector), 그리고 $\mathbf{T}$(transformation matrix)는 머리로는 이해되나 가슴으로는 잘 이해가 되지 않을 것입니다. 특히 회전과 관련된 성분들은 최종 결과물만 보고서 도대체 이 행렬은 얼마나 회전시키는 녀석인지, 아니면 이게 회전 행렬은 맞는지 한눈에 알아볼..
Introduction 이전 포스트에서 설명한 것처럼, 카메라는 움직임에 따라 크기와 모양이 달라지지 않는 강체(rigid body)입니다. 그래서 SLAM에서의 3D 변환은 회전(rotation)과 평행 이동(translation)만 고려합니다. 여기에 추가로 앞서 좌표계(coordinate system)에 대해서 다뤘습니다. 점(point)이나 벡터(vector)를 어느 좌표계에서 바라보는지에 따라 좌표(coordinate)가 달라지게 됩니다. SLAM에서 필수적으로 다루게 될 World coordinate과 Camera coordinate을 예시로 들어보겠습니다. 벡터 $\mathbf{p}$에 대해 World 좌표계에서 본 $\mathbf{p_w}$와 Camera 좌표계에서 본 $\mathbf{p_..
Introduction 우리가 흔히 보는 2D 영상 이미지에는 많은 변환 방법이 존재합니다. 강체 변환, 닮음 변환, Affine 변환 등 다양한 알고리즘이 존재하는데, 이는 본 포스트에서는 다루지 않을 예정입니다. SLAM에서 궁금한 부분은 3차원 공간에서 내가 어떻게 움직이고 있는지입니다. 즉, 3차원 공간에서 카메라가 어떻게 움직이고 있는지 구하는 게 최종 목표이며, 카메라는 크기가 변하거나 왜곡이 생기지 않습니다. 따라서 카메라를 하나의 강체(Rigid body)로 볼 수 있으며, 3D transform은 3D rigid body transform 문제로 요약됩니다. 이는 다른 말로 euclidean transform이라고 하며, 형태와 크기를 유지한 채로 위치(translation)와 회전(ro..