Open Source Robotics

고품질 오픈소스 로봇 프로젝트, 도구 및 소프트웨어의 엄선된 컬렉션.

Iterative Closest Point

  • 다른 이름: ICP, ICP registration
  • 카테고리: State estimation & navigation › Localisation
  • 태그: point-cloud, registration, lidar, localization, 3d-perception

각 점을 다른 점군에서의 최근접 이웃과 반복적으로 짝짓고, 그 쌍들에 가장 잘 맞는 강체 변환을 풀어 두 점군을 정렬하는 알고리즘.

정의

Iterative Closest Point(ICP)는 두 3D 점 집합을 정합하는, 즉 한쪽을 다른 쪽에 가장 잘 맞추는 회전과 평행 이동을 찾는 알고리즘이다. 1992년 Besl과 McKay가 제안했으며, 거의 같은 시기에 Chen과 Medioni가 밀접하게 관련된 방법을 발표했다. ICP는 LiDAR 오도메트리, 스캔 매칭, 3D 재구성, 물체 자세 정밀화를 위한 기본 도구이다.

이 알고리즘은 두 단계를 번갈아 수행한다. 먼저 소스 점군의 각 점에 대해 타깃 점군에서 가장 가까운 점을 찾아 잠정적인 대응점 집합을 얻는다. 다음으로 그 쌍들 사이의 거리를 최소화하는 강체 변환을 계산한다. 점-대-점 거리의 경우 이는 특이값 분해를 이용한 닫힌 형식의 해를 가진다. 소스를 그 변환만큼 이동시키고, 반복 사이의 변화가 작아질 때까지 이 과정을 되풀이한다.

ICP는 국소 최솟값으로만 수렴하므로 합리적인 초기 추정값이 필요하며, 이는 보통 오도메트리, IMU 또는 대략적인 전역 정합 방법에서 얻는다. 처음 어긋남이 크면 최근접 이웃이 잘못 잡히고, 알고리즘이 틀린 정렬에 고착될 수 있다.

속도와 강건성을 높이는 변형이 많다. 점-대-평면 ICP는 각 점에서 대응점의 접평면까지의 거리를 측정하며, 구조화된 장면에서 보통 더 빨리 수렴한다. Generalized ICP는 두 점군 모두에서 국소 표면 공분산을 모델링한다. 실제 구현에서는 점을 다운샘플링하고, 이웃 탐색에 k-d 트리를 사용하며, 너무 멀리 떨어져 있거나 표면 법선이 일관되지 않은 쌍을 제거한다.

중요한 이유

대부분의 LiDAR 기반 위치 추정 및 지도 작성 시스템은 ICP나 그 변형을 사용해 스캔 사이에 로봇이 어떻게 움직였는지 추정하고 루프 클로저를 검증한다. 물체의 3D 모델이 있을 때 파지 전에 물체 자세를 정밀화하는 표준적인 방법이기도 하다.

주요 응용

  • 모바일 로봇을 위한 LiDAR 오도메트리와 스캔 매칭
  • SLAM에서 루프 클로저 검증
  • 깊이 데이터로부터 파지를 위한 물체 자세 정밀화
  • 여러 스캔을 하나의 3D 모델로 병합
  • 위치 추정을 위해 실시간 센서 데이터를 사전 지도에 정렬

실제 사례

모바일 로봇용 LiDAR 오도메트리를 만드는 팀은 보통 각 스캔을 복셀 그리드로 다운샘플링하고, 직전 운동 추정값이나 적분한 IMU 데이터를 초기 추정값으로 사용하며, 직전 스캔이나 국소 지도에 대해 점-대-평면 ICP를 실행한다. PCL, Open3D, libpointmatcher 같은 라이브러리가 바로 쓸 수 있는 구현을 제공한다. 주요 튜닝 파라미터는 최대 대응 거리, 수렴 임계값, 반복 횟수 제한이며, 엔지니어는 최종 적합도 점수를 확인해 긴 복도나 탁 트인 들판처럼 기하학적 특징이 없는 장소에서의 실패를 잡아낸다. 이런 곳에서는 ICP가 구속이 없는 방향을 따라 미끄러질 수 있다.

흔한 오해

  • ICP는 전역적으로 최선인 정렬을 찾는다 — 국소 최솟값으로 수렴하므로 좋은 초기 추정값이 필요하다
  • ICP는 어떤 형상에서든 작동한다 — 평평한 바닥이나 긴 터널 같은 퇴화된 장면에서는 일부 방향이 구속되지 않아 결과가 표류할 수 있다
  • ICP는 크기 변화와 변형을 처리한다 — 표준 ICP는 강체 변환만 추정하며, 크기 변화가 있거나 비강체인 정렬에는 다른 방법이 필요하다

알아야 할 사람

  • LiDAR와 깊이 카메라를 다루는 인식 엔지니어
  • SLAM 및 위치 추정 개발자
  • 모델 기반 물체 자세 추정을 하는 조작 엔지니어
  • 3D 스캐닝 및 재구성 실무자

관련 기술

  • Point Cloud Library (PCL)
  • Open3D
  • Normal Distributions Transform (NDT)
  • Generalized ICP
  • k-d 트리(k-d Tree)
  • RANSAC

관련 용어

  • Point Cloud
  • LIDAR
  • SLAM
  • Transform

관련 프로젝트

  • Open3D: Modern library for 3D point cloud processing, mesh operations, and 3D machine learning
  • oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
  • PCL: Industry-standard C++ library for point cloud processing in robotics perception
  • Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
  • OpenDroneMap: Open-source photogrammetry toolkit that turns drone images into maps and 3D models
  • Nav2: ROS 2 navigation stack with path planning and obstacle avoidance for mobile robots

동영상

  • Iterative Closest Point (ICP) - Computerphile: Computerphile
  • Iterative Closest Point (ICP) - 5 Minutes with Cyrill: Cyrill Stachniss

이 웹사이트는 JavaScript가 필요합니다. 오픈소스 로봇 프로젝트를 탐색하려면 JavaScript를 활성화하세요.