Illustrated Fast Kalman Gain Computation
- Kalman Gain ๊ณ์ฐ์๋ matrix inversion ์ด ํฌํจ๋์ด ์๋ค.
- ๊ทผ๋ฐ Matrix inversion ์ ๋น์ธ๋ค.
- FAST-LIO์ K ๊ณ์ฐ ๊ณผ์ ์์์ Matrix ๋ชจ์์ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค์ ์์๋ณด์.
๋์๋ ์
- ์ด ํฌ์คํธ๋ FAST-LIO (code, paper v1) ๋ฅผ ํ ๋ฒ ์ ๋ ์ฝ์ด๋ณด๊ณ ๋๋ ค๋ณธ ๋ ์์๊ฒ ์ ๋นํฉ๋๋ค.
์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ค๋ฉด?
์ผ๋ฐ์ ์ผ๋ก
- ๋ชจ๋ geometric optimization ์ ๋ ๋จ๊ณ๋ก ๋๋๋ค๊ณ ํ ์ ์๋ค.
- Problem buildling
- Problem solving
- Proboem building ์ correspondences๋ฅผ ์ฐพ๊ณ constraints ๋ฅผ ๋ง๋๋ ๊ณผ์ , Problem solving ์ ๊ทธ constraints ๋ฅผ ๋ชจ๋ (๊ฑฐ์) ๋ง์กฑํ๋ optimal solution์ ์ฐพ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
- ์๋ฅผ ๋ค์ด ํต์์ ์ธ least square optimization ์์
- $A\delta x=b$ ๋ฅผ Gauss-newton ์ผ๋ก ํธ๋ ๊ฒ์ด solving ๊ณผ์ ์ด๊ณ ,
- ์ด๋ฅผ ์ํ $A$ matrix ์์ฒด๋ฅผ ๋ง๋๋ ์ผ (๋ฐ ๊ทธ๊ฒ์ ์ํ ๋ชจ๋ ์๋จ: e.g., ์ด๋ฏธ์ง ์ ์ฒ๋ฆฌ, ํน์ง์ ๊ฒ์ถ, ํผ์ฒ ์ถ์ถ ๋ฑ)์ด problem building ์ด๋ผ๊ณ ํ ์ ์์ ๊ฒ์ด๋ค.
- ์๋ฅผ ๋ค์ด ํต์์ ์ธ least square optimization ์์
SLAM์์
- FAST-LIO์ ๊ฐ์ LiDAR(or visual)-SLAM์์๋
- map ์ entity์ query measurement ์ entity ์ฌ์ด์ correspondence ๋ฅผ ์ฐพ๋ ๊ฒ์ด buildilng,
- ๊ทธ ์ฌ์ด์ residual ์ ์ต์ํํ๋ solution์ ์ฐพ๋ ๊ณผ์ ์ด solving ์ด๋ผ๊ณ ํ ์ ์๊ฒ ๋ค.
FAST-LIO์์
- FAST-LIO์์๋ ๊ทธ๋์ ํฌ๊ฒ contribution์ด ๋ ๊ฐ์ง๋ผ๊ณ ํ ์ ์๋ค.
- Geometric optimization ์ ๋ ๋จ๊ณ์ ๋ํ์ฌ ๊ฐ๊ฐ ์๊ฐ๊ฐ์ ์ ์ํ contributions์ด ์์๋ค.
- ikd-tree ๋ฅผ ํตํ problem buildling ์๊ฐ ๊ฐ์
- ์ฆ, map ๊ด๋ฆฌ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ํ ์ ์๊ณ , map์ผ๋ก ๋ถํฐ correspondence ๋ฅผ ๋ ๋นจ๋ฆฌ retrieval ํด์ฌ ์ ์๊ฒ ๋์๋ค.
- ps. ์ดํ faster-lio ๋ voxel-map ์์๋ kd-tree ๋ณด๋ค๋ ๊ทผ๋ณธ์ ์ผ๋ก ๋น ๋ฅธ hash map์ ์ ์ํ๊ธฐ๋ ํ์๋ค. ์๋ฌดํผ ์ด๋ฐ ๋ ธ๋ ฅ๋ค์ ๋ชจ๋ problem buildling ์๊ฐ ๋จ์ถ์ ๊ธฐ์ฌํ๋ ์์๋ผ๊ณ ํ ์ ์๋ค.
- ์ฆ, map ๊ด๋ฆฌ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ํ ์ ์๊ณ , map์ผ๋ก ๋ถํฐ correspondence ๋ฅผ ๋ ๋นจ๋ฆฌ retrieval ํด์ฌ ์ ์๊ฒ ๋์๋ค.
- Fast Kalman Gain computation ์ ํตํ problem solving ์๊ฐ ๊ฐ์
- ์ด ๋ถ๋ถ์ ๋ํด์ ์ด ํฌ์คํธ์์ ์์ธํ๊ฒ ์ค๋ช ํด๋ณด๊ณ ์ ํ๋ค.
- ikd-tree ๋ฅผ ํตํ problem buildling ์๊ฐ ๊ฐ์
- Geometric optimization ์ ๋ ๋จ๊ณ์ ๋ํ์ฌ ๊ฐ๊ฐ ์๊ฐ๊ฐ์ ์ ์ํ contributions์ด ์์๋ค.
The Fast Kalman Gain
- ๊ตฌ๊ธ์์ Kalman Gain ์ด๋ผ๊ณ ๊ฒ์ํด๋ณด๋ฉด (ํน์ ์ด ์๋ฃ (2006 An Introduction to the Kalman Filter)๋ฅผ ๋ณด๋ผ), ํต์์ ์ธ Kalman Gain ์ ์ด๋ ๊ฒ ์๊ฒผ๋ค.
- Slow K: $ \textbf{K} = \textbf{P}\textbf{H}^{\textbf{T}}(\textbf{H}\textbf{P}\textbf{H}^{T} + \textbf{R})^{-1}$
- ๊ทธ๋ฐ๋ฐ FAST-LIO์์ ์ฌ์ฉํ๋ Kalman Gain์ ์ด๋ ๊ฒ ์๊ฒผ๋ค.
- Fast K: $ \textbf{K} = (\textbf{H}^{T}\textbf{R}^{-1}\textbf{H}+\textbf{P}^{-1})^{-1}\textbf{H}^{T}\textbf{R}^{-1}$
- ์ ์๋ฅผ slow K, ํ์๋ฅผ fast K ๋ผ๊ณ ๋ถ๋ฅด์.
- FAST-LIO ๋
ผ๋ฌธ์ ์ํ๋ฉด ์๋ ์ ๋๊ณผ์ ์ ์ํด fast ver์ slow ver ๋ ๋์น๋ผ๊ณ ํ๋ค.
- The slow version ์ผ๋ก ๋ถ๋ฆฌ๋ $\textbf{K}$๋ Conventional ํ Kalman filter ์ Gain form ์ผ๋ก ์์ฃผ ์ ์๋ ค์ง ํํ์ธ๋ฐ, ๊ทธ๋ ๋ค๋ฉด ์ง๊ธ๊น์ง ๋ฌธ์ ๊ฐ ๋ง์๋จ๊ฑธ๊น? ๊ทธ๊ฒ ์๋๋ผ๋ฉด, ์ slow version $\textbf{K}$๋ ํนํ FAST-LIO์์ slow ํ ์๋ฐ์ ์์์๊น? ์ ๊ทธ๋ด์ง ์์๋ณด์.
Matrix-illustrated Fast Kalman Gain
- Kalman gain ์ ์์ ์๋ $\textbf{H}$๋ residual ์ ๋ฏธ๋ถ๊ฐ (jacobian) ์ด๋ค. ์๋ฅผ ๋ค์ด, visual SLAM์์, image feature ์ ๋ํด์๋ reprojection error ๋ฅผ ์ฃผ๋ก ๋ง์ด ์ฌ์ฉํ๋ค. r2live ์ ๋ ผ๋ฌธ appendix ์ ์ด ์์ด ์ ๋์์๋ค (eq S7 ์ฐธ๊ณ ).
- ํ๋์ residual ์ ๋ํ $\textbf{H}$ (๊ทธ๋์ constraint $i$์ ๋ํ residual ์ด๋ผ๊ณ ํด์ $\textbf{H}_i$ ์ ๊ฐ์ด ์ธ ์๋ ์๊ฒ ๊ณ )๋ ํญ์ ์ด๋ฐ ๋ชจ์์ด๋ค.
- cost (or called error, residual) ๋ ์ ์ํ๊ธฐ ๋๋ฆ์ด๋ค. image ์ feature point reprojection error ๋ ๋ณดํต x๋ก์ diff์ y๋ก์ offset ์ ๋ชจ๋ ์ธก์ ํ๋ฏ๋ก Dim(cost)=2 ๊ฐ ๋๊ฒ ๋ค (r2live ์ ๋ ผ๋ฌธ appendix ์ ์ด ์์ด ์ ๋์์๋ค (eq S7, S10 ์ฐธ๊ณ ).
- ํ ํธ, Dim(state)๋ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์ถ์ robot ์ ์ํ๋ณ์๋ฅผ ์๋ฏธํ๋ค. ์์ฃผ ์ผ๋ฐ์ ์ผ๋ก๋ rotation ๊ณผ translation ์ด๋ฏ๋ก =6 ์ด๋ผ๊ณ ํ ์ ์๊ฒ ๋ค.
- rotation์ error-state ์ ๊ฒฝ์ฐ minimal representation (i.e., tangent vector space) ๋ก ํํ๋๋ฏ๋ก rotation ์ dimension=3, translation์ dimension=3 (xyz) ํด์ 6์ด ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ํฉ์ ๋ฐ๋ผ extrinsic ์ด๋ bias ๋ฑ์ ํฌํจํ๋ฉด ๋ ๊ธธ์ด์ง์๋(6 ์ด์) ์๋ค. ํ์ง๋ง r2live ์ฝ๋๋ฅผ ๋ณด๋ฉด 6์ผ๋ก ์ค์ ๋์ด ์๋๋ฐ, ๊ทธ ์ด์ ๋ ์๋ง๋, residual ์์ ์ด์งํผ extrinsic ์ด๋ bias ๋ฑ์ ๊ณ ๋ คํ์ง ์๋ ๊ฒฝ์ฐ (์์์ฒ๋ฆฌํ๊ฑฐ๋ ์์ term์ด ์๋ ๊ฒฝ์ฐ), ๊ทธ๋ฐ state element ์ ๋ํ Jacobian block์ด 0์ด๋๋ฏ๋ก ์ด์งํผ ๊ทธ ๋ณ์์กฐ์ ์ ๊ธฐ์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค (r2live ์ ๋ ผ๋ฌธ appendix ์ ์ S4 ์๋ H ์ฐธ๊ณ ).
- ๊ทธ๋ฐ๋ฐ a single image์์ detect ๋๋ feature point ์ ๊ฐ์๋, ํน์ a single lidar scan (e.g., 360 deg horizontal sweep during 0.1 sec) ์๋ ํฌ์ธํธ๊ฐ ํ๋๋ง ์๋ ๊ฒ์ด ์๋๋ค. ์ด๋ฏธ์ง์๋ ์์ญ-์์ฒ๊ฐ์ ํผ์ฒ๊ฐ ์กด์ฌํ ์ ์์ผ๋ฉฐ (์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ง๋ค ๋ค๋ฅด๋ค), lidar ์ญ์ ํต์์ ์ผ๋ก ์์ฒ๊ฐ์ (downsampled) ํผ์ฒ ํฌ์ธํธ ๋ฅผ ๊ฐ์ง๋ค. ์ด๋ฐ ํฌ์ธํธ ํ๋ ํ๋๋ง๋ค ์์ residual block (i.e,. $\textbf{H}_i$ for $i=1,2,3,โฆ,$ ์์ญ-์์ฒ) ์ด ์กด์ฌํ๊ฒ ๋๋ค.
- ์ด๋ฅผ overdetermined system์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๋ฐ๋ผ์ the slow K: $ \textbf{K} = \textbf{P}\textbf{H}^{\textbf{T}}(\textbf{H}\textbf{P}\textbf{H}^{T} + \textbf{R})^{-1}$ ์ ์ ์์ ์กด์ฌํ๋ $\textbf{H}$์ ๋ชจ์์ ์๋ง ์ด๋ ๊ฒ ์๊ฒผ์ ๊ฒ์ด๋ค.
- ์ด์ ๊ฑฐ์ ๋ค ์๋ค. The slow $\textbf{K}$ ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ $(\textbf{H}\textbf{P}\textbf{H}^{T} + \textbf{R})^{-1}$ ๊ฐ ํ์ํ๋ค.
- ๊ทธ๋ฐ๋ฐ ์ด matrix inversion ์ ๋น์ฉ์ ์ผ๋ง์ผ๊น? wikipedia ์ ๋ฐ๋ฅด๋ฉด, $O(n^{2})$ ๋ณด๋ค๋ ๋น์ผ ๊ฒ์ ์ ์ ์๋ค.
- ์ฆ, ์ฐ๋ฆฌ๋ slow kalman gain ์ ๊ณ์ฐํ๊ธฐ ์ํด์ $\textbf{H}\textbf{P}\textbf{H}^{T}$ ์ shape ์ ์ ๊ณฑ๋ฐฐ ์ด์์ ๋น๋กํ๋ ๊ณ์ฐ ๋น์ฉ์ ์น๋ฌ์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ ๊ทธ shape ์ ์ ์ผ๋ฉด (image feature์ ๊ฒฝ์ฐ) ์๋ฐฑ, ๋ง์ผ๋ฉด (liar feature์ ๊ฒฝ์ฐ) ์์ฒ ์๋ง ๊น์ง๋ ์ปค์ง ์ ์๋ค.
- ๊ทธ๋ฐ๋ฐ ์ด์ ๋นํด, FAST-LIO์์ ์ ์ํ fast kalman gain ์์ inversionํด์ผ ํ๋ ๋์์ ์๊น์๋ ์ด๋ฌํ๋ค.
- ํจ์ฌ ์์์ ์ ์ ์๋ค!
- slow K ์์ inverse๋ฅผ ์ํํด์ผ ํ matrix ํฌ๊ธฐ๊ฐ ์๊ฒ ์ก์์ 60x60์ด๋ผ๊ณ ๊ฐ์ ํ๋ฉด (i.e., $n=60$), fast K ์์ inverse ๋ฅผ ์ํํด์ผ ํ square matrix ์ $n=6$ ๋๋น 10๋ฐฐ๊ฐ ํฌ๋ค. wiki ์ ๋ฐ๋ฅด๋ฉด matrix inversion ์ time complexity ๋ $O(n^{2.373})$ ์ ๋์ด์ง๋ง ์ด๋ฆผ์ก์ $O(n^{2})$ ๋ผ๊ณ ํ๋ฉด, 100๋ฐฐ์ ์๊ฐ์ด ๋ ์์๋ ๊ฒ์ผ๋ก ์์ธกํด๋ณผ ์ ์๋ค.
- ๊ณผ์ฐ ์ง์ง ์ด๋งํผ ๋๋ ค์ง๊ฒ ๋ ์ง ์ง์ ์คํ์ ํตํด์ ์์๋ณด์.
์คํ
- ์คํ ์ธํ
- ์คํ์ ์ํด r2live ์ฝ๋๋ฅผ ์ด์ฉํ์๋ค. ๊ทธ๋ฆฌ๊ณ r2live github readme ์์ ๊ณต๊ฐ๋์ด ์๋ ์ ์์ HKU ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์๋ค. CPU๋ 11th Gen Intel(R) Core(TM) i5-11400F @ 2.60GHz ์ ์ด์ฉํ์๊ณ , ํน๋ณํ core ์ ํ์ ํ์ง ์์๋ค.
- Time cost ์ธก์ ์ ์ํด Faster-lio repository์ ์๋ timer class ๋ฅผ ๊ฐ์ ธ์๋ค.
- ๊ทธ๋ฆฌ๊ณ conventional ํ Kalman Gain ์ด ๊ตฌํ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ง์ ๊ตฌํํด์ค๋ค. ํฌ๊ฒ ์ด๋ ต์ง ์๋ค.
- r2live ๋ lidar ์ visual ๊ธฐ๋ฐ์ ๊ฐ๊ฐ Kalman Gain ๊ณ์ฐํ๋ ๋ถ๋ถ์ด ์๋ค. ๊ทธ ์ค ํธ์์ visual part ์ ๋ํด์๋ง ํ
์คํธ๋ฅผ ์งํํด๋ณด์๋ค (Kalman Filter ์์ฒด๋ abstract ํ engine ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋
(Fast-lio๊ฐ fast kalman gain์ ์ ์ํ ๊ธฐ์ฌ)์ ๋์ผํ๋ค).
- See this line of codes. ์คํ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
- See this line of codes. ์คํ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ์คํ ๊ฒฐ๊ณผ
- ์คํ ์ํ ๊ณผ์ ๋ฐ ๊ฒฐ๊ณผ๋ ์๋ ๋น๋์ค์ ์์ธํ๊ฒ ๋์์๋ค.
- ps. ์ด ์คํ์ reproduce ํด๋ณด๋ ค๋ฉด:
- docker/run ์ ์๋ repository์ volume ๊ฒฝ๋ก๋ฅผ ๋ณธ์ธ์ ๊ฒ์ผ๋ก ์์ ํ๊ธธ ๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ demo.launch ํ์ผ์์ fast version ์ kalman gain์ ์ฌ์ฉํ ์ง ๋ง์ง boolean param ์ผ๋ก ์กฐ์ ํ ์ ์๋๋ก ํ์๋ค. docker ๋ฅผ ์ด์ฉํด์ r2live ๋ฅผ ์คํํ๋ ๊ณผ์ ์ ๋ํด์๋ ๋ค๋ฅธ ๋น๋์ค <Running R2Live using Docker> ์์ ์์ธํ๊ฒ ์๊ฐํ์์ผ๋ ์ฐธ๊ณ .
- ps. ์ด ์คํ์ reproduce ํด๋ณด๋ ค๋ฉด:
- ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฆฌํด๋ณด๋ฉด,
- ์ ๋ฐ์ดํฐ์ ์ ๋ํด, a single image ์์ 50-100 ๊ฐ ์ ๋์ feature correspondences ๊ฐ ๋์จ๋ค.
- fast or slow ์ด๋ค ๋ฒ์ ์ kalman gain์ ์ฌ์ฉํ๋ accuracy ์ธก๋ฉด์์๋ ๊ฑฐ์ ๋์ผํ๊ฒ ๋์ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค (TODO: ์ค์ ๋ก ๊ฐ์์ง K๊ฐ ์ฐ์ด๋ณด๊ธฐ)
- fast version ์ kalman gain์ ๊ณ์ฐํ๋ ์๊ฐ์ 0.026ms ์ ๋๊ฐ ์์๋๋ค.
- slow version ์ kalman gain์ ๊ณ์ฐํ๋ ์๊ฐ์ 2.6ms ์ ๋๊ฐ ์์๋์๋ค. ์ฝ 100๋ฐฐ์ ์๊ฐ์ด ์์๋ ์
.
- ์ด๋ ์์ matrix inversion์ time complexity์ ๊ทผ๊ฑฐํด์ ์ ์ถํ๋ ๊ฒ๊ณผ ์ ์ฌํ magnitude of order ์ด๋ค.
- ์คํ ์ํ ๊ณผ์ ๋ฐ ๊ฒฐ๊ณผ๋ ์๋ ๋น๋์ค์ ์์ธํ๊ฒ ๋์์๋ค.
- Lessons
- image feature ์ ๋ํด์, state_dim=6 ์ด๊ณ , num_features=50-100 ์ด๋ฉด ์ฝ 10๋ฐฐ์ size ๋ก ๊ทผ์ฌํ ์ ์์๊ณ , ์ค์ ๋ก ์ด์ ์ ๊ณฑ๋ฐฐ ์ด์์ time cost ๊ฐ ๋ฐ์ํจ์ ํ์ธํ์๋ค.
- ๊ทธ๋ฆฌ๊ณ lidar feature ๋ ๋ณดํต 1000-10000๊ฐ ๊น์ง๋ ๋ฐ์ํ๋ค. ํ๋์ 3D ๋ผ์ด๋ค๊ฐ ์ฃผ๋ ํ๋์ ์ค์บ์ด ์๋ง๊ฐ์ ํฌ์ธํธ๋ฅผ ๊ฐ์ง๊ณ , ์ด๋ฅผ ์ ์ ํ downsampling ํด์ ์ฌ์ฉํ๋ค๊ณ ํ๋๋ผ๋ ์์ฒ๊ฐ์ ํฌ์ธํธ๊ฐ ์กด์ฌํ๋ค. 6000๊ฐ(๊น์ง๋ ํ์์์ ์๋ ์์ง๋ง ๊ณ์ฐ์ ํธ์์)๋ผ๊ณ ๊ฐ์ ํ๋ฉด state_dim=6 ์ ๋นํด 1000๋ฐฐ์ size ๋ฅผ ๊ฐ์ง๋ matrix ๋ฅผ inversion ํด์ผ๋๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ก ์ ์ผ๋ก๋ ์ต์ 1000 * 1000 ๋ฐฐ์ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ์ด๋ผ๊ณ ์์ธกํด๋ณผ ์ ์๊ฒ ๋ค. ๊ทธ๋ฌ๋ฉด (์์ ๋์ผํ HW๊ธฐ์ค) 0.026 * 1000 * 1000 = 26000ms = 26 sec ์ผ๋ก์จ ์ด์ ๋ real-time ์ด ๋ถ๊ฐ๋ฅํ๊ฒ ๋๋ค. lidar scan์ด ๋ณดํต 10hz๋ผ๊ณ ๊ฐ์ ํ๋ฉด (์ค์ ๋ก๋ front-end๋ฅผ ํฌํจํด์) 0.1s ๋ด์ update๊ฐ ๋์ด์ผ real-time์ด๋ผ๊ณ ํ ์ ์๋ค.
- TODO: ๊ณผ์ฐ ๊ทธ๋ฌํ์ง lidar ์ kalman gain์ ๋ํด์๋ ์ง์ ์ธก์ ํด๋ณด์.
- ๊ทธ๋ฆฌ๊ณ ๋ ํ๋ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ ๊ฒ์, slow version K์์ inversion ํ๋ matrix ์ ํฌ๊ธฐ๋ feature correspondences์ ๊ฐ์์ ์์กด์ ์ด๊ธฐ ๋๋ฌธ์, time cost ๊ฐ scene ๋ง๋ค ๋ฌ๋ผ์ง ์ ์๋ค. ์ด๋ ํน์ ํ๊ฒฝ์์ ๋ฐ์ํ ์ ์ time cost๋ง์ ์ธก์ ํ์ฌ ์์์ upper bound ๋ฅผ ํ ๋นํด๋๋ ๊ฒฝ์ฐ, ํ๊ฒฝ์ด ๋ฌ๋ผ์ง ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ ์๋ ์๋ค. ๋ฐ๋ฉด fast version K๋ ํญ์ 6x6 ์ inversion์ ์ํํ๊ธฐ ๋๋ฌธ์, ์์๋๋ ์๊ฐ ์ญ์ ๋งค image ๋ง๋ค ์ ์ฌํจ์ ์ ์ ์๋ค (see the Timer::DumpIntoFile, ํ๊ท ์ด ์๋ ๋ชจ๋ frames ์ ๋ํ time cost ๊ฐ ๊ธฐ๋ก๋์ด ์๋ค).
PS. ์ฌ๋ฏธ๋ ์ฌ์ค๋ค
- ์๋ ๊ฐ์ : ๊ทนํ์ ๊น๊ธฐ
- r2live ์ฝ๋๋ฅผ ๋ณด๋ฉด
K_1 = (H_T_H + (state_aft_integration.cov * CAM_MEASUREMENT_COV).inverse()).inverse(); K = K_1.block<DIM_OF_STATES, 6>(0, 0) * Hsub_T;
- ์ด Kalman Gain ๊ตฌํ์ด FAST-LIO์ ์20 ์์ ์ธ๊ธํ ๊ฒ๊ณผ๋ ์ฝ๊ฐ ๋ค๋ฅธ ๊ฒ์ ๋ณผ ์ ์๋ค.
- ์ฆ size ๊ฐ ํฐ $\textbf{R}$ matrix ๋ฅผ ์์ฑ์กฐ์ฐจ ํ์ง์๊ณ scalar ๊ฐ์ ๊ณฑํ๋ ๊ฒ์ผ๋ก ๋์ฒดํ์๋ค. ์ด๋ each measurements in a single image (or a single lidar scan) ์ด ๋์ผํ weight ๋ฅผ ๊ฐ์ง๋ค๊ณ ๊ฐ์ ํ ๊ฒฝ์ฐ, $\textbf{R} = r\textbf{I}$ ์ ๊ฐ์ด scaled identity ๋ก ๊ฐ์ ํ ์ ์๋ค. ์ด ์์ ์๋ ์ $ \textbf{K} = (\textbf{H}^{T}\textbf{R}^{-1}\textbf{H}+\textbf{P}^{-1})^{-1}\textbf{H}^{T}\textbf{R}^{-1}$ ์ ๋์ ํ๋ฉด ์์ ์ฝ๋์ ๊ฐ์ด $\textbf{R}$ matrix ๊ฐ ์ฌ๋ผ์ง ํํ๋ฅผ ์ป์ ์ ์๋ค.
- r2live ์ฝ๋๋ฅผ ๋ณด๋ฉด
- ์ฑ๋ฅ ๊ฐ์ : GICP ๋ฐ๋ผํ๊ธฐ
- FAST-LIO์ ํ์์์ FAST-LIO2 ๋ผ๊ธฐ๋ณด๋ค๋(FAST-LIO2๋ ๊ทธ๋ฅ ์ ๋๋ฒ์ ๋๋..), VoxelMap ์ด๋ผ๊ณ ์๊ฐํ๋ค.
- FAST-LIO์์๋ ๋จ์ํ point-to-plane loss (distance์ normal์ด ๊ณฑํด์ง) ์ ์ฌ์ฉํ์๋ค๋ฉด, VoxelMap์ GICP-like Loss ๋ฅผ ์ฌ์ฉํ์๋ค. ์ฆ, per point ๋ง๋ค ๋ค๋ฅธ covariance ๋ฅผ ์ ์ฉํ์๋ค. ์ฌ๋ฐ๋ ๊ฒ์ ๊ตฌํ์ด๋ค. VoxelMap์ ์ฝ๋๋ฅผ ๋ณด๋ฉด r2live ์ fast-lio๋ถ๋ถ๊ณผ ๊ฑฐ์ ๋์ผํ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์์ ์ ์ ์๋ค. ๋์ fast-lio (r2live) ์ ๋ฌ๋ฆฌ $\textbf{H}^{T}\textbf{R}^{-1}$์ ๋ช
์์ ์ผ๋ก ๊ณ์ฐํด์ค๋ค. ์ด ์ญ์๋ $\textbf{R}$์ ๋ณ๋๋ก ๋ง๋ค์ด์ ๊ณฑํ๋๊ฒ ์๋๋ผ
MatrixXd Hsub_T_R_inv(6, effct_feat_num);
์ ๊ฐ์ด $\textbf{H}^{T}\textbf{R}^{-1}$ ๋ผ๋ matrix ๋ฅผ ์์ ์ฒ์๋ถํฐ ์์ฑํด์ ๋ค๋ฃจ๊ณ ์๋ ๊ฒ๋ ์ฌ๋ฐ๋ ๋ถ๋ถ์ด๋ค. ์ด์จ๊ฑฐ๋ VoxelMap์ ์์๋ per-point ๋ง๋ค ๋ค๋ฅธ weight ๋ฅผ ๋ถ์ฌํ ์ ์๊ฒ ๋์๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด FAST-LIO์ ์20 ์์ ์ธ๊ธํ fast kalman gain $ \textbf{K} = (\textbf{H}^{T}\textbf{R}^{-1}\textbf{H}+\textbf{P}^{-1})^{-1}\textbf{H}^{T}\textbf{R}^{-1}$ ๊ณผ ์ด์ ์๋ฒฝํ format์ด ๋์ผํด์ง ๊ฒ์ ์ ์ ์๋ค.
๊ฒฐ๋ก
- FAST-LIO๋ Kalman Gain์ ํํ๋ฅผ ์กฐ์ํจ์ผ๋ก์จ problem solving ์๊ฐ ๊ฐ์ ์ ์ด๋ฃจ์๋ค.
- ๊ธฐ์กด์ ์ ์๋ ค์ง K๊ฐ ํญ์ slow ํ ๊ฒ์ ์๋๋ค. ํ์ง๋ง low-level features์ geometric optimization ์ ์ํํ๋ SLAM ๋ฌธ์ ์์๋, constraints ์ ๊ฐ์๊ฐ ๋งค์ฐ ๋ง์ overdetermined system ์ด ์ผ๋ฐ์ ์ด๋ฉฐ, ์ด ๊ฒฝ์ฐ K ๊ณ์ฐ์ด slow ํด์ง๊ฒ ๋๋ค.
- ๊ทธ ํ์์ ์ข ๋ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๊ทธ๋ฆผ(matrix-illustrated)์ผ๋ก ๊ทธ๋ ค๋ณด์๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ๊ทธ๋ฌํ์ง ์ ์ฉ ์ /ํ ์คํ์ ์ํํด๋ณด์๋ค.