• Nenhum resultado encontrado

Uso de visão estereoscópica para detecção de obstáculos na locomoção de um veículo autônomo

N/A
N/A
Protected

Academic year: 2021

Share "Uso de visão estereoscópica para detecção de obstáculos na locomoção de um veículo autônomo"

Copied!
35
0
0

Texto

(1)

UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL – UNIJUÍ

DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS

IVAN RICARDO SCHNEIDER

USO DE VISÃO ESTEREOSCÓPICA PARA DETECÇÃO DE OBSTÁCULOS NA LOCOMOÇÃO DE UM VEÍCULO-AUTÔNOMO

Santa Rosa 2012

(2)

IVAN RICARDO SCHNEIDER

USO DE VISÃO ESTEREOSCÓPICA PARA DETECÇÃO DE OBSTÁCULOS NA LOCOMOÇÃO DE UM VEÍCULO AUTÔNOMO

Trabalho de Conclusão de Curso apresentado ao curso de Ciência da Computação, do Departamento de Ciências Exatas e Engenharia, da Universidade Regional do Noroeste do Estado do Rio Grande do Sul, como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação.

Orientador: Me. Professor Rogerio Samuel de Moura Martins

Santa Rosa 2012

(3)

DEDICATÓRIA

Às pessoas mais importantes da minha

vida: meus pais, Geraldo e Glaci,

minhas irmãs, Deisi e Daiana e a minha

namorada Carlise, que confiaram no

meu potencial para esta conquista.

Obrigado

por

estarem

sempre

presentes a todos os momentos, me

dando apoio, carinho, incentivo, e

principalmente pelo amor de vocês.

(4)

AGRADECIMENTOS

Agradeço em primeiro lugar a Deus que iluminou o meu caminho durante esta caminhada.

Aos meus pais, Geraldo e Glaci que ao longo de todos estes anos me deram estrutura para que eu me tornasse a pessoa que sou hoje. Pela confiança e amor.

Às minhas irmãs, Deisi e Daianaque sempre acreditaram no meu trabalho e me ajudaram no que foi preciso.

A minha namorada Carlise, que esteve comigo ao longo desta caminhada. Por ter sido uma grande companheira, me incentivando e ajudando, dando o apoio necessário ao passar por momentos difíceis.

Aos meus amigos, Fábio e Carlos que durante estes últimos 5 anos se revelaram grandes amigos.

Em especial, agradeço ao meu orientador Rogério, que esteve sempre presente quando eu precisei, dando um rumo às minhas pesquisas e confiando no meu potencial, sem desanimar.

(5)

A motivação para a conquista não deve superar a motivação para o preparo

(6)

RESUMO

O desenvolvimento de veículos autônomos está avançando a passos largos, passando por veículos exploradores, de missões críticas e de risco, chegando a serem testados como forma de locomoção humana. Para controle autônomo, o uso de câmeras representa o estado da arte, por nos trazer informações detalhadas do ambiente, podendo se desejado utilizá-las para múltiplos propósitos além de controle veicular.Este trabalho propõe,como uso de visão estereoscópica e OpenCV, o desenvolvimento de uma aplicação capaz de detectar a distância entre um veículo autônomo e os objetos à frente dele. Para isso, foi criado um algoritmo que gera um mapa de disparidade a partir de um par de imagens estéreo e analisa os pixels da imagem resultante. Ao encontrar um pixel que representa uma distância crítica, o algoritmo ordena um desvio de rota ao veículo.

Palavras-chave: Veículo Autônomo, Visão Estereoscópica, OpenCV, Mapa de Disparidade.

(7)

ABSTRACT

The development of autonomous vehicles is advancing by wide steps, from explorer vehicles, that are for critical missions and missions of risk, coming to be tested like means of human locomotion. For autonomous control, the use of cameras represents the state of the art, for bringing us detailed information about the environment, which may be desired to use them for multiple purposes besides vehicular control.This academic work proposes, with the use of stereoscopic vision and “OpenCV”, the development of an application that can detect the distance between an autonomous vehicle and objects ahead of it. To do that, it was created an algorithm which generates a disparity map from a pair of stereo images and that analyzes the “pixels” of the resulting image. When the algorithm finds a pixel that represents a critical distance, it orders a detour to the vehicle route.

(8)

SUMÁRIO INTRODUÇÃO ... 12 1 OBJETIVOS ... 14 1.1 GERAL ... 14 1.2 ESPECÍFICOS ... 14 2 JUSTIFICATIVA ... 15 3 RECURSOS ... 16 4 REVISÃO BIBLIOGRÁFICA ... 17 4.1 A ROBÓTICA HOJE ... 17

4.2 O USO DE CÂMERAS NA NAVEGAÇÃO... 17

4.3 A VISÃO COMPUTACIONAL ... 19 4.4 MAPA DE DISPARIDADES ... 19 4.5 A BIBLIOTECA OPENCV ... 21 4.6 PONTE H ... 21 4.7 PORTA PARALELA ... 22 5 TRABALHOS RELACIONADOS ... 24 6 METODOLOGIA E PROCEDIMENTOS ... 26 6.1 DESENVOLVIMENTO DO ALGORITMO ... 26 CONCLUSÃO ... 33 REFERENCIAS BIBLIOGRAFICAS ... 34

(9)

LISTA DE FIGURAS

Figura 1 - Geometria idealizada para Visão Estéreo adaptado de Siegwart,

Nourbakhsh (2004). ... 18

Figura 2- Representação de uso de uma Ponte H ... 22

Figura 3 - Porta paralela ... 23

Figura 4 - Plataforma do projeto CARINA ... 24

Figura 5 - Chevrolet Astra, plataforma do projeto CADU ... 25

Figura 6 - Projeto Driving 4 u, (UNIFEI) ... 25

Figura 7 - Frames convertidos em escala de cinza ... 27

Figura 8 - Mapa de disparidades ... 28

Figura 9 - Fluxograma da execução do algoritmo ... 30

Figura 10 - Esquema elétrico da ponte H ... 31

Figura 11 - Visão geral da montagem do circuito ... 32 Figura 12 - Detalhe das pontes H ... Erro! Indicador não definido.

(10)

LISTA DE EQUAÇÕES

Equação 1 - Correspondência Estéreo ... 20 Equação 2 - Cálculo da profundidade ... 20

(11)

LISTA DE TABELAS

Tabela 1- Recursos necessários ... 16 Tabela 2 - Função dos pinos ... 31

(12)

12

INTRODUÇÃO

No ser humano, a visão tem um papel de extrema importância, seja na locomoção, na busca, na identificação de perigos, entre outros. A visão pode ser capaz de localizar pontos de interesse antes de qualquer outro modo de busca.

Sendo uma ferramenta de usabilidade elevada, a visão poderia ser empregada na computação como forma de deixar nossas máquinas mais autônomas. As pesquisas nesta área avançam a passos largos, atualmente temos veículos autônomos, ou semiautônomos, atuando nas áreas de exploração de ambientes hostis, desarmamento de bombas, exploração espacial, dentre outros.

Hoje quando se escuta a palavra robô não se pensa mais em uma máquina controlada remotamente, nem mesmo em algo com movimentos programados. O que se espera de um robô hoje é análise de ambiente e capacidade de escolhas. Para que isso ocorra é de extrema empregabilidade o uso de câmeras em sistemas computacionais.

Com o uso de uma câmera, se torna possível efetuar o processamento da imagem. Processamento de imagens é a técnica de trabalhar a imagem para adequá-la à nossa necessidade. Esta adequação muitas vezes inclui a conversão de formato e/ou tamanho, aplicação de filtros para remoção de ruídos provenientes do processo de aquisição da imagem, que muitas vezes ocorre por estar em ambientes com baixa luminosidade ou pela interferência de fatores externos.

Para se obter a relação de distância e profundidade dos objetos na imagem, podemos seguir o modelo de visão humana e utilizar duas câmeras para captar a imagem, possibilitando ao veículo situar-se dentro do ambiente e assim alcançar o seu objetivo. Esta técnica é chamada de estereoscopia.

(13)

13

Os sistemas de visão estereoscópica podem ser vistos como sendo dispositivos de captura cuja saída é um mapa de profundidade da cena observada. Este mapa, que pode ser denso ou esparso, é formado pela avaliação do deslocamento relativo na posição de elementos da cena, observados sob os pontos de vista de cada câmera que compõe o sistema. (STIVANELLO, 2008).

Após obter-se a imagem de um par de câmeras, e efetuar o processamento para adequação da imagem, é possível extrair dados destas imagens. Neste caso emprega-se a visão computacional. Conforme WANGENHEIM, visão computacional é o “conjunto de métodos e técnicas através dos quais sistemas computacionais podem ser capazes de interpretar imagens.”.

Para auxiliar no trabalho com estas imagens, a Intel Corporation desenvolveu uma biblioteca de programação chamada OpenCV (WILSON). Esta biblioteca conta com mais de 500 funções, que vão desde operações simples, como filtro de ruídos, até análise de movimentos e padrões. Neste trabalho foi utilizada a classe StereoBM, que tem por objetivo extrair um mapa de disparidade a partir de um par de imagens estéreo. A biblioteca é de código-aberto e está disponível gratuitamente para downloadon-line.

A proposta deste trabalho foi empregar estes sistemas de visão computacional no desenvolvimento de uma aplicação básica de controle autônomo de um veículo robótico. Este veículo localiza obstáculos no ambiente, e os mapeia, a fim de evitar o choque com os mesmos.

(14)

14

1 OBJETIVOS

1.1 GERAL

Aplicar o uso da visão estereoscópica na detecção de obstáculos no caminho de um veículo autônomo, a fim de oferecer-lhe meios de desviar e assim evitar o choque.

1.2 ESPECÍFICOS

• Consolidar conceitos sobre visão computacional; • Construir um robô capaz de sustentar um notebook; • Aplicar um algoritmo de visão computacional;

• Detectar os obstáculos no ambiente;

• Identificar a distância do robô para destes objetos; • Andar entre os objetos sem chocar-se neles; • Documentar e divulgar projeto.

(15)

15

2JUSTIFICATIVA

O grande objetivo da robótica está na criação de robôs completamente autônomos, que não necessitem da intervenção humana. Veículos autônomos podem substituir o ser - humano em trabalhos da indústria, no desarmamento de minas, em explorações espaciais, submarinas, e outros locais de difícil e perigoso acesso.

A procura por aplicações móveis de robótica está cada vez maior, e o uso de análise visual do contexto se torna um eficiente modo de interação com o ambiente. Além de fornecer informações detalhadas do ambiente em que está inserido, o uso de câmeras como sensores possui uma grande vantagem por ser um sensor passivo, que não interfere no ambiente, diferente de sonares, infravermelhos e outros. Outros fatores que devem ser levados em consideração é o baixo custo de um sistema de visão estereoscópica, e a precisão de um sistema visual bem implementado, que pode superar a precisão de outros tipos de sensores.

As câmeras possuem uma maior usabilidade, podendo-se aplicar em paralelo ao sistema de detecção, outras funcionalidades, como extração de imagens, se for do interesse do desenvolvedor.

(16)

16

3 RECURSOS

Tabela de recursos necessários para o desenvolvimento do veículo autônomo:

Tabela 1- Recursos necessários

Item Descrição Quantidade Valor Disponibilidade

1 Veículo Autônomo 1 Não Avaliado Construído

2 Câmeras 2 R$ 70,00 Adquirido

3 Cabo conversor USB-Paralelo 1 R$ 62,00 Adquirido

(17)

17

4 REVISÃO BIBLIOGRÁFICA

4.1 A ROBÓTICA HOJE

A robótica, hoje, vai desde veículos autônomos, ou semiautônomos, substituindo o homem em tarefas repetitivas, suscetíveis a erro, ou em tarefas associadas à resistência das pessoas, atuando nas áreas de exploração de ambientes hostis, desarmamento de bombas, zonas profundas dos mares, espaço, e condução de veículos robotizados. (GASPAR, 1994).

Para se movimentar, os robôs devem ter as habilidades de navegação, exploração, mapeamento e de auto localização. A navegação compõe a habilidade de se chegar ao destino sabendo-se sua localização e conhecendo o ambiente ao seu redor. Muitas vezes, a estrutura do ambiente não é dada ao robô, então é necessário explorá-lo e mapeá-lo, para criar um modelo representativo do ambiente e assim conseguir uma navegação satisfatória. Por fim, para localizar-se dentro deste ambiente mapeado, o robô precisa de um sistema de auto localização, integrando a percepção sensorial ao conhecimento previamente acumulado. (BELO, 2006).

4.2 O USO DE CÂMERAS NA NAVEGAÇÃO

Para proporcionar a interação com o ambiente, o uso de câmeras se torna uma boa prática, e o sistema de visão estereoscópica tem trazido bons resultados. Através de um sistema como este é possível extrair informações tridimensionais do ambiente em que o robô está inserido, servindo como base para orientação, na manipulação do ambiente, reconhecimento ou locomoção. (STIVANELLO, 2008).

A visão estereoscópica vem a ser uma analogia à visão do ser – humano. Duas lentes horizontalmente deslocadas capturam duas imagens similares, porém com um pequeno deslocamento entre posições relativas de partes locais de uma imagem da cena em relação à outra, dependendo da distância que estes componentes locais estão da câmera. Ao saber a diferença da posição de um ponto entre uma imagem e outra é possível aferir sua profundidade relativa. É dessa forma que a visão humana nos proporciona uma noção de profundidade. (MENDES, 2012).

(18)

18

No ser humano, como cada olho oferece imagem de um ângulo diferente, o cérebro acaba recebendo duas imagens discretamente dispares. Quando as une numa impressão visual única, a disparidade gera um efeito tridimensional. Esse fenômeno só é possível em virtude da mistura de informações das duas retinas, promovidas pelas fibras dos nervos óticos. (RAMOS, 2006).

Considerando-se um caso simplificado no qual duas câmeras são posicionadas com seus eixos ópticos paralelos e uma separação entre elas (SIEGWART, NOURBAKHSH, 2004), a idealização da geometria é vista na Figura 1.

Figura 1- Geometria idealizada para Visão Estéreo adaptado de Siegwart, Nourbakhsh (2004).

Um ponto sobre o objeto é descrito com as coordenadas (x,y,z) com relação à origem localizada entre as duas câmeras. A posição dos pontos que os raios luminosos projetam sobre a imagem das câmeras é representada em um sistema de coordenadas específico para cada uma: (xl, yl) para a câmera da esquerda, e (xr, yr) para a câmera da direita.

(19)

19

Conforme Stivanello (2008), a implementação da visão estereoscópica traz frequentemente consigo três problemas principais: calibração, correspondência e reconstrução.

Na calibração procura-se determinar os parâmetros que descrevem o sistema de aquisição utilizado. O problema da correspondência consiste em determinar qual elemento na imagem capturada sob um ponto de vista corresponde a um dado elemento na imagem capturada sob outro ponto de vista. Por sua vez, através da reconstrução procura-se recuperar a informação de profundidade com base nos parâmetros obtidos na etapa de calibração e nos pares de pontos correspondentes obtidos na etapa de correspondência. (STIVANELLO, 2008).

4.3 A VISÃO COMPUTACIONAL

Para trabalhar com o sistema estereoscópico, se faz necessário o uso de visão computacional. Este sistema procura emular a visão humana, possuindo como entrada uma imagem, porém a saída é a interpretação da imagem como um todo ou apenas parcial. (MARENGONI; STINGHINI, 2009).

Pode-se definir visão computacional como sendo um conjunto de algoritmos através dos quais sistemas baseados em computadores podem extrair informações dos pixels que compõem a imagem. (BERTHOLD, 1986).

Conforme (MARENGONI; SINGHINI, 2009), os processos de visão computacional frequentemente iniciam com o processamento de imagens. O espectro que vai do processamento de imagens até a visão computacional pode ser dividido em três níveis: baixo-nível, onde se encontram procedimentos de melhora visual da imagem em questão, tais como melhoria de brilho e contraste e redução de ruídos. Nível-médio, onde se encontram procedimentos como o de classificação dos objetos na imagem, particionamento da imagem em regiões, reconhecimento de padrões. E por fim os processos de alto-nível, que se relacionam as tarefas de cognição associadas à visão humana. (GONZALES, 2006).

4.4 MAPA DE DISPARIDADES

Disparidade é o termo utilizado para nomear a distância horizontal entre dois pixels correspondentes. Eles usualmente se encontram em posições diferentes nos frames ou pode acontecer que o pixel não tenha seu correspondente. Determinar o

(20)

20

valor da disparidade é essencial para se determinar a distância dos objetos às câmeras. (BATISTA, REGIS, 2012).

Conforme Cheolkon (2011), os dados são organizados na forma de mapas de disparidades, que são vetores de informação que armazenam o valor da distância do pixel horizontal para cada coordenada de pixel da imagem. Podem ser representados também por uma imagem resultante de todas as diferenças entre os pixels que são os mapas de profundidade. Alguns problemas como oclusão podem dificultar a obtenção da disparidade.

O valor da disparidade entre a imagem da direita e da esquerda é obtido pelo Método de Correspondência Estéreo, demonstrado na equação 1.

Equação 1 - Correspondência Estéreo

= −

Disparidade é igual à diferença do valor de x da imagem esquerda para o valor de x da imagem da direita.

Uma vez determinado o valor da disparidade entre os pixelsda imagem, torna-se interessante converter estorna-ses dados em distâncias físicas (ZHANG, et al; 2010). Para se determinar a profundidade Zcom base nos valores de disparidade, é necessário conhecer parâmetros físicos das câmeras, como demonstrado na Equação 2:

Equação 2 - Cálculo da profundidade

=

Aonde B representa a distância entre as câmeras e f representa a distância focal de cada câmera. Os valores de B e fdevem ser descritos nas especificações de cada vídeo, pois sãovalores inerentes a eles levando em consideração a estruturade filmagem. (FENG, et al, 2011).

(21)

21

Segundo Batista, Regis (2012) convém ressaltar que o valor da disparidade dpode ser positivo negativo ou nulo. No caso de uma disparidadenula, entende-se que foi encontrada uma distância tal que já não se consegue distinguir uma diferença de posição, poisaquele ponto encontra-se na mesma posição para ambas as câmeras. Na disparidade positiva, a imagem será formada “para dentro” do plano do display, enquanto que a disparidade negativa será formada ”para fora”do plano do display.

4.5 A BIBLIOTECA OPENCV

Para trabalhar com estes processos está disponível gratuitamente na Internet, juntamente com o seu manual a biblioteca de programação OpenCV. Esta biblioteca implementa mais de 500 funções, que vão desde o baixo-nível (filtro de ruídos) até procedimentos complexos, como reconstrução 3D e reconhecimento de padrões. (MARENGONI; STINGHINI, 2009).

Conforme Marengoni; Stinghini (2009), “A biblioteca está dividida em cinco grupos de funções: Processamento de imagens; Análise estrutural; Análise de movimento e rastreamento de objetos; Reconhecimento de padrões e Calibração de câmera e reconstrução 3D”.

A OpenCV é uma biblioteca abrangente e estabelecida, comumente utilizada em aplicações de Interação Homem-Máquina (HCI), reconhecimento de características visuais, rostos e gestos, seguimento (outracking) de movimento e robótica móvel. Como tal, a biblioteca oferece implementações de diversas transformações, técnicas e operações sobre imagens, suporte de leitura e escrita para os principais formatos de vídeo e imagem, estruturas de dados auxiliares específicas para trabalho com imagens e funções de aprendizado de máquina, como suporte a redes neurais. (COUTO; 2012)

4.6 PONTE H

Ponte H é a denominação de um circuito elétrico desenvolvido de tal forma, que é possível direcionar corrente elétrica de duas formas para um motor DC (directcurrent ou corrente direta).

Para locomoção do veículo autônomo, serão utilizados 2 motores DC. Para controle dos motores, foi construída duas pontes H. O funcionamento destas

(22)

22

pontesé muito simples, e se dá através de duas entradas de sinais, que definem o sentido da rotação do motor. Baixo é possível conferir a representação de uso de uma ponte H.

Figura 2- Representação de uso de uma Ponte H

Fonte: PATSKO, 2006

Na imagem acima, é possível verificar a possibilidade de inversão do sentido de rotação do motor. Devido à forma de disposição dos componentes, se torna fácil acionar o motor no sentido necessário, apenas enviando sinais nas chaves correspondentes.

4.7 PORTA PARALELA

Para comunicação do algoritmo com a ponte H será utilizada uma porta paralela. A porta paralela é uma interface de comunicação entre o computador e um equipamento externo. Conforme MESSIAS (2006),quando a IBM (International Business Machines) criou seu primeiro computador pessoal, o conceito de porta paralela era a utilização dela para conectar o computador a impressoras. Pela facilidade de manipulação, esta porta é muito usada em projetos eletrônicos de automação e controle de outros equipamentos.

O esquema de comunicação da porta paralela, encontrado abaixo, na figura 3, nos mostra que a porta paralela possui 25 pinos, dos quais 12 são pinos de saída de dados do computador para o dispositivo externo.

(23)

Figura 3 - Porta paralela

Fonte: www.rogercom.com Fonte: www.rogercom.com

(24)

24

5 TRABALHOS RELACIONADOS

A detecção de obstáculos compõe uma das partes essenciais da navegação autônoma. Diversos métodos podem ser empregados nesta detecção, e a escolha de qual melhor se adequar, depende muitas vezes do ambiente em que se deseja navegar.

Técnicas de navegação autônomas, que antes eram empregadas somente em ambientes internos e controladas, estão ganhando espaço com suas constantes melhorias, e hoje são muitas vezes empregadas em ambientes externos, utilizando muitas vezes veículos automotores. (MENDES,2012).

No Brasil, os podemos citar como exemplo o projeto CARINA, sediado na universidade de São Paulo, no Laboratório de Robótica Móvel (LRM/IMC) (figura 4).

Figura 4-Plataforma do projeto CARINA

Na figura 5 pode ser visto o Carro Autônomo, conhecido como CADU, que utiliza um automóvel Chevrolet Astra como plataforma para o projetodesenvolvido pela Universidade de Minas Gerais (UFMG).

(25)

25

Figura 5 - Chevrolet Astra, plataforma do projeto CADU

Podemos citar ainda o projeto Driving 4 u(figura 6) desenvolvido pela Universidade Federal de Itajubá (UNIFEI), que utiliza um veículo Chevrolet Zafira como plataforma de experimentos.

(26)

26

6 METODOLOGIA E PROCEDIMENTOS

6.1 DESENVOLVIMENTO DO ALGORITMO

Para desenvolvimento deste trabalho, inicialmente foi utilizada a linguagem de programação Ce a biblioteca OpenCV, seus métodos e funcionalidades.

Para a captura em vídeo de ambas as câmeras, foi utilizada a classe do OpenCV VideoCapture. Esta classe implementa funcionalidades de captura de vídeo de câmeras ou arquivos.Abaixo no Quadro 1 é possível ver um trecho do código fonte responsável por iniciar a captura de vídeo das câmeras:

Quadro 1: Captura de vídeo a partir de câmeras

O próximo passo foi obter um frame de cada um dos vídeos. Para isso, o instante da imagem de vídeo é carregado em uma variável do tipo cvMat, que basicamente se trata de uma matriz.

Quadro 2: Obtenção de um frame do vídeo

A classe de geração do mapa de disparidade requer uma imagem em tons de cinza, e para isso é utilizada a classe de conversão de cores, nomeada cvtColor. A sintaxe do método construtor é: void cvtColor(InputArray src, OutputArray dst, int code), onde src é a imagem de entrada, dst é a imagem de saída com os mesmos tamanhos da imagem de entrada, e code é o código de conversão. Trazendo esta

VideoCapture capDireita(1);

if(!capDireita.isOpened()){

return -1;

printf("Câmera 1 não pode ser iniciada\n");

}

VideoCapture capEsquerda(2);

if(!capEsquerda.isOpened()){

return -1;

printf("Câmera 2 não pode ser iniciada\n");

}

Mat frameDireita; Mat frameEsquerda;

capDireita >> frameDireita; capEsquerda >> frameEsquerda;

(27)

27

classe para dentro do código fonte deste projeto, o código pode ser visto no Quadro 3, e a saída das duas imagens convertidas pode ser vista na Fiugura7.

Quadro 3: Conversão de cor dos frames.

Figura 7 - Frames convertidos em escala de cinza

Tendo os frames convertidos e prontos para os cálculos de disparidade, é preciso definir os parâmetros de cálculo, e posteriormente efetuar a chamada da função de disparidade, o que pode ser visto no Quadro 4:

Quadro 4: Cálculo da disparidade Mat pebEsquerda; Mat pebDireita;

cvtColor(frameDireita, pebDireita, CV_BGR2GRAY); cvtColor(frameEsquerda, pebEsquerda, CV_BGR2GRAY);

Mat disp; StereoBM bm; bm.state->preFilterCap = 31; bm.state->SADWindowSize = 5 bm.state->minDisparity = 0; bm.state->numberOfDisparities = numberOfDisparities; bm.state->uniquenessRatio = 15; bm.state->speckleWindowSize = 100; bm.state->speckleRange = 32; bm.state->disp12MaxDiff = 1; bm(pebDireita, pebEsquerda, disp);

(28)

28

Os parâmetros de cálculo para a posterior chamada do método podem ser definidos como:

• preFilterCap: Valor de truncamento de pixels;

• SADWindowSize: Tamanho do bloco de disparidade. Deve ser um número ímpar; • minDisparity: Valor disparidade mínima possível. Normalmente, é zero, mas, por vezes, algoritmos de retificação podem mudar imagens, de modo que este parâmetro precisa ser ajustado em conformidade;

• numberOfDisparities: Disparidade máxima menos disparidade mínima. O valor é sempre maior do que zero. Este valor deve ser divisível por 16;

• uniquenessRatio: Margem na percentagem em que o melhor valor da função custo deve "ganhar”. Normalmente é um valor entre 5 e 15;

• speckleWindowsSize:Tamanho máximo de regiões de disparidade lisas para remover manchas de ruído. Para remoção do ruído, foi definido o valor de 100; • speckleRange: Variação máxima da disparidade para cada um dos componentes; • disp12MaxDiff: Diferença máxima permitida, (em unidade inteira de pixel) para verificação de disparidade.

Depois de ter definido os parâmetros, é chamado o método de cálculo da disparidade, através da função StereoBM::StereoBM(). Esta função assume os parâmetros definidos anteriormente e efetua o cálculo da disparidade das duas imagens, retornando para uma matriz Mat a imagem das disparidades. O retorno da função pode ser vista na Figura 8.

(29)

29

Neste formato, o mapa de disparidades retorna um pixel preto em regiões onde não foi detectado disparidades, pixel branco em regiões onde foramcomputadas altas diferenças entre pixels (longe) e conforme ocorre aproximação, o pixel tende a ser mais escuro.

Seguindo esta condição de cor, para detecção de obstáculos próximos, definiu-se que qualquer pixel de cor (20,20,20) ou mais escuro, porém diferente de (0,0,0) está a uma distância crítica. Neste caso, é enviada corrente aos pinos D1, D2, D4 e D7, o que fará com que o motor da esquerda gire para frente, e o motor da direita gire para trás, efetuando um giro para direita.

Através de um laço de repetição que percorre a imagem, é identificada a cor de cada pixel e verificado se a condição de cor é cumprida. Para aperfeiçoar este processo, definiu-se que seria verificado um pixel a cada 5, e através de testes verificou-se que esta omissão não afetaria a confiabilidade do sistema. Abaixo é possível conferir a formação do laço de repetição, captura do pixel na posição corrente e o teste da cor do pixel.

Quadro 5: Verificação das cores da imagem.

Na figura 9 é possível verificar de forma gráfica o fluxo de processos executados pelo algoritmo.

for ( int y=0; y <disp8.size().height; y = y+5 )

for ( int x=0; x < disp8.size().width; x = x+5 ) {

Point3_<uchar>* p = disp8.ptr<Point3_<uchar>>(y,x); if ( (p->x < 20)&&(p->x >0) )

if( (p->y < 20)&&(p->x >0) )

if( (p->z < 20)&&(p->x >0) ){ //Código para controle dos motores }

(30)

Figura 9 - Fluxograma da execução do algoritmo

Com o algoritmo funcionando, começa o desenvolvimento da parte física. Foi necessário um veículo que

Fluxograma da execução do algoritmo

Com o algoritmo funcionando, começa o desenvolvimento da parte física. Foi que sustentaria um notebook, e que utilizaria dois motores 30

Com o algoritmo funcionando, começa o desenvolvimento da parte física. Foi e que utilizaria dois motores

(31)

31

DC para locomoção. Devido ao peso do notebook, foram necessários motores de aeromodelo.

Para controle dos motores, foram montadas duas pontes H, que possibilitam a inversão do sentido de rotação do motor. O esquema elétrico da ponte H criada pode ser conferido abaixo, na figura 10.

Figura 10 - Esquema elétrico da ponte H

Nesta imagem, percebemos as duas pontes H compartilhando a entrada de 12 V, utilizada para acionar os motores. Destacam-se nesta imagem as 6 entradas que acionam os transistores das pontes (D0 à D5). Estas entradas estão conectadas aos pinos de saída da porta paralela, e são controladas através do algoritmo desenvolvido.

Na tabela abaixo, é possível verificar quais pinos da porta paralela estão envolvidos neste processo e qual a finalidade de cada um.

Tabela 2 - Função dos pinos

Descrição do pino Função

D0 Terra (motor esquerdo)

D1 Motor esquerdo para frente

D2 Motor esquerdo para trás

D3 Terra (motor direito)

D4 Motor direito para frente

(32)

32

Para testes da ponte H e da comunicação com o computador, foi montado em uma protoboard o esquema elétrico representado na figura 10. Na figura 11 é possível ver o esquema elétrico montado, em uma visão geral, e em uma visão detalhada, respectivamente.

(33)

33

CONCLUSÃO

A biblioteca OpenCV se apresentou uma excelente solução para trabalho com imagens. Para o desenvolvimento deste trabalho forneceu todas as funções necessárias para o trabalho com imagens, desde a captura e processamento, até as funções de visão computacional. Tais funções viabilizaram o emprego do método de visão estereoscópica, gerando um mapa de disparidade muito confiável, e preciso na medida do necessário.

Este trabalho nos mostra que a visão estereoscópica pode se apresentar como uma plataforma de reconhecimento muito confiável, além de ter um baixo custo. Pode também ser considerado um ponto forte da visão estereoscópica a possibilidade de extração de imagens durante a locomoção, utilizando como fonte da imagem as próprias câmeras aplicadas como sensores.

Com o algoritmo desenvolvido foi possível determinar os pontos críticos na navegação de veículos autônomos, fornecendo assim uma interface de controle para locomoção sem colisão em um ambiente controlado. Desta forma pode-se afirmar que o objetivo principal deste trabalho foi cumprido, e vem servir como fonte de auxílio à comunidade acadêmica em projetos futuros, podendo inclusive, após algumas melhorias, ser aplicado em projetos de controle de veículos automotores de transporte humano.

(34)

34

REFERENCIAS BIBLIOGRAFICAS

BATISTA, Nathália Alves Rocha; REGIS, Carlos Danilo Miranda. Avaliação da

Disparidade e Profundidade em Vídeos 3D. Campina Grande, PB: Instituto

Federal de Educação, Ciência e Tecnologia da Paraíba. 2012.

BELO, Felipe Augusto Weilemann. Desenvolvimento de Algoritmos de

Exploração e Mapeamento Visual para Robôs Móveis de Baixo Custo. Rio de

Janeiro: Pontifícia Universidade Católica do Rio de Janeiro, 2006. Dissertação, Departamento de Engenharia Elétrica.

BERTHOLD, Horn. Robot Vision. Universidade da Califórnia. EditoraMit Press. 1986.

CHEOLKON, L. J. J., Disparity-map-based rendering for mobile 3d tvs. IEEE Transactions on Multimedia. Set./2011.

COUTO, Leandro Nogueira. Sistema para localização robótica de veículos

autônomos baseados em visão computacional por pontos de referência.USP,

São Carlos. 2012. Dissertação de mestrado.

FENG, Y., REN, J., and JIANG, J., Object-based 2d-to-3d video conversion for

effective stereoscopic content generation in 3d-tv applications.Broadcasting,

IEEE Transactions on, v. 57, n. 2, junho 2011.

GASPAR, José António da Cruz Pinto. Visão para Robótica Móvel: Detecção de Obstáculos sobre Pavimento Plano. Lisboa: Universidade Técnica de Lisboa, 1994. 96 páginas. Dissertação, Departamento de Engenharia Eletrotécnica e de Computadores.

GONZALES, R.C.; WOODS, R.E.; EDDINS, S.L., Digital Image Processing using MATLAB, Pearson, 2006.

(35)

35

MARENGONI, Maurício; STINGHINI, Denise.Tutorial: Introdução à Visão Computacional usando OpenCV. Universidade Presbiteriana Mackenzie, 2009.

MENDES, Caio César Teodoro Mendes. Navegação de robôs móveis utilizando

visão estéreo. USP, São Carlos, 2012, Dissertação de mestrado.

MESSIAS, Antonio Rogério. Introdução à porta paralela. Disponível em <http://www.rogercom.com/>. Acessado em: 18 jul. 2012.

PATSKO, Luís Fernando. Tutorial Montagem da Ponte H. Disponível em <http://www.maxwellbohr.com.br/downloads/robotica/mec1000_kdr5000/tutorial_eletr onica_-_montagem_de_uma_ponte_h.pdf>. Acessado em: 21 out. 2012.

RAMOS, André. Fisiologia da Visão, um estudo sobre o “ver” e o “enxergar”. Pontifícia Universidade Católica do Rio de Janeiro, PUC-RIO, 2006.

SIEGWART, Roland; NOURBAKHSH, Illah, R. IntroductiontoAutonomous Mobile

Robots.Editora Mit Press, 2004.

STIVANELLO, Mauricio Edgar. Desenvolvimento de uma biblioteca para

sistemas de visão estereoscópica para robótica móvel. Florianópolis:

Universidade Federal de Santa Catarina, 2008. Dissertação, Programa de Pós-Graduação em Engenharia Elétrica.

WANGENHEIM, Aldo Von. Técnicas de Visão Estéreo. Disponível em <http://www.inf.ufsc.br/~visao/estereo.html>. Acessado em: 13 mar. 2012.

WILSON, Gregory. Programmer ́s Tool Chest – The OpenCV Library. Disponível

em: <http://www.ddj.com/architect/184404319?pgno=1>. Acessado em: 25 mar. 2012.

ZHANG, Y.; JIANG G.; Yu, M.; CHEN, K.; DAI, Q. Stereoscopic visual

attention-based regional bit allocation optimization for multiview video coding. EURASIP

Referências

Documentos relacionados

82 6.21 Opinião sobre o aumento de eficiência de utilização que a conjugação de uma nova visualização e de técnicas de aprendizagem num cliente de e-mail web (Spidious)

In this work, TiO2 nanoparticles were dispersed and stabilized in water using a novel type of dispersant based on tailor-made amphiphilic block copolymers of

The fatigue study presented in this work was a first approach to the mixed-mode crack propagation behaviour using a mixed-mode apparatus that analyses the mode I and

 Random storage - refere-se à alocação de um espaço de stock de forma aleatória, segundo o espaço disponível no momento de chegada dos produtos (Petersen e Aase,

For teachers who received their training in different periods, four different basic professional identities were identified: a) identity centred on an education of austerity

The aim of this study was to determine the association between polymorphisms in the TNFA, IFNGR1, IL8, IL1B, MIF and IL1RN genes and risk of development of CD in a

This is an extremely important part of an application’s development since it the business layer is responsible of performing all the system’s actions, and the interface is the only

Por exemplo, a nível das novas áreas (em particular a AP) não é fácil porque pede muito mais trabalho dos professores e pede uma nova postura da parte do professor (que passa a