Mapeamento de ambientes e processamento visual utilizando Kinect Mário Alberto Cecchi Raduan Bolsista PIBIC/UFRJ Orientador: Adriano Joaquim de Oliveira Cruz, PhD Laboratório de Inteligência Computacional NCE - UFRJ XXXV JICTAC 1 de outubro de 2013 Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 1 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 2 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 3 / 32
Motivação Robótica Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 4 / 32
Motivação Robótica SLAM: Simultaneous Localization and Mapping Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 4 / 32
Motivação Robótica SLAM: Simultaneous Localization and Mapping Diculdades com os sensores disponíveis no laboratório Sensores de distância: baixa conabilidade e pouca informação Sensores de visão: diculdade para extrair informações relevantes Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 4 / 32
Motivação Robótica SLAM: Simultaneous Localization and Mapping Diculdades com os sensores disponíveis no laboratório Sensores de distância: baixa conabilidade e pouca informação Sensores de visão: diculdade para extrair informações relevantes Kinect Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 4 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 5 / 32
Kinect Acessório do videogame Xbox 360 Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 6 / 32
Kinect Acessório do videogame Xbox 360 Dispositivo RGB-D: integração entre um sensor de profundidade e uma câmera de vídeo Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 6 / 32
Kinect Acessório do videogame Xbox 360 Dispositivo RGB-D: integração entre um sensor de profundidade e uma câmera de vídeo Até 307.200 pontos por frame (VGA) Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 6 / 32
Kinect Acessório do videogame Xbox 360 Dispositivo RGB-D: integração entre um sensor de profundidade e uma câmera de vídeo Até 307.200 pontos por frame (VGA) 30 leituras por segundo (30 Hz) Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 6 / 32
Kinect Acessório do videogame Xbox 360 Dispositivo RGB-D: integração entre um sensor de profundidade e uma câmera de vídeo Até 307.200 pontos por frame (VGA) 30 leituras por segundo (30 Hz) US$ 99 Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 6 / 32
Microsoft Kinect Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 7 / 32
O modelo RGB-D Cada pixel possui duas informações: Níveis de cores RGB: red, green, blue Profundidade (em metros) A biblioteca utilizada libfreenect nos dá essas informações em duas estruturas separadas: uma para a imagem RGB e outra para a profundidade de cada ponto Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 8 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 9 / 32
Objetivo 1 Reconstruir virtualmente, em 3D, a cena vista pelo Kinect Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 10 / 32
Objetivo 1 Reconstruir virtualmente, em 3D, a cena vista pelo Kinect 2 Resolver a questão da localização agregando informações de várias cenas Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 10 / 32
Objetivo 1 Reconstruir virtualmente, em 3D, a cena vista pelo Kinect 2 Resolver a questão da localização agregando informações de várias cenas 3 Construir um mapa 3D de um ambiente explorado com um Kinect Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 10 / 32
Objetivo 1 Reconstruir virtualmente, em 3D, a cena vista pelo Kinect 2 Resolver a questão da localização agregando informações de várias cenas 3 Construir um mapa 3D de um ambiente explorado com um Kinect P. Henry, M. Krainin, E. Herbst, X. Ren, D. Fox, RGB-D mapping: Using Kinect-style depth cameras for dense 3D modeling of indoor environments, 2012, The International Journal of Robotics Research Projeto LabicKinect! Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 10 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 11 / 32
Como funciona Da maneira mais simples, o algoritmo pode ser descrito como: 1 O mapa do mundo começa vazio 2 A cada iteração, extrair a imagem RGB-D do Kinect 3 Alinhar a cena atual com as cenas anteriores 4 Adicionar a cena atual ao mapa do mundo Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 12 / 32
O algoritmo (rgbprevious, depthprevious) grabkinectframe() featuresprevious extractrgbfeatures(rgbprevious) cloudprevious generate3dpointcloud(rgbprevious, depthprevious) world cloudprevious while kinect is receiving frames do (rgbcurrent, depthcurrent) grabkinectframe() featurescurrent extractrgbfeatures(rgbcurrent) cloudcurrent get3dpointsfrom2d(rgbcurrent, depthcurrent) relatedfeatures matchfeatures(featuresprevious, featurescurrent) (transformation, inliers) ndalignment(cloudcurrent, cloudprevious, relatedfeatures) cloudcurrent applytransformation(cloudcurrent, transformation) world world pointcloudcurrent (rgbprevious, depthprevious) (rgbcurrent, depthcurrent) featuresprevious featurescurrent transformationprevious transformation end Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 13 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 14 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 15 / 32
Processamento de imagem Processamento da imagem RGB: biblioteca OpenCV Extração de características (features) da imagem: Fast Corner Detector Descritores de características: BRIEF Descriptors Associação de características: Brute Force Matcher Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 16 / 32
Processamento de imagem Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 17 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 18 / 32
Transformação de coordenadas Considere dois universos S e T, com n pontos em R 3 cada um. S = {s 1, s 2,..., s n }, T = {t 1, t 2,..., t n } Considere que S é uma representação de T em um diferente sistema de coordenadas. Diremos que um ponto s i corresponde a t i em outro sistema de coordenadas (1 i n). Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 19 / 32
Transformação de coordenadas Considere dois universos S e T, com n pontos em R 3 cada um. S = {s 1, s 2,..., s n }, T = {t 1, t 2,..., t n } Considere que S é uma representação de T em um diferente sistema de coordenadas. Diremos que um ponto s i corresponde a t i em outro sistema de coordenadas (1 i n). Seja F (p) uma transformação R 3 R 3, que consiste em uma matriz de rotação r e um vetor de translação t. F (p) = r p + t Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 19 / 32
Transformação de coordenadas Considere dois universos S e T, com n pontos em R 3 cada um. S = {s 1, s 2,..., s n }, T = {t 1, t 2,..., t n } Considere que S é uma representação de T em um diferente sistema de coordenadas. Diremos que um ponto s i corresponde a t i em outro sistema de coordenadas (1 i n). Seja F (p) uma transformação R 3 R 3, que consiste em uma matriz de rotação r e um vetor de translação t. F (p) = r p + t F (s i ) t i i Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 19 / 32
Transformação de coordenadas Considere dois universos S e T, com n pontos em R 3 cada um. S = {s 1, s 2,..., s n }, T = {t 1, t 2,..., t n } Considere que S é uma representação de T em um diferente sistema de coordenadas. Diremos que um ponto s i corresponde a t i em outro sistema de coordenadas (1 i n). Seja F (p) uma transformação R 3 R 3, que consiste em uma matriz de rotação r e um vetor de translação t. F = argmin F ( F (p) = r p + t F (s i ) t i i 1 inliers i inliers F (S i ) T i 2 ) Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 19 / 32
Transformação de coordenadas Solução proposta: método de Horn Berthold K. P. Horn, Closed-form solution of absolute orientation using unit quaternions, USA, 1986 Implementação escolhida: Point Cloud Library (PCL) Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 20 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 21 / 32
Otimizando a solução O alinhamento entre dois frames pode ser impreciso por muitos motivos. Os features podem ter sido mal extraídas, gerando features ambíguos A associação entre features pode ter combinado features não correspondentes A informação de profundidade do Kinect pode estar incompleta durante a captura (pontos oclusos) Métodos de orientação absoluta podem ter um grande erro quando aplicados a universos imprecisos. Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 22 / 32
Otimizando a solução O alinhamento entre dois frames pode ser impreciso por muitos motivos. Os features podem ter sido mal extraídas, gerando features ambíguos A associação entre features pode ter combinado features não correspondentes A informação de profundidade do Kinect pode estar incompleta durante a captura (pontos oclusos) Métodos de orientação absoluta podem ter um grande erro quando aplicados a universos imprecisos. Uma solução para contornar esses erros é reduzir a amostra de pontos usada para encontrar a transformação. Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 22 / 32
Otimizando a solução O alinhamento entre dois frames pode ser impreciso por muitos motivos. Os features podem ter sido mal extraídas, gerando features ambíguos A associação entre features pode ter combinado features não correspondentes A informação de profundidade do Kinect pode estar incompleta durante a captura (pontos oclusos) Métodos de orientação absoluta podem ter um grande erro quando aplicados a universos imprecisos. Uma solução para contornar esses erros é reduzir a amostra de pontos usada para encontrar a transformação. RANSAC: Random Sample Consensus Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 22 / 32
Otimizando a solução: RANSAC 1 Dene-se um número mínimo n de pontos necessários para executar um modelo 2 Seja P o conjunto contendo todos os pontos, P > n 3 Seleciona-se um subconjunto S1 contendo n pontos de P (S1 P), escolhidos aleatoriamente 4 O modelo M1 é estimado a partir dos pontos em S1 5 Usando M1, determinamos o conjunto S1 de pontos de P que estão dentro de um erro tolerável (inliers) 6 O conjunto S1 é chamado de conjunto de consenso de S1 7 Se S1 é maior que um certo limite t, usar S1 para estimar o modelo M1 8 Caso o erro obtido por M1 seja aceitável, encontramos um bom modelo 9 Caso contrário, guardo o melhor modelo encontrado após todas as iterações Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 23 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 24 / 32
Resultados Projeto ainda em andamento. Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 25 / 32
Resultados Projeto ainda em andamento. Algumas estatísticas de execução: (valores aproximados) 250.000 pontos válidos por frame do Kinect (81%) 190 features extraídos por imagem 25% dos features inválidos por falta de profundidade 100 associações entre as imagens por reconstrução 30% das associações descartadas por falta de profundidade 5 segundos por reconstrução (com a atualização do mapa no disco) Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 25 / 32
Testes Teste 1: Alinhamento entre duas cenas iguais (nenhum movimento) Transformação esperada: identidade Transformação obtida: 0.999968 0.00681974 0.00427778 0.0244024 F = 0.00684532 0.999959 0.00599335 0.02042 0.00423673 0.00602244 0.999973 0.0214062 0 0 0 1 Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 26 / 32
Testes Teste 2: Alinhamento entre cenas aumentando a inclinação vertical do Kinect Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 27 / 32
Sumário 1 Motivação 2 Kinect 3 Objetivo 4 O algoritmo 5 As técnicas utilizadas Visão computacional: processamento de imagem Alinhamento de cenas: transformação de coordenadas Otimização das solucões: minimização de erro 6 Resultados 7 Conclusões Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 28 / 32
Conclusões Muita informação é descartada pois não possui dado de profundidade correspondente, por estar em uma área de sombra do sensor infravermelho (oclusão) Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 29 / 32
Conclusões Muita informação é descartada pois não possui dado de profundidade correspondente, por estar em uma área de sombra do sensor infravermelho (oclusão) São necessárias mais etapas de otimização do alinhamento, uma vez que o erro varia bastante e é cumulativo a cada iteração Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 29 / 32
Conclusões Muita informação é descartada pois não possui dado de profundidade correspondente, por estar em uma área de sombra do sensor infravermelho (oclusão) São necessárias mais etapas de otimização do alinhamento, uma vez que o erro varia bastante e é cumulativo a cada iteração Há um grande custo de espaço para manter um mapa com muitas cenas, pois cada cena acumula cerca de 10MB no mapa É necessário eliminar redundância para uma representação mais compacta das cenas (downsampling) Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 29 / 32
Conclusões Muita informação é descartada pois não possui dado de profundidade correspondente, por estar em uma área de sombra do sensor infravermelho (oclusão) São necessárias mais etapas de otimização do alinhamento, uma vez que o erro varia bastante e é cumulativo a cada iteração Há um grande custo de espaço para manter um mapa com muitas cenas, pois cada cena acumula cerca de 10MB no mapa É necessário eliminar redundância para uma representação mais compacta das cenas (downsampling) Apesar dos erros encontrados, com a otimização do alinhamento é possível obter um mapa bem próximo ao mundo real Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 29 / 32
Conclusões Muita informação é descartada pois não possui dado de profundidade correspondente, por estar em uma área de sombra do sensor infravermelho (oclusão) São necessárias mais etapas de otimização do alinhamento, uma vez que o erro varia bastante e é cumulativo a cada iteração Há um grande custo de espaço para manter um mapa com muitas cenas, pois cada cena acumula cerca de 10MB no mapa É necessário eliminar redundância para uma representação mais compacta das cenas (downsampling) Apesar dos erros encontrados, com a otimização do alinhamento é possível obter um mapa bem próximo ao mundo real Nível de informação do mapa extraído do Kinect é bem melhor do que usando outros dispositivos, resultando em mapas ricos em detalhes Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 29 / 32
Trabalhos futuros Adicionar novos métodos de correção da transformação ao algoritmo ICP: Iteractive Closest Point Loop closure detection SBA: Sparse Bundle Adjustment Incorporar o Kinect a um robô para explorar ambientes automaticamente Utilizar o mapa gerado para orientação do próprio robô com algoritmos de pathnding Comparar resultados de outros modelos de Kinect: Kinect for PC, Kinect 2 Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 30 / 32
Referências P. Henry, M. Krainin, E. Herbst, X. Ren, D. Fox, RGB-D mapping: Using Kinect-style depth cameras for dense 3D modeling of indoor environments, 2012, The International Journal of Robotics Research E. Rosten, Machine Learning for High-speed Corner Detection, 2006 M. Calonder, BRIEF: Binary Robust Independent Elementary Features, 2010 Berthold K. P. Horn, Closed-form solution of absolute orientation using unit quaternions, 1986 libfreenect: http://openkinect.org/ Point Cloud Library: http://pointcloud.org/ OpenCV: http://opencv.org/ Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 31 / 32
Fim Obrigado! http://www.labic.nce.ufrj.br/ Código disponível em: http://bitbucket.org/macecchi/labickinect Mário Alberto Cecchi Raduan (UFRJ) LabicKinect JIC 2013 32 / 32