6
Omnidirectional Vision Architecture for Embedded Robot Navigation with Raspberry Pi Anderson Amorim do Nascimento, Paulo César Machado de Abreu Farias Departamento de Engenharia Elétrica Universidade Federal da Bahia UFBA Rua Aristides Novis, n.02, Federação - CEP: 40210-630 Salvador - BA, Brasil [email protected], [email protected] AbstractOmnidirectional vision systems are extremely useful tools for autonomous robot navigation. The wide field of view can help the robot move more efficiently between obstacles, demanding fewer observations of the scene. However, these systems require some high cost algorithms for image processing, which are difficult to run on small embedded applications. This paper describes a fully functional architecture for acquiring omnidirectional panoramas from a catadioptric camera. Captured images feed the visual flow for two implemented navigation tasks, object tracking by color and obstacle avoidance by floor detection. The model uses a Raspberry Pi as main processing device, along with a robot vehicle built with a Lego NXT Mindstorms kit. Architecture and implementation details are provided, as much as a performance analysis for indoor applications. Keywordsomnidirectional vision; robot navigation; embedded vision; raspberry pi; catadioptric camera I. INTRODUÇÃO Em 2010 o Google Inc. anunciou em seu blog oficial e no jornal The New York Times [1] o protótipo de um veículo autodirigido que deveria, dentro de poucos anos, substituir os automóveis tradicionais. Acompanhando a tendência, outras grandes empresas do mercado automobilístico como a Toyota, a Mercedes e a Audi, também anunciaram projetos de veículos de navegação parcial ou totalmente autônoma. Pesquisas em navegação autônoma também têm sido aplicadas em veículos aéreos (drones) [2], embarcações subaquáticas [3], sondas espaciais [4] e em dispositivos domésticos de baixo custo como o robô aspirador de pó Roomba [5]. Em todos estes sistemas, a habilidade de navegar por si só depende essencialmente do quanto o veículo é capaz de ―sentir‖ o ambiente ao seu redor e tomar decisões de movimentação baseadas no que foi observado. Quanto mais informações o dispositivo puder extrair do ambiente a ser navegado, mais precisas podem ser as suas tomadas de decisão. Esta relação torna os sistemas de visão computacional extremamente vantajosos para sistemas de navegação, sobretudo os sem mapeamento. O principal apelo dos sistemas de visão, com relação às outras formas de sensoriamento, é o grande volume de informações (e.g. textura, cores, formas, presença ou ausência de objetos) que pode ser extraído de um único sensor. Algumas tarefas de navegação podem ser executadas com bastante eficiência utilizando visão computacional, atraindo uma grande variedade de projetos [6]. Como exemplo destas tarefas é possível citar algoritmos de identificação e desvio de obstáculos, localização do veículo, mapeamento 3D do ambiente e rastreamento de objetos de interesse. A capacidade de enxergar o espaço navegado e extrair o máximo de informações sobre ele aumenta a eficiência das tomadas de decisão. O volume de informações adquiridas também é diretamente proporcional ao campo de visão da câmera utilizada. Sistemas de visão omnidirecional, por exemplo, potencializam ainda mais a capacidade de observação do veículo, uma vez que, com uma única imagem, é possível visualizar todo o espaço ao seu redor. Objetos de interesse (e.g. marcações, obstáculos, limites de atuação) permaneçam mais tempo no campo de visão do robô, facilitando o cálculo de manobras e a identificação de pontos de referência. Uma lista detalhada de aplicações de visão omnidirecional pode ser encontrada em [7] e [8]. Embora os sistemas de visão computacional ofereçam inúmeras vantagens para aplicação em navegação, poucos estudos mencionam uma dificuldade inerente à sua aplicação em robótica embarcada: a complexidade das operações de manipulação de imagens e o custo computacional (i.e. consumo de energia, memória, tempo de processador, etc.) que ela acarreta [9][10][11][12]. Plataformas embarcadas de baixo custo como a CMUCam [13], embora ofereçam algumas ferramentas de pré-processamento de imagens e controle servo- visual, não comportam aplicações mais complexas (e.g. localização e mapeamento simultâneos, identificação dinâmica de obstáculos, etc.). Nestes casos as imagens capturadas pela câmera precisam ser enviadas para processamento em unidades de maior poder computacional, comprometendo o desempenho e aumentando os custos do projeto. Uma forma de contornar esta limitação é incorporar ao robô alguma plataforma embarcada de alto-nível como o Rasbperry Pi[14], ou o Intel Galileo [15]. Essas ferramentas possuem baixo consumo de energia (i.e. comparadas à alternativas como laptops e desktops) e suportam bibliotecas de software de alto nível para manipulação das imagens, como o OpenCV. Este trabalho propõe uma arquitetura de visão omnidirecional de baixo custo para navegação autônoma. A arquitetura é baseada em uma plataforma Raspberry Pi B, equipado com um módulo de vídeo (câmera), e um veículo Proceedings of XI Workshop de Visão Computacional October 05th07th, 2015 370

H October 05thH07th, 2015 Omnidirectional Vision ... uma câmera comum apontada para um espelho convexo. Nos modelos monocular e multicâmeras, são obtidos vários segmentos individuais

Embed Size (px)

Citation preview

Omnidirectional Vision Architecture for Embedded

Robot Navigation with Raspberry Pi

Anderson Amorim do Nascimento, Paulo César Machado de Abreu Farias

Departamento de Engenharia Elétrica

Universidade Federal da Bahia – UFBA

Rua Aristides Novis, n.02, Federação - CEP: 40210-630

Salvador - BA, Brasil

[email protected], [email protected]

Abstract— Omnidirectional vision systems are extremely

useful tools for autonomous robot navigation. The wide field of

view can help the robot move more efficiently between obstacles,

demanding fewer observations of the scene. However, these

systems require some high cost algorithms for image processing,

which are difficult to run on small embedded applications. This

paper describes a fully functional architecture for acquiring

omnidirectional panoramas from a catadioptric camera.

Captured images feed the visual flow for two implemented

navigation tasks, object tracking by color and obstacle avoidance

by floor detection. The model uses a Raspberry Pi as main

processing device, along with a robot vehicle built with a Lego

NXT Mindstorms kit. Architecture and implementation details

are provided, as much as a performance analysis for indoor

applications.

Keywords—omnidirectional vision; robot navigation; embedded

vision; raspberry pi; catadioptric camera

I. INTRODUÇÃO

Em 2010 o Google Inc. anunciou em seu blog oficial e no jornal The New York Times [1] o protótipo de um veículo autodirigido que deveria, dentro de poucos anos, substituir os automóveis tradicionais. Acompanhando a tendência, outras grandes empresas do mercado automobilístico como a Toyota, a Mercedes e a Audi, também anunciaram projetos de veículos de navegação parcial ou totalmente autônoma. Pesquisas em navegação autônoma também têm sido aplicadas em veículos aéreos (drones) [2], embarcações subaquáticas [3], sondas espaciais [4] e em dispositivos domésticos de baixo custo como o robô aspirador de pó Roomba [5].

Em todos estes sistemas, a habilidade de navegar por si só depende essencialmente do quanto o veículo é capaz de ―sentir‖ o ambiente ao seu redor e tomar decisões de movimentação baseadas no que foi observado. Quanto mais informações o dispositivo puder extrair do ambiente a ser navegado, mais precisas podem ser as suas tomadas de decisão. Esta relação torna os sistemas de visão computacional extremamente vantajosos para sistemas de navegação, sobretudo os sem mapeamento. O principal apelo dos sistemas de visão, com relação às outras formas de sensoriamento, é o grande volume de informações (e.g. textura, cores, formas, presença ou ausência de objetos) que pode ser extraído de um único sensor. Algumas tarefas de navegação podem ser executadas com bastante eficiência utilizando visão

computacional, atraindo uma grande variedade de projetos [6]. Como exemplo destas tarefas é possível citar algoritmos de identificação e desvio de obstáculos, localização do veículo, mapeamento 3D do ambiente e rastreamento de objetos de interesse.

A capacidade de enxergar o espaço navegado e extrair o máximo de informações sobre ele aumenta a eficiência das tomadas de decisão. O volume de informações adquiridas também é diretamente proporcional ao campo de visão da câmera utilizada. Sistemas de visão omnidirecional, por exemplo, potencializam ainda mais a capacidade de observação do veículo, uma vez que, com uma única imagem, é possível visualizar todo o espaço ao seu redor. Objetos de interesse (e.g. marcações, obstáculos, limites de atuação) permaneçam mais tempo no campo de visão do robô, facilitando o cálculo de manobras e a identificação de pontos de referência. Uma lista detalhada de aplicações de visão omnidirecional pode ser encontrada em [7] e [8].

Embora os sistemas de visão computacional ofereçam inúmeras vantagens para aplicação em navegação, poucos estudos mencionam uma dificuldade inerente à sua aplicação em robótica embarcada: a complexidade das operações de manipulação de imagens e o custo computacional (i.e. consumo de energia, memória, tempo de processador, etc.) que ela acarreta [9][10][11][12]. Plataformas embarcadas de baixo custo como a CMUCam [13], embora ofereçam algumas ferramentas de pré-processamento de imagens e controle servo-visual, não comportam aplicações mais complexas (e.g. localização e mapeamento simultâneos, identificação dinâmica de obstáculos, etc.). Nestes casos as imagens capturadas pela câmera precisam ser enviadas para processamento em unidades de maior poder computacional, comprometendo o desempenho e aumentando os custos do projeto. Uma forma de contornar esta limitação é incorporar ao robô alguma plataforma embarcada de alto-nível como o Rasbperry Pi[14], ou o Intel Galileo [15]. Essas ferramentas possuem baixo consumo de energia (i.e. comparadas à alternativas como laptops e desktops) e suportam bibliotecas de software de alto nível para manipulação das imagens, como o OpenCV.

Este trabalho propõe uma arquitetura de visão omnidirecional de baixo custo para navegação autônoma. A arquitetura é baseada em uma plataforma Raspberry Pi B, equipado com um módulo de vídeo (câmera), e um veículo

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

370

robô, montado a partir de um kit Lego NXT Mindstorms. Para avaliar o desempenho do projeto em uma aplicação de navegação, foram implementados um algoritmo de detecção de obstáculos e um algoritmo de rastreamento de objetos por cor. A Seção II discute os detalhes do módulo de visão omnidirecional e as técnicas para obtenção de um panorama retangular. A Seção III apresenta o modelo arquitetural do sistema e a comunicação entre os seus principais componentes. Na Seção IV são apresentados os algoritmos de detecção de obstáculos e rastreamento desenvolvidos neste projeto. Finalmente, as Seções V e VI apresentam os resultados dos experimentos realizados e uma discussão sobre eles.

II. VISÃO OMNIDIRECIONAL

A. Aquisição de Imagens Omnidirecionais

Uma imagem omnidirecional compreende um campo de visão horizontal de 360° ao redor da câmera. A partir delas, um robô pode localizar objetos em todo o seu entorno e calcular manobras até eles fazendo apenas uma captura. Imagens omnidirecionais também são menos sensíveis a variações rotacionais, o que facilita a implementação de tarefas de localização e posicionamento em robôs móveis. Há três maneiras tradicionais de obter um panorama omnidirecional [16]: monocular, com uma só câmera girando em torno de um eixo central e capturando segmentos da imagem final a cada passo; multicâmeras, com um arranjo circular de várias câmeras, onde cada uma é responsável pela captura de um segmento angular do panorama final; e catadióptrico, utilizando uma câmera catadióptrica, normalmente montada com uma câmera comum apontada para um espelho convexo.

Nos modelos monocular e multicâmeras, são obtidos vários segmentos individuais do panorama final. Cada segmento cobre uma seção angular do campo de visão total. Os segmentos são concatenados entre si através de um processo chamado image stitching [17]. O produto da concatenação é um panorama retangular de alta resolução (i.e. soma das resoluções individuais menos as áreas de interseção entre segmentos adjacentes) que serve de entrada para o fluxo visual de controle do robô. Estes modelos de aquisição possuem algumas limitações importantes com relação ao tempo de aquisição e montagem de um panorama. O modelo monocular, por exemplo, está limitado à velocidade de rotação do motor responsável pelo giro da câmera. Caso a velocidade seja lenta, a aplicação exige que a cena observada esteja totalmente imóvel, dificultando a sua aplicação em ambientes dinâmicos. O modelo multicâmeras, por sua vez, apresenta uma dificuldade relacionada à melhor forma de interligação entre as câmeras. O desempenho da aquisição de imagens é limitado pela velocidade das interfaces de comunicação (físicas e lógicas) entre elas [18]. Outro fator crítico para este segundo modelo, considerando sua aplicação em dispositivos embarcados de baixo custo, é o consumo de energia gerado pela utilização de várias câmeras.

Um modelo de câmera catadióptrica é ilustrado na Fig. 1. Com relação às outras duas alternativas de aquisição, este modelo possui o melhor tempo de captura e o menor consumo de energia, uma vez que apenas uma câmera é necessária. Por outro lado, dentre as principais dificuldades associadas a esta arquitetura é possível citar: (1) o formato polar da imagem

obtida (como o mostrado na Fig. 2(a)); e as distorções associadas à ele; e (2) a baixa resolução da imagem final quando comparada com as imagens obtidas pelas duas primeiras estratégias [12][16].

B. Câmera Catadióptrica

Para este trabalho foi montado um protótipo de câmera

catadióptrica utilizando um espelho esférico e um módulo de

visão (câmera) de um Raspberry Pi B. O protótipo implementa

o modelo indicado na Fig. 1. A imagem obtida com este

arranjo, sem processamento, tem um formato polar (donut)

mostrado na Fig. 2 (a). A imagem original pode ser

―desenrolada‖, através de um processo denominado

dewarping, para a obtenção de um panorama retangular (Fig. 2

(b)). Os modelos para construção de câmeras catadióptricas e

o processo de dewarping são descritos com detalhes em [12] e

[16].

Figura 1 - Modelo de câmera catadióptrica com espelho convexo.

a)

b)

Figura 2 - a) Imagem polar obtida por uma câmera catadióptrica e b) Panorama omnidirecional

É possível mapear um ponto no mundo real P=(x,y,z) sobre um ponto específico na imagem (p=(u,v)), utilizando a transformação definida na Equação 1, onde é uma matriz contendo os parâmetros intrínsecos e extrínsecos da câmera catadióptrica (Equação 2) e T é uma matriz de projeção:

(1)

[ ] (2)

Utilizando o modelo de projeção unificada descrito em [19], é possível definir a transformação para um arranjo câmera-espelho, cujo modelo detalhado é ilustrado na Fig. 3. A primeira etapa da transformação consiste em projetar um ponto 3D sobre um ponto [ ] na superfície de um espelho esférico (Equação 3). Em seguida, o

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

371

ponto é projetado em um ponto do plano da imagem, levando em consideração os parâmetros da câmera (Equações 4 e 5).

Figura 3 - Modelo de projeção unificada para um espelho esférico. (Extraído

de [20])

[ ] [

⁄ √ ] (3)

[ ] [

] (4)

[ ] [

] [

] (5)

Os parâmetros da câmera são determinados durante a calibração do sistema, utilizando pontos e conhecidos. Todos os cálculos assumem que os centros focais da câmera e do espelho estão perfeitamente alinhados, havendo apenas uma translação no eixo entre os dois.

C. Visão Panorâmica

A realização de procedimentos de interpretação das imagens polares (e.g identificação de linhas de fuga, localização de objetos de interesse) pode ser facilitada caso ela seja convertida em um panorama retangular. O processo de conversão é denominado dewarping e consiste no mapeamento de círculos concêntricos da imagem polar em linhas horizontais do panorama retangular [20], como ilustrado na Fig. 4.

Figura 4 - Ilustração do processo de dewarping de uma imagem polar

Assumindo que os centros focais do espelho e da câmera estão alinhados, a transformação da imagem polar para o panorama retangular pode ser obtida através da Equação 6, onde é uma função linear de , variando entre 0 e , e R é uma função linear de , variando entre 0 e o raio total da imagem polar. Todos os pontos da imagem polar são mapeados em pontos do panorama.

(6)

O algoritmo de dewarping é da ordem , onde são, respectivamente, o número de linhas e colunas da imagem original. Quanto maior a resolução utilizada, mais tempo é necessário para realizar a transformação. Em um experimento feito com imagens RGB de resolução 640x640, com o raio externo R de 600 pixels, o protótipo implementado neste projeto consumiu um tempo médio de dewarping de 81 segundos. Este resultado tornaria inviável a aplicação da técnica em um sistema de navegação de tempo real. Felizmente, é possível dividir a execução do algoritmo em duas etapas independentes, uma de calibração e outra de transformação.

A etapa de calibração consiste em calcular duas matrizes de transformação de linhas e colunas para a imagem polar. As matrizes dependem exclusivamente das características da câmera, podendo ser aplicadas em qualquer imagem subsequente obtida por ela. Esta etapa é a mais complexa e leva um tempo médio de 80,5 segundos para imagens de 640x640 no Raspberry Pi B. Uma vez calculadas as matrizes, elas podem ser armazenadas e aplicadas na transformação das próximas imagens capturadas pela mesma câmera. O tempo médio do processo de transformação sem o cálculo das matrizes foi de 0,25 segundo.

III. ARQUITETURA DE NAVEGAÇÃO

Para avaliar a operação da câmera catadióptrica, integramos o protótipo a um robô móvel de tração diferencial construído com um kit Lego Mindstorms NXT [21]. O modelo conceitual da arquitetura é ilustrado na Fig. 5.

Figura 5 - Componentes arquiteturais do sistema de visão para navegação robótica

O módulo de aquisição de imagens é composto pelo conjunto câmera-espelho posicionado no topo do veículo. Cada imagem capturada é encaminhada para o Raspberry Pi, onde são executados os procedimentos de dewarping, identificação de obstáculos e rastreamento visual de um objeto. Após a interpretação das imagens, apenas as coordenadas de movimentação são enviadas para o módulo NXT.

A ligação entre o Raspberry Pi e o tijolo NXT é feita através de uma interface Bluetooth, mantendo a separação física entre os dois módulos. O protocolo de comunicação entre o Raspberry Pi e o veículo navegador, possibilita a substituição deste último sem alterar o sistema de visão. A Fig. 6 ilustra uma sequência de comunicações possíveis entre o software de visão, executado no Raspberry Pi, e o firmware de controle dos motores no NXT. A sequência implementa uma tarefa de rastreamento de um objeto. As informações sobre o posicionamento atual e orientação do robô são armazenadas no módulo Raspberry Pi, cabendo ao tijolo NXT somente a realização dos movimentos.

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

372

Figura 6 - Sequência de comunicação entre o processo de rastreamento de

objetos no Raspberry Pi e o veículo de navegação Lego NXT

IV. ALGORÍTMOS DE NAVEGAÇÃO

Para que um sistema de navegação seja considerado totalmente autônomo ele deve ser capaz de realizar três tarefas de navegação fundamentais: cálculo de trajetória, identificação de obstáculos e localização. O sistema final é uma soma de vários subsistemas responsáveis pela realização eficiente de cada uma destas tarefas. Este trabalho concentra atenção nas duas primeiras aplicações, deixando a implementação dos algoritmos de localização para os desdobramentos futuros. Como o sistema proposto visa atender aplicações embarcadas de pequeno porte, todo o processamento visual é feito dentro do sistema de visão e no menor tempo possível.

A. Rastreamento de objetos

Como mecanismo de definição de trajetória, foi implementado um algoritmo simples para rastreamento de objetos pela cor, como o descrito em [21]. O algoritmo detecta a presença de um objeto de cor pré-definida e devolve posição dele com relação à frente do robô. É necessário que objeto rastreado tenha uma cor destoante do resto do ambiente.

Inicialmente, as imagens analisadas são convertidas para o sistema de cores HSV, que oferece uma transição mais suave entre pixels adjacentes e uma menor sensibilidade à variações de iluminacão. Em seguida, a imagem é limiarizada de acordo com dois limites HSV (i.e. inferior e superior) previamente

configurados. Pixels fora desta região são convertidos para preto e os demais para branco. O contorno aproximado do objeto é detectado a partir da imagem binarizada. Finalmente, supondo que a câmera foi posicionada no topo do robô e apontada para a frente, a posição relativa do objeto pode ser determinada pela a distância (em pixels) até o centro da imagem. As etapas do procedimento para a identificação de um sólido vermelho são ilustradas na Fig. 7.

Após a detecção, o sistema de visão encaminha ao veículo Lego NXT uma série de comandos de movimentação para minimizar a distância entre a frente do robô e o objeto. O robô realiza a trajetória retilínia em direção ao objeto, parando a uma distância aproximada de 20cm. A profundidade entre o veículo e o alvo é estimada de acordo com a área que o objeto ocupa no panorama. Quanto maior a área ocupada pelo objeto, mais próximo o ele é considerado.

Figura 7 - Etapas do procedimento para rastreamento de objetos: a) captura; b)

limiarização; c) detecção

B. Detecção de Obstáculos

Para a tarefa de detecção de obstáculos foi implementado

um algoritmo baseado na identificação da cor do solo à frente

do robô, similar aos descritos em [22] e [23]. O algoritmo é

adequado para ambientes internos (indoor), com obstáculos

estáticos e onde a cor do solo é uniforme. Ele assume que os

primeiros pixels, a partir do centro inferior da imagem,

correspondem à cor do solo à frente do robô. Partindo da

última linha horizontal em direção ao topo, o algoritmo

classifica cada pixel comparando-o com a cor associada ao

solo. Pixels com valores HSV muito próximos aos do solo são

classificados como parte dele, sendo pintados de amarelo.

O resultado deste procedimento inicial é ilustrado na Fig.

8 (b). O solo é percebido como um grande componente conexo

da imagem, possibilitando estimar quanto espaço o robô tem à

sua frente. O passo seguinte é preencher um grid de ocupação

traçando linhas verticais a partir do ponto de origem do robô,

como mostra a Fig. 8 (c). O comprimento das linhas pode ser

utilizado para estimar a distância até os obstáculos.

a)

b)

c)

Figura 8 – Algoritmo de identificação de obstáculos: a) cena original; b)

identificação do solo c) linhas de cobertura do espaço livre ao redor do veículo.

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

373

Tanto o algoritmo de rastreamento de objetos, quanto o de

identificação do solo são extremamente sensíveis às variações

na iluminação do ambiente, uma vez que elas alteram os

valores dos pixels. Ambos são adequados para ambientes

internos com pouca variação de luminosidade e,

preferencialmente, com obstáculos estáticos.

V. RESULTADOS DE EXPERIMENTOS

Os algoritmos de detecção de obstáculos e rastreamento

de objetos foram implementados em Python 2.7, com o auxílio

da biblioteca OpenCV, e executados na Unidade Central de

Controle, um Raspberry Pi B. O sistema operacional utilizado

na unidade de controle foi um Linux, adaptato para Raspbery

Pi, chamado Raspbian, com a versão 3.18 do kernel.

Todo o processamento visual foi feito em tempo de

navegação, adquirindo e analisando imagens à medida que o

robô progredia na trajetória. Para atender a este requisito, um

fluxo constante de imagens precisa ser fornecido ao sistema de

decisão, com o menor atraso possível. O tempo de aquisição e

processamento visual é, portanto, o principal parâmetro de

desempenho da arquitetura e dos algoritmos utilizados.

A Fig. 9 (a) apresenta, separadamente, os tempos de

aquisição do panorama omnidirecinal, detecção de obstáculos

e rastreamento de objetos. Os valores foram medidos para

uma sequência de 20 capturas. A Fig. 9 (b), por sua vez,

apresenta o tempo total de processamento para cada imagem

capturada. Neste experimento foram obtidas imagens polares

com resolução de 640x640 pixels em RGB.

a)

b)

Figura 9 – Algoritmo de identificação de obstáculos por classificação da cor do solo.

Para o experimento de rastreamento de objetos, o sistema

foi posicionado em um cenário controlado, sobre um piso

emborrachado verde. O robô foi configurado para rastrear um

objeto vermelho no seu campo de visão e posicionar-se de

frente para ele. A rotação necessária para alinhar o robô é

calculada em função da distância (em pixels) do objeto até o

centro da imagem. A translação até ele, por sua vez, é

determinada em função área do objeto. A Fig. 10 (a)

apresenta o ponto de vista do robô para a detecção do sólido

vermelho posicionado à direita dele. Já a Fig. 10 (b) ilustra os

movimentos do robô durante o processo.

a)

b)

Figura 10 – Rastreamento de um objeto vermelho posicionado à direita do

robô

Para aumentar a eficácia do algoritmo de detecção de

obstáculos foram definidas ―zonas seguras‖ no panoama

omnidirecional, equivalentes a uma distância de 20

centímetros do robô. As zonas são representadas como

pequenos trapézios em regiões específicas do panorama.

Quando alguma linha vertical traçada pelo algoritmo de

detecção termina dentro de uma ―zona segura‖ o sistema de

visão entende que aquela direção está ocupada e rotaciona o

robô para uma zona livre. A Fig. 11 ilustra o resultado do

procedimento para identificação de obstáculos. As direções

livres para movimentação são indicadas por um círculo azul.

Figura 11 – Detecção de obstáculos ao redor do robô móvel.

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

374

VI. CONCLUSÕES

O tempo médio transcorrido entre a aquisição da imagem

polar e a entrega das informações para o robô foi de

aproximadamente 1,8 segundos. Este intervalo é longo para

aplicações de navegação em tempo real em ambientes

dinâmicos. Nestes casos o robô precisa receber e interpretar

imagens enquanto se movimenta, exigindo fluxo de imagens a

uma taxa adequada à sua velocidade. O tempo médio de

processamento no protótipo desenvolvido é compatível com

aplicações em ambientes estáticos, ou onde o robô pode se

mover em baixavelocidade, fazendo pequenas paradas para

observação. Algoritmos de detecção e rastreamento mais

eficientes podem ser utilizados para melhorar o desempenho

do sistema.

Uma das principais dificuldades de processar panoramas

obtidos a partir de uma câmera catadióptrica é a resolução

final disponível. Comparados com alternativas de image

stitiching, a resolução dos panoramas catadióptricos dificulta a

localização de detalhes pequenos da cena. Além disso, a

alternativa de aumentar a resolução da imagem polar para

corrigir este problema pode comprometer o tempo de

aquisição e processamento. As distorções causadas pela

projeção do espelho esférico também precisam ser

contornadas em aplicações mais precisas de localização e

rastreamento.

Como os algoritmos utilizados detectam as cores do solo

e do objeto de interesse, alterações na iluminação do cenário

podem provocar resultados diferentes do esperado. Esta

sensibilidade às variações de iluminação dificulta a aplicação

do protótipo em ambientes externos. No entanto, a

flexibilidade oferecida pelo Raspberry Pi e a biblioteca

OpenCV permite a implementação de técnicas mais robustas

para navegação nestes cenários. A arquitetura desenvolvida é

funcional, versátil, simples e de baixo consumo, características

importantes para sistemas embarcados de pequeno porte.

REFERENCES

[1] MARKOFF, John. Google Cars Drive Themselves, in Traffic. New York Times, v. 9, 2010.

[2] BRISTEAU, Pierre-Jean et al. The navigation and control technology inside the ar. drone micro uav. In: 18th IFAC World Congress. 2011. p. 1477-1484

[3] LEONARD, John J. et al. Autonomous underwater vehicle navigation. In:IEEE ICRA Workshop on Navigation of Outdoor Autonomous Vehicles. 1998.

[4] GROTZINGER, John P. et al. Mars Science Laboratory mission and science investigation. Space science reviews, v. 170, n. 1-4, p. 5-56, 2012.

[5] JONES, Joseph L. Robots at the tipping point: the road to iRobot Roomba.Robotics & Automation Magazine, IEEE, v. 13, n. 1, p. 76-78, 2006.

[6] DESOUZA, Guilherme N.; KAK, Avinash C. Vision for mobile robot navigation: A survey. Pattern Analysis and Machine Intelligence, IEEE Transactions on, v. 24, n. 2, p. 237-267, 2002.

[7] YASUSHI, Y. A. G. I. Omnidirectional sensing and its applications. IEICE Transactions on Information and Systems, v. 82, n. 3, p. 568-579, 1999.

[8] WINTERS, Niall et al. Omni-directional vision for robot navigation. In:Omnidirectional Vision, 2000. Proceedings. IEEE Workshop on. IEEE, 2000. p. 21-28.

[9] ROWE, Anthony; ROSENBERG, Charles; NOURBAKHSH, Illah. A low cost embedded color vision system. In: Intelligent Robots and Systems, 2002. IEEE/RSJ International Conference on. IEEE, 2002. p. 208-213.

[10] ROWE, Anthony G. et al. CMUcam3: An open programmable embedded vision sensor. 2007.

[11] SAWASAKI, Naoyuki et al. Embedded vision system for mobile robot navigation. In: Robotics and Automation, 2006. ICRA 2006. Proceedings 2006 IEEE International Conference on. IEEE, 2006. p. 2693-2698.

[12] ISHIGURO, Hiroshi. Development of low-cost compact omnidirectional vision sensors. In: Panoramic vision. Springer New York, 2001. p. 23-38.

[13] GOODE, A.; ROWE, A.; AGYEMAN, K. Cmucam project. 2012. Disponível em: http://www.cmucam.org/

[14] UPTON, Eben; HALFACREE, Gareth. Meet the Raspberry Pi. John Wiley & Sons, 2012

[15] RAMON, Manoel Carlos. Intel Galileo and Intel Galileo Gen 2. In: Intel® Galileo and Intel® Galileo Gen 2. Apress, 2014. p. 1-33.

[16] GRASSI JUNIOR, Valdir; OKAMOTO JUNIOR, Jun. Development of an omnidirectional vision system. Journal of the Brazilian Society of Mechanical Sciences and Engineering, v. 28, n. 1, p. 58-68, 2006.

[17] GLEDHILL, Duke et al. Panoramic imaging—a review. Computers & Graphics, v. 27, n. 3, p. 435-445, 2003.

[18] NASCIMENTO, A. A. ; FARIAS, P. C. M. A. . Omnidirectional Multicamera Architecture for Mobile Robot Navigation. In: WVC 2013 - IX Workshop de Visão Computacional, 2013, Rio de Janeiro. Anais do WVC 2013 - IX Workshop de Visão Computacional, 2013.

[19] GEYER, Christopher; DANIILIDIS, Kostas. A unifying theory for central panoramic systems and practical implications. In: Computer Vision—ECCV 2000. Springer Berlin Heidelberg, 2000. p. 445-461.

[20] GASPAR, José António da Cruz Pinto. Omnidirectional vision for mobile robot navigation. 2002. Tese de Doutorado. Universidade Técnica de Lisboa.

[21] JOY, Emmanuel; PETER, J. Dinesh. Tracking of Unique Colored Objects: A Simple, Fast Visual Object Detection and Tracking Technique. In:Informatics and Communication Technologies for Societal Development. Springer India, 2015. p. 149-156.

[22] ULRICH, Iwan; NOURBAKHSH, Illah. Appearance-based obstacle detection with monocular color vision. In: AAAI/IAAI. 2000. p. 866-871.

[23] LENSER, Scott; VELOSO, Manuela. Visual sonar: Fast obstacle avoidance using monocular vision. In: Intelligent Robots and Systems, 2003.(IROS 2003). Proceedings. 2003 IEEE/RSJ International Conference on. IEEE, 2003. p. 886-891.

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

375