Projeto de Odometria para Drones para o Processo Seletivo do RoboCIn.
Projeto de Odometria Visual Monocular, utilizando apenas uma câmera, com o dataset KITTI.
- Capturar nova imagem
$I_k$ - Remover distorção em
$I_k$
- Remover distorção em
- Extrair e encontrar características correspondentes entre
$I_{k-1}$ e$I_k$ - Usar ORB para detectar características em
$I_{k-1}$ e FLANN para rastreá-las em$I_k$ . - Uma nova detecção é ativada se o número de características cair abaixo de um determinado limite.
- Usar ORB para detectar características em
- Calcular a Matriz Essencial
$E$ para o par de imagens$I_{k-1}$ e$I_k$ - Usar o algoritmo de 5 pontos de Nister com RANSAC para calcular a matriz essencial.
- Calcular a Matriz de Rotação
$R$ e o Vetor de Translação$t$ a partir de$E$ - Calcular a escala relativa e redimensionar
$t_k$ de acordo - Formar
$T_k$ $C_k = C_{k-1} T_k$ - Repetir 1)
- A escala é calculada utilizando um algoritmo simples de triangulação..
- Se a escala for muito baixa, é descartada a posição calculada.
- Uma direção preferencial é escolhida, e o vetor de translação é investigado para verificar se essa direção é a predominante.
- O projeto foi implementado em Python 3, com as bibliotecas:
- OpenCV
- Numpy
- Matplotlib
- Pandas
- Dataset KITTI
- Jupyter Notebook
- Instalar as dependências
- Clonar o repositório
- Alterar a localização do dataset KITTI no arquivo ./src/config.json
- Executar o notebook ./src/KITTI.ipynb
[1] Davide Scaramuzza and Friedrich Fraundorfer: Visual Odometry: Part I: The First 30 Years and Fundamentals
[2] Davide Scaramuzza and Friedrich Fraundorfer: Visual Odometry Part II: Matching, Robustness, Optimization, and Applications
[3] Avi Singh: Monocular Visual Odometry using OpenCV (https://avisingh599.github.io/vision/monocular-vo/)
[4] Nicolai Nielsen: Visual Odometry with Monocular Camera For Beginners: A Project in OpenCV (https://www.youtube.com/watch?v=N451VeA8XRA)