Study: Artificial Intelligence(AI)

[Vision] Visual SLAM vs Visual-Inertial Odometry(VIO)

DrawingProcess 2023. 3. 19. 08:04
๋ฐ˜์‘ํ˜•
๐Ÿ’ก ๋ณธ ๋ฌธ์„œ๋Š” cv-learn ๋ธ”๋กœ๊ทธ์—์„œ 'Visual-SLAM vs VIO'์— ๋Œ€ํ•ด ํผ์˜จ ๊ธ€์ž…๋‹ˆ๋‹ค.
Visual SLAM vs Visual-Inertial Odometry(VIO) ์ฐจ์ด์ ์— ์ •๋ฆฌํ•˜์˜€์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Visual SLAM vs Visual-Inertial Odometry(VIO)

3D pose + 3D map point๋ฅผ ๊ตฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ,

  1. ์นด๋ฉ”๋ผ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด Visual-SLAM
  2. ์นด๋ฉ”๋ผ + IMU๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Visual-inertial odometry (VIO)

Visual odometry๊ฐ€ ์•„๋‹ˆ๋ผ Visual-SLAM์ด ๋˜๋ ค๋ฉด global consistency๊ฐ€ ์œ ์ง€๋˜์–ด์•ผํ•˜๋Š”๋ฐ (i.e. ๋™๋„ค ํ•œ๋ฐ”ํ€ด๋ฅผ ๋Œ๊ณ ์™€์„œ ์›์ ์œผ๋กœ ์™”์„ ๋•Œ, ์œ„์น˜ ์ •๋ณด์™€ scale์ด ์ •ํ™•ํ•˜๊ฒŒ ๋งž์•„๋–จ์–ด์ ธ์•ผํ•จ), ์ด๋Š” loop closure์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค. (Visual odometry๋งŒ์œผ๋กœ ์œ„์น˜์ •๋ณด์™€ scale์ด ์ •ํ™•ํ•˜๊ฒŒ ๋งž์•„๋–จ์–ด์ง€๋ฉด ๊ทธ๊ฒƒ๋„ SLAM์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•™๊ณ„์—์„œ๋Š” ์ž˜ ๋ฐ›์•„๋“œ๋ ค์ง€์ง€ ์•Š๋Š” ์ „์ œ์ด๋‹ค.)

Visual-SLAM๊ณผ VIO ๋ชจ๋‘ Monocular, Stereo, Multi-camera, RGB-D ํ˜•ํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

Visual-SLAM

  • ์นด๋ฉ”๋ผ๋งŒ ์‚ฌ์šฉํ•ด์„œ 3D pose + 3D map point๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ตœ๊ทผ ์—ฐ๊ตฌ๋Š” ์ฃผ๋กœ graph-optimisation ๊ธฐ๋ฐ˜์˜ SLAM ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•จ
    • Total reprojection error๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ
  • ์œ ๋ช…ํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ
    • Monocular: MonoSLAM, PTAM, ORB-SLAM, SVO, DSO
    • Stereo: ORB-SLAM2, Stereo-DSO, ProSLAM
    • RGB-D: KinectFusion, ElasticFusion, BundleFusion

์žฅ์ 

  • VIO ๋ณด๋‹ค ์ ์€ ๊ณ„์‚ฐ๋Ÿ‰
  • ์นด๋ฉ”๋ผ๋งŒ ์žˆ์œผ๋ฉด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Œ

๋‹จ์ 

์นด๋ฉ”๋ผ๊ฐ€ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์—์„œ๋Š” Visual-SLAM๋„ ์ž˜ ์ž‘๋™ํ•˜์ง€ ๋ชปํ•จ

  • e.g. ํ•˜์–€ ๋ฒฝ์„ ๋ฐ”๋ผ๋ณด๋ฉฐ feature๊ฐ€ ์ „ํ˜€ ๋ฝ‘ํžˆ์ง€ ์•Š์„ ๋•Œ
  • e.g. ๋ฐ˜๋ณต๋˜๋Š” ํŒจํ„ด์ด ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜์„œ ์ œ๋Œ€๋กœ ๋œ ํ”ผ์ณ ๋งค์นญ์ด ๋˜์ง€ ์•Š์„ ๋•Œ
  • e.g. ๋„ˆ๋ฌด ์–ด๋‘ก๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ๋ฐ์•„์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š์„ ๋•Œ

 

Visual-inertial odometry (VIO)

  • ์นด๋ฉ”๋ผ์™€ IMU๋ฅผ ์‚ฌ์šฉํ•ด์„œ 3D pose + 3D map point๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ตœ๊ทผ graph-optimisation ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ๊ฐ€ ์œ ํ–‰ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋‚˜, ์‹œ์ค‘ ์ œํ’ˆ ์ค‘์—๋Š” ์•„์ง filter ๊ธฐ๋ฐ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋งŽ์Œ (e.g. Google ARCore, Apple ARKit)
    • IMU pre-integration ์—ฐ๊ตฌ ์ดํ›„ ๊ฐ€๋Šฅํ•ด์ง
      • ์ด์ „์—๋Š” IMU ๊ฐ’์„ ๋ณด์ • ์ „/ํ›„๋กœ state propagation์„ ๋‘๋ฒˆ ํ•ด์•ผํ–ˆ์ง€๋งŒ, pre-integration ์ดํ›„๋กœ ํ•œ๋ฒˆ๋งŒ ํ•ด๋„ ๋˜๊ฒŒ ๋งŒ๋“ค๋ฉด์„œ ๋™์‹œ์— ์ˆ˜๋งŽ์€ ์„ผ์„œ ๊ด€์ธก์น˜๋ฅผ ๋‹จ ํ•˜๋‚˜์˜ ๊ด€์ธก์น˜๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ.
    • Graph-optimisation ๊ธฐ๋ฐ˜์˜ ๋ฐฉ์‹์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ loop closure ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋จ
      • ์ดˆ์ฐฝ๊ธฐ์˜ loop closure๊ฐ€ ์—†๋Š” VIO์™€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด VINS (Visual-Inertial System)๋ผ๊ณ  ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ƒ๊น€ (ํ•˜์ง€๋งŒ ์ •์‹ ๋‹จ์–ด๋Š” ์•„๋‹˜)
  • ์œ ๋ช…ํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ
    • Monocular: MSCKF, OKVIS, ROVIO, VINS-Mono, ORB-SLAM3
    • Stereo: S-MSCKF, VI-DSO
    • RGB-D: ElasticFusion+IMU

์žฅ์ 

  • ์นด๋ฉ”๋ผ์™€ IMU๋Š” ์„ผ์„œ ํŠน์„ฑ์ƒ ์„œ๋กœ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•จ
    • e.g. ์–ด๋‘์šด ๊ณณ์—์„œ ์นด๋ฉ”๋ผ๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ง€ ๋ชปํ•  ๋•Œ, IMU ์„ผ์„œ๋Š” ๊ณ„์† pose ์ถ”์ • ๊ฐ€๋Šฅ (VIO ์„ค๊ณ„์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)
  • Monocular์˜ ๊ฒฝ์šฐ ์นด๋ฉ”๋ผ๋งŒ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ์–ป์–ด๋‚ผ ์ˆ˜ ์—†๋Š” metric scale ์ •๋ณด๋ฅผ IMU motion์„ ํ†ตํ•ด ์ถ”์ • ๊ฐ€๋Šฅ (i.e. up-to-scale ๋งต์ด ์•„๋‹Œ ์‹ค์ œ ์„ธ์ƒ์˜ scale์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ)
  • ๋” ๋งŽ์€ ์ตœ์ ํ™” constraint๋กœ ์–ป์–ด๋‚ด๋Š” ๋†’์€ ์ •ํ™•๋„
  • ์นด๋ฉ”๋ผ ํ”ผ์ณ ํŠธ๋ž™ํ‚น์„ ํ•  ๋•Œ ๋ชจ์…˜๋ชจ๋ธ ๊ฐ€์„ค ๋Œ€์‹  IMU ์„ผ์„œ๋กœ ์–ป์€ ๋ชจ์…˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ์‹ค์ œ ์„ผ์„œ ๊ฐ’์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ถ•์†Œ ๊ฐ€๋Šฅ

๋‹จ์ 

  • ๋” ๋งŽ์€ ์ตœ์ ํ™” constraint๋กœ ์ธํ•œ ๋งŽ์€ ๊ณ„์‚ฐ๋Ÿ‰
    • ๊ณ ์„ฑ๋Šฅ CPU๋ฅผ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Œ
  • ์นด๋ฉ”๋ผ-IMU ๊ฐ„์˜ ์ •ํ™•ํ•œ ์บ˜๋ฆฌ๋ธŒ๋ ˆ์ด์…˜์ด ํ•„์š”
    • ์–‘์‚ฐ์„ ํ•  ๊ฒฝ์šฐ ์ถ”๊ฐ€ ๊ณต์ • ํ•„์š”
  • ๋‘ ์„ผ์„œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ „์ฒด๊ฐ€ ์‹คํŒจํ•จ (VIO ์„ค๊ณ„์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•