Iterative Closest Point
- También llamado: ICP, ICP registration
- Categoría: State estimation & navigation › Localisation
- Etiquetas: point-cloud, registration, lidar, localization, 3d-perception
Un algoritmo que alinea dos nubes de puntos emparejando repetidamente cada punto con su vecino más cercano en la otra nube y calculando la transformación rígida que mejor se ajusta a esos pares.
Definición
Iterative Closest Point (ICP) es un algoritmo para registrar dos conjuntos de puntos 3D, es decir, encontrar la rotación y la traslación que mejor alinean uno con el otro. Lo presentaron Besl y McKay en 1992, y Chen y Medioni publicaron un método muy parecido por la misma época. ICP es una herramienta básica para la odometría LiDAR, el emparejamiento de escaneos (scan matching), la reconstrucción 3D y el refinamiento de la pose de objetos.
El algoritmo alterna dos pasos. Primero, para cada punto de la nube de origen busca el punto más cercano de la nube de destino, lo que da un conjunto de correspondencias provisionales. Segundo, calcula la transformación rígida que minimiza la distancia entre esos pares; para distancias punto a punto esto tiene una solución en forma cerrada que usa la descomposición en valores singulares. La nube de origen se desplaza según esa transformación, y el proceso se repite hasta que el cambio entre iteraciones se vuelve pequeño.
ICP converge solo a un mínimo local, por lo que necesita una estimación inicial razonable, normalmente procedente de la odometría, de una unidad de medición inercial (IMU) o de un método de registro global aproximado. Si la desalineación inicial es grande, los vecinos más cercanos serán erróneos y el algoritmo puede fijarse en una alineación incorrecta.
Muchas variantes mejoran la velocidad y la robustez. El ICP punto a plano mide la distancia de cada punto al plano tangente en su correspondencia, lo que suele converger más rápido en escenas estructuradas. Generalized ICP modela la covarianza de la superficie local en ambas nubes. Las implementaciones prácticas también submuestrean los puntos, usan árboles k-d para la búsqueda de vecinos y descartan los pares demasiado separados o con normales de superficie incoherentes.
Por qué importa
La mayoría de los sistemas de localización y mapeo basados en LiDAR usan ICP o una de sus variantes para estimar cómo se ha movido el robot entre escaneos y para verificar los cierres de bucle. También es una forma estándar de refinar la pose de un objeto antes de agarrarlo cuando se dispone de un modelo 3D del objeto.
Aplicaciones clave
- Odometría LiDAR y emparejamiento de escaneos para robots móviles
- Verificación de cierres de bucle en SLAM
- Refinamiento de la pose de objetos para el agarre a partir de datos de profundidad
- Fusión de varios escaneos en un único modelo 3D
- Alineación de datos de sensores en vivo con un mapa previo para la localización
En la práctica
Un equipo que desarrolla odometría LiDAR para un robot móvil normalmente submuestrea cada escaneo con una rejilla de vóxeles, usa como estimación inicial la estimación de movimiento anterior o los datos integrados de la unidad de medición inercial (IMU) y ejecuta ICP punto a plano contra el escaneo anterior o un mapa local. Bibliotecas como PCL, Open3D y libpointmatcher ofrecen implementaciones listas para usar. Los principales parámetros de ajuste son la distancia máxima de correspondencia, el umbral de convergencia y el límite de iteraciones, y los ingenieros comprueban la puntuación de ajuste final para detectar fallos en lugares sin rasgos geométricos, como pasillos largos o campo abierto, donde ICP puede deslizarse a lo largo de la dirección que no tiene restricción.
Ideas erróneas comunes
- ICP encuentra la mejor alineación global — converge a un mínimo local y necesita una buena estimación inicial
- ICP funciona con cualquier geometría — en escenas degeneradas, como suelos planos o túneles largos, algunas direcciones quedan sin restricción y el resultado puede derivar
- ICP gestiona el escalado y la deformación — el ICP estándar estima solo una transformación rígida; la alineación con escala o no rígida necesita otros métodos
Quién debería saberlo
- Ingenieros de percepción que trabajan con LiDAR y cámaras de profundidad
- Desarrolladores de SLAM y de localización
- Ingenieros de manipulación que estiman la pose de objetos a partir de modelos
- Profesionales del escaneo y la reconstrucción 3D
Tecnologías relacionadas
- Point Cloud Library (PCL)
- Open3D
- Normal Distributions Transform (NDT)
- Generalized ICP
- Árbol k-d (k-d Tree)
- RANSAC
Términos relacionados
Proyectos relacionados
- 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
Vídeos
- Iterative Closest Point (ICP) - Computerphile: Computerphile
- Iterative Closest Point (ICP) - 5 Minutes with Cyrill: Cyrill Stachniss