๐ก ๋ณธ ๋ฌธ์๋ 'ORB-SLAM: a Versatile and Accurate Monocular SLAM System'์ ๋ํด ์ ๋ฆฌํด๋์ ๊ธ์ ๋๋ค.
feature-based SLAM์ ์์ด ๊ธฐ๋ณธ์ด ๋๋ ๋ ผ๋ฌธ์ธ ORB-SLAM์ ๋ํด ์ ๋ฆฌํ์์ผ๋ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
์ฐธ๊ณ : Raul Mur-Artal, J. M. M. Montiel, Juan D. Tardos. ใORB-SLAM: a Versatile and Accurate Monocular SLAM Systemใ. IEEE: transaction on robotics, 2015.โ
Abstract
๋ณธ ์ฐ๊ตฌ์์๋ ํฌ๊ณ ์์ ์ค๋ด์ธ ํ๊ฒฝ์์ ์ค์๊ฐ์ผ๋ก ์๋ํ๋ feature-based monocular SLAM system์ ์ ์ํ๋ค. ์ด ์์คํ ์ ์ฌํ motion ์ก์์๋ ๊ฒฌ๊ณ ํ๊ณ , ๊ด๋ฒ์ํ loop closing์ ํ์ฉํ๋ฉฐ ์์ ํ ์๋ ์ด๊ธฐํ๋ฅผ ํฌํจํ๋ค.
์ต๊ทผ ๋ช๋ ๊ฐ์ ์ฐ์ํ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐํ์ผ๋ก tracking, mapping, relocalization, loop closing ๋ฑ ๋ชจ๋ SLAM ์์ ์ ๋์ผํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ์๋ก์ด ์์คํ ์ ์ฒ์๋ถํฐ ์ค๊ณํ๋ค. ๋ณธ ์ฐ๊ตฌ์์๋ ๊ฐ์ฅ ์ธ๊ธฐ์๋ ๋ฐ์ดํฐ์ ์ 27๊ฐ์ sequence๋ฅผ ๊ฐ์ง๊ณ ํ๊ฐ๋ฅผ ์งํํ์๋ค. ORB-SLAM์ ๋ค๋ฅธ SLAM์ ๋นํด ์ ๋ก์๋ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ค.โ
Overview
SLAM์ ํฌ๊ฒ Feature-Based SLAM๊ณผ Direct SLAM์ผ๋ก ๋๋์ด์ง๋๋ค. Feature-Based SLAM์ ์์์์ ํน์ง์ ์ ์ถ์ถํ์ฌ SLAM์ ์ ์ฉํ๋ ๋ฐฉ์์ด๊ณ Direct SLAM์ Pixel ์ ๋ณด๋ฅผ ๊ทธ๋๋ก SLAM์ ์ ์ฉํ๋ ๋ฐฉ์์ ๋๋ค. ์ด์ค ORB-SLAM์ Feature-Based SLAM์ ๋๋ค.
Feature๋ Image์ ์กด์ฌํ๋ Corner๋ฅผ ์๋ฏธํฉ๋๋ค. Corner๋ฅผ ๊ฒ์ถํ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ Harris Corner, SIFT, SURF, FAST, ORB ๋ฑ์ด ์์ต๋๋ค.
ORB-SLAM์ FAST-9๋ฅผ ์ด์ฉํด ํน์ง์ ์ ๊ฒ์ถํ ํ Intensity Centroid(→ Corner์ Pixel ๊ฐ์ ๊ทธ ์ค์ฌ๊ณผ ์ฐจ์ด๊ฐ ์๊ณ ๊ทธ ๋ฒกํฐ๋ ๋ฐฉํฅ์ฑ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ค๋ ์ด๋ก )๋ก ํน์ง์ ์ ๋ฐฉํฅ(Orientation)์ ๊ณ์ฐํฉ๋๋ค.
ORB SLAM ๊ตฌ์กฐ
ORB SLAM์ 3๊ฐ์ thread๋ฅผ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฅด๋ค.
1. Tracking thread
- ์ง๋์์ ํ์ฌ์ ์์น๋ฅผ ์ฐพ๋๋ค.
- ์ด๋ฅผ ์ํด ๊ธฐ์กด์ ์ง๋์ ๋ณด์ ORB feature๋ฅผ ํ์ฉํ์ฌ ํ์ฌ์ ์์น๋ฅผ ์ถ์ ํ๋ค.
2. Local mapping
- ๊ฐ๊ฐ์ keyframe ์ ๋ณด๋ฅผ ์ง๋์ mappingํ๋ค. (2d point -> 3d point)
3. Loop closing
- ์์์ ๋ณด๋ฅผ ํตํด ์ง๋๋ฅผ ๋ง๋ค๋ค๋ณด๋ฉด drift ํ์์ด ๋ฐ์ํ๋ค. (์์น๊ฐ ์ด๊ธ๋จ)
- SLAM์ผ๋ก ๋ง๋ค์ด์ง ์ง๋์ ๋ณด๋ฅผ ํตํด ํ์ฌ์ ์์น๋ฅผ ๊ต์ ํด์ค๋ค.
SolvePnP
Represent Camera motion
1. Translation
- ์นด๋ฉ๋ผ๊ฐ 3์ฐจ์ ๊ณต๊ฐ์์ ์ด๋ํ ๊ฒฝ์ฐ, ์ด๋๋์ translation์ด๋ผ๊ณ ํ๋ค.
- 3์ฐจ์ ์ (x,y,z)์์ (x',y',z')์ผ๋ก ์ด๋ํ ๊ฒฝ์ฐ, translation์ vector t = (x'-x, y'-y, z'-z)๋ก ํํํ ์ ์๋ค.โ
2. Rotation
- ์นด๋ฉ๋ผ๊ฐ x,y,z์์ ํ์ ํ ๊ฒฝ์ฐ
3. Pose estimation
- SovlePnP๋ ์นด๋ฉ๋ผ์ ์ด๋ฌํ Pose๋ฅผ ์ถ์ ํ๋ ๊ฒ์ด๋ค.
- ์นด๋ฉ๋ผ๊ฐ ๊ณ ์ ๋์ด ์์ ๋ ๋ฌผ์ฒด์ pose๋ฅผ ์ถ์ ํ๋ค.
- ๋ฌผ์ฒด๊ฐ ๊ณ ์ ๋์ด ์๋ค๋ฉด ์นด๋ฉ๋ผ์ pose๋ฅผ ์ถ์ ํ๋ค.โ
Pose estimation์ ํ์ํ ์ ๋ณด
- 2d coordinates of a few points
- 2์ฐจ์ ์ด๋ฏธ์ง ์์ ์ (x,y)โ
- 3d locations of the same points
- 2์ฐจ์ ์ด๋ฏธ์ง์ ๋์ํ๋ 3์ฐจ์ ์์ ์ (x,y,z)
- world coordinates๋ผ๊ณ ๋ ๋ถ๋ฆผ
- Intrinsic parameters of the camera
- ์ด์ ๊ฑฐ๋ฆฌ (focal lenght of camera)
- optical center in the image
- radial distortionโ
- pose estimation์ ํํํ๋ ๋ฐฉ๋ฒ
- ์นด๋ฉ๋ผ์ pose(rotation, translation)์ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํ ๋, world coordinates์ ์ P(U,V,W)๋ฅผ ๋ค์ ์์์ ํตํด camera coordinates์ ์ (X,Y,Z)๋ก ํฌ์ํ ์ ์๋ค.
- camera coordinates๋ฅผ ๊ตฌํ ํ, camera coordinates๋ก๋ถํฐ image coordinates๋ฅผ ๊ตฌํ ์ ์๋ค.
- ์ด๋ฅผ ํ์ฉํ์ฌ 2D point(x,y), 3D point(U,V,W), camera intrinsic matrix(focal length, optical center)๋ฅผ ์ ๋ ์ญ์ผ๋ก rotation๊ณผ translation์ ์์ธกํ ์ ์๋ค.
SolvePnP
1. input
- objectPoints : world coordinate ์์ 3์ฐจ์ ์ ๋ค
- imagePoint : 3์ฐจ์ ์ ๋ค์ ๋์ํ๋ image์์ 2์ฐจ์ ์ ๋ค
- cameraMatrix : camera intrinsic parameter
- distCoeffs : camera distortion coefficients
2. output
- rotation vector (Rodrigues)
- translation vectorโ
3. Rodrigues๋
- ์ ์์์ rotation์ 3*3 matrix๋ก ํํ๋๋ค.
- ์ด 3*3 ๋งคํธ๋ฆญ์ค๋ฅผ 4๊ฐ์ ๊ฐ(ํ์ ์ถ ๋ฒกํฐ + ํ์ ๊ฐ)์ผ๋ก ํํํ๋ ๋ฐฉ๋ฒ
ORB SLAM์์ SolvePnP์ฌ์ฉ
- SolvePnP๋ Tracking ๋ถ๋ถ์์ initial pose estimation ๋จ๊ณ์์ ์นด๋ฉ๋ผ ์์น ์ถ์ ์ ์ํด ์ฌ์ฉ๋จ
- ์์์์ ์ถ์ถํ ORB feature๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์นด๋ฉ๋ผ ์์น ์ถ์
- ๊ธฐ์กด์ map ์ ๋ณด (3d)์ Extract ORB๋ก ์ป์ ํน์ง์ (2D)์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์ด๋ํ ๊ฐ์ ์ฐพ๋๋ค. (camera Intrinsic parameters๋ ์ด์ ์ ์ด๋ฏธ ๊ตฌํด๋์๋ค๊ณ ๊ฐ์ )
Bag of Words
Bag of Words
๋ฌธ์๋ฅผ ์๋์ผ๋ก ๋ถ๋ฅํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, ๋ฌธ์ ๋ด์ ๋จ์ด์ ๋น๋์ ๋ถํฌ๋ฅผ ๋ณด๊ณ ์ด๋ค ์ข ๋ฅ์ ๋ฌธ์์ธ์ง ํ๋จํ๋ ๊ธฐ๋ฒ
- ๋ฑ์ฅํ๋ ๋จ์ด๋ก๋ถํฐ ๋จ์ด์ฅ์ ์์ฑํด ์ถํ ํ์ ์ธก์
- ๊ฐ ๋จ์ด์ ์ถํ ๋น๋๋ก๋ถํฐ ํ์คํ ๊ทธ๋จ ์์ฑ
- ํ์คํ ๊ทธ๋จ์ผ๋ก๋ถํฐ ๋ฌธ์์ ์์ฑ์ ๋ถ๋ฅ
์์์ฒ๋ฆฌ์์์ Bag of Words
์์ feature(SIFT, BRIEF, ORB...)๋ฅผ ์ถ์ถํ ํ, clustering์ ๊ฑฐ์ณ feature๋ฅผ ๋ํํ ์ ์๋ ์ฝ๋ ์์ฑ ๋ฐ ์ฝ๋๋ฅผ ๋ชจ์๋์ ์ฝ๋๋ถ ์์ฑ
์์์ ์์์์ feature๋ฅผ ์ถ์ถํ ํ clustering์ ๊ฑฐ์น ๊ฒฐ๊ณผ๋ฅผ codebook์ code์ ๋น๊ตํด ํ์คํ ๊ทธ๋จ์ผ๋ก ํํํด ์ด๋ฏธ์ง ๋ถ๋ฅ ๋ฐ ์ธ์
ORB SLAM์์์ Bag of Words
์์์์ ์ถ์ถํ ORB feature๋ก๋ถํฐ code ๋ฐ codebook ์์ฑํ๋ฉฐ, ORB SLAM์ ์ด๋ฃจ๋ 3๊ฐ์ง ์์คํ ์ธ Tracking, Local Mapping, Loop Closing ์ ๋ฐ์ ๊ฑธ์ณ ์ฌ์ฉํ๋ค.
1. Tracking
Traking๊ณผ์ ์์ lost๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ์๋ก ๋ค์ด์ค๋ ์์์ ORB feature๋ฅผ ์ด์ ์ ์์ฑ๋ keyframe์ map point๋ก ๊ตฌ์ฑ๋ bag of words์ ๋น๊ตํ๋ ๊ณผ์ ์ธ global relocalization์ ๊ฑฐ์น๋ค.
์ดํ ์ถฉ๋ถํ ์ ํจํ ๊ฐ์ด ๋์ค๋ฉด tracking์ ์ด์ด์ ์ค์ํ๋ค.
2. Local Mapping
์๋ก์ด keyframe์ด ์์ฑ๋๋ ๊ฒฝ์ฐ keyframe์ ๋ํ๋ด๋ bag of words๋ฅผ ๊ณ์ฐํด ์๋ก์ด map point์ triangulation์ ๊ณ์ฐ์ ๋๋๋ค.
3. Loop Closing
์๋ก์ด keyfream์ด Local Mapping ๊ณผ์ ์์ ๋ง๋ค์ด์ง keyframe์ bag of words ๋ด์ ๊ฐ๊ณผ ์ ์ฌํ๋ค๋ฉด ์ด์ ์ ์ง๋์จ ์ฅ์๋ผ๊ณ ํ๋จํด Loop Closing์ด ์ผ์ด๋ ์ ์๋ ํ๋ณด๋ก ๋ถ๋ฅํ๋ค.
Bundle adjustment
Bundle adjustment(์ดํ BA)
BA๋ *reprojection error๋ฅผ ์ต์ํ์ํค๋๋ก 3์ฐจ์ ํฌ์ธํธ์ ์์น ๋ฐ ์นด๋ฉ๋ผ์ ์์น๋ฅผ ์ต์ ํํ๋ ๊ณผ์ ์ด๋ค.
- reprojection error : ๋งต ์์ 3์ฐจ์ ํฌ์ธํธ๋ค์ keyframe ์ด๋ฏธ์ง๋ค์ projection์ํจ ์์น์ ํด๋น ์์ ํ๋ ์์์ ์ค์ ๊ด์ธก๋ ์์น์ ์ฐจ์ด
Bundle adjustment flow chart
- ์์์์ ํน์ง์ ์ ๊ฒ์ถํ๊ณ ์นด๋ฉ๋ผ ์์ธ๋ฅผ ์ถ์ ํ๋ค.
- ํน์ง์ ๊ณผ ์นด๋ฉ๋ผ ์์ธ๋ก ๋ถํฐ 3์ฐจ์ ์ ์ ๊ณ์ฐํ๋ค.
- ์นด๋ฉ๋ผ ์์ธ์ 3์ฐจ์ ์ ์ ๋ณด์ ํ๊ธฐ ์ํด BA๋ฅผ ์ฌ์ฉํ๋ค.
ORB SLAM์์์ Bundle Adjustment
1. Traking thread (Montion only BA)
์นด๋ฉ๋ผ ํฌ์ฆ๋ฅผ ์ต์ ํํ๋ค. 3์ฐจ์ ์ ์(X) 2์ฐจ์ ์ ์ผ๋ก ํฌ์์ํจ ํ, 2์ฐจ์ ์ (x)๊ณผ์ ์ฐจ์ด๊ฐ ์ต์ํ ๋๋ Rotation๊ณผ translation์ ๊ตฌํ๋ค.
2. Local mapping (Local BA)
Local map์ ๋ํ ํคํ๋ ์๊ณผ ๋งต ํฌ์ธํธ๋ฅผ ์ต์ ํํ๋ค. ๊ฐ๊ฐ์ keyframe์ ๋ํด ์์น๋ฅผ ๋ณด์ ํด์ค๋ค.
3. Loop closing (Full BA)
๋ฃจํ ํด๋ก์ง ์ดํ ๋ชจ๋ ํคํ๋ ์๊ณผ ๋งต ํฌ์ธํธ๋ฅผ ์ต์ ํํ๋ฉฐ, ๋งต ์์ฑ์ ๋์ ๋ ์ค์ฐจ๋ฅผ ์์ ํ๋ค. ์์์ Local BA์์์ ๋ชจ๋ ํคํ๋ ์๊ณผ ํฌ์ธํธ๋ก ํ์ฅํ๋ค.
1. Tracking thread
์์์์ ํน์ง์ ์ ์ถ์ถํ์ฌ *key freame์ ์์ฑํ๊ณ , ์นด๋ฉ๋ผ์ ์์น(camera pose)๋ฅผ ์ถ์ ํ๋ ๊ณผ์
- key frame: ์ ์๋ฏธํ ํน์ง์ ์ ๋ง์ด ๊ฐ์ง๋ frame (์ง๋๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉ๋ ์ค์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ frame)โ
1.1 Extract ORB
input ์์ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ผ๋ก ORB Feature descriptor๋ฅผ ์ด์ฉํ์ฌ ์์ ๋ด ํน์ง์ ๊ฒ์ถํ๋ค.
1.2 Pose Estimation or Relocalisation
์นด๋ฉ๋ผ์ ์์น๋ฅผ ์ถ์ ํ๋ ๋จ๊ณ๋ก Tracking์ด ์๋๋์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ์ ๊ทผ๋ฐฉ๋ฒโ์ ๊ฐ์ง๋ค.
1.2.1 Tracking์ด ์๋๋ ๊ฒฝ์ฐ
- ์ด์ frame์ ํตํ pose estimation
- constant velocity motion model์ ์ฌ์ฉํ์ฌ ์นด๋ฉ๋ผ ์์น ์ถ์ (๋ฑ์๋๋ก ์์ง์ธ๋ค๋ ๊ฐ์ ) -> guided search ์ํ -> pose optimization
1.2.2 Tracking์ด lost๋ ๊ฒฝ์ฐ (global relocalisation)
- back of words์ place recognition ๋ชจ๋์ ์ด์ฉํ์ฌ global relocalization ์ํ -> traking ํ๋ณต
- solve PnP๋ฅผ ์ด์ฉํ์ฌ ์นด๋ฉ๋ผ ์์น ์ถ์ -> guided search ์ํ -> pose optimization
1.3 Track Local Map
๋ ๋ง์ map point ๋์์์ ์ฐพ๊ธฐ ์ํด local map์ frame์ ํฌ์์์ผ pose optimization์ ์ํํ๋ค.
1.4 New Keyframe Decision
๋ค์ 4๊ฐ์ง ์กฐ๊ฑด์ ๋ชจ๋ ์ถฉ์กฑ์ key frame์ผ๋ก ๊ฒฐ์ ํ๋ค.
- ๋ง์ง๋ง global relocalizationํ, ์ต์ 20frame ์ดํ์ frame (๋๋ฌด ์ ์ฌํ๋ฉด ์๋ฏธ๊ฐ ์์)
- Local mapping ์ํ์ด ์ ํฉํ๊ฑฐ๋ ๋ง์ง๋ง keyframe ์ถ๊ฐ ํ, 20 freame ์ดํ์ frame
- ํ์ฌ frame์ด ์ต์ 50๊ฐ ์ด์์ ํน์ง์ ์ track
- ํ์ฌ frame์ด reference keyframe์ 90% ์ดํ์ ํน์ง์ ์ trackโ
2. Local Mapping thread
์ค๋ณต๋๋ key frame๊ณผ tracking ํ์ ์์ฑ๋ map point๋ค์ ์ต์ ํ ํ๋ค.
2.1 KeyFrame Insertion
- tracking thread์์ ์๋ก์ด key frame์ด ์์ฑ๋๋ฉด ์ด key frame์ bag of words๋ฅผ ๊ณ์ฐํ๋ค.
- ์ด๋ฅผ ๋ฐํ์ผ๋ก ์๋ก์ด key frame๊ณผ ์๋ณธ ์์ ํ๋ ์์ map point๋ฅผ ๋น๊ตํ๋ค.
- ๊ทธ ํ, covisibility graph๋ฅผ updateํ๋ค.
- covisibility graph : ๋ ๋ ์ด์์ ์์ ์์ ๊ฒน์น๋ ๋ถ๋ถ์ ๊ฐ์๋ฅผ ํํํ ๊ฒ
2.2 Recent MapPoints Culling
- Traking ๊ณผ์ ํ์ ์๊ธด Map point๋ค๊ณผ ์๋ก ์ฝ์ ๋ key frame์ ๋น๊ตํ์ฌ bad point๋ฅผ ์ ๊ฑฐํ๋ค.
- low visibility, not trackable ์
2.3 New Points Creation
- ์์์ ์์ ๋ Covisibility graph๋ฅผ ์ด์ฉํ์ฌ ํ์ฌ ํ๋ ์๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ ํ๋ ์๋ค์ ์ฐพ๋๋ค.
- ์ฐพ์ ํ๋ ์๊ณผ ํ์ฌ ํ๋ ์์ Map Point ์์ ์ด์ฉํ์ฌ Triangulate ํ๋ค.
- Triangulate ๊ณผ์ ํ ์๊ธด ํ๋ ์์ map point๋ฅผ ์์ฑํ๋ค.
- ์ด Map point๋ค ์ค ํ์ฌ ํ๋ ์๊ณผ covisibility graph ์์์ ์ฐ๊ฒฐ๋์ด ์๋ map point๋ค๋ง project ์ํจ๋ค.
- ๊ทธ ํ, covisibility graph๋ฅผ ๋ค์ updateํ๋ค.
2.4 Local BA
- map point ๊ฐ์๋ฅผ ์ต์ ํ ํ๋ ๊ณผ์ ์ด๋ค.
- ํ์ฌ key frame๊ณผ covisibility ๊ด๊ณ์ ์๋ key frame์ ์ฐพ๋๋ค.
- ๊ฐ ํ๋ ์๋ค์ ๋น๊ตํ์ฌ ๊ฐ์ ๊ณณ์ ํ์ํ๋ map point๋ค์ ์ฐ๊ฒฐํ๊ณ , ๊ทธ๋ฌ์ง ๋ชปํ map point๋ outliers๋ก ํ๋จํ์ฌ ์ ๊ฑฐํ๋ค.
2.5 Local KeyFrames Culling
- ๋ค์๊ณผ ๊ฐ์ ์ ์ฝ์กฐ๊ฑด์ ๋์ด key frame์ ๊ฐ์๋ฅผ ์ ํํ๋ค.
- ๋ชจ๋ key frame๋ค์ ์ ์ด๋ 3๊ฐ ์ด์์ ๋ค๋ฅธ key frame์ map point๋ค๊ณผ 90%์ covisibility ์ฐ๊ฒฐ์ด ๋์ด ์์ด์ผ ํ๋ค.
- key frame์ด ๋๋ฌด ๋ง์ผ๋ฉด relocalisation๊ณผ bundle adjustment์ ํจ๊ณผ๊ฐ ์ ์ด์ง๋ค.
โ3. Loop Closing thread
์ด์ ์ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ณต๊ฐ์ธ์ง๋ฅผ ํ์ธํ๊ณ ๋ฐฉ๋ฌธํ๋ ๊ณต๊ฐ์ด๋ผ๊ณ ํ๋จ๋๋ฉด ์ด์ ์ ์์ฑ๋ ์ง๋์ ํตํฉํ๋ ๊ธฐ๋ฒ
- ์ด์ ์ ๋ฐฉ๋ฌธํ ์์น๊ฐ ์๋ชป๋ Global location์ remappedํด์ค
- ์๋ฌ๊ฐ ๋์ ๋๋ฉด ์ฌ์ ์ ๋ฐฉ๋ฌธ๋ ๊ณต๊ฐ์ด ๋ค๋ฅธ ์์น๋ก ๋์ด
- place recognitionโโ์ ํตํด ์ด์ ์ ๋ฐฉ๋ฌธํ๋ ๊ณต๊ฐ์ธ์ง๋ฅผ ํ์ธํ๋ค.
Place recognition
Bag of words ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. (์์์์ feature๋ค์ ์ถ์ถํ ํ, ์ถ์ถ๋ feature๋ค์ ๋ํํ ์ ์๋ ๊ฐ(code)๋ค๋ก ๊ตฌ์ฑ๋๋ codebook์ ์์ฑํ๋ ๊ธฐ๋ฒ)โ
1. visual vocabulary
- ๋ง์ ์ด๋ฏธ์ง๋ค๋ก๋ถํฐ feature ์ถ์ถ ํ, descriptor๋ฅผ ๋ชจ์ผ๊ณ descriptor๋ค์ ๋ช๊ฐ์ฉ ๋ฌถ์ด clusteringํ ๊ฐ์ด๋ฐ ๊ฐ์ vocabulary๋ผ ํ๋ค.
2. recognition database
- keyframe ์์ฑ ์, visual vocabulary๋ฅผ ์ฌ์ฉํด keyframe์ ๋ํ ์ด๋ฏธ์ง ํน์ง์ ํํํ data๋ฅผ ๋ง๋ค์ด ์ ์ฅโ
3.1 Loop detection
- recognition database๋ฅผ ํ๋ณด๊ตฐ์ผ๋ก ํ์ฌ keyframe์์ ๋์จ visual vocabulary๋ฅผ ํตํด ํํ๋ data๋ฅผ ํ๋ณด๊ตฐ ์์ ๋ชจ๋ data์ ๋น๊ตํ์ฌ ์งํ
- ๋์ผํ ์ฅ์๋ผ๋ ํ๋จ๋๋ ์ผ์ ๊ธฐ์ค์ ๋ง์กฑํ๋ฉด ์ง๋ ํตํฉ
Map Data
ORB SLAM์ผ๋ก ๋ถํฐ ์์ฑ๋๋ ๋ฐ์ดํฐ
1. Map point
- frame์์ ๊ฒ์ถ๋ feature๋ค์ 3d๋ก ์ง๋์ mappingํ point
- ๊ฐ map point(pi)๊ฐ ๊ฐ์ง๋ World ์ขํ๊ณ ์์ pi์ ์์น
- Representative ORB descriptor : ๊ฐ map point๋ฅผ ํฌํจํ keyframes์ ORB descriptor์ค์์ hamming distance๊ฐ ์ต์์ธ ORB desciptor
- viewing distance : ๊ฐ map point์ ์ต๋, ์ต์ ๊ฐ์ ๊ฑฐ๋ฆฌ
2. key frames
์ง๋ ์์ฑ์ ํน์ง์ด ๋ ๋งํ ์์น๋ฅผ ๋ํ๋ด๋ frame (์ ์๋ฏธํ feature๋ฅผ ๋ค์ ๋ณด์ )
- camera pose : ์นด๋ฉ๋ผ ์์ธ ๋ฐ ์์น
- camera intrinsics : focal length์ principal point๋ฅผ ํฌํจํ ์นด๋ฉ๋ผ ์ ๋ณด
- ORB feature in the frame : frame์์ ์ถ์ถ๋ ๋ชจ๋ ORB feature
3. covisibility graph
keyframe๊ฐ์ ๋งตํฌ์ธํธ ๊ณต์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ graph (Spanning tree)
- node : keyframe
- edge : share observations of map points
- min share map points : 15
4. essential graph (spanning tree)
covisibility ๊ทธ๋ํ์ ํต์ฌ ์ ๋ณด๋ง์ ์ ์ฅํ subgraph (Minimum Spanning tree)
- min sharred map point : 100
# ์ฐธ๊ณ
- Raul Mur-Artal, J. M. M. Montiel, Juan D. Tardos. ใORB-SLAM: a Versatile and Accurate Monocular SLAM Systemใ. IEEE: transaction on robotics, 2015.: https://arxiv.org/pdf/1502.00956v2.pdf
- https://www.youtube.com/watch?v=mth-SMWnfas
- https://elecs.tistory.com/319
- https://m.blog.naver.com/PostView.nhn?blogId=ghd3079&logNo=221496302601&proxyReferer=https:%2F%2Fwww.google.com%2F
'Study: Artificial Intelligence(AI)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vision] Visual SLAM vs Visual-Inertial Odometry(VIO) (0) | 2023.03.19 |
---|---|
[Vision] Key-Point Extraction: ์์ ํน์ง์ ์ถ์ถ (0) | 2023.03.16 |
[Vision] SURF (Speed-Up Robust Feature)์ ์๋ฆฌ.txt (0) | 2021.06.08 |
[Vision] SIFT (Scale-Invariant Feature Transform)์ ์๋ฆฌ.txt (0) | 2021.06.01 |
[Vision] Benefiting from AI and deep learning for video summarization (0) | 2021.06.01 |