정말 오랜만의 포스팅입니다. 최근들어 이것저것 하는것이 많아져 글을 올리지 못했는데 IMU calibration에 대해 공부할 필요가 생겨 한번 써봅니다.
IMU preintegration
3D-LiDAR-IMU calibration 에 대해 공부를 하는데 미천한 제 식견으로는 하나도 읽히지가 않았습니다. 페이퍼를 읽던 도중 레퍼런스를 타고 위 영상의 IMU Preintegration on Manifold for Efficient Visual-Inertial Maximum-a-Posteriori Estimation 페이퍼를 접하게 되었는데 상당히 친절하고 background에 대한 설명이 많아 이 페이퍼를 먼저 읽어야겠다는 생각을 하게 되었습니다.
그래서 IMU preintegration이 뭐냐?
IMU 는 Inertial Measurement Unit 으로 직역하면 관성을 측정하는 센서입니다.
- Gyroscope : 각속도 측정
- Accelerometer : 가속도 측정
- Magnetometer : 자기장 측정
IMU는 위 3개의 센서로 이루어져 있는데 Calibration에서 관심이 있는 센서는 Gyroscope 와 Accelerometer 두 개입니다. 주로 6DoF IMU를 사용하는 것 같습니다. 아무튼 이 IMU는 카메라나 LiDAR보다 frequency가 월등하게 높아 SLAM을 수행할때 정확도를 올리거나 motion에 의한 LiDAR distortion 을 보정하는데 쓰입니다.
하지만 IMU로 측정치를 전부 사용하기엔 최적화에 쓰이는 Factor Graph가 너무 커져버리게 됩니다. 이를 해결하고자 위 그림처럼 여러개의 IMU 측정값을 Single Factor로 intergrate 하는 과정을 IMU Preintegration이라고 합니다.
Lie Group & Lie Algebra
이 페이퍼를 읽으려면 백그라운드가 필요한데 바로 Lie Algebra입니다. Lie Algebra는 SLAM 을 하시는분들이라면 꼭 한번은 들었을 내용입니다. 제 경우는 이 악물고 외면했던 내용이기도 한데 이놈의 Lie Algebra는 계속 나와서 수식이 뭘 의미하는지 어렴풋이는 알 수 있게 맛만 봤습니다...
Lie Group
Group(군) 이란 집합 \( G\)와 바이너리 연산의 대수 구조로 위 4가지 성질을 만족해야합니다. 간단히 생각해보면 실수 집합 \(R\) 과 바이너리 연산 \(+\) 이 Group이라는 것을 알 수 있습니다. 만약 vector space가 실수가 아닌 행렬이라고 생각해본다면 \(G = \{A \in \mathbb{R}^{n \times n} | det(A) \neq 0\}\) 와 행렬곱 연산을 생각해 볼 수 있습니다. 이러한 군을 General linear group \(GL(n, \mathbb{R})\)이라고 합니다.
조건을 추가해서 행렬이 orthogonal 하다고 가정해보겠습니다. 그러면 \(G = \{A \in GL(n, \mathbb{R}) | A \cdot A^{T} = I\}\) 와 행렬곱 연산으로 이루어진 Orthogonal group \(O(n)\) 이 됩니다.
이때 \(det(A \cdot A^{T} ) = det(A)^2 = det(I) = 1\) 로 \( det(A) = 1 \) 인 경우와 \(det(A) = -1\) 인 경우가 존재하게 됩니다. 이때 \( det(A) = 1 \) 인 경우를 Special Orthogonal Group이라고 부르고 \(SO(n) \)으로 표현합니다. 바로 이 \(SO(n) \)을 말하기 위해 힘들게 여기까지 온 것인데 wikipedia를 보면 "It describes all possible rotations in \(n\) dimensions. Rotation matrices in this group are used in computer graphics." . 즉 \(SO(n) \)은 우리가 흔히 아는 회전행렬을 의미합니다.
Lie Group 은 group이면서 미분가능한 manifold 입니다. 위의 행렬 Group들이 Lie Group에 해당합니다.
Lie Algebra
A Lie algebra consists of a set \( \mathbb(V)\), a scalar field \( \mathbb(F)\), and a binary operation \( [,]\) satisfing listed properties 1) Closure 2) Bilinear composition 3) Reflexive 4) Jacobi identity. Lie Algebra의 수학적 정의를 긁어왔는데 우리는 수학을 하고자 하는게 아니니 그런가보다 하고 넘어가겠습니다. Lie Algebra는 Lie Group의 한 점에서의 tangent space 라고 합니다.
Lie Algebra \(so(3)\)
다시 돌아가 \(SO(3)\) 에 대응하는 Lie Algebra 가 존재하는데 이를 \(so(3)\) 로 표현합니다.
위에서 \(SO(n)\) 는 rotation matrix를 의미한다고 언급했는데요, \(n=3\)이라고 가정해봅니다. Orthogonal 하기 때문에 다음 성질을 만족합니다.
$$RR^{T} = I$$
\(R\) 이 센서의 회전이라고 가정해봅시다. \(R\) 연속적인 시간 t 의 함수로 표현할 수 있습니다.
$$R(t){R(t)}^{T} = I$$
t로 미분하면
$$\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} $$
따라서 왼쪽항은 skew-symmetric matrix 가 됩니다.
위처럼 skew-symmetric 행렬 A는 대응하는 유일한 벡터 \(a\) 가 존재하고 \(\wedge\) 심볼을 벡터에서 행렬로의 변환으로 표기합니다.
양쪽 항에 \(R(t)\)를 곱하면
\(t_{0} = 0\)이라고 가정하고 first-order Taylor expansion을 하면
즉 \(\Phi \)는 결과적으로 \(SO(3)\)의 tangent space, Linear Algebra \(so(3)\) 가 됩니다.
'SLAM' 카테고리의 다른 글
SLAMBOOK (0) | 2023.02.13 |
---|---|
IMU Preintergration on Maniforld for Efficient Visual-Inertial Maximum-a-Posteriori Estimation(2) (0) | 2022.07.25 |
SLAM Front-end with example code (0) | 2022.03.23 |
ROS 연습 (0) | 2022.03.22 |
iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree (0) | 2022.02.28 |
댓글