UNIVERSIDADE ESTADUAL DE...
Transcript of UNIVERSIDADE ESTADUAL DE...
i
Jaime Armando Delgado Vargas
Odometria Visual e Fusão de Sensores no
Problema de Localização e Mapeamento
Simultâneo de Ambientes Exteriores
Nº 96/2015
Campinas, 2015
S.P. – Brasil
ii
iii
iv
v
vi
vii
Dedico este trabalho a minha família e a Colômbia, que me deram as bases para realizar
este trabalho.
viii
ix
Agradecimentos
Este trabalho foi possível pelo apoio de diferentes pessoas e instituições, da Colômbia e o
Brasil. Primeiro agradeço a minha família, a meus pais Ana Rosa e Jaime, que me deram seu
apoio e educação ao longo destes anos. A meu irmão Daniel, meu colega de caminhada. A
minha namorada Paula e sua família pelo carinho e apoio.
Agradeço ao meu orientador Paulo Kurka pela oportunidade de pesquisar ao seu lado. Nestes
anos tive a honra de receber sua educação pessoal e acadêmica. Agradeço ao professor Luiz
Otavio por compartilhar seu conhecimento e laboratórios de processamento em GPU. Ao
professor Eleri Cardozo da FEEC pela educação em robótica e disponibilização dos materiais
deste trabalho.
Agradeço aos professores da Colômbia Dario Amaya e Oscar e Andrés Hurtado Garcia, pela
motivação para realizar este estudo de pós-graduação. Agradeço a meus colegas e amigos do
LCA Fernando Pinho e Ricardo Souza pelo apoio nos testes experimentais e pelas longas trilhas
percorridas com o robô Seekur Jr. A Paulo Pinheiro, Eric Rohmer e Junior Amadeu pelos
conselhos em robótica. Agradeço também ao grupo de pesquisa Pilgrim da FEM pelos trabalhos
realizados e predecessores deste trabalho.
Agradeço ao governo Brasileiro pelo financiamento deste trabalho através da UNICAMP, a
Coordenadoria de Aperfeiçoamento de Pessoal de Nível Superior (CAPES), a Fundação de
Amparo à Pesquisa do Estado de São Paulo (FAPESP) e ao Conselho Nacional de
Desenvolvimento Científico e Tecnológico CNPQ.
x
xi
“The Happiness Is Only True When Shared”
Christopher McCandless
xii
xiii
Resumo
A localização de robôs móveis é foco de estudo em diferentes grupos de pesquisa ao redor do
mundo. Robôs móveis são equipados com diferentes sensores, utilizando uma variedade de
métodos de localização para as tarefas de exploração de ambientes desconhecidos ou para seguir
uma trajetória predefinida. Este trabalho apresenta a investigação e implementação de um método
robusto e eficiente da estimativa de movimento utilizando visão computacional, conhecido como
odometria visual. Também, é estudada a fusão de estimativas de movimento de diferentes
sensores através da técnica do filtro de Kalman. Neste trabalho utilizam-se câmeras
estereoscópicas com lentes fixas de 9mm e simulações do movimento de uma câmera no
ambiente 3D-Max. A validação experimental dos algoritmos é feita em uma plataforma robótica
tipo Seekur Jr equipada com Lasers, GPS, encoders e câmeras estereoscópicas. O movimento do
robô é estimado pelos diferentes sensores gerando redundância de localização. Os algoritmos de
odometria visual são validados em ambientes de interiores e exteriores. A velocidade de
processamento dos métodos é comparada usando diferentes processadores de tipo CPU e GPU,
indicando a possibilidade um sistema de realização de odometria visual em tempo real.
Palavras Chave: Robô Móvel; Visão Estereoscópica; Odometria Visual; GPU;
xiv
xv
Abstract
The localization of mobile robots problem is addressed to a number of research groups
around the world. Mobile robots are equipped with different sensors, using a variety of methods
of localization in the exploration of unknown environments or following a pre-defined trajectory.
The present work investigates and implements a robust method of estimation of movement using
computer vision, known as visual odometry. The work investigates also the results of fusion of
the estimates of movement obtained from different sensors, using the Kalman filter technique.
Visual odometry uses stereoscopic vision techniques with real time computing in graphic
processing units (GPU). Stereoscopic cameras with fixed 9mm lens and movement simulations in
the 3d-Max computer environment are used in the present work. Experimental validation of the
visual odometry algorithms is made in a Sekur Jr mobile robot platform, equipped with lasers,
GPS, wheel encoders and stereoscopic cameras. Movements of the robot are estimated from the
different sensors, yielding redundant localization information. The information from such sensors
are fused together through the Kalman filter. Visual odometry algorithms are tested in indoors
and outdoors navigation experiments. Processing speed of the methods is compared using
different processing units: CPU and GPU, indicating the possibility of performing real time
visual odometry.
Key Words: Mobile Robot; Stereoscopic Vision; Visual Odometry; GPU;
xvi
xvii
Lista de Ilustrações
FIGURA 2-1 IMAGEM DO ROBÔ AUTÔNOMO TERRESTRE COM DUAS CÂMERAS ESTEREOSCÓPICAS NA PARTE FRONTAL E O DGPS ............... 7
FIGURA 2-2 PROJETO LAGR (LEARNING APPLIED TO GROUND ROBOTICS), BIGDOG E ATLAS. CONSTRUÍDOS PELO GOVERNO DOS ESTADOS
UNIDOS E BOSTON DYNAMICS. (FONTE (HOWARD, 2008) E (FALLON ET AL., 2015)) ........................................................ 8
FIGURA 2-3 MODELO DO ROBÔ SUBMARINO UTILIZANDO A INFORMAÇÃO DOS CORAIS (FONTE:(CORKE ET AL., 2007)). ....................... 9
FIGURA 2-4 RESULTADOS EXPERIMENTAIS DA NAVEGAÇÃO DO AMBIENTE EXTERIOR. ........................................................................ 9
FIGURA 2-5 INCERTEZA DA VISÃO ESTEREOSCÓPICA PARA DIFERENTES PROFUNDIDADES .................................................................. 10
FIGURA 2-6 SPIRIT SOL 409 NAVCAM IMAGEM (TETO), AS LINHAS VERMELHO/VERDE/AZUL REPRESENTAM AS COORDENADAS XYZ
(FONTE:(DEEN; LORRE, [S.D.]))............................................................................................................................... 11
FIGURA 2-7 POSIÇÃO DAS CÂMERAS NO ROVER CURIOSITY DA NASA (FONTE:(MAKI ET AL., 2012)) .............................................. 11
FIGURA 2-8 IMAGENS ESTEREOSCÓPICAS E DE MOVIMENTO DOS PONTOS DE REFERÊNCIA (FONTE:(OLSON ET AL., 2003)) ................... 12
FIGURA 2-9 PLATAFORMA ROBÓTICA DE PESQUISA. (FONTE:(CASTELLANOS; NEIRA, 2001)) ..................................................... 12
FIGURA 2-10 TRAJETÓRIA RECONSTRUÍDA DE 700 IMAGENS. OS PONTOS AZUIS SÃO AS REFERÊNCIAS UTILIZADAS NA ESTIMATIVA DE
MOVIMENTO. A RELOCALIZAÇÃO, LINHAS VERMELHAS ACONTECE EM 133 FRAMES. (FONTE:(KONOLIGE; AGRAWAL, 2008)) . 13
FIGURA 2-11 MOVIMENTO CIRCULAR AO REDOR DE UMA TÁBUA COM OBJETOS. A RECONSTRUÇÃO DO AMBIENTE E TRAJETÓRIA DE
NAVEGAÇÃO SÃO APRESENTADAS. (FONTE: (NEWCOMBE ET AL., 2011)) ........................................................................ 14
FIGURA 2-12 RESULTADOS DO TRABALHO, A CÂMERA NAVEGOU TRÊS VEZES NO LOOP ESQUERDO E DIREITO. ...................................... 14
FIGURA 2-13 TRAJETÓRIA REALIZADA PELO ROBÔ, ODOMETRIA E SLAM VISUAL. LOCALIZAÇÃO DO ROBÔ ATRAVÉS DA INTERSEÇÃO DOS
VETORES 3D DE UM KEYPOINT IDENTIFICADO EM TRÊS INSTANTES DEFERENTES. (FONTE: (SANTOS, 2010)) ............................ 15
FIGURA 2-14 PLATAFORMAS ROBÓTICA COM CÂMERA MONOCULAR E ROBÔ HUMANOIDE COM MARCADOR VISUAL. ............................ 15
FIGURA 2-15 DIAGRAMA DE SEGMENTAÇÃO DE IMAGEM, IDENTIFICA AS MARCAS DE REFERÊNCIA NO CHÃO. AMBIENTE EXTERNO
ESTRUTURADO. (FONTE:(SANTANA; MEDEIROS, 2011)) ........................................................................................... 16
FIGURA 2-16 IMAGEM COM PONTOS DE REFERÊNCIA E DIAGRAMA DO MAPEAMENTO DO ROBÔ. ...................................................... 16
FIGURA 2-17 ROBÔ AQUÁTICO COM PONTOS DE REFERÊNCIA ARTIFICIAL ...................................................................................... 17
FIGURA 2-18 MOVIMENTO RECUPERADO DA CÂMERA E IMAGENS DE REFERÊNCIA. ........................................................................ 17
FIGURA 2-19 HARDWARE UTILIZADO, FPGA COM SISTEMA DE VISÃO DE QUATRO CÂMERAS. (FONTE: (BONATO, 2007))................... 18
FIGURA 2-20 IMAGENS OMNIDIRECIONAIS EM DUAS POSIÇÕES DIFERENTES. OS PONTOS IDENTIFICADOS, BEM COMO A CORRELAÇÃO DE
PONTOS COM O ALGORITMO SIFT SÃO APRESENTADOS. (FONTE: (GUIZILINI, 2008)) ......................................................... 18
FIGURA 2-21 SIMULAÇÃO DO UAV COM UMA CÂMERA DIRECIONADA PARA O CHÃO. A VELOCIDADE É MEDIDA UTILIZANDO FLUXO ÓPTICO.
(FONTE:(SAMPAIO ET AL., 2013)) ........................................................................................................................... 19
FIGURA 2-22 IMAGEM ROBÔ PIONNER 3-AT COM UMA CÂMERA INDUSTRIAL (FONTE:(COUTO, 2012)) ......................................... 19
FIGURA 2-23 SISTEMA DE LOCALIZAÇÃO VISUAL DO ROBÔ LEGO (FONTE:(TAVARES, 2004)) ......................................................... 20
FIGURA 2-24 REPRESENTAÇÃO DAS REGIÕES ESCOLHIDA PARA ANÁLISE, PLATAFORMA ROBÓTICA COM A QUAL FORAM IMPLEMENTADOS OS
TESTES (FONTE:(BERNARDES, 2010)) ...................................................................................................................... 20
xviii
FIGURA 2-25 EM (A) OS QUADROS BRANCOS REPRESENTAM AS FEATURES NÃO CORRELACIONAS, OS QUADROS AZUIS REPRESENTAM AS
CORRELAÇÕES BEM SUCEDIDAS. OS CÍRCULOS VERMELHOS REPRESENTAM AS POSIÇÕES DO ROBÔ. (B)A PLATAFORMA ROBÓTICA COM
UMA CÂMERA CANON E UMA LENTE OMNIDIRECIONAL 360º , UM DGPS, UM LASER PARA VISUALIZAÇÃO. FONTE:(ANDREASSON;
DUCKETT; LILIENTHAL, 2007) .............................................................................................................................. 21
FIGURA 2-26 VEÍCULO INTELIGENTE DA UNIVERSIDADE SHANGHAI JIAO TONG (FONTE:(HUI FANG, 2009)) ..................................... 23
FIGURA 2-27 ODOMETRIAS ESTIMADAS E TRAJETÓRIA REAL (FONTE:(ADAM; MEMBER; RIVLIN, 1999)) ...................................... 23
FIGURA 2-28 IDENTIFICAÇÃO DE PONTOS DE REFERÊNCIA COM O LASER E A PROJEÇÃO NA IMAGEM. .................................................. 24
FIGURA 2-29 RECONSTRUÇÃO DA SUPERFÍCIE EM 3D. AS TEXTURAS DAS IMAGENS FORAM FUNDIDAS COM OS PONTOS MEDIDOS COM OS
LASERS (FONTE:(PAUDEL ET AL., 2014)). .................................................................................................................. 24
FIGURA 2-30 (A)ROTAÇÃO ESTIMADA PELO ALGORITMO DE ODOMETRIA VISUAL E IMU NO EXPERIMENTO, (B) AUTOMÓVEL AUTÔNOMO
LIVIC’S COM CÂMERAS ESTEREOSCÓPICAS E ARQUITETURA DE HARDWARE DEDICADA. ........................................................... 25
FIGURA 2-31 TRAJETÓRIAS DA ODOMETRIA DOS ENCODERS E A PROPOSTA DE ODOMETRIA VISUAL ADAPTATIVE IC-SURF (A). ROBÔ
PIONEER 3AT COM UMA CÂMERA BUMBLEBEE2 DE 12MM (B). (FONTE :(NEMRA ET AL., 2013)) ........................................ 25
FIGURA 2-32 ARQUITETURA DO SISTEMA E O ROBÔ MÓVEL INFANT (FONTE: (MITSUHASHI; KURODA, 2011)). .......................... 26
FIGURA 2-33 RESULTADOS DE NAVEGAÇÃO UTILIZANDO O GPS PURO(A) E RESULTADOS DA FUSÃO COM O FILTRO UKF (B).
(FONTE:(MALYAVEJ ET AL., 2009)) .......................................................................................................................... 26
FIGURA 2-34 RESULTADOS DE SLAM, AS TRAJETÓRIAS CLARAS (VERDES) REPRESENTAM AS TRAJETÓRIAS DE REFERÊNCIA. AS TRAJETÓRIAS
OBSCURAS (VERMELHAS) NA FIGURA (A) REPRESENTAM A SAÍDA DO FILTRO EKF. NA IMAGEM (B) REPRESENTA A SAÍDA DO FILTRO
RTS (FONTE: (SALVI ET AL., 2008) ). ......................................................................................................................... 27
FIGURA 2-35 PLATAFORMA MODIFICADA SEGWAY EQUIPADA COM SENSORES PARA A TAREFA DE NAVEGAÇÃO. ................................... 27
FIGURA 2-36 CONFIGURAÇÃO DO ROBÔ AQUÁTICO E AMBIENTE DE TESTE COM TEXTURAS ARTIFICIAIS. .............................................. 28
FIGURA 2-37 SIMULAÇÃO EM GAZEBO DO CARRO AUTÔNOMO IDENTIFICANDO SINAIS NO AMBIENTE ................................................ 29
FIGURA 2-38 NUVENS DE PONTOS NO ESPAÇO 3D CAPTURADOS PELO LASER, OS PONTOS CLAROS REPRESENTAM OS DADOS ORIGINAIS. OS
PONTOS OBSCUROS REPRESENTAM A CORREÇÃO PELO ALGORITMO ICP (FONTE:(BEDKOWSKI; MASLOWSKI, 2011)) ........... 29
FIGURA 2-39 PLATAFORMA ROBÓTICA TIPO AUTOMÓVEL SETCAR COM CÂMERAS ESTEREOSCÓPICAS E GPS (A). TRAJETÓRIAS RESULTANTES
DOS EXPERIMENTOS EM AMBIENTES DE EXTERIOR (FONTE:(WEI; CAPPELLE; RUICHEK, 2011)). ......................................... 30
FIGURA 2-40 ESQUEMÁTICO DO SISTEMA DE LOCALIZAÇÃO (A), SENSORES LASER, CÂMERA ESTEREOSCÓPICA E GPS, FIXOS NO TETO DO
AUTOMÓVEL AUTÔNOMO SETCAR(B) (FONTE:(WEI; CAPPELLE; RUICHEK, 2013B), (WEI; CAPPELLE; RUICHEK, 2013A))30
FIGURA 2-41 VEICULO ELÉTRICO COM CÂMERA OMNIDIRECIONAL, GPS E LASER. (FONTE:(HOANG ET AL., 2013)) ............................ 31
FIGURA 2-42 ESQUEMÁTICO DA SELEÇÃO DO SISTEMA DE LOCALIZAÇÃO (FONTE:(PARRA ET AL., 2011)) ......................................... 31
FIGURA 2-43 IMAGEM DOS LOCAIS QUE ESTÃO TRABALHANDO NO PROJETO DO ROBÔ AUTÔNOMO TERRESTRE NA AMERICA LATINA.
(IMAGEM DE GOOGLE MAPS) .................................................................................................................................... 32
FIGURA 3-1 MODELO DE CÂMERAS ESTEREOSCÓPICAS, FONTE:(NIST; BERGEN, 2004) ............................................................... 34
FIGURA 3-2 REDUÇÃO DA ESCALA DA IMAGEM UTILIZADA NO ALGORITMO SIFT (DIREITA), O ALGORITMO SURF UTILIZA A TODA A IMAGEM
CATA ETAPA. UTILIZANDO O ALGORITMO HAAR WAWELET. FONTE: (BAY ET AL., 2006). ...................................................... 36
xix
FIGURA 3-3 REDUÇÃO DA ESCALA DA IMAGEM UTILIZADA NO ALGORITMO SIFT (DIREITA), O ALGORITMO SURF UTILIZA A TODA A IMAGEM
CADA ETAPA. UTILIZANDO O ALGORITMO HAAR WAWELET. FONTE: (BAY ET AL., 2006). ...................................................... 37
FIGURA 3-4 TRÊS OITAVAS COM TRÊS NÍVEIS. A VIZINHANÇA DE 3X3X3 SEM ELIMINAÇÃO DE MÁXIMOS. FONTE: (BAY ET AL., 2006). .... 38
FIGURA 3-5 CONSTRUÇÃO DO DESCRITOR DE 64 BYTES SURF, FONTE: (BAY ET AL., 2006). ........................................................... 38
FIGURA 3-6 EXEMPLO DAS COMPONENTES DO GRADIENTE DE INTENSIDADE DO DESCRITOR. FONTE: (BAY ET AL., 2006). ..................... 39
FIGURA 3-7 CORRELAÇÃO DOS PONTOS DE REFERÊNCIA EM QUATRO IMAGENS NOS INSTANTE 𝑰(𝒌), 𝑰 (𝒌 − 𝟏), 𝑰(𝒌 − 𝟐). ................ 40
FIGURA 3-8 CORRELAÇÃO DOS PONTOS DE REFERÊNCIA EM QUATRO IMAGENS NOS INSTANTE 𝑰(𝒌), 𝑰 (𝒌 − 𝟏), 𝑰(𝒌 − 𝟐). ................ 41
FIGURA 3-9 CORRELAÇÕES DAS QUATRO IMAGENS. AS IMAGENS SUPERIORES COMPÕEM UM FRAME ESTEREOSCÓPICO (DIREITA E
ESQUERDA) NO TEMPO 𝒌. AS INFERIORES NO TEMPO 𝒌 − 𝟏. AS CAIXAS PRETAS ILUSTRAM O FILTRO. ...................................... 41
FIGURA 3-10 MÉTODOS DE CALIBRAÇÃO DE CÂMERAS. TABULEIRO DE CALIBRAÇÃO COM ALGORITMO DE BOUGUET (A) E CAIXA
PARAMETRIZADA PELO ALGORITMO DE KURKA (B). ......................................................................................................... 42
FIGURA 3-11 MODELO DE CÂMERA ESTEREOSCÓPICA COM UMA ROTAÇÃO 𝐑𝐜. ............................................................................ 45
FIGURA 4-1 MOVIMENTO DA CÂMERA EM DUAS POSIÇÕES SUBSEQUENTES. ................................................................................. 47
FIGURA 4-2 FILTRO DE PROFUNDIDADE DAS REFERÊNCIAS NO ESPAÇO EUCLIDIANO. ........................................................................ 49
FIGURA 4-3 ERRO DE CORRELAÇÃO DE PONTOS PROJETADOS NAS IMAGENS, NOS INSTANTES 𝒌 E (𝒌 − 𝟏), OS PONTO REFERÊNCIA COM
ERROS DE CORRELAÇÃO OU DINÂMICOS SÃO REPRESENTADO PELOS PONTOS VERMELHOS. ...................................................... 50
FIGURA 4-4 ILUSTRAÇÃO ESQUEMÁTICA DO FILTRO DE KALMAN ATUANDO COMO DEAD RECKONING. ................................................ 51
FIGURA 4-5 ILUSTRAÇÃO ESQUEMÁTICA DO SISTEMA DE FUSÃO DE SENSORES. .............................................................................. 53
FIGURA 4-6 IMAGEM DO LASER 2D FIXO NO ROBÔ SEEKUR JR. A ÁREA VERDE REPRESENTA A ÁREA DE TRABALHO. ............................... 55
FIGURA 4-7 ILUSTRAÇÃO DO LASER 3D FIXO NO PTU DO ROBÔ SEEKUR JR. A OSCILAÇÃO É ILUSTRADA PELAS LINHAS AZUIS................... 56
FIGURA 4-8 IMAGEM DO LASER 3D FIXO NO PTU DO ROBÔ SEEKUR JR. ...................................................................................... 56
FIGURA 5-1 ARQUITETURA DO ALGORITMO DE ODOMETRIA VISUAL, APRESENTANDO A IMPLEMENTAÇÃO HIBRIDA ENTRE CPU (BLOCOS
BRANCOS) E GPU (BLOCOS CINZA). ............................................................................................................................. 57
FIGURA 5-2 DISTRIBUIÇÃO DE MEMÓRIA NA GPU. O CUSTO COMPUTACIONAL DE ACESSAR A MEMÓRIA COMPARTILHADA PODE SER MAIOR
QUE O PROCESSAMENTO. ........................................................................................................................................... 58
FIGURA 5-3 ESTRUTURA DA IMPLEMENTAÇÃO DO FILTRO 3D E TRIANGULAÇÃO NA GPU. ................................................................ 59
FIGURA 6-1 CÂMERA ESTEREOSCÓPICA FIXA EM CAPACETE, PTU E EM UMA PLATAFORMA MÓVEL. ................................................... 60
FIGURA 6-2 MODELO VIRTUAL DE CÂMERA ESTEREOSCÓPICA FIXADO EM PTU (2 DOF), A LINHA VERMELHA REPRESENTA A TRAJETÓRIA DA
CÂMERA DIREITA. ..................................................................................................................................................... 61
FIGURA 6-3 AMBIENTE VIRTUAL COM TEXTURAS SIMULA UM AMBIENTE DE INTERIOR DE CORREDOR. ................................................. 62
FIGURA 6-4 IMAGEM DO ROBÔ SEEKUR JR E UMA ILUSTRAÇÃO DOS SENSORES ACOPLADOS. 2-LIDAR, 2-CÂMERAS MONOCULARES,
CÂMERA ESTEREOSCÓPICA E 2-GPS. ........................................................................................................................... 62
FIGURA 6-5 SENSORES INSTALADOS NO ROBÔ SEEKUR JR .......................................................................................................... 63
FIGURA 7-1 TRAJETÓRIA EM FORMATO DE 'L' MODELADA EM 3D-MAX, VISTA SUPERIOR E PERSPECTIVA. ........................................... 66
FIGURA 7-2 AMBIENTE MODELADO EM 3D-MAX. ................................................................................................................... 67
xx
FIGURA 7-3 IMAGENS ESTEREOSCÓPICAS DO EXPERIMENTO HELMET. .......................................................................................... 67
FIGURA 7-4 IMAGEM ESTEREOSCÓPICA REGISTRADA NO AMBIENTE VIA MUSEU. ............................................................................ 68
FIGURA 7-5 CÂMERA ESTEREOSCÓPICA FIXADA NO TETO DE UM AUTOMÓVEL. (IMAGEM GOOGLE EARTH) .......................................... 69
FIGURA 7-6 A LINHA AZUL REPRESENTA O CAMINHO RECUPERADO PELO GPS TRIMBLE. (IMAGEM GOOGLE EARTH) ............................. 70
FIGURA 7-7 IMAGENS CAPTURADAS PELA CÂMERA ESTEREOSCÓPICA EM DIFERENTES INSTANTES DE TEMPO NO EXPERIMENTO CB. .......... 70
FIGURA 7-8 IMAGENS CAPTURADAS PELA CÂMERA ESTEREOSCÓPICA EM DIFERENTES INSTANTES DE TEMPO NO EXPERIMENTO PRAÇA DA
PAZ. ...................................................................................................................................................................... 72
FIGURA 7-9 VELOCIDADE DE PROCESSAMENTO DO ALGORITMO "ODOMETRIA VISUAL" EXECUTADO EM DIFERENTES UNIDADES DE
PROCESSAMENTO (CPUS E GPUS). O TAMANHO DAS IMAGENS PROCESSADAS É 1280X960. CAPTURADAS EM UM AMBIENTE
EXTERNO. ............................................................................................................................................................... 73
FIGURA 7-10 VELOCIDADES DE PROCESSAMENTO DO ALGORITMO DE ODOMETRIA VISUAL EM UM AMBIENTE VIRTUAL. O TAMANHO DAS
IMAGENS É 640X480 PIXELS. NA GPU 560TI É ATINGE VELOCIDADE DE 30FPS. ................................................................. 74
FIGURA 7-11 VELOCIDADES DE PROCESSAMENTO DO ALGORITMO DE ODOMETRIA VISUAL EM UM AMBIENTE EXTERNO. O TAMANHO DAS
IMAGENS É 640X480 PIXELS. A GPU QUADRO 4000 ATINGE VELOCIDADE MÉDIA DE 20FPS. ............................................... 75
FIGURA 7-12 VELOCIDADE DE PROCESSAMENTO DO ALGORITMO ODOMETRIA VISUAL EXECUTADO NA GPU QUADRO4000M, O TAMANHO
É 640X480. ........................................................................................................................................................... 75
FIGURA 7-13 VELOCIDADE DE PROCESSAMENTO DO ALGORITMO "ODOMETRIA VISUAL" EXECUTADO NA GPU QUADRO 4000M. O
TAMANHO É 640X480. ............................................................................................................................................ 76
FIGURA 7-14 TRAJETÓRIA DA ODOMETRIA VISUAL E REFERÊNCIA NA SIMULAÇÃO CORREDOR 3D-MAX. ............................................. 77
FIGURA 7-15 ERRO AO LONGO DA SIMULAÇÃO CORREDOR 3D-MAX. ......................................................................................... 77
FIGURA 7-16 TRAJETÓRIA DA ODOMETRIA CINEMÁTICA E REFERÊNCIA NO EXPERIMENTO CB (A). ERRO AO LONGO DO EXPERIMENTO E ERRO
MÉDIO (B). ............................................................................................................................................................. 78
FIGURA 7-17 TRAJETÓRIA DA ODOMETRIA VISUAL NO EXPERIMENTO CB (A), ERRO LOCAL E ERRO MÉDIO ALONGO DO PERCURSO. .......... 79
FIGURA 7-18 DADOS DE LOCALIZAÇÃO ARMAZENADOS PELOS GPS GARMIN (A) E TRIMBLE (B) DURANTE O TESTE DO CICLO BÁSICO. O
DETALHE 'A' INDICA O PONTO INICIAL DO TESTE. O DETALHE 'B' APRESENTA O MAIOR INTERVALO DE ERRO DO GPS TRIMBLE (B). .. 79
FIGURA 7-19 ERRO DO GPS TRIMBLE E GARMIN ALONGO DO EXPERIMENTO CB. .......................................................................... 80
FIGURA 7-20 TRAJETÓRIAS NO EXPERIMENTO CB DA ODOMETRIA VISUAL E A CORREÇÃO ATRAVÉS FILTRO DE KALMAN EM CONFIGURAÇÃO
DEAD RECKONING (A) E OS ERROS AO LONGO DO EXPERIMENTO (B). .................................................................................. 80
FIGURA 7-21 TRAJETÓRIAS NO EXPERIMENTO CB DA ODOMETRIA VISUAL, ODOMETRIA DOS ENCODERS E FUSÃO ATRAVÉS O FILTRO DE
KALMAN (A). OS ERROS AO LONGO DO EXPERIMENTO DAS ESTIMATIVA (B). ......................................................................... 81
FIGURA 7-22 TRAJETÓRIAS NO EXPERIMENTO CB DA ODOMETRIA DOS ENCODERS, LOCALIZAÇÃO PELO GPS E A FUSÃO ATRAVÉS O FILTRO DE
KALMAN (A). OS ERROS AO LONGO DO EXPERIMENTO DAS ESTIMATIVA(B). ......................................................................... 81
FIGURA 7-23 TRAJETÓRIAS NO EXPERIMENTO CB DA ODOMETRIA VISUAL, A LOCALIZAÇÃO PELO GPS E A FUSÃO ATRAVÉS O FILTRO DE
KALMAN (A). OS ERROS AO LONGO DO EXPERIMENTO DAS ESTIMATIVAS(B). ........................................................................ 82
xxi
FIGURA 7-24 TRAJETÓRIAS NO EXPERIMENTO CB DA ODOMETRIA VISUAL, ODOMETRIA DOS ENCODERS, A LOCALIZAÇÃO PELO GPS E A
FUSÃO ATRAVÉS O FILTRO DE KALMAN (A). OS ERROS AO LONGO DO EXPERIMENTO DAS ESTIMATIVAS(B). ................................. 82
FIGURA 7-25 TRAJETÓRIAS DA NAVEGAÇÃO EM UM AMBIENTE EXTERIOR. A LINHA PONTILHADA REPRESENTA O GPS E A LINHA VERMELHA A
ODOMETRIA RECUPERADA DAS IMAGENS. ...................................................................................................................... 83
FIGURA 7-26 O ERRO DA ESTIMATIVA DE MOVIMENTO DA ODOMETRIA VISUAL AO LONGO DO EXPERIMENTO VIA MUSEU. .................... 83
FIGURA 7-27 SINAL DO GPS TRIMBLE E GARMIN EM DOIS DIAS DIFERENTES DE TESTE. (IMAGEM GOOGLE EARTH) .............................. 84
FIGURA 7-28 ERRO DO GPS GARMIN E TRIMBLE NO EXPERIMENTO DA PRAÇA DA PAZ. .................................................................. 85
FIGURA 7-29 TRAJETÓRIAS ESTIMADAS NO EXPERIMENTO PRAÇA DA PAZ. (LOCALIZAÇÃO PELA ODOMETRIA VISUAL, ODOMETRIA DOS
ENCODERS, LOCALIZAÇÃO PELO GPS E A FUSÃO PELO FILTRO DE KALMAN)........................................................................... 85
FIGURA 7-30 ERRO DAS ESTIMAÇÕES DE MOVIMENTO AO LONGO DO EXPERIMENTO PRAZA DA PAZ. AS LINHAS PONTILHADAS REPRESENTAM
O ERRO MÉDIO PARA CADA ESTIMATIVA. ....................................................................................................................... 86
FIGURA 7-31 A LINHA AZUL REPRESENTA O CAMINHO RECUPERADO PELA ODOMETRIA DOS ENCODERS. OS PONTOS CINZAS REPRESENTAM O
AMBIENTE RECONSTRUÍDO PELO LASER 3D. ................................................................................................................... 87
FIGURA 7-32 A LINHA VERMELHA REPRESENTA O CAMINHO DA ODOMETRIA DOS ENCODERS, OS PONTOS AZUIS CLARO REPRESENTAM A
TRAJETÓRIA DO GPS . OS PONTOS CINZA SÃO OS PONTOS MAPEADOS PELO LASER 3D NO AMBIENTE. ...................................... 88
FIGURA 7-33 VISTA SUPERIOR DA RECONSTRUÇÃO DO AMBIENTE PRAÇA DA PAZ. .......................................................................... 88
FIGURA 8-1 OS DETALHES DA FUSÃO AS TRAJETÓRIAS RECUPERADAS PELOS GPS TRIMBLE E GARMIN NAS FIGURAS (A,B) ...................... 92
FIGURA 8-2 OS DETALHES DA FUSÃO ATRAVÉS DO FILTRO DE KALMAN UTILIZANDO A ODOMETRIA DOS ENCODERS + GPS SÃO
APRESENTADOS NAS FIGURAS (A,B)) ............................................................................................................................ 93
FIGURA 8-3 OS DETALHES DA FUSÃO DA ODOMETRIA VISUAL + GPS SÃO APRESENTADOS NAS FIGURAS (A,B) ..................................... 94
FIGURA 8-4 OS DETALHES DA FUSÃO DO GPS + ODOMETRIA DOS ENCODERS + ODOMETRIA VISUAL SÃO APRESENTADOS NAS FIGURAS (A,B)
............................................................................................................................................................................ 95
xxii
xxiii
Lista de Tabelas
TABELA 1 CÂMERAS ESTEREOSCÓPICAS UTILIZADAS .................................................................................................................. 34
TABELA 2 CARACTERÍSTICAS DAS UNIDADES GPU .................................................................................................................... 64
TABELA 3 OS SENSORES UTILIZADO NO TESTE HELMET .............................................................................................................. 68
TABELA 4 OS SENSORES UTILIZADO NO TESTE VIA MUSEU ......................................................................................................... 69
TABELA 5 OS SENSORES UTILIZADO NO TESTE CICLO BÁSICO ....................................................................................................... 70
TABELA 6 OS SENSORES UTILIZADO NO TESTE PRAÇA DA PAZ ...................................................................................................... 72
TABELA 7 ERRO DO GPS NOS EXPERIMENTOS ......................................................................................................................... 89
TABELA 8 ERRO DO ALGORITMO DE ODOMETRIA VISUAL ......................................................................................................... 90
TABELA 9 ERRO DA FUSÃO DE DIFERENTES SENSORES ................................................................................................................ 91
TABELA 10 VELOCIDADE DE PROCESSAMENTO GPU E FONTE DE ALIMENTAÇÃO ............................................................................. 95
TABELA 11 VELOCIDADE DE PROCESSAMENTO NOS EXPERIMENTOS ............................................................................................ 96
TABELA 12 VELOCIDADE DE PROCESSAMENTO GPU REALTIME .................................................................................................. 97
TABELA 13 COMPARAÇÃO DE VELOCIDADES DE PROCESSAMENTO E ERRO ..................................................................................... 97
xxiv
Lista de Abreviaturas e Siglas
Letras Latinas
𝑢 Coordenada de imagem no eixo x.
𝑣 Coordenada de imagem no eixo y.
𝑢0, 𝑣0 Centro da imagem.
𝑓 Distância focal.
𝑆𝑥 e 𝑆𝑦 Densidade dos pixels.
𝑘𝑐 Numero do conjunto de calibração 0 até 56.
𝐺 Distancia de um ponto até o centro da câmera esquerda.
𝐹 Distancia de um ponto até o centro da câmera direita.
𝑝𝑙 Projeção do ponto na imagem esquerda.
𝑝𝑟 Projeção do ponto na imagem direita.
𝑂𝐿 Centro do sistema de coordenadas da câmera esquerda.
𝑂𝑅 Centro do sistema de coordenadas da câmera direita.
𝑋 Ponto na imagem coordenadas (𝑥, 𝑦).
𝐿 Convolução da derivada Gaussiana de segunda ordem.
𝐷 Derivadas parciais de segunda ordem.
𝐷𝑠 Descritor SIFT.
𝑘 Tempo da sequencia de imagens.
𝑇𝑐. Vetor de translação parâmetros extrínsecos da câmera estereoscópica.
𝑣(𝑘) Ruído gaussiano do sensor
𝑥 Vetor de estados.
��k Estimativa de estado 𝑥.
𝑑𝑝 Profundidade de um ponto 𝑑𝑝.
𝑏𝑙 Distância entre câmeras estereoscópicas.
𝑇𝑚(𝑘) Vetor de translação do movimento no espaço euclidiano.
xxv
𝐀 Matriz de parâmetros intrínsecos.
𝑰 Matriz de Imagem.
𝑰𝐿 Imagem da câmera esquerda (Left).
𝑰𝑅 Imagem da câmera direita (Right).
𝐑c Matriz de rotação parâmetros extrínsecos da câmera estereoscópica.
𝒑 Matriz de vetores de coordenadas de imagem do padrão de calibração.
�� Matriz 𝒑 em coordenadas homogêneas.
𝑩 Matriz de posições espaciais do padrão de calibração.
𝑷kc Matriz alinhada de posições espaciais do padrão de calibração.
𝐑𝑚 Matriz de rotação do movimento no espaço euclidiano.
𝐓𝑅𝑇𝑘 Matriz de movimento composta por 𝑇𝑚(𝑘) e 𝐑𝑚.
𝐏𝑘 Matriz de vetores de pontos de referência no espaço euclidianos.
𝐀𝐟 Matriz de transição que descreve o sistema.
𝐁𝐟 Matriz de controle (condicionamento do sinal do sensor).
𝐇 Matriz de medição ou contribuição de cada sensor.
𝐊 Ganho do filtro de Kalman.
𝐏𝐩 Erro de covariância entre as variáveis do verto de estados.
𝐐cp Covariância do processo.
𝒁(k) Matriz de observação.
...................................................
Letras Gregas
ℋ Matriz Hessiana.
𝜇k Sinais de entrada.
𝜀k Ruído gaussiano do processo.
xxvi
...................................................
Abreviações
FEM Faculdade de Engenharia Mecânica
UNICAMP Universidade Estadual de Campinas
SLAM Simultaneous Localization And Mapping
KF Kalman Filter
EKF Extended Kalman Filter
UKF Unscented Kalman Filter
3D Tridimensional
SURF Speeded Up Robust Features
SIFT Scale-Invariant Feature Transform
GPU Unidade De Processamento Gráfico
OpenCV Open Source Computer Vision
C++ Linguagem De Programação C++
CUDA Compute Unified Device Architecture
RANSAC Random Sample Consensus
Seekur Jr Skid Steer All-Weather Robot Platform
GPS Global Positioning System
DGPS Differential Global Positioning System
LIDAR Light Detection And Ranging
PTU Pan-Tilt Unit
NASA The National Aeronautics and Space Administration
ID Inverse Depth
FOV Field Of View
IMU Inertial Measurement Unit
VO Visual Odometry
INS Inertial Navigation System
DDF Divided Difference Filter
FABMap Probabilistic Localization and Mapping in the Space of Appearance
xxvii
FPS Frames Per Second
ICP Iterative Closest Point
RTS Rauch-Tung-Striebel
vSLAM Visual SLAM
AUVs Autonomous Underwater Vehicles
FPGA A Field Programmable Gate Array
UAV Unmanned Aerial Vehicle
IF Information Filter
3DMax 3d Modeling, Animation, And Rendering Software
HW Filtro Haar Wavelet
xxviii
xxix
Sumário
AGRADECIMENTOS .................................................................................................................. IX
RESUMO .................................................................................................................................... XIII
ABSTRACT ................................................................................................................................. XV
LISTA DE ILUSTRAÇÕES ..................................................................................................... XVII
LISTA DE TABELAS ............................................................................................................. XXIII
LISTA DE ABREVIATURAS E SIGLAS ............................................................................. XXIV
SUMÁRIO ............................................................................................................................... XXIX
1 INTRODUÇÃO ..................................................................................................................... 1
Objetivos .......................................................................................................................................... 3
Contribuições ................................................................................................................................... 3
Organização do texto ....................................................................................................................... 4
2 REVISÃO DA LITERATURA ............................................................................................ 5
2.1 Odometria Visual ..................................................................................................................... 5
2.2 Fusão de sensores .................................................................................................................. 21
3 ESTEREOSCÓPICA .......................................................................................................... 33
3.1 Identificação de pontos de interesse SURF ........................................................................... 35
3.2 Correlação da imagem ........................................................................................................... 39
3.3 Filtragem de pontos correlatos nas imagens .......................................................................... 41
3.4 Calibração .............................................................................................................................. 42
3.5 Triangulação .......................................................................................................................... 45
4 TÉCNICAS DE LOCALIZAÇÃO E MAPEAMENTO .................................................. 47
4.1 Cálculo de Odometria ............................................................................................................ 47
xxx
4.2 Filtragem de pontos no espaço euclidiano ............................................................................. 49
4.3 Filtro de Kalman .................................................................................................................... 51
4.3.1 Dead Reckoning ............................................................................................................ 51
4.3.2 Fusão de sensores .......................................................................................................... 53
4.4 LIDAR 2D ............................................................................................................................. 55
4.5 LIDAR 3D ............................................................................................................................. 55
5 PROCESSAMENTO EM TEMPO REAL ....................................................................... 57
5.1 Correlação de pontos SURF (OpenCV) ................................................................................ 57
5.2 Triangulação e Filtragem (CUDA) ........................................................................................ 58
6 APRESENTAÇÃO DAS PLATAFORMAS DE TESTES .............................................. 60
6.1 Câmera Estereoscópica .......................................................................................................... 60
6.2 Ambiente Virtual ................................................................................................................... 61
6.3 Plataforma robótica................................................................................................................ 62
6.3.1 GPS ................................................................................................................................ 64
6.4 Unidades de processamento de dados ................................................................................... 64
7 RESULTADOS .................................................................................................................... 65
7.1 Experimentos ......................................................................................................................... 65
7.2 Simulação - Corredor 3D Max .............................................................................................. 66
7.2.1 Pedestre - Helmet........................................................................................................... 67
7.2.2 Via Museu ..................................................................................................................... 68
7.2.3 Ciclo Básico ................................................................................................................... 69
7.2.4 Praça da Paz ................................................................................................................... 71
7.3 Velocidade de processamento (Odometria Visual) ............................................................... 72
7.3.1 Helmet ........................................................................................................................... 73
7.3.2 Corredor 3DMax ........................................................................................................... 73
xxxi
7.3.3 Via Museu ..................................................................................................................... 74
7.3.4 Ciclo Básico ................................................................................................................... 75
7.3.5 Praça da Paz ................................................................................................................... 76
7.4 Resultados das estimativas de navegação .............................................................................. 76
7.4.1 Corredor 3DMax ........................................................................................................... 77
7.4.2 Ciclo Básico ................................................................................................................... 78
7.4.3 Via Museu ..................................................................................................................... 83
7.4.4 Praça da Paz ................................................................................................................... 84
7.4.5 Resultados de Mapeamento ........................................................................................... 87
8 DISCUSSÃO E CONCLUSÕES ........................................................................................ 89
Discussão de Resultados ................................................................................................................ 89
Conclusões ................................................................................................................................... 100
Trabalhos Futuros ........................................................................................................................ 101
Vídeos Compartilhados ............................................................................................................... 102
Referências .................................................................................................................................. 103
Apêndice: Algoritmos ................................................................................................................. 110
Apêndice: Publicações realizadas ................................................................................................ 111
1
1 Introdução
A localização de robôs móveis é foco de estudo em diferentes grupos de pesquisa ao redor do
mundo, devido à complexidade deste problema. O mapeamento de um ambiente é composto por
duas etapas. Na primeira, o mundo é medido por um sensor que se movimenta dentro de um
ambiente desconhecido. Depois, estas medições são transladadas para um sistema de coordenadas
global em função da posição do sensor para cada amostra. Desta forma, a localização de um
sensor, depende de um mapa e a medição do ambiente requer da localização do sensor. Esta
ambiguidade é resolvida através da localização e mapeamento simultâneos. Tal técnica é
conhecida como SLAM (Simultaneous localization and mapping). Um dos primeiros trabalhos a
empregar esta metodologia, publicado em(SMITH; SELF; CHEESEMAN, 1990), apresenta a
incerteza associada às estimativas de cálculo da posição espacial de um robô, e desde então tem-
se aplicado e desenvolvido essa tecnologia. Por outro lado, a redundância de informação é outra
solução para o problema de localização. O uso de diferentes sensores de localização demanda de
algoritmos que interpretem esta informação. O filtro de Kalman (KF)(KALMAN, 1960) é uma
solução eficiente para tal propósito. A visão é um meio que proporciona um grande volume de
informações sensoriais aos seres humanos. Isso tem despertado o interesse dos pesquisadores,
que vêm desenvolvendo para esse fim, diferentes tipos de câmeras e algoritmos de processamento
de informações, como a extração de características e reconstrução 3D do ambiente, entre outros.
Nesta direção, as bibliotecas de código aberto têm sido utilizadas para o desenvolvimento e
prototipagem de algoritmos de processamento de imagens.
O uso de câmeras para estimar o movimento é conhecido com odometria visual, onde são
correlacionadas as texturas das imagens ao longo do trajeto. Neste trabalho apresenta-se a
proposta de um método para realização da odometria visual em ambientes externos (Outdoors).
Também, apresenta-se a implementação do método de fusão sensorial (câmeras, encoders e
Global Positioning System (GPS)) nas tarefas de mapeamento e localização simultânea.
No desenvolvimento da odometria visual são utilizados algoritmos de identificação de
características (features) em imagens, reconstrução tridimensional (3D) com visão estereoscópica
e estimação de movimento. O algoritmo Speeded Up Robust Features (SURF)(BAY et al., 2006)
é utilizado para identificar os pontos de referência nas imagens. Estes pontos de interesse são
2
correlacionados ao longo do movimento através do processamento de três imagens
estereoscópicas. O processo, computacionalmente caro, é executado em uma unidade de
processamento gráfico (GPU) através da biblioteca Open Source Computer Vision
(OpenCV)(BRADSKI, 2000). A seguir, os pontos de referência são filtrados e projetados no
espaço euclidiano. Esses algoritmos são processados na GPU por intermédio da linguagem C++ e
Compute Unified Device Architecture (CUDA)(SANDERS, JASON, 2010). Imagens
estereoscópicas em dois instantes consecutivos do movimento em um ambiente são utilizadas
para estimar um vetor de translação e uma matriz de rotação de tal deslocamento. Esta estimativa
de movimento é conferida pelo filtro Random Sample Consensus (RANSAC)(FISCHLER;
BOLLES, 1981) que refina os resultados obtidos.
Neste trabalho são utilizados os sensores introspectivos do robô Seekur Jr (MOBILE
ROBOTS, 2011) do tipo: encoders e giroscópios, para medir a locomoção do robô, bem como
sensores extrospectivos do tipo: Laser, câmeras estereoscópicas e GPS na tarefa de fornecer a
informação de odometria. No presente trabalho, as diferentes estimativas de localização são
fundidas através da técnica de Kalman(KALMAN, 1960). Os algoritmos de estimativa de
movimento são validados experimentalmente em ambientes reais e virtuais.
Resultados sobre velocidades de processamento e erros de localização são apresentados e
comparados em cada experimento. Os resultados dos experimentos de navegação são organizados
em cinco conjuntos de dados data sets, disponibilizados para uso futuro no repositório da FEM.
Dentre os experimentos encontra-se uma simulação de movimento em um corredor de escritório
com condições ideais de iluminação e locomoção, medidas em ambientes reais do tipo interior e
exterior. Bem como o uso de diferentes tamanhos de imagens e velocidades de navegação.
Encontram-se ainda nos data-sets, resultados de localização com GPS que permitem em alguns
casos o cálculo experimental do erro de estimação de trajetória. Destacam-se a seguir os objetivos
e contribuições buscados no presente trabalho.
3
Objetivos
Objetivos gerais:
Investigação e implementação de um método robusto e eficiente para realização da
odometria visual.
Implementação de fusão sensorial (câmeras, encoder, GPS) para a tarefa de mapeamento
do ambiente e localização.
Objetivos específicos:
Aplicação de algoritmo de calibração de câmeras de um sistema estereoscópico e
introdução de técnica de filtragem de correlações para aumento da robustez dos
algoritmos de processamento de imagem.
Implementação de um algoritmo de odometria visual em uma plataforma computacional
eficiente (GPU).
Implementação de procedimento de fusão de sensores utilizando filtro de Kalman.
Realização de experimentos de navegação virtual e real para avaliação dos procedimentos
de odometria visual propostos.
Contribuições
A tese contribui de maneira geral na implementação de um sistema de odometria visual em
tempo real através da proposta de paralelização do algoritmo para ser executado em GPU
utilizando CUDA e OpenCV. De forma especifica as contribuições técnicas e teóricas que foram
desenvolvidas no decorrer da pesquisa são listadas abaixo:
O algoritmo de odometria visual utiliza uma nova técnica de calibração de câmeras
desenvolvida pelo grupo de pesquisa da FEM/UNICAMP, descrita na seção 3.4.
As correlações das imagens são filtradas com uma nova técnica igualmente desenvolvida
pelo grupo de pesquisa da FEM e descrita na seção 3.3.
O conjunto de câmeras de 9mm utilizadas, como plataforma estereoscópica de alta definição
e lentes fixas, conforme descrito na seção 6.1, representa um diferencial aos equipamentos de
navegação visual empregados na literatura especializada.
O robô móvel Seekur Jr foi equipado neste trabalho com Lasers e GPS, conforme descritos
na seção 6.3, enriquecendo a plataforma de pesquisa. Na mesma plataforma foi fixado um sensor
4
de detecção de alcance por Laser Light Detection And Ranging (LIDAR) que foi construído
utilizando uma unidade robótica de inclinação e varredura Pan-Tilt Unit (PTU).
Os ambientes exteriores da Unicamp utilizados para validar os algoritmos foram
armazenados em bancos de dados conforme é apresentado na seção 7.1. Tais dados são úteis para
o desenvolvimento de futuros trabalhos nas áreas de visão estereoscópica e navegação robótica.
Organização do texto
Este documento está organizado da seguinte maneira. Na seção 1, encontram-se a introdução
e os objetivos. O estado da arte sobre aplicações de navegação visual é apresentando na seção 2.
Esta seção é divida em: odometria visual, fusão sensorial e uso de GPUs no problema de
localização robótica. Na seção 3 são apresentadas as técnicas de processamento de imagens e
reconstrução 3D utilizadas neste trabalho. Os algoritmos de odometria visual e fusão de sensores
são apresentados na seção 4. Nesta seção também são apresentas as técnicas de mapeamento
utilizando Lasers. Na seção 5 é apresentada a proposta de processamento em GPU do presente
trabalho, utilizando OpenCV e CUDA. Os materiais utilizados para validar os algoritmos são
apresentados na seção 6. Na seção 7 apresenta-se o conjunto de experimentos e resultados que
validam os algoritmos. As conclusões e discussões dos resultados obtidos apresentam-se na
seção 8.
5
2 Revisão Da Literatura
A visão robótica é uma área que está crescendo e ganhando a atenção ao redor do mundo.
Inicialmente os desenvolvimentos foram em missões de exploração espacial com os Rover da The
National Aeronautics and Space Administration (NASA). No entanto, grupos de pesquisa ao
redor do mundo desenvolveram novas tecnologias e algoritmos de processamento de imagens e
estimativa de movimento. Neste capítulo são apresentados os trabalhos mais representativos e
semelhantes a este trabalho. O estado da arte está dividido em duas seções. Na primeira são
apresentados os trabalhos com algoritmos para estimar movimentos utilizando visão, ou seja,
odometria visual. Depois, são apresentados os trabalhos que utilizam o filtro de Kalman para
fundir a odometria visual com outra estimativa de movimento.
2.1 Odometria Visual
Nesta seção são apresentados os trabalhos que utilizam câmeras na estimativa de movimento.
O uso de uma única câmera é apresentado nos trabalhos de (HUI FANG, 2009), (ADAM;
MEMBER; RIVLIN, 1999), (CASTELLANOS; NEIRA, 2001), (BOTELHO et al., 2009),
(SANTANA; MEDEIROS, 2011) e (SILVEIRA, 2010). Os trabalhos de (OLSON et al., 2003),
(NEMRA et al., 2013), (SALVI et al., 2008), (ZHU et al., 2011), (KONOLIGE; AGRAWAL,
2008), (WEI; CAPPELLE; RUICHEK, 2011) e (WEI; CAPPELLE; RUICHEK, 2013b) utilizam
câmeras paralelas em aplicações de visão estereoscópicas. Câmeras com lentes de olho de peixe
ou omnidirecionais são utilizadas nos trabalhos de (HOANG et al., 2013), (GUIZILINI, 2008).
Estes tipos de câmeras são combinados em sistemas redundantes de visão nos trabalhos de
(PAUDEL et al., 2014), (LIK; LUI; JARVIS, 2010) e (BONATO, 2007).
Os trabalhos de odometria visual utilizam diferentes técnicas de processamento e correlação
de imagens. O algoritmo Harris Corner Detector é utilizado nos trabalhos de (NIST; BERGEN,
2004), (SILVEIRA; MALIS, 2007), (HOWARD, 2008), (CORKE et al., 2007) (HUI FANG,
2009)) para identificar pontos de referência (keypoints). Uma modificação deste algoritmo é
apresentada no trabalho de (SAEEDI; LAWRENCE; LOWE, 2006). O seguimento do
movimento de pontos é conhecido como fluxo óptico e é apresentado nos (HOANG et al., 2013),
(WANG; XIE, 2015). O algoritmo Scale-Invariant Feature Transform (SIFT) apresenta alta
6
estabilidade na identificação de pontos de referências na presença de alterações de iluminação,
escala e rotação. Os trabalhos que utilizam o SIFT para estimar o movimento são os de (HOANG
et al., 2013), (CLIPP; FRAHM; POLLEFEYS, 2010), (BOTELHO et al., 2009), (BONATO,
2007), (GUIZILINI, 2008). Uma variação do algoritmo do SIFT é o algoritmo SURF que
apresenta modificações nos filtros de identificação para atingir maiores velocidades de
processamento. Este algoritmo é utilizando nos trabalhos de (PAUDEL et al., 2014), (SANTOS,
2010), (SALVI et al., 2008), (WEI; CAPPELLE; RUICHEK, 2011) e (WEI; CAPPELLE;
RUICHEK, 2013b).
O movimento de uma câmera pode ainda ser estimado por técnicas que não utilizam
algoritmos de identificação de pontos característicos. Nos trabalhos de (HUI FANG, 2009),
(SILVEIRA, 2010) são utilizadas técnicas de otimização para correlacionar as imagens e estimar
o movimento. O processamento de imagens utilizando novas técnicas de segmentação é
apresentado nos trabalhos de (WANG; XIE, 2015), (KONOLIGE; AGRAWAL, 2008) e
(BERNARDES, 2010).
O trabalho de (NIST; BERGEN, 2004) apresenta uma aplicação de odometria visual
utilizando câmeras estereoscópicas. Nesse trabalho a identificação dos keypoints na imagem
utiliza a técnica Harris Corner Detector, onde falsas correlações são eliminadas utilizando filtros
de disparidade em função do tamanho da imagem. Na navegação são utilizadas duas câmeras
estereoscópicas paralelas, afastadas de uma distância de 20cm. No cálculo do erro é utilizado um
GPS diferencial Differential Global Positioning System (DGPS). O trabalho valida o algoritmo
em três trajetórias com comprimentos de 183m, 279m e 372m. O ambiente é externo com
característica de floresta. Tal algoritmo de odometria visual também é implementado no trabalho
de (ANTHONY STENTZ, HERMAN HERMAN, 2015) como são apresentados na Figura 2-1.
7
Figura 2-1 Imagem do robô autônomo terrestre com duas câmeras estereoscópicas na parte frontal e o DGPS
(Imagem dos trabalho(NIST; BERGEN, 2004) e (ANTHONY STENTZ, HERMAN HERMAN, 2015)).
(HOWARD, 2008) desenvolveu um algoritmo de odometria visual utilizando duas
câmeras estereoscópicas. O principal diferencial deste trabalho é que não utiliza nenhuma
estimativa da posição e a disparidade é computada por dois algoritmos estereoscópicos distintos.
As imagens estereoscópicas são retificadas com as linhas epipolares seguido do cálculo do mapa
de disparidade. Em seguida, os pontos de interesse na imagem keypoints foram identificados com
os algoritmos Harris Corner Detector e Fast. As correlações dos keypoints são obtidas com
técnicas de otimização. O algoritmo apresentou resultados robustos e foi testado nos robôs LAGR
e BigDog. A velocidade de processamento atinge os 60 quadros por segundo ou Frames Per
Second (FPS) em uma CPU de 2,4 GHz. Uma ilustração do sistema utilizado na referência
(FALLON et al., 2015) é apresentada na Figura 2-2.
Câmera frontal
Panorâmica /
olho de peixe
Luz LED
Sistema embarcado de
processamento e
interface de sensores
Câmera estereoscópica
FOV grande angular
(HDR)
Câmera estereoscópica
FOV macro
(HDR)
Dois LIDAR
360º
8
Figura 2-2 Projeto LAGR (Learning Applied to Ground Robotics), BigDog e ATLAS. Construídos pelo
governo dos Estados Unidos e Boston Dynamics. (Fonte (HOWARD, 2008) e (FALLON et al., 2015))
O trabalho de (CORKE et al., 2007), compara os sistemas de localização em ambientes
submarinos utilizando sonares, com aqueles que usam odometria visual. Os pontos de referência
nas imagens são identificados pelo algoritmo Harris Corner Detector de o uso da técnica de
correlação cruzada. Neste trabalho as restrições de profundidade foram suprimidas. Em trabalhos
anteriores do mesmo autor, a odometria visual foi projetada para utilizar a informação dos corais.
A correlação dos resultados de odometria visual com informações de GPS é prejudicada. Pois o
sinal de satélite só funciona na superfície da água. Uma ilustração do sistema utilizado na
referência (CORKE et al., 2007) é apresentado na Figura 2-3.
9
Figura 2-3 Modelo do robô submarino utilizando a informação dos corais (Fonte:(CORKE et al., 2007)).
(SAEEDI; LAWRENCE; LOWE, 2006), apresenta a localização de um robô num ambiente
externo utilizando um sistema de visão estereoscópica em ambientes abertos (exteriores). O robô
é dotado com uma câmera trifocal composta de três câmeras monoculares. A pose do robô é
refinada com o filtro de Kalman. Uma vez que o algoritmo Harris Corner Detector é considerado
muito caro computacionalmente, foi desenvolvido um novo algoritmo, para a extração de
características (SUSAN), que realiza a detecção de cantos com uma precisão superior. Os
resultados da reconstrução da odometria são apresentados na Figura 2-4 onde se faz a
comparação dos resultados do sistema de visão estereoscópica com a odometria dos encoders.
(a) (b)
Figura 2-4 Resultados experimentais da navegação do ambiente exterior.
(Fonte:(SAEEDI; LAWRENCE; LOWE, 2006))
No trabalho de (PAZ; PINI; TARD, 2008) apesenta-se um sistema de localização e
mapeamento simultâneo (SLAM) utilizando visão estereoscópica em grande escala. O
movimento é estimado para seis graus de liberdade analisando doze variáveis: posição 3D,
orientação dos ângulos de Euler e velocidades lineares e angulares da câmera. O algoritmo de
visão extrai as referências através do algoritmo SIFT. Estas são projetadas no espaço euclidiano
10
por meio da triangulação estereoscópica quando a profundidade dos pontos é menor do que 100
vezes a distância entre câmeras, após esse limite é utilizado e o algoritmo inverse depth (ID).
Nesse trabalho, é analisada a precisão do campo de visão em função da distância, como
apresentado na Figura 2-5. Os pontos são reconstruções reais. A região de incerteza da
reconstrução estereoscópica é representada na elipse obscura e a incerteza associada à
linearização parametrizada ID pela elipse clara.
Figura 2-5 Incerteza da visão estereoscópica para diferentes profundidades
(Fonte: (PAZ; PINI; TARD, 2008)).
Os trabalhos com maior robustez na tarefa de navegação autônoma utilizando câmeras são
apresentados nas aplicações associadas aos robôs (Rovers) da NASA: o trabalho de (DEEN;
LORRE, [s.d.]) apresenta a reconstrução do ambiente utilizando câmeras, técnica utilizada nos
algoritmos de odometria visual. Na imagem estereoscópica do robô Spirit os conjuntos de píxels
são selecionados por correlação estereoscópica. Os keypoints entre diferentes imagens em
diferentes instantes de tempo são correlacionados por métodos de otimização. Posteriormente, os
pontos são filtrados e triangulados. Finalmente, estes são transformados em coordenadas globais
para a construção do mapa 3D, conforme na Figura 2-6, abaixo.
11
Figura 2-6 Spirit Sol 409 Navcam imagem (teto), As linhas Vermelho/Verde/Azul representam as
coordenadas XYZ (Fonte:(DEEN; LORRE, [s.d.])).
A navegação autônoma do robô Curiosity da NASA utiliza o sistema de visão apresentado
no trabalho de (MAKI et al., 2012). Composto por doze câmeras estereoscópicas instaladas
conforme a Figura 2-7. Câmeras Navcam, localizadas na parte superior são direcionadas para o
chão na tarefa de navegação. As câmeras têm um campo de visão, Field Of View (FOV) de 45
graus. Na tarefa de desvio de obstáculos são utilizadas as câmeras Hazcams, com um campo de
visão (FOV) de 124 graus, localizadas na parte inferior. A distância de separação entre câmeras
estereoscópicas é chamada de linha base 𝑏𝑙. Neste trabalho as câmeras frontais têm um 𝑏𝑙 de
16.7cm e nas câmeras traseiras de 10cm.
Figura 2-7 Posição das câmeras no Rover Curiosity da NASA (Fonte:(MAKI et al., 2012))
No trabalho de C. Olson (OLSON et al., 2003) é apresentado o algoritmo de estimativa de
movimento utilizando imagens estereoscópicas. Utilizando a técnica Förstner são identificadas as
características nas imagens que depois são correlacionadas e trianguladas. Depois, o conjunto de
12
pontos é utilizado para estimar o movimento. O algoritmo é validado em um ambiente externo
como, apresentado na Figura 2-8.
Figura 2-8 Imagens estereoscópicas e de movimento dos pontos de referência (Fonte:(OLSON et al., 2003))
O processamento de imagens requer de alta demanda computacional em termos de volume e
velocidade de processamento. Alguns trabalhos da literatura têm utilizado GPUs para atingir
esses requisitos de processamento de imagens.
No trabalho de (LIK; LUI; JARVIS, 2010) as tarefas de correlação de imagens
estereoscópicas e a estimativa de profundidade são implementadas na GPU. Uma torre com duas
câmeras omnidirecionais é utilizada para realizar a localização do robô através do cálculo da
profundidade de pontos no espaço utilizando a triangulação, conforme ilustrado na Figura 2-9.
No trabalho citado, consegue-se realizar o processamento em tempo real.
Figura 2-9 Plataforma robótica de pesquisa. (Fonte:(CASTELLANOS; NEIRA, 2001))
13
O Trabalho de (KONOLIGE; AGRAWAL, 2008), apresenta a implementação de um
algoritmo de odometria visual e relocalização. O algoritmo é testado em ambientes internos
(indoors) e externos do tipo estrada de terra (offroad). Utiliza-se, no trabalho citado, uma câmera
estereoscópica e correlacionam-se os pontos das imagens com o algoritmo center-surround
feature called CenSure, recuperando assim a trajetória do robô. O algoritmo alcança velocidade
de processamento de 15FPS em uma CPU de 2,0Ghz, com processador de dois núcleos. O
primeiro núcleo processa a odometria visual. O segundo núcleo processa os demais algoritmos e
a relocalização. Uma ilustração do resultado mencionado na referência (KONOLIGE;
AGRAWAL, 2008) é apresentado na Figura 2-10.
Figura 2-10 Trajetória reconstruída de 700 imagens. Os pontos azuis são as referências utilizadas na
estimativa de movimento. A relocalização, linhas vermelhas acontece em 133 frames. (Fonte:(KONOLIGE;
AGRAWAL, 2008))
O trabalho de (NEWCOMBE et al., 2011) utiliza o sensor de profundidade (Kinect) para
estimar o movimento do robô, assim como a reconstrução do ambiente. O processamento é
realizado em tempo real, com velocidade de 30FPS. O algoritmo é implementado em uma GPU e
utiliza relocalização no momento em que perde o caminho. Uma ilustração do resultado
mencionado na referência (NEWCOMBE et al., 2011) é apresentado na Figura 2-11.
14
Figura 2-11 Movimento circular ao redor de uma tábua com objetos. A reconstrução do ambiente e trajetória
de navegação são apresentadas. (Fonte: (NEWCOMBE et al., 2011))
O trabalho de (CLIPP; FRAHM; POLLEFEYS, 2010), utiliza visão estereoscópica como
único dispositivo para resolver o problema de localização simultânea e mapeamento (vSLAM). A
implementação utiliza GPU, bem como, o processamento de múltiplos núcleos na CPU, atingindo
a velocidade de 15FPS. A identificação de pontos de interesse (keypoints) e correlações das
imagens estereoscópicas utiliza o algoritmo SIFT. O movimento é estimado por meio do cálculo
das profundidades de pontos no espaço utilizando o algoritmo de três pontos. Os experimentos
são realizados em ambientes internos com obstáculos dinâmicos. Na Figura 2-12 é apresentado o
mapa. Linhas cinza representam o mapa real. Pontos azuis e verdes representam o mapa
recuperado da informação visual.
Figura 2-12 Resultados do trabalho, a câmera navegou três vezes no loop esquerdo e direito.
(Fonte:(CLIPP; FRAHM; POLLEFEYS, 2010))
15
Na dissertação de mestrado de (SANTOS, 2010) é apresentado um trabalho de SLAM visual
monocular, utilizando o algoritmo SURF da biblioteca de OpenCV. É apresentada uma técnica de
inicialização atrasada de marcas baseada na intersecção de retas 3D. Também, a posição é
corrigida utilizando o EKF utilizando o vetor de estados. O algoritmo apresenta dificuldades nas
correlações de pontos quando existem superfícies refletivas. Os testes são realizados em ambiente
interno. As trajetórias da navegação são apresentadas na Figura 2-13.
Figura 2-13 Trajetória realizada pelo robô, odometria e SLAM visual. Localização do robô através da
interseção dos vetores 3D de um keypoint identificado em três instantes deferentes. (Fonte: (SANTOS, 2010))
Na dissertação de mestrado de (SANTIAGO, 2008), apresenta-se um sistema de navegação
cooperativa utilizando visão. O robô humanoide é controlado pelo robô diferencial utilizando a
informação da câmera. Também, esta informação é utilizada para a localização e mapeamento
simultâneo. Uma ilustração das plataformas robóticas utilizadas são apresentado na Figura 2-14.
Figura 2-14 Plataformas robótica com câmera monocular e robô humanoide com marcador visual.
(Fonte:(SANTIAGO, 2008))
Na tese de doutorado de (SANTANA; MEDEIROS, 2011) é proposta uma técnica de
vSLAM adequada para ambientes planos com linhas presentes no chão. O sistema utiliza visão
monocular. O processamento da imagem é realizado utilizando o filtro de Canny. O método
16
permite que o robô navegue no ambiente fundindo informações de odometria e de visão
monocular, conforme apresentado na Figura 2-15.
Figura 2-15 Diagrama de segmentação de imagem, identifica as marcas de referência no chão. Ambiente
externo estruturado. (Fonte:(SANTANA; MEDEIROS, 2011))
No trabalho de (SUJAN; MEGGIOLARO; BELO, 2006), uma técnica de planejamento de
trajetória é apresentada. Utilizando uma câmera monocular são identificados os possíveis
destinos de um robô diferencial. O mapeamento é realizado com a rotação do robô construído
uma imagem panorâmica 2D. Uma ilustração do algoritmo mencionado em (SUJAN;
MEGGIOLARO; BELO, 2006) é apresentado na Figura 2-16.
Figura 2-16 Imagem com pontos de referência e diagrama do mapeamento do robô.
(Fonte: (SUJAN; MEGGIOLARO; BELO, 2006))
O trabalho de (BOTELHO et al., 2009) apresenta o uso de odometria visual para a
localização de um robô aquático autônomo em ambientes submarinos Autonomous Underwater
Vehicles (AUVs). Com uma câmera monocular são identificados keypoints através do algoritmo
SIFT. Depois, são escolhidos os melhores keypoitns utilizando os filtros RANSAC e LMeds. O
Posição do robô
(k)
Posição (k+1)
Janela de
sobreposição
17
algoritmo é validado em diferentes condições de iluminação e qualidade da água. A plataforma
robótica de navegação é apresentada na Figura 2-17.
Figura 2-17 Robô aquático com pontos de referência artificial
(Fonte:(BOTELHO et al., 2009))
No trabalho de (SILVEIRA, 2010) é apresentada uma técnica de localização e
mapeamento utilizando métodos diretos. A navegação de uma câmera é recuperada utilizando a
correlação de seções planas das imagens. Esta técnica utiliza modelos de iluminação e reflexo
bem com técnicas de otimização. Os resultados apresentam robustez às modificações de
iluminação e pequeno esforço computacional. Uma ilustração do resultado mencionado em
(SILVEIRA, 2010) é apresentado na Figura 2-18.
Figura 2-18 Movimento recuperado da câmera e imagens de referência.
(Fonte:(SILVEIRA, 2010))
18
Na tese de doutorado de (BONATO, 2007) é apresentada uma arquitetura de hardware
embarcada em uma FPGA para o processamento de SLAM utilizando visão. Os pontos de
referência são identificados com o algoritmo SIFT. São capturadas quatro imagens em tempo real
com o sistema apresentado na Figura 2-19. O filtro de Kalman é utilizado nas etapas de
mapeamento e localização.
Figura 2-19 Hardware utilizado, FPGA com sistema de visão de quatro câmeras. (Fonte: (BONATO, 2007))
Na dissertação de mestrado de (GUIZILINI, 2008) é implementada a técnica de SLAM
visão utilizando uma câmera omnidirecional, onde são identificados pontos de referência
utilizando o algoritmo SIFT, conforme ilustrado na Figura 2-20. Um mapa é construído
continuamente. Os pontos de referência são comparados com o mapa. Caso não seja encontrada
uma correlação, o ponto é armazenado no mapa como uma nova referência. O algoritmo é
validado em um ambiente de interior.
Figura 2-20 Imagens omnidirecionais em duas posições diferentes. Os pontos identificados, bem como a
correlação de pontos com o algoritmo SIFT são apresentados. (Fonte: (GUIZILINI, 2008))
19
No trabalho de (SAMPAIO et al., 2013) é apresentada uma plataforma para testar
algoritmos de Unmanned Aerial Vehicle (UAV). É proposta a medição da velocidade de um
UAV utilizando uma câmera. As imagens são processadas através da implementação de OpenCV
do algoritmo de fluxo óptico. No entanto, o sistema também pode utilizar a informação de um
IMU, Altímetro e GPS. Uma ilustração do resultado mencionado na referência (SAMPAIO et al.,
2013) é apresentado na Figura 2-21.
Figura 2-21 Simulação do UAV com uma câmera direcionada para o chão. A Velocidade é medida utilizando
Fluxo Óptico. (Fonte:(SAMPAIO et al., 2013))
Na dissertação de mestrado de (COUTO, 2012) é apresentado um algoritmo de relocalização.
Um mapa é construído com os keypoints identificados através do algoritmo SURF associados à
odometria dos encoders. A plataforma robótica é relocalizada através de uma câmera Videre
DCSG Color, conforme é apresentada na Figura 2-22.
Figura 2-22 Imagem Robô Pionner 3-AT com uma câmera industrial (Fonte:(COUTO, 2012))
Na dissertação de mestrado de (TAVARES, 2004) é apresentado um sistema de localização
utilizando imagens. Uma câmera presa no teto de um ambiente interior (Figura 2-23) localiza o
robô através de um marcador visual. Esta informação é utilizada para a correção da odometria
20
dos encoders. Uma ilustração do experimento mencionado na referência (TAVARES, 2004) é
apresentado na Figura 2-23.
Figura 2-23 Sistema de localização visual do robô lego (Fonte:(TAVARES, 2004))
Na dissertação de mestrado de (BERNARDES, 2010) é apresentado um sistema de
controle servo visual em veículos robóticos. Os filtros (KNN, Sobel, HMIN) e a transformada
Watershed são implementados em CUDA para garantir a velocidade de processamento. O robô
do experimento é ilustrado na Figura 2-24.
Figura 2-24 Representação das regiões escolhida para análise, plataforma robótica com a qual foram
implementados os testes (Fonte:(BERNARDES, 2010))
No trabalho de (ANDREASSON; DUCKETT; LILIENTHAL, 2007), é apresentado um
sistema vSLAM minimalista. Ou seja, utiliza poucos sensores e pouco requisito computacional.
São utilizadas unicamente as informações das rodas (odometria) e a informação de uma câmera
omnidirecional. No trabalho são combinados dois métodos existentes. O uso de singularidade de
21
imagens panorâmicas para close loop no nível topológico, e extração gráfica da informação de
odometria. Rotação entre duas posições é estimada por diferença quadrática para cada par de
pontos. No experimento foram utilizadas 945 imagens omnidirecionais. O percurso navegado é
de 1,4 km. Captura-se imagens a cada 3 metros, construindo-se o mapa online em tempo real.
Imagens de 100x289 pixels são processadas utilizando o algoritmo SIFT. Os resultados são
validados com o uso de DGPS apresentando um erro de 6,22 m. Uma ilustração do resultado
mencionado na referência (ANDREASSON; DUCKETT; LILIENTHAL, 2007) é apresentado na
Figura 2-25.
(a) (b)
Figura 2-25 Em (a) os quadros brancos representam as features não correlacionas, os quadros azuis
representam as correlações bem sucedidas. Os círculos vermelhos representam as posições do robô. (b)A
plataforma robótica com uma câmera Canon e uma lente omnidirecional 360º , um DGPS, um Laser para
visualização. Fonte:(ANDREASSON; DUCKETT; LILIENTHAL, 2007)
2.2 Fusão de sensores
Nesta seção são apresentados trabalhos da literatura que resolvem o problema de estimação
de movimento fundindo diferentes estimativas de localização. Os sensores são classificados em
dois tipos. Introspectivos: encoders, giroscópios, bussolas, acelerômetros e unidades inerciais de
medição de movimento Inertial Measurement Unit (IMU); Extrospectivos: Lasers, Câmeras e
Global Positioning System (GPS).
Nos trabalhos de (HUI FANG, 2009) e (ADAM; MEMBER; RIVLIN, 1999) são fundidas a
odometria dos encoders e odometria visual (VO). Os ângulos e acelerações dos IMUs são
fundidos com a VO nos trabalhos de (BAK et al., 2012), (ZHU et al., 2011), (WANG; XIE,
2015) e com odometria dos encoders no trabalho de (MITSUHASHI; KURODA, 2011). O erro
cumulativo da VO é corrigido pelo GPS no trabalho de (WEI; CAPPELLE; RUICHEK, 2011).
22
Os sensores Laser são também utilizados para estimar o movimento através da técnica de
correlação de pontos Iterative Closest Point (ICP). As estimativas de movimento da odometria
visual e do Laser são fundidas no trabalho de (HOANG et al., 2013), e no trabalho de (WEI;
CAPPELLE; RUICHEK, 2013b) são fundidas, a estimativa da VO, a localização pelo GPS e o
movimento estimado pelo Laser.
Na literatura são utilizadas diferentes técnicas para resolver o problema de localização. A
redundância de informação é fundida comumente com três métodos que utilizam o Filtro de
Kalman (KF). A fusão de sensores com o KF linear é apresentada nos trabalhos de (ZHU et al.,
2011) e (WANG; XIE, 2015). O KF não linear Unscented Kalman Filter (UKF) é apresentado
nos trabalhos de (HUI FANG, 2009), (MALYAVEJ et al., 2009); o KF estendido Extended
Kalman Filter (EKF) é implementado nos trabalhos de (ADAM; MEMBER; RIVLIN, 1999),
(CASTELLANOS; NEIRA, 2001), (BAK et al., 2012), (FERNANDA; RUIZ, 2014), (WEI;
CAPPELLE; RUICHEK, 2011), (HOANG et al., 2013). No trabalho (MITSUHASHI;
KURODA, 2011) é utilizado o filtro Divided Difference Filter (DDF) para fundir a estimativa de
odometria com a localização do GPS. O KF também é utilizado para estimar a posição utilizando
as localizações anteriores. Esta técnica é conhecida como Dead Reckoning (DR) e é
implementada no trabalho de (BONATO, 2007). O EKF nesta configuração é implementado nos
trabalhos (SALVI et al., 2008), (SANTOS, 2010).
O trabalho de (HUI FANG, 2009), realiza o processo de localização de um robô autônomo
utilizando uma câmera direcionada para o solo e um mapa de texturas de imagens. A informação
da odometria dos encoders das rodas é utilizada para posicionar as imagens no mapa. No entanto,
o erro acumulativo da odometria insere incertezas na conexão das imagens, requerendo, desta
forma, o uso de processamento de imagens. Keypoints são identificados com o algoritmo Harris
Corner Detector e correlacionados através de técnicas de otimização. O método UKF é utilizado
para fundir a informação de odometria e a construção do mapa. Uma ilustração do sistema
utilizado na referência (HUI FANG, 2009) é apresentado na Figura 2-26.
23
Figura 2-26 Veículo inteligente da universidade Shanghai Jiao Tong (Fonte:(HUI FANG, 2009))
No trabalho de (ADAM; MEMBER; RIVLIN, 1999) a odometria das rodas e a odometria
visual foram unidas para estimar a localização do robô. Utilizou-se o vídeo de uma câmera e os
encoders das rodas do robô. Em adição a isso, emprego se o filtro de Kalman para fusão das
diferentes informações de odometria. Uma ilustração do resultado mencionado na referência
(ADAM; MEMBER; RIVLIN, 1999) é apresentado na Figura 2-27.
Figura 2-27 Odometrias estimadas e trajetória real (Fonte:(ADAM; MEMBER; RIVLIN, 1999))
No Trabalho de (CASTELLANOS; NEIRA, 2001) foram correlacionados os dados do Laser
e da câmera . Os pontos no espaço 3D reconstruidos das distâncias do Laser e os keypoints
identificados nas imagens são fundidos utilizando o EKF. O algoritmo foi implementado em CPU
e atingindo uma velocidade de processamento em tempo real. Uma ilustração do resultado
mencionado na referência (CASTELLANOS; NEIRA, 2001) é apresentado na Figura 2-28.
24
Figura 2-28 Identificação de pontos de referência com o Laser e a projeção na imagem.
(Fonte:(CASTELLANOS; NEIRA, 2001))
No trabalho de (PAUDEL et al., 2014) é proposta uma técnica para a fusão de odometria
visual e Laser 3D para ambiente exterior. Pontos correspondentes entre duas imagens de 480x640
pixels são identificados através do algoritmo SURF. O data-set utilizou dois Laser 2D e 4
câmeras sincronizadas para a navegação e reconstrução do ambiente. Uma ilustração do resultado
mencionado na referência (PAUDEL et al., 2014) é apresentado na Figura 2-29.
Figura 2-29 Reconstrução da superfície em 3D. As texturas das imagens foram fundidas com os pontos
medidos com os Lasers (Fonte:(PAUDEL et al., 2014)).
No trabalho de (BAK et al., 2012) é apresentado uma nova aplicação da odometria visual
como sensor propiospectivo. A odometria visual é utilizada para corrigir os erros de um sensor
Inertial Navigation System (INS) de baixo custo. O algoritmo é validado em ambiente externo e
comparado com GPS/IMU. O filtro de Kalman é utilizado em configuração EKF-dead reckoning.
Uma ilustração do resultado mencionado em (BAK et al., 2012) é apresentado na Figura 2-30.
25
(a) (b)
Figura 2-30 (a)Rotação estimada pelo algoritmo de odometria visual e IMU no experimento, (b) automóvel
autônomo LIVIC’s com câmeras estereoscópicas e arquitetura de hardware dedicada.
(Fonte:(BAK et al., 2012))
No trabalho de (NEMRA et al., 2013) é utilizada uma câmera estereoscópica no problema de
localização e mapeamento. As imagens capturadas pelas câmeras Bumblebee2 são processadas
pelo algoritmo SURF. Nesse trabalho, o algoritmo ICP comumente usado para a correlação de
pontos do Laser é utilizado para correlação de imagens. Este novo método é chamado de IC-
SURF. O algoritmo foi implementado em Matlab e testado em ambientes internos e externos. O
algoritmo Adaptative IC-SURF é comparado com a odometria visual na Figura 2-31(a). A
plataforma robótica utilizada é apresentada na Figura 2-31 (b).
(a) (b)
Figura 2-31 Trajetórias da odometria dos encoders e a proposta de odometria visual Adaptative IC-SURF (a).
Robô Pioneer 3AT com uma câmera Bumblebee2 de 12mm (b). (Fonte :(NEMRA et al., 2013))
No trabalho de (MITSUHASHI; KURODA, 2011) é apresentado um sistema de localização
em ambientes externos utilizando câmeras e o algoritmo Probabilistic Localization and Mapping
26
in the Space of Appearance (FABMap). A estimativa de movimento é recuperada pela fusão dos
encoders das rodas e o giroscópio através do algoritmo Divided Difference Filter (DDF). Uma
ilustração do resultado mencionado na referência (MITSUHASHI; KURODA, 2011) é
apresentado na Figura 2-32.
Figura 2-32 Arquitetura do sistema e o robô móvel INFANT (Fonte: (MITSUHASHI; KURODA, 2011)).
No trabalho de (MALYAVEJ et al., 2009) é utilizado algoritmo Unscented Kalman Filter
(UKF) para fundir a informação do GPS, a odometria dos encoders e de uma bússola eletrônica.
Para calibrar a bússola é utilizado um circuito circular realizando a navegação várias vezes. Os
resultados desse experimento são apresentados na Figura 2-33.
(a) (b)
Figura 2-33 Resultados de navegação utilizando o GPS puro(a) e resultados da fusão com o filtro UKF (b). (Fonte:(MALYAVEJ et al., 2009))
No trabalho de (SALVI et al., 2008) é utilizada uma câmera estereoscópica para estimar a
odometria visual. O filtro de Kalman estendido EKF na configuração dead-reckoning e o
𝑋 = [𝑥, 𝑦,𝜃]
Localização
Fusão de sensores
(DDF)
[𝑥 , 𝑦]
Reconhecimento
[𝑊𝑔𝑖𝑟𝑜 , 𝑡]
Odometria Giroscópio
[𝑣𝑜𝑑𝑦,𝑊𝑜𝑑𝑦, 𝑡]
Odometria das Rodas
[𝑣𝑡,𝑤𝑡 ]
Dead Reckoning
27
algoritmo SURF são utilizados para estimar o movimento. Também, a posição dos Keypoints é
estimada e corregida pelo KF ao longo da trajetória. O movimento estimado é novamente filtrado
pelo filtro Rauch-Tung-Striebel (RTS). O algoritmo foi testado na trajetória do ambiente
simulado apresentado na Figura 2-34.
(a) (b)
Figura 2-34 Resultados de SLAM, as trajetórias claras (verdes) representam as trajetórias de referência. As
trajetórias obscuras (vermelhas) na figura (a) representam a saída do filtro EKF. Na imagem (b) representa a
saída do filtro RTS (Fonte: (SALVI et al., 2008) ).
No trabalho de (ZHU et al., 2011) do centro de pesquisa International Sarnoff (SRI) é
apresentado um sistema de localização de alta precisão. O ambiente é mapeado através da uma
câmera estereoscópica e um Laser. A localização do robô é estimada pela fusão de sensores
utilizando o filtro de Kalman. O movimento recuperado pela odometria visual é fundido com o
movimento recuperado de uma unidade IMU. Nesse experimento são construídos data-sets onde
o mapeamento do Laser e as imagens são correlacionadas. No experimento o robô realiza
mapeamentos de 360º movimentando os sensores com uma unidade PTU como é apresentado na
Figura 2-35.
(a) (b)
Figura 2-35 Plataforma modificada Segway equipada com sensores para a tarefa de navegação.
(Fonte: (ZHU et al., 2011))
28
No trabalho de (WANG; XIE, 2015) é apresentado um sistema de localização de robôs
aquáticos. O sistema de localização utiliza uma câmera de baixo custo e uma unidade inercial
IMU. Este sistema utiliza o filtro de Kalman em configuração dead-reckoning e localização pelo
método de Mote Carlo. O algoritmo é validado em um ambiente com texturas artificiais,
apresentado na Figura 2-36.
Figura 2-36 Configuração do robô aquático e ambiente de teste com texturas artificiais.
(Fonte: (WANG; XIE, 2015))
Na Unicamp, o trabalho de (FERNANDA; RUIZ, 2014), realiza a fusão dos sensores, GPS,
bússola, modelo matemático e a localização referenciada para a estimação do movimento
utilizando o EKF. Os testes foram realizados no simulador Gazebo. Foram identificados,
também, os sinais de trânsito utilizando Lasers e uma câmera. Estes sinais foram utilizados como
keypoints para realizar relocalização através do método de localização referenciada (MLR). Uma
ilustração do resultado mencionado na referência é apresentada na Figura 2-37.
Barbatana caudal
Interruptor Peso de balanceamento
Bateria IMU
Câmera
Circuito de Controle
Barbatana peitoral
29
Figura 2-37 Simulação em Gazebo do carro autônomo identificando sinais no ambiente
(Fonte:(FERNANDA; RUIZ, 2014))
No trabalho de Bedkowski (BEDKOWSKI; MASLOWSKI, 2011) é apresentada a
implementação on-line em CUDA do registro 3D de ambientes, utilizando um Laser em um
suporte rotativo. O método utilizado é o ICP que procura vizinhanças próximas. A validação
utiliza dois data sets com mais de 262.144 pontos em 100 interações (512x512 e 361x498). Uma
ilustração do resultado mencionado na referência (BEDKOWSKI; MASLOWSKI, 2011) é
apresentado na Figura 2-38.
Figura 2-38 Nuvens de pontos no espaço 3D capturados pelo Laser, os pontos claros representam os dados
originais. Os pontos obscuros representam a correção pelo algoritmo ICP (Fonte:(BEDKOWSKI;
MASLOWSKI, 2011))
No trabalho de (WEI; CAPPELLE; RUICHEK, 2011), é apresentada a localização do
veículo utilizando visão estereoscópica e um GPS. A odometria visual contém erro acumulativo
que é corrigido com a posição do GPS a cada 50 amostras, como apresentado na Figura 2-39.
30
Também são avaliadas, a qualidade da estimativa do GPS e a estimativa de movimento pelas
câmeras. Quando o GPS apresenta baixa qualidade é utilizada a odometria visual.
(a) (b)
Figura 2-39 Plataforma robótica tipo automóvel SeTCar com câmeras estereoscópicas e GPS (a). Trajetórias
resultantes dos experimentos em ambientes de exterior (Fonte:(WEI; CAPPELLE; RUICHEK, 2011)).
No artigo de (WEI; CAPPELLE; RUICHEK, 2013b) é apresentada a fusão dos sensores
câmera/Laser/GPS. A informação de localização redundante é fundida com a proposta de
localização utilizando um filtro de informação (IF). O veículo é localizado utilizando um Laser
horizontal através da técnica ICP, uma câmera estereoscópica e um GPS. O esquemático do
trabalho e os sensores utilizados são apresentados na Figura 2-40.
Figura 2-40 Esquemático do sistema de localização (a), sensores Laser, câmera estereoscópica e GPS, fixos no teto do
automóvel autônomo SeTCar(b) (Fonte:(WEI; CAPPELLE; RUICHEK, 2013b), (WEI; CAPPELLE; RUICHEK, 2013a))
No trabalho de (HOANG et al., 2013), é utilizado o EKF para a fusão da odometria visual e a
odometria do Laser utilizando a técnica ICP. Uma câmera omnidirecional é utilizada para estimar
o movimento utilizando o algoritmo SIFT na seleção de pontos de referência. Os resultados são
Estimativa
de pose por Lase
Modelo do
Processo
Estimativa
de pose
Odometria visual Localização
GPS Predição
do movimento
NIS e atualização
de localização
31
validados em ambientes externos e comparados com a trajetória estimada pelo GPS. Uma
ilustração do sistema mencionado na referência (HOANG et al., 2013) é apresentado na Figura
2-41.
Figura 2-41 Veiculo elétrico com câmera omnidirecional, GPS e Laser. (Fonte:(HOANG et al., 2013))
No trabalho de (PARRA et al., 2011), a informação do GPS de baixa qualidade é substituída
pela odometria visual. A fusão destas estimativas através de um filtro binário utiliza a qualidade
do sinal do GPS para selecionar o tipo de estimativa apresentado na Figura 2-42. A trajetória é
refinada com o filtro de Kalman na configuração Dead-Reckoning.
Figura 2-42 Esquemático da seleção do sistema de localização (Fonte:(PARRA et al., 2011))
O estudo pelos veículos autônomos no mundo têm se acelerado desde o concurso DARPA
2004. O mapa dos grupos de pesquisa trabalhando com projetos de carro autônomo na America
Latina é apresentado na Figura 2-43. As universidades da PUC RIO e Porto Alegre embora não
32
possuindo veículo autônomo, possuem importantes contribuições nesta área. No Chile foi
construído um veículo autônomo pela Universidade de Chile e o Centro Avançado de Tecnologia
para a Mineração (AMTC) (PARRA-TSUNEKAWA; RUIZ-DEL-SOLAR; VALLEJOS, 2014).
No Brasil: Na Universidade de São Paulo (USP) foram construídos os veículos autônomos
Carina-I e Carina-II (FERNANDES et al., 2014). Na Universidade Federal do Espírito Santo
(UFES) estão testando o modelo Ford escape hybrid chamado de IARA (CASTILLO et al.,
2014). Na Universidade Federal de Minas Gerais (UFMG) foi construído o veículo autônomo
CADU (DE LIMA; PEREIRA, 2013). No centro de tecnologia da informação Renato Archer
(CTI) foi construído o veiculo autônomo VERO (MIRISOLA et al., 2011). Na Universidade
Estadual de Campinas (Unicamp) esta se construindo o veículo autônomo VILMA
(FERNANDA; RUIZ, 2014). No México o professor Raul Rojas esta testando o carro autônomo
desenvolvido na Alemanha (GÖHRING et al., 2013).
Figura 2-43 Imagem dos locais que estão trabalhando no projeto do robô autônomo terrestre na America
Latina. (Imagem de Google Maps)
Os trabalhos de veículos autônomos apresentam a particularidade de utilizar câmeras e Laser
no mapeamento do ambiente. Estes mapas são utilizados como referencia na tarefa de navegação
autônoma. Também, são empregados nas etapas de percepção, localização e como ambientes
controlados para o teste de algoritmos. O uso de câmeras como sistema de localização é
apresentado em diferentes configurações na literatura. O Curiosity da NASA através de doze
câmeras estereoscópicas realiza a navegação e mapeamento. Os trabalhos de (OLSON et al.,
2003), (NEMRA et al., 2013), (SALVI et al., 2008), (ZHU et al., 2011), (KONOLIGE;
AGRAWAL, 2008), (WEI; CAPPELLE; RUICHEK, 2011) e (WEI; CAPPELLE; RUICHEK,
2013b) apresentaram sistemas de localização utilizando câmeras estereoscópicas. Estes sistemas
permitiram a reconstrução dos pontos no ambiente euclidiano. No entanto, este método requer de
33
alta demanda computacional em termos de volume e velocidade de processamento. O trabalho de
(CLIPP; FRAHM; POLLEFEYS, 2010) utiliza a técnica de correlação de características SIFT
executada em GPUs. Nos trabalhos de (HOWARD, 2008), e (DRYANOVSKI et al., 2013) são
processadas imagens em tempo real, utilizando métodos diretos executados em CPU.
A literatura também sugere o uso de informação redundante na localização. A fusão de
estimativas que utilizam sensores introspectivos e extrospectivos através do filtro de Kalman
(KF) é apresentada nos trabalhos de (ZHU et al., 2011) e (WANG; XIE, 2015), embora novas
técnicas de fusão como o EKF e UKF são utilizadas o KF apresenta uma solução simples ao
problema de fusão.
Neste trabalho o algoritmo de visão estereoscópica utiliza a técnica de extração de
características SURF e é executado em uma GPU. O algoritmo é validado em novos mapas de
ambientes de exterior de grande escala (1km).
3 Estereoscópica
A identificação de pontos em comum em duas imagens, capturadas por uma câmera
estereoscópica e sua reconstrução no espaço euclidiano são descritos nesta seção. Uma nova
proposta de câmera descrita na seção 6.1, captura imagens estereoscópicas que são processadas
pelo algoritmo SURF, descrito na seção 3.1. As imagens traduzidas em conjuntos de pontos de
interesse são correlacionadas como é apresentado na seção 3.2. Os pontos presentes nas imagens
estereoscópicas em diferentes instantes de tempo são projetados no espaço euclidiano. Esta
técnica é conhecida como triangulação estereoscópica, onde são utilizadas as técnicas de
calibração da seção 3.4 e o algoritmo de triangulação da seção 3.5.
As câmeras estereoscópicas são réplicas do sistema de visão humano. Um sistema
estereoscópico ideal é composto por duas imagens de câmeras paralelas, separadas por uma
distância conhecida e sem rotação relativa. Diferentes tipos de câmeras são utilizados na indústria
e em pesquisa. A principal característica deste sistema é a possibilidade de estimar a
profundidade de um objeto comum, a partir de um par de imagens esquerda e direita (Left and
Right). Conforme é ilustrado na Figura 3-1.
34
Figura 3-1 Modelo de câmeras estereoscópicas, Fonte:(NIST; BERGEN, 2004)
Os principais sistemas de câmeras estereoscópicas disponíveis no mercado fornecem os
parâmetros de calibração e apresentam uma arquitetura fechada de hardware e software. Ou seja,
o usuário só tem acesso às imagens, sem que haja informação ou controle sobre a sincronização
das imagens. Também as lentes são fixas e alguns modelos não permitem a modificação do
tamanho da imagem. As câmeras estereoscópicas comumente utilizadas na indústria e em
trabalhos de pesquisa são apresentadas na Tabela 1.
TABELA 1 CÂMERAS ESTEREOSCÓPICAS UTILIZADAS
Nome da Câmera Velocidade Tamanho Tipo
Bumblebee 2 48FPS 640x480 Estereoscópico
20 FPS 1024x768 Estereoscópico
Bumblebee XB3 15FPS 1280x960 Estereoscópica
linha base múltipla
MobileRanger 30FPS 752x480 Estereoscópico
Ensenso N10
(VOIGT, [s.d.])
30FPS 752x480 Estereoscópica
linha base múltipla
35
Surveyor Stereo 15FPS 1280x1024 Estereoscópico
3.1 Identificação de pontos de interesse SURF
A identificação de características na imagem é realizada através do algoritmo SURF (BAY et
al., 2006) que procura pontos robustos em uma imagem. Esta técnica é uma modificação do
algoritmo SIFT (LOWE, 2004). Uma imagem em escala de cinzas é transformada pelo algoritmo
SURF em pontos de interesse, conforme ilustrado na Figura 3-3. O processo inicia com a
integração numérica da imagem. Depois, é realizado um processo de busca no espaço e escala.
Cada ponto de interesse é relacionado a uma orientação e um descritor das variações de
intensidade ao redor do ponto escolhido.
Algoritmo 0 Identificação do ponto de interesse SURF
1. Integração da imagem
2. Análise de espaço e escala
3. Localização de ponto de interesse
4. Orientação do ponto
5. Construção do descritor
Utiliza-se neste trabalho a implementação do algoritmo SURF na plataforma OpenCV. No
entanto, o algoritmo é descrito nesta seção para maior esclarecimento sobre o seu funcionamento.
Os descritores encontrados pelo algoritmo são correlacionados e filtrados, conforme apresentado
nas seções seguintes.
Integração da imagem
A integração da imagem 𝑰 é dividida em dois passos para melhorar o processamento.
Primeiro é construída uma matriz de integração dos pixels do ponto (0,0) na imagem até o ponto
(𝑢, 𝑣) onde 𝑢 e 𝑣 são as coordenas do ponto candidato na imagem.
36
𝑰∑(𝑿) = ∑∑𝑰(𝒊,𝒋)
𝒋≤𝒗
𝒋=𝟎
𝒊≤𝒖
𝒊=𝟎
(1)
Depois é realizada a somatória do valor da matriz de integração para a região definida pelos
pontos A, B, C, D como apresentado na Figura 3-2. A matriz de integração 𝑰∑(𝑿)é utilizada para
aprimorar o processamento de integração de seções de imagem, bem como, melhorar a
convolução do filtro tipo "box", descrito na sequência.
Figura 3-2 Redução da escala da imagem utilizada no algoritmo SIFT (direita), O algoritmo SURF utiliza a
toda a imagem cata etapa. Utilizando o algoritmo Haar Wawelet. Fonte: (BAY et al., 2006).
Detecção do ponto de interesse
A detecção do ponto de interesse baseia-se na aproximação da matriz Hessiana e o uso do
filtro Box. Onde a matriz Hessiana é definia como,
𝓗(𝑋, 𝜎) = [𝐿𝑢𝑢(𝑋, 𝜎) 𝐿𝑢𝑣(𝑋, 𝜎)𝐿𝑢𝑣(𝑋, 𝜎) 𝐿𝑣𝑣(𝑋, 𝜎)
] (2)
onde 𝑋 = (𝑢, 𝑣) é um ponto na imagem, e 𝐿 a convolução da derivada Gaussiana de segunda
ordem.
𝐿𝑢𝑢(𝑋, 𝜎) =𝜕2
𝜕𝑢2𝑔(𝜎)
(3)
O processamento de imagens com filtros gaussianos é comumente utilizado. No entanto, o
algoritmo SURF utiliza o filtro Gaussiano através de uma aproximação discreta. A nova
aproximação da matriz Heissiana é composta pelas derivadas parciais de segunda ordem 𝐷𝑢𝑢,
𝐷𝑣𝑣 e 𝐷𝑢𝑣.
ℋ𝑎𝑝𝑝𝑟𝑜𝑥(𝑋, 𝜎) = [𝐷𝑢𝑢(𝑋, 𝜎) 𝐷𝑢𝑣(𝑋, 𝜎)𝐷𝑢𝑣(𝑋, 𝜎) 𝐷𝑣𝑣(𝑋, 𝜎)
] (4)
37
A seleção do ponto de interesse é definida pelo determinante da matriz Heissiana,
𝑑𝑒𝑡(ℋ𝑎𝑝𝑝𝑟𝑜𝑥) = 𝐷𝑢𝑢𝐷𝑣𝑣 − 𝐷𝑢𝑣2, (5)
Se o ponto analisado corresponde a um máximo, este é selecionado como keypoint.
det(ℋ𝑎𝑝𝑝𝑟𝑜𝑥) < 0 (6)
Outra diferença do algoritmo SIFT é a substituição das variações de escala de imagem,
ilustrado na Figura 3-3 (a). O algoritmo SURF utiliza a variação na escala do filtro, ou seja o
tamanho da imagem é constante. Isto permite o processamento paralelo do algoritmo, conforme
ilustrado na Figura 3-3 (b). A variação de escalas é divida em níveis e oitavas. Uma oitava
representa uma serie de respostas de filtros com diferentes variações de escala 𝜎.
(a) (b)
Figura 3-3 Redução da escala da imagem utilizada no algoritmo SIFT (direita), O algoritmo SURF utiliza a
toda a imagem cada etapa. Utilizando o algoritmo Haar Wawelet. Fonte: (BAY et al., 2006).
O valor máximo identificado pelo determinante da matriz Hessiana é interpolado em escalas
bem como na vizinhança do ponto de interesse. Um filtro detector de bordas (non-maximum
suppression) é aplicado na matriz de vizinhança de tamanho 3x3x3, e é utilizado para selecionar
o ponto de interesse. O ponto que seja um extremo de uma dada vizinhança é definido como
keypoint.
38
Figura 3-4 Três oitavas com três níveis. A vizinhança de 3x3x3 sem eliminação de máximos. Fonte: (BAY et
al., 2006).
O descritor representa o keypoint e sua vizinhança em um vetor de 64bytes. A região do
descritor é dividida em uma grade de 4x4 seções. Em cada sub-região é aplicado o filtro Haar
Wavelet (HW). As sub-regiões são divididas em 5X5 seções. A resposta do Haar Wavelet é a
somatória das variações dos gradientes de intensidade nos eixos 𝑥, 𝑦 e as magnitudes |𝑥| 𝑒 |𝑦|,
como é apresentado na Figura 3-5.
Figura 3-5 Construção do descritor de 64 bytes SURF, Fonte: (BAY et al., 2006).
O descritor definido pelas 16 regiões e as 4 sumulas é organizado como,
𝐷𝑠 = [∑𝑑𝑥0 ,∑|𝑑𝑥0| ,∑𝑑𝑦0 ,∑|𝑑𝑦0| , … . . ,∑𝑑𝑥𝑛 ,∑|𝑑𝑥𝑛| , ∑𝑑𝑦𝑛 ,∑|𝑑𝑦𝑛|] (7)
Um exemplo da representação de uma imagem pela resposta do filtro Haar Wavelet é
apresentada na Figura 3-6. Quando a imagem não contém nenhuma variação, o valor da
somatória é nulo. Quando as variações acontencem no eixo 𝑥, as somatórias não nulas
encontram-se nesse eixo apenas. Para identificar a variação normalizada é utilizada a magnitude
39
da somatória em cada eixo. Desta maneira, o valor absoluto das somatórias representa esta
caraterística de intensidade local da imagem.
Figura 3-6 Exemplo das componentes do gradiente de intensidade do descritor. Fonte: (BAY et al., 2006).
3.2 Correlação da imagem
A correlação de imagens busca pontos em comum, ou regiões de imagens diferentes que
representem o mesmo objeto do mundo real. O algoritmo de odometria visual VO requer pontos
de referências correlacionados, presentes em uma sequência de imagens, para estimar o
movimento. Ou seja, os pontos identificados pelo algoritmo SURF são representados por
coordenadas de imagem (𝑢, 𝑣) e pelo vetor de gradientes de intensidade ao redor de sua
vizinhança. Este vetor, ou descritor, de 64 valores contém as variações de intensidade. Neste
trabalho os pontos de referência são selecionados por quatro conjuntos de descritores, 𝑚𝐿,𝑚−𝐿,
𝑚1 e 𝑚𝑅, presentes em seis imagens, como ilustrado na Figura 3-7. As correlações
estereoscópicas utilizadas para a estimativa de movimento são armazenadas para serem
comparadas com o novo par estereoscópico. Os descritores das imagens estereoscópicas
capturadas nos passos anteriores 𝑘 − 1 e 𝑘 − 2 são correlacionados em um novo conjunto de
pontos no tempo 𝑘. As correlações são armazenas nas matrizes 𝑚. Estas matrizes contêm o índice
da imagem e distância euclidiana entre dois descritores.
40
Figura 3-7 Correlação dos pontos de referência em quatro imagens nos instante 𝑰(𝒌), 𝑰 (𝒌 − 𝟏), 𝑰(𝒌 − 𝟐).
A correlação de keypoints utiliza a distância euclidiana entre dois descritores. Esta distância
é calculada pela raiz do somatório das diferenças de magnitude, em inglês SSD. O descritor de
referência 𝐷𝑠𝐴 de tamanho (1 × 64) é comparado com um conjunto de descritores 𝑫𝒔𝐁 de
tamanho (𝑛𝑑 × 64), onde 𝑛𝑑 é o número de descritores da imagem B.
𝑆𝐷𝐷 = √∑(𝐷𝑠𝐴(𝑖) − 𝐃𝐬𝐁(0, 𝑖))2
15
0
(8)
A diferença de magnitude entre os descritores utiliza a somatória dos gradientes de
intensidade da vizinhança, descritos na seção anterior.
(𝐷𝑠𝐴(𝑖)−𝐃𝐬𝐁(0, 𝑖))2
= [(∑𝐴𝑑𝑥 −∑𝐵𝑑𝑥)2
+ (∑|𝐴𝑑𝑥| − ∑|B𝑑𝑥|)2
+ (∑𝐴𝑑𝑦 −∑𝐵𝑑𝑦1)2
+ (∑|𝑑𝑦0| − ∑|𝑑𝑦1|)2
]i (9)
O processo é realizado com todos os descritores da imagem 𝐼𝐴. A seleção do melhor par é
definida pela menor distância euclidiana. Neste trabalho o algoritmo de odometria visual utiliza
as features de cinco imagens , como é ilustrado na Figura 3-8. Cada descritor da imagem
𝐼𝐿(𝑘 − 1) é comparado com os descritores nas inmagens 𝐼𝐿(𝑘), 𝐼𝑅(𝑘), 𝐼𝐿(𝑘 − 2), 𝐼𝑅(𝑘 − 2).
𝐼𝐿(𝑘−2) 𝐼𝑅(𝑘−2)
𝐼𝑅(𝑘−1)
𝐼𝐿(𝑘) 𝐼𝑅(𝑘)
𝐼𝐿(𝑘−1) 𝑚𝐿
𝑚1
𝑚−𝐿 𝑚𝑅
41
Figura 3-8 Correlação dos pontos de referência em quatro imagens nos instante 𝑰(𝒌), 𝑰 (𝒌 − 𝟏), 𝑰(𝒌 − 𝟐).
3.3 Filtragem de pontos correlatos nas imagens
Duas etapas de filtragem são posteriormente usadas para melhorar a qualidade das
correlações encontradas. O primeiro filtro seleciona os pontos que estão dentro de uma
vizinhança determinada por uma janela retangular, analisando os pontos na imagem. A segunda
etapa utiliza os pontos reconstruídos no espaço euclidiano.
Uma janela definida pelos parâmetros 𝑑𝑥 e 𝑑𝑦 em pixels elimina as correlações não válidas.
O tamanho da janela determina a tolerância a os deslocamentos dos pontos de referência
permitidos. Ou seja, se o filtro é calibrado com uma janela muito pequena, os pontos com
movimentações grandes são recusados. A janela é projetada em três imagens como ilustrado na
Figura 3-9. As linhas vermelhas são as correlações entre as imagens esquerda e direita nos
instantes 𝑘 e 𝑘 − 1.
Figura 3-9 Correlações das quatro imagens. As imagens superiores compõem um frame estereoscópico
(direita e esquerda) no tempo 𝒌. As inferiores no tempo 𝒌 − 𝟏. As caixas pretas ilustram o filtro.
⋮ ⋮ ⋮ ⋮
𝐼𝐿(𝑘−1) 𝐼𝐿(𝑘) 𝐼𝑅(𝑘) 𝐼𝐿(𝑘−2) 𝐼𝑅(𝑘−2)
𝐼𝐿
42
Duas configurações de janelas são utilizadas. As imagens estereoscópicas têm variações
mínimas no eixo 𝑦 e grandes variações no eixo x. A correlação das imagens esquerdas entre os
instantes 𝑘 e 𝑘 − 1 permite determinar variações nos eixos 𝑥 e 𝑦.
3.4 Calibração
Nesta seção é apresentado um método para medição de parâmetros intrínsecos e extrínsecos
de câmera estereoscópica. Primeiro são medidos os parâmetros intrínsecos de uma câmera,
definidos por: densidade dos pixels 𝑆𝑥 e 𝑆𝑦, distância focal 𝑓 e centro da imagem (𝑢0, 𝑣0). Estes
parâmetros são sumarizados na matriz de parâmetros intrínsecos 𝐀.
𝐀 = [𝑆𝑥𝑓 0 𝑢0
0 𝑆𝑦𝑓 𝑣0
0 0 1
] (10)
De outra parte, os parâmetros extrínsecos relacionam o sistema de coordenadas de duas
câmeras, definidos pela matriz de rotação 𝐑c e o vetor de translação 𝑇𝑐.
Estes parâmetros são estimados através da exposição de um padrão de calibração nas
câmeras sincronizadas. No método de Buguet este padrão é um tabuleiro de xadrez, capturado em
onze diferentes posições, e os parâmetros são estimados por métodos interativos. Outro método
para medição dos parâmetros das câmeras foi desenvolvido no grupo de pesquisa PILGRIM da
FEM Unicamp. No método de (KURKA et al., 2013) é apresentada uma caixa tridimensional
uma única vez. Os parâmetros são calculados por uma solução analítica e não recursiva como o
método anterior. Os padrões de calibração para os dois métodos são apresentados na Figura 3-10.
(a) (b)
Figura 3-10 Métodos de calibração de câmeras. Tabuleiro de calibração com algoritmo de Bouguet (a) e caixa
parametrizada pelo algoritmo de Kurka (b).
43
O método de Kurka(KURKA et al., 2013) inicia com a identificação das quinas do padrão de
calibração (caixa sólida). A projeção da caixa na imagem é processada e as coordenadas das
quinas de referencias são alocadas. As sete quinas são combinadas em cinquenta e seis conjuntos
de três matrizes ��𝑘𝑐𝑎, ��𝑘𝑐𝑏
, ��𝑘𝑐𝑐 cada um. Onde 𝑘𝑐 é o número do conjunto de 0 até 56. As
correspondentes posições espaciais são alocadas nas matrizes 𝑩𝑘𝑐𝑎, 𝑩𝑘𝑐𝑏
e 𝑩𝑘𝑐.
As posições espaciais são conhecidas e definidas pelas dimensões da caixa de calibração. No
entanto, os pontos 𝑩𝑘𝑐 requerem do alinhamento com o sistema de coordenadas da câmera como,
𝑷kc ≡ [
𝑋𝑘𝑐′
𝑌𝑘𝑐′
𝑍𝑘𝑐′
] = 𝐑cl 𝑩𝑘𝑐 + 𝑻cl
(11)
Onde 𝑷kc é o vetor de pontos espaciais alinhados através da rotação 𝐑cl e da translação 𝑻cl.
As referências na imagem 𝒑k são reescritas em coordenadas homogêneas ��k e sua relação
com as posições espaciais 𝑷k é descrita por,
��k =𝟏
𝒇𝐀𝑷kc.
(12)
As equações (10) e (11) são reorganizadas e inseridas nas matrizes de pontos espaciais ��𝑘𝑐𝐼, ��𝑘𝑐𝐼𝐼
e de pontos alinhados 𝑩𝑘𝑐𝐼, 𝑩𝑘𝑐𝐼𝐼
como,
��𝑘𝑐𝐼= [0,5 ��𝑘𝑐𝑎
−��𝑘𝑐𝑏0,5��𝑘𝑐𝑐
],
(13)
��𝑘𝑐𝐼𝐼= [− ��𝑘𝑐𝑎
0,5��𝑘𝑐𝑏0,5��𝑘𝑐𝑐
],
(14)
𝑩𝑘𝑐𝐼 = (0,5𝑩𝑘𝑐𝑎− 𝑩𝑘𝑐𝑏
+ 0,5𝑩𝑘𝑐𝑐),
(15)
𝑩𝑘𝑐𝐼𝐼= (−𝑩𝑘𝑐𝑎
+ 0,5𝑩𝑘𝑐𝑏+ 0,5𝑩𝑘𝑐𝑐
).
(16)
A solução do problema para cada conjunto de três pontos é inserida em (13), (14), (15),
(16) e rescrita como,
44
��𝑘𝑐𝐼 𝝀 = 𝐀 𝐑𝐜𝐥 𝑩𝑘𝑐𝐼
e ��𝑘𝑐𝐼𝐼 𝝀 = 𝐀 𝐑𝐜𝐥 ��𝑘𝑐𝐼
,
(17)
Onde,
𝝀 = [
𝑍𝑘𝑐𝑎
′
𝑍𝑘𝑐𝑏
′
𝑍𝑘𝑐𝑐
′
] ,
(18)
As matrizes não singulares ��𝑘𝑐𝐼 e ��𝑘𝑐𝐼𝐼
permitem a combinação de (17) e (18),
𝐀𝐑 𝑩𝑘𝑐𝐼− ��𝑘𝑐𝐼𝐼𝐼
𝐀𝐑 𝑩𝑘𝑐𝐼𝐼= 𝟎, (19)
Onde,
��𝑘𝑐𝐼𝐼𝐼= ��𝑘𝑐𝐼
��𝑘𝑐𝐼𝐼
−1, (20)
A matriz 𝐀𝐑 representa os parâmetros intrínsecos 𝐀 e rotação 𝐑cl. A projeção da caixa na
imagem possui a particularidade de ser aproximada por posições inteiras de pixel. A matriz 𝐏
não terá espaços nulos e é possível a solução do sistema utilizando a decomposição em valores
singulares SVD à direita. Reescrevendo a equação (19) utilizando o produto Kronecker denotado
por ⊗ e a matriz operador como 𝑣𝑒𝑐(); tem-se,
[𝑩𝑘𝑐𝐼
𝑇 ⊗ 𝐈 − 𝑩𝑘𝑐𝐼𝐼
𝑇 ⊗ ��𝑘𝑐𝐼𝐼𝐼] 𝑣𝑒𝑐(𝐀𝐑) = 𝟎
Onde cada conjunto de três pontos e suas correspondentes coordenadas homogêneas permite
se reescrever como,
𝐏 𝑣𝑒𝑐(𝐀𝐑) = 𝟎 Onde, 𝐏 é definido, por:
𝐏 =
[ (𝑩1𝐼
𝑇 ⊗ 𝐈 − 𝑩1𝐼𝐼
𝑇 ⊗ ��1𝐼𝐼𝐼)
(𝑩2𝐼
𝑇 ⊗ 𝐈 − 𝑩2𝐼𝐼
𝑇 ⊗ ��2𝐼𝐼𝐼)
⋮(𝑩𝑛𝐼
𝑇 ⊗ 𝐈 − 𝑩𝑛𝑇 ⊗ ��𝑛𝐼𝐼𝐼
) ]
(21)
45
3.5 Triangulação
A triangulação é um processo comumente utilizado para reconstruir um ponto no espaço
euclidiano através de sua projeção estereoscópica. A projeção do ponto na imagem esquerda (left
𝑝𝑙), e direita (right 𝑝𝑟) de um sistema de câmeras paralelas, é reconstruída utilizando os
parâmetros de calibração das mesmas. A medição dos parâmetros das câmeras é descrito na seção
anterior. A distância entre os centros das câmaras é representada por um vetor de translação 𝑇𝑐 e
uma matriz de rotação 𝐑𝑐. Tais elementos geométricos são apresentados na Figura 3-11.
O ponto projetado é definido pelas coordenadas,
𝑝𝐿 = (𝑢𝑙, 𝑣𝑙) 𝑒 𝑝𝐿 = 𝑢, 𝑣𝑙) (22)
As projeções das imagens em coordenas homogêneas são normalizadas em 𝑥𝑡 para a imagem
esquerda e 𝑥𝑡𝑡 para a imagem direita como,
𝑥𝑡 =
[ (𝑢𝑙 − 𝑐𝑐1𝑥)
𝑓1𝑥
(𝑣𝑙 − 𝑐𝑐1𝑦)
𝑓1𝑦
1 ]
(23)
Figura 3-11 Modelo de câmera estereoscópica com uma rotação 𝐑𝐜.
𝑂𝑅 𝑂𝐿 𝐑𝐜𝑇𝑐
𝑃
𝑓 𝑐𝑅 𝑝𝑅
𝑢𝑅
𝑝𝐿 𝑐𝐿
𝑢𝐿
𝐹 𝐺
46
e
𝑥𝑡𝑡 =
[ (𝑢 − 𝑐𝑐2𝑥)
𝑓2𝑥
(𝑣2 − 𝑐𝑐2𝑦)
𝑓2𝑦
1 ]
(24)
e multiplicando pela matriz de rotação 𝐑c tem-se:
𝑢𝑐 = 𝐑𝐜 ∙ 𝑥𝑡 (25)
A profundidade dos pontos é definida pelos raios 𝑍𝑡 e 𝑍𝑡𝑡 para a câmera direita e esquerda,
respectivamente.
𝑍𝑡 =(𝑢𝑐 ∙ 𝑥𝑡𝑡) ∙ (𝑇𝑐 ∙ 𝑥𝑡𝑡) − (𝑥𝑡𝑡 ∙ 𝑥𝑡𝑡) ∙ (𝑢𝑐 ∙ 𝑇𝑐)
(𝑥𝑡 ∙ 𝑥𝑡)2 − (𝑢𝑐 ∙ 𝑥𝑡𝑡)2
(26)
𝑍𝑡𝑡 =(𝑥𝑡 ∙ 𝑥𝑡) ∙ (𝑇𝑐 ∙ 𝑥𝑡𝑡) − (𝑢 ∙ 𝑥𝑡𝑡) ∙ (𝑢 ∙ 𝑇𝑐)
(𝑥𝑡 ∙ 𝑥𝑡)2 − (𝑢 ∙ 𝑥𝑡𝑡)2
(27)
Os raios das câmeras são estimados como,
𝐹 = 𝑥𝑡 ∙ 𝑍𝑡 (28)
𝐺 = 𝐑𝐜𝐓(𝑥𝑡𝑡 ∙ 𝑧𝑡𝑡 − 𝑇) (29)
A interseção dos raios F e G definem as coordenadas euclidianas do ponto no sistema de
coordenadas da câmera esquerda.
𝑋𝐿 =1
2(𝐹 + 𝐺)
(30)
Utilizando os parâmetros extrínsecos da câmera estereoscópica, matriz de rotação 𝐑𝐜 e vetor de
translação 𝑇 são estimadas as coordenadas dos pontos no espaço euclidiano no sistema de
coordenadas da câmera direita como,
𝑋𝑅 = 𝐑c ∙ 𝑋𝐿 + 𝑇𝑐. (31)
47
4 Técnicas de Localização e Mapeamento
Neste capítulo são descritos os métodos de localização e mapeamento. Os pontos de
referência identificados nas imagens estereoscópicas no capítulo anterior são utilizados como
referências na estimativa do movimento. O cálculo de odometria utilizando duas nuvens de
pontos é apresentado na seção 4.1. Esta estimativa de movimento é validada pelo filtro RANSAC
e os filtros de profundidade na seção 4.1. A odometria é corrigida pelo filtro de Kalman em
configuração Dead Reckoning na seção 4.3. Também, o filtro de Kalman em configuração “fusão
de sensores” é utilizado para fundir localizações redundantes na seção 4.3.2. O mapeamento do
ambiente com sensores LIDAR é apresentado na seção 4.4.
4.1 Cálculo de Odometria
O movimento da câmera é recuperado no vetor de translação 𝑇𝑚 e a matriz de rotação 𝐑𝑚,
que relacionam duas posições subsequentes da câmera representadas por (𝑋𝑘, 𝑌𝑘, 𝑍𝑘) e
(𝑋𝑘−1, 𝑌𝑘−1, 𝑍𝑘−1), conforme ilustrado na Figura 4-1.
Figura 4-1 Movimento da câmera em duas posições subsequentes.
A matriz de homografia 𝐓𝑅𝑇 4x4 contém a informação de movimento,
𝐓𝑅𝑇𝑘= [
𝐑𝒌 𝒌𝟎 1
]. (32)
Duas nuvens de pontos, representadas pelas matrizes 𝑷𝒌 e 𝑷𝒌−𝟏 contendo 𝑛 pontos que são
observados por uma mesma câmera, nos instantes de tempo (𝑘 − 1) e 𝑘, de sua movimentação
𝐑𝑚𝑘
𝑇𝑚𝑘
𝑋𝑘−1
𝑍𝑘−1
𝑋𝑘
𝑍𝑘
𝑌𝑘−1
𝑌𝑘
48
instantânea. Criam-se assim duas matrizes associadas à nuvem de pontos, conforme apresentado
abaixo.
𝐏(𝑘−1) = [𝑷1(𝑘 − 1) 𝑷2(𝑘 − 1) … 𝑷𝑛(𝑘 − 1)
1 1 … 1] (33)
𝐏𝑘 = [𝑷1(𝑘) 𝑷2(𝑘) … 𝑷𝑛(𝑘)
1 1 … 1]. (34)
A relação entre as nuvens de pontos é,
𝐏𝑘 = 𝐓𝑅𝑇𝑘𝐏(𝑘−1) ou 𝐓𝑹𝑻𝑘
= 𝐏(𝑘−1)𝐏𝑘+ (35)
A matriz de rotação é definida por,
𝐑 = [
cos (𝜃𝑧)cos (𝜃𝑦) sin (𝜃𝑦) sin (𝜃𝑧)
−sin (𝜃𝑦) cos (𝜃𝑥)cos (𝜃𝑦) −sin (𝜃𝑥)
sin (𝜃𝑧) sin (𝜃𝑥) cos (𝜃𝑧)cos (𝜃𝑥)
]
(36)
Sendo 𝜃𝑥, 𝜃𝑦 𝑒 𝜃𝑧 os ângulos de rotação em cada eixo. Os elementos da matriz de rotação 𝐑𝑚(𝑘)
podem ser estimados como,
𝑹𝑚(𝑘) = 𝐓𝑅𝑇𝑘[
1 0 00 1 00 0 10 0 0
],
(37)
Onde os ângulos de rotação são definidos pelos parâmetros,
𝜃𝑥 = 𝑡𝑎𝑛−1 (𝑅𝑚11
𝑅𝑚21
) (38)
𝜃𝑦 = 𝑡𝑎𝑛−1 (𝑅𝑚12
𝑅𝑚22
) (39)
𝜃𝑧 = 𝑡𝑎𝑛−1 (𝑅𝑚13
𝑅𝑚23
), (40)
49
onde 𝑅𝑖𝑗 é o elemento da coluna 𝑗 e linha 𝑖 da matriz 𝐑m. Neste trabalho a rotação é restrita a
variações no ângulo 𝜃𝑦. O movimento da câmera nas dimensões (𝑧 e 𝑥) é mais marcante nos
experimentos de validação, desconsiderando as rotações 𝜃𝑥 e 𝜃𝑧. O vetor de translação 𝑻𝑚 é dado
por,
𝑇𝑚(𝑘) = 𝐓𝑅𝑇𝑘[
0001
].
(41)
4.2 Filtragem de pontos no espaço euclidiano
A estimativa do movimento da câmera descrita na seção anterior é contaminada por erros nas
etapas de: triangulação, correlação e identificação de pontos de referências. Nesta seção são
apresentados filtros para diminuir este erro.
Primeiro, os pontos de referência são filtrados em função da profundidade como é ilustrado
na Figura 4-2. Um filtro passa faixa é configurado para excluir projeções no espaço 3D
provenientes de falsas correlações ou pontos muito distantes que geram um erro de triangulação.
Figura 4-2 Filtro de profundidade das referências no espaço euclidiano.
A profundidade 𝑑𝑝 de cada ponto de referência é calculada como,
𝑑𝑝 = √𝐏x(𝑘)2 + 𝐏y(𝑘)2 + 𝐏z(𝑘)2 (42)
𝑑𝑝
𝑥
𝑦
𝑧
50
Onde a máxima distância 𝑑𝑝 é limitada pela condição 𝑑𝑝 < (100 𝑏𝑙). No trabalho de (PAZ;
PINI; TARD, 2008) é medida a profundidade máxima para uma câmera estereoscópica, definida
como 100 vezes a distancia 𝑏𝑙. Triangulações após esta distância apresentam maior incerteza.
O segundo filtro, RANSAC, é utilizado para filtrar as amostras distantes da estimativa de
movimento. Ou seja, o conjunto de pontos 𝐏𝑘−1 é transladado para o sistema de coordenadas no
instante 𝑘 através do movimento estimado (𝐑m e 𝑇𝑚).
��𝑘 = 𝐑m𝐏𝑘−1
+ 𝑇𝑚 (43)
A diferença dos pontos de referência 𝐏𝑘 e a nova projeção ��𝑘 representam o erro 𝐸𝑅,
𝐸𝑅 = (𝐏𝑘 − 𝐏𝑘−1
) (44)
Em condições ideais, as projeções dos pontos ��𝑘 e os pontos de referência 𝐏𝑘 apresentariam
posições idênticas e um erro nulo. No entanto, alguns pontos não correspondem ao movimento
estimado, como é apresentado na Figura 4-3.
Figura 4-3 Erro de correlação de pontos projetados nas imagens, nos instantes 𝒌 e (𝒌 − 𝟏), os ponto
referência com erros de correlação ou dinâmicos são representado pelos pontos vermelhos.
O erro 𝐸𝑅 do conjunto de pontos é normalizado em 𝐸𝑅 , onde 𝑚𝑠𝑝, é o erro médio.
𝑚𝑠𝑝 = |∑ 𝐸𝑅
𝑛0
𝑛| e 𝐸𝑅
(𝑛) =𝐸𝑅(𝑛)
𝑚𝑠𝑝, (45)
os pontos distantes da media 𝑚𝑠𝑝 são excluídos quando não cumprem a condição (𝐸𝑅 (𝑛) < 9). O
movimento da equação (35) é novamente estimado.
(𝑘)
(𝑘 − 1)
𝑥
𝑦
𝑧
𝑥
𝑦
𝑧
51
4.3 Filtro de Kalman
Neste trabalho são utilizadas duas configurações do filtro de Kalman linear. Primeiro a
estimativa de posição utilizando imagens é corrigida a partir das posições anteriores, técnica
conhecida como Dead Reckoning. Depois, o filtro de Kalman é utilizado para fundir informações
redundantes dos sensores de localização.
4.3.1 Dead Reckoning
A técnica de localização utilizando as posições anteriores conhecida como Dead Reckoning é
utilizada para filtrar os movimentos com variações drásticas. Neste trabalho o filtro de Kalman
corrige a estimativa de movimento utilizando as ultimas três posições das câmeras.
O algoritmo inicia pela transformação da odometria visual (𝐑m, 𝑇𝑚) em magnitude de
deslocamento 𝑑𝑚 = |𝑇| e um ângulo de orientação 𝜃𝑚 onde,
|𝑇| = √𝑇𝑚𝑥𝑘2 + 𝑇𝑚𝑦𝑘
2 + 𝑇𝑚𝑧𝑘2
(46)
e a matriz de rotação 𝐑m é transformada em 𝜃𝑚 utilizando a formula,
𝜃𝑚 = rodriguez(𝐑m).
(47)
As três últimas estimativas de movimento junto a medição atual são as entradas do
algoritmo, como é apresentado na Figura 4-4.
Figura 4-4 Ilustração esquemática do filtro de Kalman atuando como Dead Reckoning.
Nesta formulação o vetor de estados armazena os três últimos movimentos como,
𝑥 = [𝑑𝑚1
𝜃1…
𝑑𝑚𝑘
𝜃𝑘]
Medição (𝑑𝑚(𝑘), 𝜃𝑚(𝑘))
(𝑑𝑚(𝑘 − 1), 𝜃𝑚(𝑘 − 1)
(𝑑𝑚(𝑘 − 2), 𝜃𝑚(𝑘 − 2)
(𝑑𝑚(𝑘 − 3), 𝜃𝑚(𝑘 − 3)
Dead Reckoning
Filtro de Kalman Nova Localização(𝑑𝑚(𝑘), 𝜃𝑚(𝑘))
52
A predição do estado �� é definida como,
��k = 𝐀𝐟 𝑥k−1 + 𝐁𝐟𝜇k + 𝜀k (48)
Onde 𝐀𝐟 é a matriz de transição que descreve o sistema (Função de transferência), a matriz
de controle 𝐁𝐟, transforma os sinais de entrada 𝜇(k) (condicionamento do sinal do sensor). Nesta
implementação a matriz 𝐁𝐟 é definida pela matriz identidade. O estado anterior é definido como
𝑥𝑘−1 acrescido de um ruído gaussiano do processo, 𝜀𝐾, com covariância 𝐐𝑐𝑝.
O seguinte passo é a correção do processo 𝑥(k) como,
𝑥(𝑘) = ��(𝑘) + 𝐊𝐤(𝜇𝑘 − 𝐇��𝑘), (49)
Onde a matriz 𝐊k é o ganho do filtro de Kalman que minimiza o erro de covariância 𝐏𝐩 𝐤 entre
as variáveis do vetor de estados. A atualização da matriz 𝐏𝐩𝐤 é redefinida como,
𝐏𝐩k = (𝐈 − 𝐊k𝐇)𝐏��k, (50)
sendo 𝐇 a matriz de medição ou contribuição de cada sensor. Tem-se que 𝑍 é a equação de
observação e 𝑣(k) é o ruído gaussiano do sensor com covariância 𝐑𝑐𝑚,
𝑍(k) = 𝐇𝑥(k) + 𝑣(k). (51)
O ganho do filtro de Kalman 𝐊 é descrito como,
𝐊k = 𝐏��k𝐇𝐓(𝐇𝐏��k𝐇
𝑇 + 𝐑cm)−1
(52)
A matriz de covariância 𝑹𝑐𝑚 de ruídos de medição como,
𝑹cm = [𝜎𝑥
2 0
0 𝜎𝑦2]
(53)
A predição da matriz de covariâncias 𝐏�� para o estado k é estimada utilizando o estado de
covariância a priori 𝐏𝐩 como,
𝐏��(k) = 𝐀𝐟𝐏𝐩(k−1)𝐀𝐟𝑇 + 𝐐cp (54)
53
Onde 𝐐cp é a matriz de covarianças do processo. O desvio padrão do processo 𝑞 de tamanho
𝑛 𝑥 𝑛, sendo 𝑛 o número de estados é dado por,
𝐐cp = 𝑞2 [1 0 00 1 00 0 1
] (55)
A relação da matriz 𝑸cp com o vetor de ruído de processo 𝜀𝐾 é definido pela distribuição normal,
𝑝(0, 𝜀𝐾)~𝑁(0, 𝐐cp) (56)
4.3.2 Fusão de sensores
Neste trabalho o filtro de Kalman, em configuração de fusão de sensores, estima a
localização a partir de três sensores descritos na seção 6.3. Primeiro, o movimento de um robô
móvel é medido com encoders das rodas (Odometria encoders). O segundo grupo de sensores
extrospectivos, GPS e câmeras, fornecem a localização da plataforma robótica. Esta informação é
fundida para obter uma localização mais precisa conforme apresentado na Figura 4-5.
Figura 4-5 Ilustração esquemática do sistema de fusão de sensores.
A predição do estado �� é definido como,
��k = 𝐀𝐟𝑥k−1 + 𝐁𝐟𝜇k + 𝜀k (57)
onde 𝐀𝐟 é a matriz de transição que descreve o sistema (função de transferência), a matriz de
controle 𝐁𝐟, transforma os sinais de entrada 𝜇(k) (condicionamento do sinal do sensor). O estado
anterior é definido como 𝑥𝑘−1 e o ruído gaussiano do processo 𝜀𝐾 com covariância 𝐐𝑐𝑝.
O seguinte passo é a correção do processo 𝑥(k) como,
Fusão
Filtro de Kalman
Odometria Visual
Odometria Encoders
GPS
Localização (x,y)
54
𝑥(𝑘) = ��(𝑘) + 𝐊𝐤(𝜇𝑘 − 𝐇��𝑘), (58)
onde a matriz 𝐊k é o ganho do filtro de Kalman que minimiza o erro de covariância 𝐏𝐩𝐤 entre as
variáveis do verto de estados. A atualização da matriz 𝐏𝐩𝐤 é redefinida como,
𝐏𝐩k = (𝐈 − 𝐊k𝐇)𝐏��k, (59)
sendo 𝐇 a matriz de medição ou contribuição de cada sensor. Onde 𝑍 é a equação de
observação e 𝑣(k) é o ruído gaussiano do sensor com covariância 𝐑𝑐𝑚,
𝑍(k) = 𝐇𝑥(k) + 𝑣(k). (60)
onde,
[𝑥𝑦] = [
0,33 0,33 0,330 0 0
0 0 00,33 0,33 0,33
]
[ 𝑉𝑂𝑥
𝑂𝑑𝑦𝑥
𝐺𝑃𝑆𝑥
𝑉𝑂𝑦
𝑂𝑑𝑦𝑦
𝐺𝑃𝑆𝑦]
+ 𝑣(𝑘).
(61)
O ganho do filtro de Kalman 𝐊 é dinâmico descrito como,
𝐊k = 𝐏��k𝐇𝐓(𝐇𝐏��k𝐇
𝑇 + 𝐑cm)−1
(62)
A matriz de covariância 𝑹𝑐𝑚 de ruídos de medição de tamanho 𝑚 𝑥 𝑚 onde 𝑚 é o número de
sensores é configurada como,
𝑹cm =
[ 𝜎𝑉𝑂𝑥
2
𝜎𝑂𝑑𝑦𝑥
2
𝜎𝐺𝑃𝑆𝑥
2
𝜎𝑉𝑂𝑦
2
𝜎𝑂𝑑𝑦𝑦
2
𝜎𝐺𝑃𝑆𝑦
2]
(63)
A predição da matriz de covariâncias 𝐏�� para o estado k é estimada utilizando o estado de
covariância à priori 𝐏𝐩 como,
𝐏��(k) = 𝐀𝐟𝐏𝐩(k−1)𝐀𝐟𝑇 + 𝐐cp (64)
55
Onde 𝐐cp é a matriz de covariâncias do processo. O desvio padrão do processo 𝑞 = 1−2 de
tamanho 𝑚 𝑥 𝑚 onde 𝑚 é o número de sensores,
𝐐cp = 𝑞2
[ 1 1
1 1
1 1]
(65)
A relação da matriz 𝑸cp com o vetor de ruído de processo 𝜀𝐾 é definido pela distribuição normal,
𝑝(0, 𝜀𝐾)~𝑁(0, 𝐐cp) (66)
4.4 LIDAR 2D
Um Laser é fixado na parte frontal do robô. O modelo utilizado é o SICK- LMS100, com
uma frequência de amostragem de 25-50Hz, projetado para ambientes externos e de baixo
consumo de energia (12W). A máxima distância para identificar um objeto é de 20 m. O ângulo
de visão é 270graus, com uma precisão de 0,5 graus. Uma amostra portanto é um vetor de 540
medidas de distâncias. Neste trabalho, o ângulo do laser é restrito a 180 graus.
Figura 4-6 Imagem do Laser 2D fixo no robô Seekur Jr. A área verde representa a área de trabalho.
4.5 LIDAR 3D
O Laser descrito na seção anterior modelo SICK- LMS100 é fixado em uma unidade PTU,
conforme ilustrado na Figura 4-7. O ângulo 𝜃𝑡𝑖𝑙𝑡 do PTU é restrito a oscilações entre -60º e 30º.
Ɵ (-270 , 270)
56
As restrições mecânicas impedem o uso das rotações no ângulo 𝜃𝑝𝑎𝑛. A cinemática direta do
PTU é utilizada para estimar a posição do centro do Laser referente ao centro do robô. Desta
forma, as distâncias lidas pelo Laser são transformadas em pontos espaciais.
Figura 4-7 Ilustração do Laser 3D fixo no PTU do robô Seekur Jr. A oscilação é ilustrada pelas linhas azuis.
A unidade PTU D-48 da empresa FLIR é prendida na plataforma robótica Seekur Jr. Nesta
unidade foi instalado um laser SICK- LMS100 como é apresentado na Figura 4-8. O PTU foi
configurado para oscilar 90º no ângulo Tilt a uma velocidade de 1100 posições/seg. Estas
unidades têm uma resolução de 0,003º no Tilt.
Figura 4-8 Imagem do Laser 3D fixo no PTU do robô Seekur Jr.
57
5 Processamento em Tempo Real
Neste trabalho é utilizada a estrutura de mapeamento e simultânea localização apresentada
(SLAM) do trabalho (CLIPP; FRAHM; POLLEFEYS, 2010). A tarefa de fluxo de cena ou
odometria visual é apresentada na Figura 5-1. Os blocos cinza são executados em uma GPU por
meio da biblioteca OpenCV, com implementação em CUDA. O último bloco realiza a fusão de
sensores utilizando o filtro de Kalman para a estimativa de movimento.
Figura 5-1 Arquitetura do algoritmo de odometria visual, apresentando a implementação hibrida entre CPU
(blocos brancos) e GPU (blocos cinza).
5.1 Correlação de pontos SURF (OpenCV)
O algoritmo de odometria visual procura pontos de referência no ambiente para estimar o
movimento. As imagens estereoscópicas junto com os parâmetros de calibração são chamadas de
data-sets. O processamento e captura de imagens acontece em momentos diferentes, isto é
Data-Set
Salvar as imagens da câmera estereoscópica e os
parâmetros de calibração.
𝐿𝑒𝑓𝑡𝑡 𝑅𝑖𝑔ℎ𝑡𝑡
Keypoints
Identificação e correlação
Triangulação
Filtragem dos pontos no espaço 3D
points
𝐿𝑒𝑓𝑡𝑡−1 𝑅𝑖𝑔ℎ𝑡𝑡−1
Ler as imagens (t+1)
Global SLAM
Reconstrução do caminho
Fusão de sensores (Kalman)
58
conhecido como “processamento off-line”. O vídeo contém pares de imagens estereoscópicas em
posições sucessivas no caminho, 𝑘 e 𝑘 − 1. A correlação entre os pontos-chave de três imagens é
feita usando a implementação do algoritmo SURF em OpenCV.
5.2 Triangulação e Filtragem (CUDA)
Esta seção apresenta a estrutura proposta em CUDA de implementação dos algoritmos de
triangulação e filtragem. Um grande número de correlações de pontos é detectado pelo algoritmo
SURF. Assim, o cálculo da triangulação e filtragem torna-se uma tarefa computacionalmente
cara.
O diagrama da distribuição de memória é apresentado na Figura 5-2. As correlações dos
Keypoints são alocadas na memória global da GPU. O acesso á memória compartilhada pode ser
maior que o próprio processamento. Esta memória é também conhecida como memória de
texturas. Utilizada para as informações que o Kernel vai aceder. Uma única leitura não justifica a
alocação na memória compartilhada. No entanto, os parâmetros de calibração usados na
triangulação de cada ponto justificam a localização na memória compartilhada.
Figura 5-2 Distribuição de memória na GPU. O custo computacional de acessar a memória compartilhada
pode ser maior que o processamento.
A estrutura do algoritmo em CUDA é ilustrada na Figura 5-3. A programação em GPU
requer a implementação de um algoritmo baseado na CPU chamado Host e outro na GPU
denominado Kernel. Os pontos correlatos são definidos em um descritor de 128 bits apresentado
Memória Compartilhada
Multiprocessadores
Memória Global
Blocos
Pontos/8
Threads
Triangulação
Filtragem 3D
keypoints
Parâmetros de
calibração
59
na seção anterior. No entanto, as matrizes de pontos correlatos são resumidas a dois vetores
lineares. As coordenadas das câmeras dos pontos são copiadas na memória da GPU. Em seguida,
o Cuda-Kernel (função que contém o algoritmo GPU, caixa cinza na Figura 5-3) triangula e filtra
os pontos. A distribuição do processamento é representada por oito blocos. Cada bloco com ‘N’
sequências de processamento. Os resultados são copiados da GPU para a CPU depois que todos
os blocos terminam de executar as tarefas de sincronização. Os pontos em três dimensões contêm
um peso, resultado da filtragem.
Figura 5-3 Estrutura da implementação do filtro 3D e triangulação na GPU.
CPU Host GPU Device
Conversão dos keypoints
(vetores STL) a
vetor linear.
Alocação dos
keypoints na
memória.
3D points
Block (0,0) Block (0,1)
Block (1,0) Block (1,1)
Block (2,0) Block (2,1)
Block (3,1)
Thread (0,0)
Thread (1,0)
Thread (2,0)
Thread (3,0)
Block (3,0)
Filtragem
Invocação Kernel
Triangulação
Sincronizalção de
threads
60
6 Apresentação das plataformas de testes
O algoritmo de odometria visual utilizou ferramentas e materiais que são descritos neste
capítulo. Primeiro é apresentada na seção 6.1 a câmera estereoscópica construída e utilizada para
este trabalho. Depois é apresentado na seção 6.2 o ambiente virtual de simulação utilizando a
plataforma 3D-Max. A plataforma robótica e o conjunto de sensores são apresentados na seção
6.3, finalizando com a apresentação das plataformas de processamento em GPU, na seção 6.4.
6.1 Câmera Estereoscópica
No presente trabalho, optou-se pela montagem de um sistema estereoscópico com uma
configuração alternativa de câmeras e tamanhos de imagem. Utiliza-se para isso, as câmeras
industriais de alto desempenho tipo Guppy PRO, da empresa Allied Force, com comunicação de
alta velocidade FireWire. Nessas câmeras o usuário tem a possibilidade de intercambiar as lentes
bem como, modificar o tamanho da imagem, o formato de cor, balanço de brancos, velocidade de
captura e a sincronização. A estrutura mecânica de fixação das câmeras em paralelo é projetada
para fornecer uma distância entre câmeras 𝑏𝑙 de 100mm, e permitir a sua fixação em um
dispositivo do tipo Pan-Tilt, PTU-46-17.5. Em alguns testes utiliza-se também o conjunto
estereoscópico fixado em um capacete plástico. Tais montagens são apresentadas na Figura 6-1.
Figura 6-1 Câmera estereoscópica fixa em capacete, PTU e em uma plataforma móvel.
61
A câmera “Guppy PRO” fornece um pacote de bibliotecas (SDK) para desenvolvedores em
C++. O SDK permite a sincronização e configuração de cada câmera individualmente. A
interface de comunicação Firewire, que utiliza o protocolo IEEE1394b–800Mb/s, permite a
transmissão de imagens de 1292x964 pixels a uma taxa de 31FPS. O consumo de energia é
aproximadamente 3,5W por câmera. Para a aplicação atual foram instaladas lentes de 9mm.
6.2 Ambiente Virtual
Um ambiente virtual é criado para testar os algoritmos de processamento de imagens
utilizando a plataforma de software Autodesk 3DMax. Também, são modeladas duas câmeras
paralelas conformando um sistema estereoscópico e um mecanismo de rotação e inclinação (pan-
tilt). O conjunto de câmaras é fixado no PTU virtual como é apresentado na Figura 6-2. A linha
vermelha representa a trajetória do centro da câmera direita.
Figura 6-2 Modelo virtual de câmera estereoscópica fixado em PTU (2 DOF), a linha vermelha representa a
trajetória da câmera direita.
O ambiente modelado contém texturas atribuídas aos objetos do ambiente virtual, como
apresentado na Figura 6-3. Os algoritmos de estimação do movimento das câmeras são testados
no ambiente ideal antes da sua aplicação em ambientes reais.
62
Figura 6-3 Ambiente virtual com texturas simula um ambiente de interior de corredor.
6.3 Plataforma robótica
A plataforma robótica Seekur Jr da empresa Mobilerobots é projetada para a navegação em
todos os terrenos. O robô Seekur Jr utilizado pertence ao laboratório de computação e automação
da Faculdade de Engenharia Elétrica e de Computação da UNICAMP (LCA/FEEC). O sistema
de acionamento é do tipo diferencial. Dois motores elétricos transmitem torques às rodas. As
baterias possuem autonomia de 3 a 5 horas dependendo do peso, consumo dos periféricos e
torque requerido. São instalados também no robô sensores usados na tarefa de estimação de
movimento, que serão descritos a seguir. Na Figura 6-4 é apresentada uma ilustração da
plataforma robótica e os sensores utilizados.
Figura 6-4 Imagem do robô Seekur Jr e uma ilustração dos sensores acoplados. 2-LIDAR, 2-Câmeras
monoculares, Câmera Estereoscópica e 2-GPS.
O robô possui duas CPUs, sensores introspectivos do tipo: encoder e giroscópios que
fornecem a informação de odometria e sensores extrospectivos do tipo: Laser Sick LMS100 nas
63
configurações descritas na seção 4.4. A câmera estereoscópica descrita na seção 6.1 é fixada na
parte frontal do robô. Os sensores de localização de satélite GPS Trimble e GPS de baixo custo
Garmin, são instalados conforme ilustrado na Figura 6-5. Neste trabalho é utilizada a aplicação
de comunicação robótica Resthru (SOUZA et al., 2013) que emprega o protocolo HTTP/HTTPS
(Hypertext Transfer Protocol) para transmitir mensagens de comando ao servidor, bem como as
informações dos sensores ao usuário. Define-se cliente, os programas de controle e
armazenamento de dados que podem ser executados remotamente, ou em CPUs internas do robô.
Define-se servidor, os programas de baixo nível que controlam os dispositivos no robô. O
protocolo de comunicação entre cliente - servidor são objetos do tipo JSON (Javascript Object
Notation).
Figura 6-5 Sensores instalados no robô Seekur Jr
Laser
3D
Câmera
Estereoscópica
Laser
2D
GPS
Trimble
GPS
Garmin Encoder
s
64
6.3.1 GPS
O Brasil utiliza a norma SIRGAS2000 na transformação de coordenas geográficas do GPS
(Latitude e Longitude). em coordenadas cartesianas (𝑥, 𝑦). Este procedimento inicia com o
cálculo da distância entre dois pontos geográficos, definida com ∆𝐿𝑎𝑡 e∆𝐿𝑜𝑛.
𝑁𝑜𝑟𝑡𝑒 =∆𝐿𝑎𝑡
arctan (1/𝑅𝑀)
(67)
𝐿𝑒𝑠𝑡𝑒 =∆𝐿𝑜𝑛
arctan (1/𝑅𝑃cos (μ0))
(68)
𝑅𝑀 e 𝑅𝑃 são os ráios do paralelo e meridiano calculados como:
𝑅𝑃 =Req
√1 − (2𝑓𝑐ℎ − 𝑓𝑐ℎ2) sin(μ0)2
2
(69)
𝑅𝑀 = 𝑅𝑃
1 − (2𝑓𝑐ℎ − 𝑓𝑐ℎ2)
1 − (2𝑓𝑐ℎ − 𝑓𝑐ℎ2) sin(μ0)2
(70)
onde e 𝑅𝑒𝑞 é o raio equatorial e 𝑓𝑐ℎ o fator de achatamento do planeta.
6.4 Unidades de processamento de dados
As características das três unidades de processadores gráficos utilizadas neste trabalho são
apresentadas na tabela I. As unidades Quadro 4000 e GTX 680 são projetadas para dispositivos
móveis, possuindo baixo consumo de energia e montagem em um computador móvel. A unidade
GTX 560 é uma unidade gráfica de um desktop.
Tabela 2 Características das unidades GPU
Características
GPU Referência
GTX
560Ti
Quadro
4000M
GTX
680M
Processing Power
(GFLOPS)
1263,4 638,4 1935,4
NVIDIA® CUDA™ (Parallel Processor Cores)
384 336 1344
Graphics Clock
(MHz) 822 475 720
Max Power Consumption (W)
170 100 100
Memory Bandwidth
(GB/sec) 128 128 115,2
Memory
(GB) 1 2 4
65
7 Resultados
Neste capítulo são apresentados os ambientes de teste e resultados de estimativas de
navegação. Os algoritmos de odometria visual e filtro de Kalman são testados em diferentes,
ambientes, utilizando diferentes unidades de processamento, e também com diferentes resoluções
de imagem. Na seção 7.1 são descritos os conjuntos de dados, ambientes e configurações dos
sensores. Os resultados de velocidade de processamento são apresentados na seção 7.3. Na
seção7.4, apresenta-se o erro das estimativas de navegação para cada um dos sensores utilizados.
Os resultados de mapeamento da navegação são apresentando na seção 7.4.5. O algoritmo de
odometria visual proposto é validado em diferentes ambientes experimentais.
7.1 Experimentos
Os algoritmos de odometria visual e fusão de sensores foram testados em diferentes ambientes
de navegação. Os históricos das capturas de imagem dos sensores descritos na seção 6.3 são
armazenados em cada experimento de navegação testado. Os dados de amostragem do GPS,
Laser e odometria das rodas são sincronizados com os registros das câmeras através de
interpolações ou reamostragem dos valores de seus históricos. As coordenadas geográficas dos
GPS são armazenadas em formato XLM/gpx. Os registros de tempo são armazenados em forma
de arquivos de texto. Um arquivo de texto contém objetos JSON com as distâncias do Laser
descrito na seção 4.4, e os ângulos 𝑡ℎ𝑝𝑎𝑛 e 𝑡ℎ𝑡𝑖𝑙𝑡 do PTU. As imagens em escala de cinza da
câmera estereoscópica são armazenadas no padrão RGB, em forma de vídeo no formato AVI,
“Audio Video Interleave”. A imagem da câmera esquerda é inserida no canal azul do vídeo e a
câmera direita no canal vermelho. Armazena-se também um arquivo em formato de texto, com os
registros de tempo correspondentes a cada quadro do vídeo.
Os ambientes de teste de odometria apresentam complexidade progressiva. O modelo virtual
de um ambiente 3-D com objetos geométricos simples, por onde se desloca um robô, fornece os
primeiros conjuntos de dados. O segundo ambiente utilizado para a geração de dados de
referência consiste na captura de imagens de um sistema estereoscópico de duas câmeras fixadas
em um suporte robótico articulado do tipo PTU. Uma navegação em um ambiente real interno é
apresentada no conjunto de dados Helmet. Nesse conjunto, o sistema estereoscópico é fixado em
66
um capacete plástico de um usuário que se desloca em um escritório. No conjunto de dados "Via
Museu", um sistema estereoscópico é fixado a um veículo automotor que navega em um
ambiente externo. No conjunto de dados "Feec" indoors, o sistema estereoscópico é fixado a um
robô do tipo Seekur Jr. O conjunto de dados "ciclo básico" é um circuito fechado (closed loop) de
exterior em estrada asfaltada. O conjunto de dados "Praça da Paz" é o circuito mais complexo.
Consiste de uma estrada de terra, capaz de provocar vibração e instabilidade no sistema, o que
permite testar a robustez dos métodos de estimativa de movimento.
7.2 Simulação - Corredor 3D Max
Um ambiente virtual é simulado na plataforma de modelagem 3DMax, dentro do qual
navega uma câmera estereoscópica, capturando imagens ao longo de seu movimento. A câmera
percorre uma trajetória com velocidade constante, composta de dois trechos retos e um curvo
como apresentado na Figura 7-1. O percurso total de 22,5 metros é registrado em 300 quadros.
Figura 7-1 Trajetória em formato de 'L' modelada em 3D-Max, vista superior e perspectiva.
O ambiente de interior segue o padrão de um corredor de escritório. Objetos e texturas são
localizados ao longo do trajeto para enriquecer as referências visuais. Neste modelo, os objetos
de referência são estáticos e distribuídos ao longo do caminho, conforme ilustrado na Figura 7-2.
As câmeras configuradas na plataforma 3D-Max, com disposição paralela de distância 85mm,
67
possuem lente de 50 mm, campo de visão de 53,13o e tamanho de imagem de 640x480 pixels.
Um conjunto típico de imagens do sistema de câmeras estereoscópico é apresentadas na Figura
7-2.
Figura 7-2 Ambiente modelado em 3D-Max.
7.2.1 Pedestre - Helmet
Como citado anteriormente no experimento Helmet a câmera estereoscópica, previamente
descrita na seção 6.1, é fixada em um capacete. A marcha de uma pessoa em um ambiente de
interno é registrada através de imagens estereoscópicas. A trajetória inicia-se com a câmera em
movimento em linha reta ao longo de um corredor, durante 1 minuto. O ambiente contém objetos
estáticos e dinâmicos. No fundo do corredor encontram-se pessoas caminhando. As câmeras
estereoscópicas capturam imagens em escala de cinza de tamanho 1280x960 pixels, com taxa de
amostragem de 7,5FPS. Amostras típicas de imagens capturadas pelas câmeras estereoscópicas
em um dado instante de tempo são apresentadas na Figura 7-3.
Figura 7-3 Imagens estereoscópicas do experimento Helmet.
68
Os resultados obtidos nesse experimento compõem o banco de dados utilizado no trabalho
publicado no congresso (DELGADO, J. V., KURKA, P.R.G, FERREIRA, 2013). Os sensores
utilizados neste experimento são listados na Tabela 3.
TABELA 3 OS SENSORES UTILIZADO NO TESTE HELMET
Câmaras
Left/Right
Câmera
Estereo
Laser
2D
Laser
3D
GPS
Garmin
GPS
Trimble
Odometria
Robô
- x - - - - -
7.2.2 Via Museu
Este experimento é projetado para avaliar o algoritmo de odometria visual (VO), utilizando
uma velocidade média de navegação de 30-16km/h. A navegação em um carro convencional é
realizada em um trecho de 0,5 km na Av. Alan Turing da Unicamp. A trajetória inicia em linha
reta sobre uma estrada asfaltada. O percurso termina em uma rotatória.
Figura 7-4 Imagem estereoscópica registrada no ambiente via museu.
O ambiente dessa trajetória externa é composto inicialmente por prédios, regiões com cercas
e um automóvel em movimento. No final do trajeto o ambiente é composto por árvores e
arbustos. O experimento utilizou um conjunto de câmeras estereoscópicas fixo no carro, e um
GPS de baixo custo conforme ilustrado na Figura 7-5 (a). Os dados do GPS são interpolados
devido a sua baixa frequência de amostragem. O trajeto recuperado pelo GPS é apresentado
através do software Google Maps na Figura 7-5 (b).
69
(a) (b)
Figura 7-5 Câmera estereoscópica fixada no teto de um automóvel. (Imagem Google Earth)
Os resultados obtidos nesse experimento compõem o banco de dados utilizado para o
trabalho publicado no congresso, conforme consta na referência (DELGADO, J. V., KURKA,
P.R.G, FERREIRA, 2013). Os sensores utilizados neste experimento são listados na Tabela 4.
TABELA 4 OS SENSORES UTILIZADO NO TESTE VIA MUSEU
Câmras
Left/Right
Câmera
Estereo
Laser
2D
Laser
3D
GPS
Garmin
GPS
Trimble
Odometria
Robô
- x - - x - -
7.2.3 Ciclo Básico
O robô Seekur Jr coletou dados no percurso circular de 1km de perímetro na Rua Sérgio
Buarque de Holanda, onde se localiza o ciclo básico da UNICAMP. O robô foi teleoperado
durante 30 minutos sobe uma estrada asfaltada.
A navegação inicia com o robô parado. O ponto de partida é o mesmo ponto final, devido ao
formato circular do percurso escolhido. A velocidade de navegação não é constante. Durante o
percurso são apresentadas 3 paradas, sendo uma para re-calibração da lente das câmeras. O
ambiente de navegação é de tipo externo com objetos dinâmicos. Pessoas caminhando na rua,
carros bloqueando a visão e motocicletas passando na frente do robô são alguns dos obstáculos
que caracterizam o experimento. O ambiente externos não apresenta restrições para os sensores
com comunicação de satélite. Nesse caso as árvores e prédios, não alteraram a qualidade dos
dados adquiridos pelos sensores. Os dados foram coletados em condições meteorológicas de céu
aberto.
Neste experimento o robô Seekur Jr foi equipado com os sensores apresentados na Tabela 5.
As câmeras estereoscópicas capturaram imagens em escala de cinza de tamanho 640x480 pixels
70
com taxa de amostragem de 15FPS. Os dois Lasers descritos na seção 6.3 capturam a geometria
do ambiente. O Laser 3D oscila entre os ângulos 0° e 60° e o Laser 2D é fixo.
TABELA 5 OS SENSORES UTILIZADO NO TESTE CICLO BÁSICO
Câmras
Left/Right
Câmera
Estereo
Laser
2D
Laser
3D
GPS
Garmin
GPS
Trimble
Odometria
Robô
x x x x x x x
Os dados capturados com o GPS são apresentados no mapa através do software Google
Maps, apresentado na Figura 7-6.
Figura 7-6 A linha azul representa o caminho recuperado pelo GPS Trimble. (Imagem Google Earth)
No experimento foram capturados 13.600 quadros de imagem equivalentes a 55 minutos de
vídeo. Amostras de um instante de tempo capturado pelas câmeras estereoscópicas são
apresentadas Figura 7-7.
Figura 7-7 Imagens capturadas pela câmera estereoscópica em diferentes instantes de
tempo no experimento CB.
71
7.2.4 Praça da Paz
Neste experimento o robô Seekur Jr coletou dados na pista de terra da Praça da Paz, da
UNICAMP. O robô foi operado manualmente com velocidade variável durante 55min no circuito
de 727m do caminho de terra. Este experimento é utilizado para testar os algoritmos de odometria
visual e de fusão de sensores. Também, é testada a autonomia do robô, a robustez dos
acoplamentos mecânicos (Lidar 3D, Base GPS e Câmera Estereoscópica) em terrenos irregulares
e os GPS descritos na seção 6.3. A trajetória inicia com o robô parado. Acelerações e paradas
caracterizam o trajeto que é realizado com velocidade variável. Neste experimento o robô se
movimenta a uma velocidade média de 0,88km/h. O ambiente externo combina características de
cidade e floresta. A Praça da Paz é um ambiente arborizado cercado por ruas e prédios. Objetos
dinâmicos também estão presentes ao longo do caminho do robô: carros em movimento, pessoas
caminhando e árvores se movendo pelo vento. O experimento é realizado em condições
climáticas de céu aberto. No entanto, o robô atravessa áreas cobertas por árvores que afetam a
estimativa do GPS. Imagens estereoscópicas capturadas ao longo do trajeto são apresentadas na
Figura 7-8. As imagens (a,b) que são registradas no centro da praça, apresentam maior
quantidade de árvores do que as registradas nos extremos (d,e). Ao longo do caminho o ambiente
de navegação alterna entre características de floresta e de cidade, com prédios e carros
estacionados.
(a) (b)
72
(c) (d)
Figura 7-8 Imagens capturadas pela câmera estereoscópica em diferentes instantes de tempo no experimento
Praça da Paz.
Neste experimento o robô Seekur Jr foi equipado com os sensores listados na Tabela 6. As
câmeras estereoscópicas capturam imagens em escala de cinza de tamanho 640x480 pixels com
taxa de amostragem de 15FPS. Os dois Lasers descritos na seção 6.3 capturam a geometria do
ambiente. O Laser 3D oscila entre os ângulos 0˚A 60˚ e o Laser 2D é fixo.
TABELA 6 OS SENSORES UTILIZADO NO TESTE PRAÇA DA PAZ
Câmera
Left/Right
Câmera
Estereo
Laser
2D
Laser
3D
GPS
Garmin
GPS
Trimble
Odometria
Robô
x x x x x x x
7.3 Velocidade de processamento (Odometria Visual)
A velocidade de processamento varia em função da quantidade de informação no ambiente,
tamanho da imagem e a unidade de processamento (CPU e GPU). O resultado da velocidade de
processamento dos dados experimentais é apresentado nesta seção.
Duas versões do algoritmo de odometria visual foram testadas. A primeira, executa na GPU
os algoritmos de identificação de pontos de referência na imagem, a triangulação, filtragem e
correlação de pontos de referência. A segunda executa o algoritmo de odometria visual na CPU.
O desempenho das GPUs é modificado com a operação através das baterias. O algoritmo de
odometria visual executado nas GPUs móveis utilizando como alimentação de energia as baterias
é quantificado nos experimentos "Via Museu" 7.3.3 e "Corredor 3D-Max" 7.3.2. A robustez do
73
algoritmo em experimentos de grande escala é apresentada nas seções nos experimentos Praça da
Paz 7.3.5 e Ciclo Básico 7.3.4.
7.3.1 Helmet
O processamento das imagens de ambiente interno registradas com resolução de 1280x980
pixels é executado na GPU GTX 560Ti, atingindo uma velocidade de processamento de 6FPS.
As GPUs móveis Quadro 4000M e GTX 680M apresentaram uma diferença de 80% da
velocidade, quando são energizados pela rede ou bateria. No mesmo teste, a velocidade de
processamento das CPUs Intel Core i7 950 3.07GHz e Intel Core i7 3610QM 2,3GHz apresenta
uma diferença média de 0,045FPS. Observa-se o desempenho superior das GPUs em relação as
CPUs. Registra-se um incremento de velocidade, de 20 vezes, entre a GPU mais rápida e as
CPUs (Figura 7-9).
Figura 7-9 Velocidade de processamento do algoritmo "Odometria Visual" executado em
diferentes unidades de processamento (CPUs e GPUs). O tamanho das imagens processadas é
1280x960. Capturadas em um ambiente externo.
7.3.2 Corredor 3DMax
No experimento Simulação - Corredor 3DMax, são processadas imagens de 640x480 pixels
em diferentes unidades de processamento. A CPU i7 36100M atinge uma velocidade média de
3FPS. A GPU de escritório GTX 560 Ti atinge uma velocidade de processamento de 30FPS
74
(tempo real). Neste experimento o algoritmo de odometria visual também é testado nas unidades
móveis de processamento gráfico M-GPUs. A GPU Quadro 4000M apresentou uma velocidade
de processamento de 15FPS conectado na tomada e uma velocidade de 3FPS utilizando a
alimentação das baterias. A GPU GTX 680M apresentou uma velocidade de processamento de
22FPS conectado na tomada e uma velocidade de 4,9FPS utilizando a bateria. Uma amostra de
100 passos é apresentada na Figura 7-10.
Figura 7-10 Velocidades de processamento do algoritmo de odometria visual em um ambiente virtual. O
tamanho das imagens é 640x480 pixels. Na GPU 560Ti é atinge velocidade de 30FPS.
7.3.3 Via Museu
No experimento via Museu é utilizada uma amostra de 100 quadros correspondentes à
navegação em ambiente externo. O algoritmo de odometria visual é executado em três diferentes
unidades de processamento. A GPU Quadro 4000m, que atinge uma velocidade de
processamento de pico de 30FPS e média de 22FPS; a Unidade de processamento GPU 560Ti,
que atinge uma velocidade de pico de 100FPS e velocidade média de 39FPS e a CPU, que atinge
uma velocidade de pico de 4,5FPS e uma velocidade média de 3FPS.
75
Figura 7-11 Velocidades de processamento do algoritmo de odometria visual em um ambiente
externo. O tamanho das imagens é 640x480 pixels. A GPU Quadro 4000 atinge velocidade média de
20FPS.
7.3.4 Ciclo Básico
O experimento ciclo básico composto de 805 imagens estereoscópicas é processando na
GPU Quadro 4000M. A velocidade de processamento do algoritmo de odometria visual (VO)
atinge uma velocidade pico de 25,8FPS e uma velocidade média de 20,97FPS. O processamento
na CPU atinge uma velocidade pico de 11,5FPS e uma velocidade média de 6,47FPS.
Figura 7-12 Velocidade de processamento do algoritmo Odometria Visual executado na GPU Quadro4000M,
O tamanho é 640x480.
76
7.3.5 Praça da Paz
O algoritmo de odometria visual (VO) processa os dados do experimento Praza da Paz. Este
é executado na GPU Quadro 4000M e na CPU Intel i7-2820QM. As velocidades de
processamento são apresentadas na Figura 7-13. A velocidade de processamento do algoritmo de
odometria visual (VO) atinge uma velocidade pico de 29FPS e uma velocidade média de
19,95FPS. O processamento na CPU atinge uma velocidade de pico de 16FPS e uma velocidade
média de 5,08FPS.
Figura 7-13 Velocidade de processamento do algoritmo "Odometria Visual" executado na GPU Quadro
4000M. O tamanho é 640x480.
7.4 Resultados das estimativas de navegação
O problema de localização de robôs autônomos se deve a erros na medição de posição. Neste
trabalho são comparados os sensores descritos na seção 7.1 em quatro experimentos. O
comportamento do erro varia em relação ao ambiente de navegação. Primeiro, o vídeo
estereoscópico da navegação em ambiente virtual é processado. Depois, no teste do ciclo básico é
utilizada a rua circular como referência. A peculiaridade da circunferência perfeita de 1 km é
utilizada como ambiente de calibração. No experimento Museu é validado o algoritmo de
odometria visual em velocidades de 16,3 A 30,5 km/h. No experimento da Praça da Paz a
odometria visual e a localização pelo GPS são avaliadas em ambientes de floresta.
77
7.4.1 Corredor 3DMax
O algoritmo de odometria é validado no ambiente simulado “Corredor 3D Max”. A trajetória
da câmera estereoscópica é representada pela linha pontilhada na Figura 7-16. Esta trajetória é
utilizada como referência e comparada com a odometria visual, linha contínua na figura.
Figura 7-14 Trajetória da odometria visual e referência na simulação Corredor 3D-Max.
O erro é estimado através da diferença da trajetória seguida pela câmera e da trajetória
recuperada pela odometria visual. Este erro apresenta um comportamento cumulativo, o que leva
a crescente curva de erro na Figura 7-17. O ponto final da trajetória possui uma incerteza de
25,52%, enquanto o erro médio é de 5,06%.
Figura 7-15 Erro ao longo da simulação Corredor 3D-Max.
78
7.4.2 Ciclo Básico
O formato circular da rua do Ciclo Básico da Unicamp é utilizado como referência para
medir o erro nos sensores. Esta circunferência de 1km é representada ao longo dos experimentos
como uma linha pontilhada vermelha. Na seção 7.4.2.1 é medido o erro dos algoritmos de
odometria visual e odometria dos encoders. Depois, na seção 7.4.2.2 são comparadas as
estimativas de localização pelos GPS Garmin e Trimble. Na seção 7.4.2.3 é apresenta a correção
do erro utilizando o Filtro de Kalman em configuração de Dead Recording e fusão de sensores.
7.4.2.1 Odometria visual e dos encoders
Os dados da odometria cinemática do robô são comparados com o círculo vermelho utilizado
como referência. A trajetória recuperada é apresentada na Figura 7-16(a). O Erro estimado ao
longo da trajetória é apresentado na Figura 7-16 (b). A primeira linha estima o erro para cada
instante 𝑘. A segunda linha (pontilhada) apresenta o erro médio de 10,17% do tipo incremental.
(a)
(b)
Figura 7-16 Trajetória da odometria cinemática e referência no experimento CB (a). Erro ao longo do
experimento e erro médio (b).
A trajetória recuperada pela odometria visual é comparada com o círculo de referência,
conforme ilustrado na Figura 7-17(a). O Erro estimado ao longo da trajetória é apresentado na
Figura 7-17 (b). A linha pontilhada apresenta o erro médio de 5,73%.
79
(a)
(b)
Figura 7-17 Trajetória da odometria visual no experimento CB (a), erro local e erro médio alongo do
percurso.
7.4.2.2 GPS Garmin e Trimble
Os dados de localização utilizando os sensores GPS Garmin e Trimble são comparados com
a referência na Figura 7-18. A localização do GPS Garmin na Figura (a) apresenta variações
durante a navegação. Em contraste, o GPS Trimble apresenta localização com maior exatidão na
Figura (b). No entanto, em alguns intervalos este GPS não atualiza a localização proporcionando
o aparecimento de descontinuidades, como apresentado no “Detalhe B”. Os pontos inicial e final
do experimento são mostrados no “Detalhe A”.
(a)
(b)
Figura 7-18 Dados de localização armazenados pelos GPS Garmin (a) e Trimble (b) durante o teste do ciclo
básico. O detalhe 'A' indica o ponto inicial do teste. O detalhe 'B' apresenta o maior intervalo de erro do GPS
Trimble (b).
Detalhe B
Detalhe A
Detalhe B
Detalhe A
80
Os erros dos dispositivos de localização geográfica GPS são ilustrados na Figura 7-19. Estes
são representados através de duas linhas para cada sensor. A primeira linha estima o erro em
todos os instantes. A segunda linha (pontilhada) apresenta o erro médio de 0,21% para o GPS
Garmin e de 0,46% para o GPS Trimble.
Figura 7-19 Erro do GPS Trimble e Garmin alongo do experimento CB.
7.4.2.3 Filtro de Kalman
O Filtro de Kalman é utilizado nas estimativas Dead Reckoning de navegação, descritas na
seção 4.3. A trajetória recuperada pela odometria visual e sua correção pelo filtro de Kalman são
apresentadas na Figura 7-20 (a). O erro de odometria visual é atenuado em 1,34%, variando de
5,73% para 4,39% na Figura 7-20 (b).
(a) (b)
Figura 7-20 Trajetórias no experimento CB da odometria visual e a correção através filtro de Kalman em
configuração Dead Reckoning (a) e os erros ao longo do experimento (b).
81
O filtro de Kalman em configuração de fusão de sensores combina a odometria do encoders
e a odometria visual. As trajetórias estimadas com a regularização do filtro de Kalman são
apresentadas na Figura 7-21. Esta fusão apresenta um erro médio de 5,86%.
(a) (b)
Figura 7-21 Trajetórias no experimento CB: odometria visual, odometria dos encoders e fusão através do
filtro de Kalman (a). Erros das estimativas ao longo do experimento (b).
O filtro de Kalman é utilizado ainda para fundir as estimativas de localização utilizando a
odometria dos encoders e a localização pelo GPS Trimble. Os resultados são apresentados na
Figura 7-22. A fusão das estimativas apresenta um erro médio de 0,59%.
Figura 7-22 Trajetórias no experimento CB: odometria dos encoders, localização pelo GPS e a fusão através o
filtro de Kalman (a). Erros das estimativas ao longo do experimento(b).
82
O filtro de Kalman é utilizado para fundir as estimativas de localização utilizando odometria
visual e o GPS Trimble. Os resultados são apresentados na Figura 7-23. A fusão das estimativas
apresenta um erro médio de 0,54%.
Figura 7-23 Trajetórias no experimento CB da odometria visual, a localização pelo GPS e a fusão através do
filtro de Kalman (a). Erros das estimativas ao longo do experimento (b).
O filtro de Kalman é utilizado para fundir as estimativas de localização utilizando odometria
visual, odometria dos encoders e o GPS Trimble. As trajetórias são apresentadas na Figura 7-24.
A linha pontilhada vermelha representa a referência. A linha verde contínua representa a
odometria dos encoders. A linha azul a odometria visual. A linha magenta corresponde à fusão
através do filtro de Kalman, apresentando um erro médio de 0,55%.
(a)
(b)
Figura 7-24 Trajetórias no experimento CB: odometria visual, odometria dos encoders, a localização pelo GPS e a
fusão através o filtro de Kalman (a). Erros das estimativas ao longo do experimento (b).
83
7.4.3 Via Museu
O trajeto recuperado pelo algoritmo de odometria visual da navegação do experimento Via
Museu é comparado com o GPS. O erro calculando-se em base da diferença das duas estimativas.
As duas trajetórias são apresentadas na Figura 7-25. A odometria visual é representada pela linha
continua e a trajetória de referência (GPS) pela linha pontilhada.
Figura 7-25 Trajetórias da navegação em um ambiente exterior. A linha pontilhada representa o GPS e
a linha vermelha a odometria recuperada das imagens.
O algoritmo VO é validado através da diferença das estimativas da trajetória de odometria visual
e a localização pelo GPS. As estimativas do algoritmo de odometria visual possuem erro
Figura 7-26 O erro da estimativa de movimento da odometria visual ao longo do experimento Via Museu.
cumulativo, o que leva à crescente curva de erro na Figura 7-26. O ponto final da trajetória possui
uma incerteza de 18%, enquanto o erro médio é de 7,2%.
84
7.4.4 Praça da Paz
O experimento de navegação na Praça da Paz é dividido em duas etapas. No primeiro passo é
apresentada a influência do ambiente na localização utilizando GPS. No segundo passo, validam-
se os algoritmos de odometria visual e fusão de sensores através do Filtro de Kalman.
A representação das trajetórias estimadas pelos GPSs Garmin e Trimble são plotadas no
mapa da plataforma Google Earth, conforme mostrado na Figura 7-27. As condições
meteorológicas são de céu aberto no período da medição. Este ambiente contém regiões onde o
robô é encoberto por árvores, atenuando o sinal do GPS proveniente dos satélites. Estas regiões
são indicadas por círculos vermelhos no mapa.
(a) (b)
Figura 7-27 Sinal do GPS Trimble e Garmin em dois dias diferentes de teste. (Imagem Google Earth)
A localização pelos GPS é afetada pelas condições meteorológicas. Os testes são feitos em
condições de céu aberto. Neste experimento, a trajetória com melhor estimativa é utilizada como
referência, conforme representado pela linha pontilhada vermelha da Figura 7-28(a). A diferença
entre o GPS Trimble e Garmin é quantificada ao longo do experimento e ilustrada na Figura
7-28(b) com um erro médio de 1,1%.
85
(a) (b)
Figura 7-28 Erro do GPS Garmin e Trimble no experimento da Praça da Paz.
O filtro de Kalman é utilizado para fundir as estimativas de localização utilizando odometria
visual, odometria dos encoders e o GPS Garmin. As trajetórias são apresentadas na Figura 7-29.
A linha pontilhada vermelha é a referência (GPS Trimble). A estimativa de pela odometria visual
é a linha azul pontilhada, a linha verde representa a odometria dos encoders e a linha preta o GPS
Garmin. A fusão através do filtro de Kalman é representada pela linha magenta.
Figura 7-29 Trajetórias estimadas no experimento Praça da Paz. (Localização pela odometria visual,
odometria dos encoders, localização pelo GPS e a fusão pelo filtro de Kalman).
O erro neste experimento é calculado através da diferença das estimativas de posição e a
trajetória de referência (GPS Trimble). O erro ao longo do experimento é apresentado na Figura
86
7-30. O erro médio da odometria visual é 5,86%, da odometria do encoders 4,8% e do GPS
Garmin 1,02%. A fusão das estimativas de posição através do filtro de Kalman apresentou um
erro médio de 1,17%.
Figura 7-30 Erro das estimações de movimento ao longo do experimento praza da
Paz. As linhas pontilhadas representam o erro médio para cada estimativa.
87
7.4.5 Resultados de Mapeamento
A reconstrução no espaço tridimensional das distâncias capturadas pelo Laser 3D são
apresentadas na Figura 7-31. As distância são transformadas em pontos 3D utilizando os ângulos
do PTU e a odometria das rodas. Os pontos cinza representam a reconstrução do ambiente. As
linhas azul e vermelha representam a posição de captura do robô através dos eixos de
coordenadas 𝑥 e 𝑦.
Figura 7-31 A linha azul representa o caminho recuperado pela odometria dos encoders. Os pontos
cinzas representam o ambiente reconstruído pelo Laser 3D.
A reconstrução do ambiente em coordenadas euclidianas utilizando a odometria dos
encoders é apresentada na Figura 7-32. A linha azul claro representa a localização pelo GPS. A
cor dos pontos capturados pelo Laser 3D é função a altura. Sendo o cinza obscuro o ponto mais
baixo 0 e os pontos cinza claro o ponto mais alto no eixo Y.
88
Figura 7-32 A linha vermelha representa o caminho da odometria dos encoders, os pontos azuis claro representam a
trajetória do GPS . Os pontos cinza são os pontos mapeados pelo Laser 3D no ambiente.
A vista superior da reconstrução é ilustrada na Figura 7-33. Evidencia-se o erro de
odometria das rodas. Os pontos inicial e final deveriam ser coincidentes, contudo isto não ocorre
devido a dois fatores: primeiro, a odometria das rodas não identifica as variações no eixo Z e
acumulo de erros.
Figura 7-33 Vista superior da reconstrução do ambiente Praça da Paz.
89
8 Discussão e Conclusões
Neste capítulo são apresentadas as discussões dos resultados, as conclusões e as sugestões
para trabalhos futuros. Também, os resultados descritos na seção 7 são comentados e comparados
com os resultados da literatura.
Discussão de Resultados
Os algoritmos de Odometria visual e fusão de sensores foram descritos e validados através
de diferentes testes nos capítulos anteriores. Estes testes iniciaram com a estimativa de
movimento de um ambiente virtual de interiores, depois o algoritmo foi testado nos ambientes
reais de exterior. As análises destes resultados iniciam discutindo a estimativa de movimento ao
longo dos experimentos utilizando câmeras estereoscópicas. Em seguida é analisada a influência
do filtro de Kalman nas configurações DK e fusão de sensores. Também são discutidos o uso de
câmeras estereoscópicas com lentes fixas, o algoritmo de calibração com uma caixa sólida e o
condicionamento da plataforma robótica Seekur Jr.
Os sistemas de localização por satélite GPS foram testados no ambiente do Ciclo Básico e
Praça da Paz, conforme apresentados na seção7.4. Os erros são sintetizados na Tabela 7. No
ambiente do ciclo básico, o GPS de baixo custo Garmin apresentou um erro de 0,21% e o
Trimble de 0,46%. No experimento são evidenciados vários pontos mortos do GPS Trimble que
contribuíram para o erro de 0,46%. No entanto o GPS Trimble apresentou baixas oscilações ao
redor da referência. Ao contrário, o GPS Garmin atualizou a localização a longo de todo o
percurso e apresentou maiores oscilações ao redor da referência.
TABELA 7 ERRO DO GPS NOS EXPERIMENTOS
No experimento ciclo básico a diferença entre os GPSs foi de 0,25%. Em contraste, no
experimento da Praça da Paz a diferença foi de 1,1%. Estes dados evidenciam a influência do
ambiente na localização utilizando GPS. Na Praça da Paz as árvores atenuaram o sinal do satélite
Erro médio GPS Garmin GPS Trimble Diferença
Ciclo Básico 0,21% 0,46% 0,25%
Praça da Paz --- --- 1,1%
90
causando um maior erro no GPS Garmin do que no GPS Trimble. Os dispositivos de localização
por satélite apresentaram dois tipos de incertezas. A primeira é evidenciada quando o GPS perde
o sinal dos satélites. Onde, não são atualizados os dados (pontos mortos) é enviada a mesma
localização. O segundo tipo de incerteza na localização é função do ambiente e as condições
metrológicas.
Um método robusto e eficiente para realização da odometria visual foi apresentado neste
trabalho. O algoritmo foi validado em quatro ambientes, conforme mostrado na seção7.1. O
primeiro, Corredor 3DMax, um ambiente virtual onde foram alocados objetos e simulada uma
câmera estereoscópica. Os testes validaram os algoritmos de odometria visual e fusão de
sensores. Os erros médios da odometria visual para cada estimativa são sumarizados na Tabela 8
abaixo.
TABELA 8 ERRO DO ALGORITMO DE ODOMETRIA VISUAL
Experimento Corredor
3D Max
Via
Museu
Ciclo
Básico
Praça
Da Paz
Erro médio 5,06% 7,2% 5,73% 5,86%
O algoritmo de odometria visual foi testado no ambiente virtual, apresentando um erro médio
de 5,06%. Este ambiente foi projetado para garantir as referências visuais ao longo do
experimento. No entanto, algumas texturas apresentaram aliasing que inseriram erros na
estimativa de movimento. Os ambientes da Praça da Paz e do Ciclo Básico testaram os
algoritmos de odometria visual e fusão de sensores em ambientes reais. O erro da odometria
visual foi de 5,73% para o teste do Ciclo Básico e de 5,86% na Praça da Paz. O erro de odometria
dos encoders nos mesmos experimentos foi de 10,17% no ciclo básico e de 4,8% na Praça da Paz.
Estes resultados demonstram a repetibilidade do algoritmo de odometria visual, apresentando um
melhor desempenho que a odometria dos encoders no caso do teste do Ciclo Básico.
A velocidade de navegação teve um fator importante na estimativa de movimento utilizando
câmeras estereoscópicas. Nos experimentos ciclo básico e Praça da Paz, a velocidade de
navegação foi de 0.5 km/h apresentando erros de 5.73% e 5.86% respectivamente. Em contraste,
no experimento via museu a velocidade foi de 16-30 km/h apresentando um erro de 7.2%.
91
A redundância de informação é uma solução ao problema de localização. O uso do filtro de
Kalman para a fusão de dados foi avaliada neste trabalho, conforme apresentado nas seções 7.4.2
e 7.4.4. Os resultados dos testes da Praça da Paz e do Ciclo Básico são sintetizados na Tabela 9.
TABELA 9 ERRO DA FUSÃO DE DIFERENTES SENSORES
Experimento Ciclo Básico Praça da Paz
Vody+GPS+Ody Vody+GPS Ody+GPS Vody+GPS+Ody Vody+Ody
Erro médio 0,54% 0,59% 0,55% 5,86% 1,17%
Neste trabalho ficaram evidenciadas duas particularidades nos métodos. A primeira foi o erro
não cumulativo utilizando o GPS e a possibilidade de perda do sinal em alguns intervalos. A
segunda foi o erro incremental na estimativa de movimento utilizando encoders e/ou câmeras
estereoscópicas. O filtro de Kalman foi utilizado para fundir estas estimativas, aproveitando as
melhores qualidades de cada sensor. Ou seja, o erro acumulativo das odometrias é corrigido
através da localização do GPS. Da mesma forma, os espaços gerados pela perda do sinal do GPS
são preenchidos por estimações de movimento, gerados pelas odometrias. Os resultados
indicaram que o erro é atenuado no experimento do Ciclo Básico. Os erros de odometria de
5,73% e 10,17% são diminuídos para 0,54% e 0,59% quando são fundidos com o GPS. Também,
os espaços de perda do sinal do GPS foram preenchidos pela informação das odometrias. Na
seção 7.4.2 são sintetizados os detalhes dos resultados do experimento do Ciclo Básico obtidos
na.
Os pontos GPS Garmin e Trimble são plotados junto às estimativas de odometria e filtro de
Kalman. Os detalhes que apresentaram o intervalo de perda de sinal são plotados nas figuras
abaixo e chamados de “Detalhe A” denotado pela letra (a). Os pontos de partida (0,0) são
chamados de “Detalhe B” denotado pela letra (b). Os pontos pretos representam as estimativas de
posição ao longo do percurso. A linha pontilhada vermelha representa o círculo usado como
referência no experimento Ciclo Básico.
Na Figura 8-1 a trajetória verde pontilhada representa o GPS Trimble e a linha pontilhada
azul o GPS Garmin. No detalhe A o GPS Trimble apresentou perda de localização devido a
fatores no ambiente que interferiram no sinal do GPS. Os dois GPS apresentaram incertezas no
ponto final, detalhe B.
92
(a) Detalhe A (b) Detalhe B
Figura 8-1 Os detalhes da fusão As trajetórias recuperadas pelos GPS Trimble e Garmin nas figuras (a,b)
A fusão da localização do GPS (linha verde pontilhada) com a odometria das rodas (Linha
verde) através do filtro de Kalman é representado nela linha magenta na Figura 8-2. A fusão
corrigiu a perda de sinal do GPS no detalhe A. No entanto, continuo o erro da posição final no
detalhe B.
Detalhe B
Detalhe
B
Detalhe A
Detalhe A
93
Detalhe A (a) Detalhe B (b)
Figura 8-2 Os detalhes da fusão através do filtro de Kalman utilizando a Odometria dos Encoders + GPS são
apresentados nas Figuras (a,b))
A fusão da localização do GPS (linha verde pontilhada) com a odometria visual (Linha azul)
foi fundida pelo filtro de Kalman representado pela linha magenta na Figura 8-3. A fusão corrigiu
a perda de sinal do GPS no detalhe A e o erro da posição final no detalhe B.
Detalhe B
Detalhe A
94
Detalhe A (a) Detalhe B (b)
Figura 8-3 Os detalhes da fusão da Odometria Visual + GPS são apresentados nas figuras (a,b)
A fusão da localização do GPS (linha verde pontilhada) com a odometria visual (Linha azul)
e a odometria das rodas (Linha Verde) foi fundida pelo filtro de Kalman representada pela linha
magenta na Figura 8-4. A fusão corrigiu a perda de sinal do GPS no “detalhe A” e uma porção do
erro da posição final no “detalhe B”.
Detalhe B
Detalhe A
95
Detalhe A (a) Detalhe B (b)
Figura 8-4 Os detalhes da fusão do GPS + Odometria dos encoders + Odometria Visual são apresentados nas
figuras (a,b)
Os dados de localização do GPS foram fundidos com as estimativas das odometrias através
do filtro de Kalman. As três configurações de fusão resolveram o problema de localização
quando o GPS perde o sinal do satélite. No entanto, só a fusão do GPS e Odometria visual
corrigiu o erro de localização final apresentado na Figura 8-3 (b).
Os testes de processamento validaram o uso da GPU executando o algoritmo de odometria
visual em diferentes condições. Primeiro, foram avaliadas as GPUs móveis quando energizadas
pelas baterias de um Notebook. Depois, o desempenho foi analisado em diferentes tamanhos de
imagens e quantidade de informação do ambiente. Os resultados da seção 7.3 são sintetizados e
discutidos abaixo.
A velocidade de processamento quando a GPU é energizada com bateria ou tomada foi
medida nos experimentos Corredor 3D Max e Helmet. As velocidades de processamento
utilizando as placas de vídeo móbiles Quando 4000M e GTX 680M são apresentadas na Tabela
10.
TABELA 10 VELOCIDADE DE PROCESSAMENTO GPU E FONTE DE ALIMENTAÇÃO
Experimento
GPU
Corredor 3D Max (640x480) Helmet (1280x980)
Quadro 4000M GTX 680M Quadro 4000M GTX 680M
Tomada 15FPS 22FPS 3FPS 4,5FPS
Bateria 3FPS 4,9FPS 0,5FPS 1FPS
Perda de Velocidade 80% 77% 83% 77%
96
A GPU apresenta perda de velocidade de processamento ao redor de 80% quando utiliza
bateria. O desempenho foi testado em duas configurações de imagem. apresentando uma queda
proporcional de velocidade de processamento. Estes resultados sugerem restrição do uso de
GPUs em plataformas móveis devido a necessidade de uma fonte de alimentação de mais alta
potência ou a conexão na tomada.
O desempenho do algoritmo de odometria visual foi medido em diferentes ambientes e
unidades de processamento. Os resultados apresentados na seção 7.3 são sintetizados na Tabela
11. No experimento Helmet foram processadas imagens de 1280x980 pixels, apresentando um
incremento de velocidade de nove vezes quando se utiliza a GPU. Este incremento foi mais
significativo que os experimentos que utilizaram imagens de 640x480 pixels.
TABELA 11 VELOCIDADE DE PROCESSAMENTO NOS EXPERIMENTOS
Experimento
GPU
Helmet
(1280x980)
Corredor 3D Max
(640x480)
Via Museu
(640x480)
Ciclo Básico
(640x480)
Praça da Paz
(640x480)
Quadro
4000M
CPU Quadro
4000M
CPU Quadro
4000M
CPU Quadro
4000M
CPU Quadro
4000M
CPU
Tomada (FPS) 3 0,3 15 3 22 3 20,97 6,47 19,95 5,08
90% 80% 86% 69% 74,5%
O número de pontos de referência identificados no experimento Corredor 3D Max foi maior
do que no experimento Ciclo Básico. Este aumento refletiu na velocidade de processamento que
apresentou uma queda de 46% no experimento Corredor 3D Max, quando comparado com o
experimento Ciclo Básico. Os experimentos que processaram imagens de 640x480 pixels tiveram
uma velocidade media de 19,48FPS quando executados na GPU e de 4,38FPS quando são
executados na CPU. Estes resultados apresentam uma aceleração de 77,4% quando os algoritmos
de odometria visual são executados na GPU.
A velocidade de processamento nos experimentos Corredor 3D Max, Helmet e Via Museu
foram executados na GPU GTX 560TI. Os resultados são sintetizados na Tabela 12, a velocidade
de processamento foi 91% maior na GPU do que no processamento em CPU. Estes experimentos
atingiram os 30FPS com imagens de 640x480 pixels, sugerindo a viabilidade de execução de
odometria visual em tempo real.
97
TABELA 12 VELOCIDADE DE PROCESSAMENTO GPU REALTIME
Experimento
GPU
Helmet
(1280x980)
Corredor 3D Max
(640x480)
Via Museu
(640x480)
GTX
560TI
CPU GTX
560TI
CPU GTX
560TI
CPU
Tomada (FPS) 6 0,3 30 3 39 3
95% 90% 92%
Os resultados deste trabalho são comparados com demais trabalhos da literatura, onde são
analisadas, a velocidade de processamento e o erro de estimação de movimento. Os resultados de
odometria visual são sintetizados na Tabela 13, listando os trabalhos mais representativos
utilizando câmeras na estimativa de movimento. As características analisadas são: ambiente do
experimento, método de processamento de imagens, tamanho da imagem, velocidade, unidade de
processamento, e erro de odometria visual.
TABELA 13 COMPARAÇÃO DE VELOCIDADES DE PROCESSAMENTO E ERRO
Autor Resultados apresentados
Ambiente de teste Método Tamanho da imagem Velocidade Erro
(OLSON et al.,
2003) Exterior/Marte Features Förstner
320x240
Estereo -------------
1.2%
20m
(MAKI et al., 2012)
Exterior/Marte DM 1024x1024
12 Estereo Cameras ------------- -------------
(PAZ; PINI; TARD, 2008)
Exterior /Interior
6-DOF SLAM
Matlab SIFT
Shi-Tomasi
320x240 Estereo
0.5FPS
(CPU)
-------------
140m/210m
(SAEEDI;
LAWRENCE;
LOWE, 2006)
Exterior , cidade e floresta
VO SUSAN KF 320x240
Trinocular
2.4FPS
CPU
0.4%
6m
(CORKE et al., 2007)
Submarino,coral VO
Harris Corner Detector 640x480
Estereo 70mm
-------------
CPU
5%
100m
(HOWARD,
2008)
Exteriores, estrada de tera floresta
VO DM
512x384 Estereo
60FPS
CPU
0.25%
400m
(NIST;
BERGEN, 2004)
Exteriores VO
Harris Corner Detector 720x240 Estereo
13FPS
(CPU)
4.86%
266.16m
(LIK; LUI;
JARVIS, 2010) Interior
VO Haar Wavelet, Oprical Flow
e SURF
320x240
Omni
30FPS
(GPU)
5.58%
16.95m
(CLIPP; FRAHM;
POLLEFEYS,
2010)
VO 1224x1024
Estereo
37.1FPS
(GPU)
0.6%
51.2m
(LEE; KIM;
MYUNG, 2012) Interior Kinect
640x480
20FPS
(CPU)
-------------
(DRYANOVSKI et al., 2013)
Interior DM RGB 320x240 30FPS
(CPU) -------------
98
Autor Resultados apresentados
Ambiente de teste Método Tamanho da imagem Velocidade Erro
(STRASDAT; MONTIEL;
DAVISON,
2010)
Exterior Optical flow 320x240
12FPS
(GPU)
(ANDREASSON
; DUCKETT; LILIENTHAL,
2007)
SIFT 1000x289
Omni -------------
0.33%
1400m
Experiemnto Helmet
Interior SURF 1280x980
6FPS
(GPU) -------------
0.34FPS
(CPU) -------------
Ciclo Basico
Exterior SURF 640x480
20.97FPS
(GPU) 5.73%
1000m 6,47FPS
(CPU)
Parça da Paz Exterior SURF 640x480
19,95FPS
(GPU) 5,86%
727m
5,08FPS
(CPU)
Via Museu Exterior SURF 640x480
39FPS
(GPU) 7,2%
500m 3FPS
(CPU)
Corredo
3D Max
Simulação
Interior SURF 640x480
30
(GPU) 5,06%
22,5m 3
(CPU)
a. Alguns trabalhos não disponibilizam os métodos ou especificações dos elementos utilizados.
O trabalho de (CORKE et al., 2007) utilizou o algoritmo Harris Corner Detector para a
identificação de pontos de interesse em imagens de 640x480 pixels atingindo um erro na
estimativa de movimento de 5% no percurso de 100m. Neste trabalho foram processadas imagens
do mesmo tamanho atingindo um erro de 5,73% (1000m) (caso do experimento Ciclo Básico) e
de 5,06% (22,5m) (experimento Corredor 3DMax).O trabalho de (NIST; BERGEN, 2004)
utilizou o algoritmo Harris Corner Detector para a identificação de pontos de interesse
processando imagens de 720x240 pixels, atingindo uma velocidade de 13FPS utilizando CPU e
um erro de 4,86%. Neste trabalho a maior velocidade com CPU foi de 6,47FPS no experimento
do Ciclo Básico atingindo um erro de 5,73%. O trabalho de (LIK; LUI; JARVIS, 2010)
apresentou uma velocidade de processamento de 30FPS e um erro de 5,58% em uma trajetória de
99
16,95m. Estes resultados são próximos aos resultados obtidos neste trabalho. Com uma
velocidade de processamento de 30FPS no experimento Via Museu e um erro de 7,2%.
O trabalho de (DRYANOVSKI et al., 2013) apresenta outra proposta de odometria visual,
utilizando métodos diretos para estimativa de movimento e utilizando a CPU. Dryanovski atingiu
uma velocidade de processamento de 30FPS. Em contraste, neste trabalho a velocidade média
utilizando CPU foi de 3FPS.
100
Conclusões
A localização pela odometria visual foi investigada e implementada. Um método robusto
para a localização num ambiente desconhecido é proposto, utilizando visão. O método utilizou
câmeras estereoscópicas, filtro de Kalman e GPUs, como método consistiu também na fusão de
estimativas de movimento dos encoders e do GPS através do filtro de Kalman. O erro médio em
um percurso de 1km foi de 4,39%.
Um sistema de visão estereoscópica foi montado utilizando duas câmeras Guppy PRO
FireWire. Vídeos estereoscópicos foram capturados em quatro diferentes ambientes. As
resoluções de imagem variaram de 640x480 e 1280x96 pixels, mantendo a sincronização entre as
imagens direita e esquerda. A câmera proposta permitiu a montagem de lentes de 9mm. Esta
câmera foi calibrada utilizando os parâmetros de calibração das câmeras estereoscópicas obtidos
através das técnicas proposta pelos autores no trabalho (KURKA et al., 2013).
Uma nova técnica de filtragem selecionou as melhores referências nos ambientes para
estimativa de movimento. Esta filtragem foi implementada em duas seções do algoritmo de
odometria visual. Na primeira foram filtrados os pontos correlacionados nas imagens através de
uma janela. Na segunda parte, os pontos de referência no espaço euclidiano são filtrados,
excluído os pontos que apresentaram um deslocamento fora da media.
O algoritmo de odometria visual foi executado em três unidades GPU atingindo uma
velocidade de processamento de 30FPS (tempo real). Para isto, foram utilizadas as bibliotecas
SURF de OpenCV e a implementação em CUDA dos algoritmos de filtragem e triangulação de
pontos. A velocidade de processamento quando o algoritmo é executado na GPU foi 9 vezes a
velocidade da CPU. O desempenho do algoritmo nas GPUs moveis energizadas pelas baterias foi
testado, apresentando uma queda do 80% na velocidade de processamento em relação à
energização pela tomada.
A plataforma robótica Seekur Jr, foi equipada com sensores extrospectivos : Laser2D, Laser
3D, câmeras estereoscópicas e GPSs. Estes sensores foram avaliados em quatro ambientes de
navegação. O filtro de Kalman fundiu as estimativas de localização concorrentes, diminuindo o
erro cumulativo do algoritmo de odometria visual em 10 e 20 vezes nos experimentos Praça da
Paz e Ciclo Básico.
101
O formato circular do Ciclo Básico foi utilizado como plataforma de calibração dos sensores
e algoritmos de estimativa de movimento. O erro do GPS Trimble apresentou poucas incertezas.
No entanto a perda do sinal em alguns instantes acrescentaram o erro no experimento Ciclo
Básico atingindo uma incerteza de 4,6m. No experimento da Praça da Paz o GPS Garmin teve um
incerteza de 7,1m. A fusão de informação entre o GPS e uma odometria é suficiente para estimar
o movimento nos intervalos nos que o GPS perde o sinal. O erro cumulativo das odometrias é
corrigido com a localização pelo GPS.
Estes experimentos concluíram que a localização e a estimativa de movimento não podem
depender só de um sistema ou sensor. A redundância de informação é necessária para garantir
uma informação confiável.
O presente trabalho possui aplicações na navegação de robôs autônomos em ambientes
exteriores. A proposta de odometria visual fundida com o GPS apresenta-se suficientes para a
localização correta do robô, obtendo a informação essencial para controle e planejamento de
trajetórias.
Trabalhos Futuros
O erro cumulativo da odometria visual foi corrigido neste trabalho com a fusão da estimativa
do GPS. A sugestão para trabalhos futuros é a correção deste erro com um sistema de
relocalização visual. A posição representada por uma imagem estereoscópicas é correlacionada
com um mapa de imagens previamente construído.
O uso da GPU em aplicações de odometria visual e processamento de tempo real requer de
uma fonte de alimentação de 230W. As sugestões para trabalhos futuros são a adaptação de uma
fonte extra de energia na plataforma robô Seekur Jr, ou utilizar a nova geração de GPUs de
sistemas embarcados Nvidia TEGRA .
O algoritmo de odometria visual apresentou restrições quando não existem texturas no
campo de visão das câmeras. A sugestão para trabalhos futuros é a substituição das lentes de
9mm por lentes omnidirecionais ou olho de peixe.
102
O algoritmo de odometria visual pode ser testado na estimativa de movimento de outras
plataformas robóticas. A sugestão para trabalhos futuros é a estimativa do movimento de um
manipulador tipo ARM utilizando visão, em inglês "Visual servoing".
Vídeos Compartilhados
Paz & CB: https://www.youtube.com/watch?v=j0zJY8HlxnE
Via Museu: https://www.youtube.com/watch?v=FZAvz2LSTkc
Ipin 2013: https://www.youtube.com/watch?v=pUVL-17ub9M&list=UUiqLFHlQqESVgTsAlriap_A
103
Referências
ADAM, A.; MEMBER, S.; RIVLIN, E. Fusion of Fixation and Odometry for Vehicle
Navigation. IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS—PART
A: SYSTEMS AND HUMANS, v. 29, n. 6, p. 593–603, 1999.
ANDREASSON, H.; DUCKETT, T.; LILIENTHAL, A. Mini-SLAM : Minimalistic Visual
SLAM in Large-Scale Environments Based on a New Interpretation of Image
SimilarityIEEE International Conference on Robotics and Automation. Anais...2007
ANTHONY STENTZ, HERMAN HERMAN, A. K. . CHIMP, the CMU Highly Intelligent
Mobile Platform. Journal of Field Robotics, v. 32, p. 209–228, 2015.
BAK, A. et al. Multi-sensor localization - Visual Odometry as a low cost proprioceptive sensor.
2012 15th International IEEE Conference on Intelligent Transportation Systems, p. 1365–
1370, set. 2012.
BAY, H. et al. Speeded-Up Robust Features ( SURF ). Computer vision–ECCV, n. September,
2006.
BEDKOWSKI, J.; MASLOWSKI, A. On-line data registration in OUTDOOR environment. 2011
16th International Conference on Methods & Models in Automation & Robotics, p. 266–
271, ago. 2011.
BERNARDES, V. G. Rastreamento de alvo móvel em mono-visão aplicado no sistema de
navegação autônoma utilizando GPU Rastreamento de alvo móvel em mono-visão aplicado
no sistema de navegação autônoma utilizando GPU. [s.l.] UNICAMP, 2010.
BONATO, V. Proposta de uma arquitetura de hardware em FPGA implementada para
SLAM com multi-câmeras aplicada à robótica móvel. [s.l.] USP - São Carlos, 2007.
BOTELHO, S. S. D. C. et al. Appearance-based odometry and mapping with feature descriptors
for underwater robots. Journal of the Brazilian Computer Society, v. 15, n. 3, p. 47–54, set.
2009.
104
BRADSKI, G. OpenCV 2.4.2Dr. Dobb’s Journal of Software Tools, , 2000.
CASTELLANOS, J. A.; NEIRA, J. Multisensor Fusion for Simultaneous Localization and Map
Building. IEEE TRANSACTIONS ON ROBOTICS AND AUTOMATION, v. 17, n. 6, p.
908–914, 2001.
CASTILLO, J. et al. Proposal of a Brain Computer Interface to command an autonomous
car5th ISSNIP-IEEE Biosignals and Biorobotics Conference (2014): Biosignals and Robotics for
Better and Safer Living (BRC). Anais...IEEE, maio 2014Disponível em:
<http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=6880969>
CLIPP, B.; FRAHM, J.-M.; POLLEFEYS, M. Parallel, real-time visual SLAM. 2010 IEEE/RSJ
International Conference on Intelligent Robots and Systems, p. 3961–3968, out. 2010.
CORKE, P. et al. Experiments with Underwater Robot Localization and TrackingIEEE
International Conference on Robotics and Automation. Anais...2007
COUTO, L. N. Sistema para localização robótica de veículos autônomos baseado em visão
computacional por pontos de referência. [s.l.] USP – São Carlos, 2012.
DE LIMA, D. A.; PEREIRA, G. A. S. Navigation of an Autonomous Car Using Vector Fields
and the Dynamic Window Approach. Journal of Control, Automation and Electrical Systems,
v. 24, n. 1-2, p. 106–116, 7 mar. 2013.
DEEN, R. G.; LORRE, J. J. Seeing in Three Dimensions: Correlation and Triangulation of Mars
Exploration Rover Imagery. 2005 IEEE International Conference on Systems, Man and
Cybernetics, v. 1, p. 911–916, [s.d.].
DELGADO, J. V., KURKA, P.R.G, FERREIRA, L. O. S. Processing speed test of Stereoscopic
vSLAM in an Indoors environment. Montbéliard,International Conference on Indoor
Positioning and Indoor Navigation, n. October, p. 119–122, 2013.
DRYANOVSKI, I. et al. Fast Visual Odometry and Mapping from RGB-D DataIEEE
International Conference on Robotics and Automation (ICRA). Anais...2013
105
FALLON, M. et al. An Architecture for Online Affordance-based Perception and Whole-body
Planning. Journal of Field Robotics, v. 7, n. PART 2, p. 229–254, 2015.
FERNANDA, M.; RUIZ, R. Desenvolvimento de um Sistema de Localização Híbrido para
Navegação Autônoma de Veículos Terrestres em Ambiente Simulado. [s.l.] UNICAMP,
2014.
FERNANDES, L. C. et al. CaRINA Intelligent Robotic Car: Architectural design and
applications. Journal of Systems Architecture, v. 60, n. 4, p. 372–392, abr. 2014.
FISCHLER, M. A.; BOLLES, R. C. Random Sample Consensus: A Paradigm for Model Fitting
with Apphcatlons to Image Analysis and Automated Cartography. Communications of the
ACM, v. 24, n. 6, 1981.
GÖHRING, D. et al. Semi-autonomous car control using brain computer interfaces. Intelligent
Autonomous Systems 12, p. 393–408, 2013.
GUIZILINI, V. C. Localização E Mapeamento Simultâneos Com Auxílio Visual
Omnidirecional. [s.l.] Escola Politécnica da Universidade de São Paulo, 2008.
HOANG, V. et al. Localization estimation based on Extended Kalman filter using multiple
sensorsIECON 2013 - 39th Annual Conference of the IEEE Industrial Electronics Society.
Anais...IEEE, 2013
HOWARD, A. Real-time stereo visual odometry for autonomous ground vehicles2008
IEEE/RSJ International Conference on Intelligent Robots and Systems. Anais...Ieee, set.
2008Disponível em: <http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=4651147>
HUI FANG, M. Y. Ground-Texture-Based Localization for Intelligent Vehicles. IEEE
TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS, v. 10, n. 3, p.
463–468, 2009.
KALMAN, R. E. A New Approach to Linear Filtering and Prediction Problems. Transactions of
the ASME-Journal of Basic Engineering, v. 82, n. Series D, p. 35–45, 1960.
106
KONOLIGE, K.; AGRAWAL, M. FrameSLAM: From Bundle Adjustment to Real-Time Visual
Mapping. IEEE Transactions on Robotics, v. 24, n. 5, p. 1066–1077, out. 2008.
KURKA, P. R. G. et al. Automatic estimation of camera parameters from a solid calibration box.
Journal of the Brazilian Society of Mechanical Sciences and Engineering, v. 35, n. 2, p. 93–
101, 11 abr. 2013.
LEE, D.; KIM, H.; MYUNG, H. GPU-based real-time RGB-D 3D SLAM. 2012 9th
International Conference on Ubiquitous Robots and Ambient Intelligence (URAI), n. Urai,
p. 46–48, nov. 2012.
LIK, W.; LUI, D.; JARVIS, R. A Pure Vision-based Approach to Topological
SLAMIEEE/RSJ International Conference on Intelligent Robots and Systems. Anais...2010
LOWE, D. G. Distinctive Image Features from Scale-Invariant Keypoints. International
Journal of Computer Vision, v. 60, n. 2, p. 91–110, nov. 2004.
MAKI, J. et al. The Mars Science Laboratory Engineering Cameras. Space Science Reviews, v.
170, n. 1-4, p. 77–93, 10 maio 2012.
MALYAVEJ, V. et al. Pose Estimation of Unmanned Ground Vehicle based on Dead-
reckoning / GPS sensorECTI-CON 6th International Conference. Anais...2009
MIRISOLA, L. G. B. et al. Validação experimental de um veículo robótico terrestre para
ambientes externos lX SBAI – Simpósio Brasileiro de Automação Inteligente. Anais...2011
MITSUHASHI, M.; KURODA, Y. Mobile robot localization using place recognition in outdoor
environments with similar scenes. 2011 IEEE/ASME International Conference on Advanced
Intelligent Mechatronics (AIM), p. 930–935, jul. 2011.
MOBILE ROBOTS. Seekur Jr. Disponível em:
<http://www.mobilerobots.com/Libraries/Downloads/SeekurJr-SKRJ-RevA.sflb.ashx>. Acesso
em: 20 jan. 2015.
107
NEMRA, A. et al. Adaptive Iterative Closest SURF for visual scan matching, application to
Visual odometry. 3rd International Conference on Systems and Control, p. 927–932, out.
2013.
NEWCOMBE, R. A. et al. KinectFusion: Real-time dense surface mapping and tracking. 2011
10th IEEE International Symposium on Mixed and Augmented Reality, p. 127–136, out.
2011.
NIST, D.; BERGEN, J. Visual OdometryIEEE Computer Society Conference on Computer
Vision and Pattern Recognition (CVPR’04). Anais...2004
OLSON, C. F. et al. Rover navigation using stereo ego-motion. Robotics and Autonomous
Systems, v. 43, n. 4, p. 215–229, jun. 2003.
PARRA, I. et al. Visual odometry and map fusion for GPS navigation assistance. Proceedings -
ISIE 2011: 2011 IEEE International Symposium on Industrial Electronics, p. 832–837,
2011.
PARRA-TSUNEKAWA, I.; RUIZ-DEL-SOLAR, J.; VALLEJOS, P. A Kalman-filtering-based
Approach for Improving Terrain Mapping in off-road Autonomous Vehicles. Journal of
Intelligent & Robotic Systems, v. 78, n. 3-4, p. 577–591, 1 ago. 2014.
PAUDEL, D. P. et al. 2D-3D camera fusion for visual odometry in outdoor environments. 2014
IEEE/RSJ International Conference on Intelligent Robots and Systems, n. Iros, p. 157–162,
set. 2014.
PAZ, L. M.; PINI, P.; TARD, J. D. Large-Scale 6-DOF SLAM With Stereo-in-Hand. 946 IEEE
TRANSACTIONS ON ROBOTICS, v. 24, n. 5, p. 946–957, 2008.
SAEEDI, P.; LAWRENCE, P. D.; LOWE, D. G. Vision-Based 3D Trajectory Tracking for
Unknown Environments. Robotics, IEEE Transactions on, v. 22, n. 1, p. 119–136, 2006.
SALVI, J. et al. Visual SLAM for underwater vehicles using video velocity log and natural
landmarks. Oceans 2008, p. 1–6, 2008.
108
SAMPAIO, R. C. B. et al. FVMS : A Novel SiL Approach on the Evaluation of Controllers
for Autonomous MAVAerospace Conference, 2013 IEEE. Anais...2013
SANDERS, JASON, AND E. K. CUDA by example: an introduction to general-purpose
GPU programming. [s.l.] Addison-Wesley Professional, 2010.
SANTANA, A. M.; MEDEIROS, A. A. D. DE. Localização e Mapeamento Simultâneos de
Ambientes Planos Usando Visão Monocular e Representação Híbrida do Ambiente . André
Macêdo Santana. [s.l.] UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
CENTRO, 2011.
SANTIAGO, G. S. Navegação Cooperativa de um Robô Humanóide e um Robô com Rodas
usando Informação Visual. [s.l.] UFRN, 2008.
SANTOS, G. L. Localização de Robôs Móveis Autônomos Utilizando Fusão Sensorial de
Odometria e Visão Monocular. [s.l.] UFRN, 2010.
SILVEIRA, G. Uma revisao das tecnicas de SLAM visual. CTI, 2010.
SILVEIRA, G.; MALIS, E. Real-time Visual Tracking under Arbitrary Illumination
ChangesComputer Vision and Pattern Recognition. CVPR’07. Conference on. IEEE.
Anais...2007
SMITH, R.; SELF, M.; CHEESEMAN, P. Estimating Uncertain Spatial Relationships in
Robotics. Springer New York, p. 167–193, 1990.
SOUZA, R. et al. A restful platform for networked robotics. 2013 10th International
Conference on Ubiquitous Robots and Ambient Intelligence (URAI), p. 423–428, out. 2013.
STRASDAT, H.; MONTIEL, J. M. M.; DAVISON, A. J. Scale Drift-Aware Large Scale
Monocular SLAM. Robotics: Science and Systems, v. 2 N.3, p. 5–13, 2010.
SUJAN, V. A.; MEGGIOLARO, M. A.; BELO, F. A. A New Technique In Mobile Robot
Simultaneous Localization. Revista Controle & Automação, v. 17, n. 2, 2006.
109
TAVARES, D. M. Ferramentas Computacionais para Robôs Móveis Autônomos. [s.l.]
UNICAMP, 2004.
VOIGT, R. Hardware Features Ensenso N10 – Stereo 3D Camera. Disponível em:
<http://www.ensenso.com/>. Acesso em: 30 jan. 2015.
WANG, W.; XIE, G. Online High-Precision Probabilistic Localization of Robotic Fish Using
Visual and Inertial Cues. IEEE Transactions on Industrial Electronics, v. 62, n. 2, p. 1113–
1124, fev. 2015.
WEI, L.; CAPPELLE, C.; RUICHEK, Y. Unscented information filter based multi-sensor data
fusion using stereo camera, laser range finder and GPS receiver for vehicle localization. 2011
14th International IEEE Conference on Intelligent Transportation Systems (ITSC), p.
1923–1928, out. 2011.
WEI, L.; CAPPELLE, C.; RUICHEK, Y. Horizontal/vertical LRFs and GIS maps aided vehicle
localization in urban environment. 16th International IEEE Conference on Intelligent
Transportation Systems (ITSC 2013), n. Itsc, p. 809–814, out. 2013a.
WEI, L.; CAPPELLE, C.; RUICHEK, Y. Camera/Laser/GPS Fusion Method for Vehicle
Positioning Under Extended NIS-Based Sensor Validation. IEEE Transactions on
Instrumentation and Measurement, v. 62, n. 11, p. 3110–3122, nov. 2013b.
ZHU, Z. et al. High-Precision Localization Using Visual Landmarks Fused with Range
DataComputer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on. Anais...2011
110
Apêndice: Algoritmos
Algoritmo 0 Identificação do ponto de interesse SURF
6. Integração da imagem
7. Análise de espaço e escala
8. Localização de ponto de interesse
9. Orientação do ponto
10. Construção do descritor
Algoritmo 1 RANSAC
1. Selecionar o conjunto de pontos mínimos para determinar o modelo.
2. Estimar o modelo.
3. Reprojeta o conjunto de pontos através do modelo e determinar as correlações com a
tolerância preestabelecida 𝜖.
4. Se os pontos correlacionados não superam o limite preestabelecido 𝜏, o modelo é
recalculado filtrando o conjunto de pontos.
5. Novamente são executados os passos 1 até 5 (Maximo N vezes)
Algoritmo 2 Filtro de Profundidade
1. Selecionar os pontos mínimos para determinar o modelo.
2. Estimar o modelo.
3. Determinar quantos pontos são correlacionados com
111
Apêndice: Publicações realizadas
DELGADO, J. V; KURKA, PAULO R; “The use of a Graphic Processing Unit (GPU) in a
Real Time Visual Odometry Application”. In: 45th
IEEE/IFIP International Conference on
Dependable Systems and Networks (DSN 2015), Rio de Janeiro, June 2015, Brazil.
KURKA, P. R. G. ; DELGADO, J. V. ; MINGOTO, C. R. ; ROJAS, O. E. R. . “Automatic
estimation of camera parameters from a solid calibration box”; Journal of the Brazilian Society of
Mechanical Sciences and Engineering , v. 35, p. 93-101, 2013.
DELGADO, J. V ; KURKA, P. R. G. ; FERREIRA, L. O. S. . “Processing speed test of
Stereoscopic vSLAM in an Indoors environment. In: International Conference on Indoor
Positioning and Indoor Navigation”, 2013, Montbéliard. IPIN 2013 Proceedings. France:
Sciencesconf, 2013. v. 1. p. 119-122.
KURKA, P.; DIOGENES, L.; PEREIRA, F.; DELGADO, J. “Assessment Of Uncertainties
In The Control Of Traje Ctory Of A Robot Using Image Information”. In: Robocontrol 2012,
2012, Bauru, SP. Workshop Robocontrol (UNESP. Baurú), 2012. p. 1-9.
DELGADO, V. JAIME ; KURKA, PAULO R. ; CARDOZO, ELERI . “Visual odometry in
mobile robots”. In: 2011 IEEE IX Latin American Robotics Symposium and IEEE Colombian
Conference on Automatic Control (LARC), 2011, Bogota. IX Latin American Robotics
Symposium and IEEE Colombian Conference on Automatic Control, 2011 IEEE. p. 1-4.