ICP
ICP
De forma geral, o ICP é um algoritmo para fazer alinhamento entre dois conjuntos de dados, podem ser 2D, que chamamos de Affine ICP, e o ICP em 3D. No contexto de navegação autônoma, o ICP é usado para determinar a trajetória percorrida entre dois scans de point clouds obtidos de um sensor chamado LiDAR. O LiDAR tem um funcionamento semelhante ao radar, vulgarmente falando, que emite feixes de luz para determinar o ponto 3D do ambiente ao seu redor, por isso ele é o Light Detection and Ranging (LiDAR).
Uma das tecnologias que a gente desenvolve é em odometria de LiDAR para carros autônomos com uma empresa norte-americana. O ICP é utilizado em nosso algoritmo, bem como outros algoritmos e sensores para melhorar a precisão da odometria. Odometria é a tarefa de estimar, em 6 graus de liberdade ou menos, o movimento (translação + rotação) de um corpo rígido. Para isso, podemos usar o LIDAR, Câmera, IMU, GPS, ou combinar todos esses sensores para melhorar a precisão do algoritmo.
Mas nem sempre o ICP é usado, existem outras formas de fazer odometria, como no paper do LOAM que ele ele usa um detector de quinas na point cloud.
Se você se interessa por isso, eu recomendaria você estudar C++ e Estimação de Estado. C++ eu recomendo porque nessa indústria de navegação autônoma, é importante termos segurança, que um código de C++ oferece, e também usamos ele por questão de performance (velocidade e uso de multiprocessos, coisa que em Python é mais complicado).
Estimação de Estado existem vários livros, um deles é do Sebastian Thrun tem bastante matemática, se você gosta, vai fundo. Já C++, acredito que você pode procurar por cursos online, no YouTube, que você vai provavelmente achar algum material que se adeque ao seu estilo de aprendizado.
Referências interessantes
ICP(Iterative Closest Point) Algorithm John Lambert
Video rápido explicando o algoritmo:
Playlist de ICP:
Implementação do ICP
ClayFlannigan
KojiKobayashi
richardos
Libs que possam ser interessantes
ICP - A Python module for registering a photo with a database image of the same scene
Open3D - A Modern Library for 3D Data Processing
Mini curso:
Introdução ao Processamento de Nuvens de Pontos 3D
Ministrante: Natalia Amorim
Github do Material: https://github.com/NataliaCarvalho03/opencvismoday-material
Linkedin: https://www.linkedin.com/in/natalia-carvalho-02901798/
Dissertação sobre SFM: https://grupo-opencv-br.github.io/tutoriais-tecnologia/avancado/R-D-NATALIACARVALHODEAMORIM.pdf