Você está na página 1de 4

PROJETO E IMPLEMENTAÇÃO DE UM ROBÔ AUTÔNOMO SEGUIDOR DE LINHA

BASEADO EM VISÃO COMPUTACIONAL


Octavio Tosta1, Hiuri C. Liberato1, Bruno de Almeida1, Gabriela P. Marinato1, Eduardo M. A. Amaral2
1
CURSO TÉCNICO EM INFORMÁTICA - INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO
ESPÍRITO SANTO - CAMPUS SERRA
Rodovia ES 010, Km 6.5, Manguinhos
CEP 29.173-084 – Serra – ES
2
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO ESPÍRITO SANTO - CAMPUS SERRA
Rodovia ES 010, Km 6.5, Manguinhos
CEP 29.173-084 – Serra – ES

Resumo: O desenvolvimento de robôs para competições tem e por isto tornou-se uma área de aplicação que compreende
sido adotado por diversas instituições como uma atividade áreas como automação industrial, robótica e processamento de
científica voltada à pesquisa e educação. Construir robôs documentos [Molz, 2001].
capazes de executar um trabalho de forma autônoma é uma
Conforme a evolução tecnológica, aplicações de visão
tarefa desafiadora e estimulante, que envolve, entre outras
computacional vem crescendo em diversas áreas, dentre elas
áreas, Visão e Modelagem Computacional. Este artigo
podemos citar: identificação de um rosto em vídeo,
apresenta a implementação de um robô autônomo seguidor de
identificação de objetos, etc. Segundo Molz [2001], as tarefas
linha baseado em visão computacional. O sistema de visão
de visão computacional incentivam uma significativa parte da
proposto é capaz de identificar, em tempo real, linha e objeto.
pesquisa em todas as áreas científicas e industriais.
Utilizando esse sistema foi possível identificar o objeto e linhas
durante a simulação de uma competição, com boa precisão. A visão computacional e seus métodos são parte fundamental
da ciencia da computação, interligando-se a aprendizagem de
Palavras Chaves: Robótica, Educação, Visão computacional,
maquina. Tomando essas informações como base, observamos
Competição.
a necessidade de obter conhecimento e desenvolver estudos
Abstract: The development of robots for competitions has que possam gerar maior usabilidade a área em aplicações do
been adopted by several institutions as a scientific activity dia-a-dia, tendo em vista a necessidade de inovação no
focused on research and education. Build robots capable of mercado e do meio academico. Nexte contexto, uma da formas
performing a work autonomously is a challenging and exciting para desenvolver estudos em visão computacional é por meio
task, which involves, among other areas, Vision and da construção de robôs para competições.
Computational Modeling. This article presents the
O obejtivo deste trabalho foi o projeto e implementação de um
implementation of an autonomous robot line follower based on
robô autônomo seguidor de linha baseado em visão
computer vision. The proposed vision system is able to
computacional, com pretensão de utilização em uma
identify, in real time, object and line. Using this system, it was
competição de robôs. Assim, foi desenvolvido um sistema de
possible to identify objects and lines during the simulation of a
detecção de objeto e navegação por meio de uma câmera. Além
competition, with good precision.
disso, um sistema para as tomadas de decisão foi implementado
Keywords: Robotics, Education, Computer vision, utilizando Processing [Processing, 2016], uma placa Arduino
Competition. [Arduino, 2016], e uma placa controladora PcDuino [PcDuino,
2016].

1 INTRODUÇÃO Este artigo encontra-se organizado da seguinte forma: a seção 2


apresenta a plataforma robótica. A seção 3 descreve o sistema
A falta de acessibilidade à educação avançada, caracterizada proposto de detecção e rastreamento de linha e detecção de
pelo distanciamento tecno-científico crescente entre os países objeto. Os experimentos e resultados são apresentados na seção
desenvolvidos e em desenvolvimento, é um problema que vem 4, uma breve discussão é apresentada na seção 5 e as
sendo considerado por educadores e pesquisadores [Queiroz, conclusões são apresentadas na seção 6.
1998], e o desenvolvimento de robótica educacional e robótica
para competições podem ser formas de minimizar esse
distanciamento. 2 PLATAFORMA ROBÓTICA
Por outro lado, a visão tem sido um foco de atenção para Este projeto foi desenvolvido no LARSE (Laboratório de
pesquisadores desde o início da computação, pois este é um Robótica e Sistemas Embarcados). Os trabalhos desenvolvidos
dos mais notáveis sistemas de percepção dos seres humanos. A pelo laboratório já demonstraram a interdisciplinaridade da
pesquisa no campo de emulação das capacidades visuais, robótica e os benefícios, no processo de aprendizagem em
através do uso de computadores, estende-se até os dias de hoje
Mostra Nacional de Robótica (MNR) 1
programação e eletrônica, desfrutados pelos alunos envolvidos
[Pin, De Oliveira e Amaral, 2012].
A plataforma robótica experimental (PR) usada neste trabalho
foi desenvolvida por alunos do LARSE.

2.1 Arquitetura Física


A PR é apoiada em uma base de MDF sobreposta a outra, com
o intuito de proporcionar maior estabilidade. Nesta plataforma
se encontram o circuito do robô, uma bateria, uma câmera
acoplada a um servo motor, um sonar e mais dois servos
motores que controlam verticalmente uma garra. Além disso,
contém outros 2 servos motores acoplados as rodas e uma roda
boba para sua movimentação, que ficam abaixo dessa
plataforma. Acima da plataforma se encontram as placas
controladoras PcDuino, que está dentro de uma caixa de MDF, Figura 2 – Arquitetura do Sistema
para proteção, além de uma ventuinha para evitar o A câmera acoplada ao robô movimenta-se verticalmente a
superaquecimento da mesma, e o arduino. partir de um servomotor e tem como função fazer a captura de
A arquitetura pode ser vista na Figura 1. imagens para a análise da rota, ou a detecção de objeto.

3.1 Sensoriamento por visão


computacional
No sistema desenvolvido, a visão computacional exerce a
função de identificar um objeto, predefinido, por sua forma
geométrica e cor (RGB). Também exerce a função de
identificar a rota através de uma linha na cor preta.
Através da aquisição das imagens RGB obtidas pela câmera, o
algoritmo de processamento dessas imagens é executado. Após
a execução, a parte do sistema responsável pelo controle envia
aos motores a definição da direção que o robô deve seguir, seja
para seguir a rota ou ir em direção ao objeto.

Figura 1- Arquitetura do robô 3.2 Detecção de objeto


Desta forma, o robô foi equipado com: 1 sensor ultrassônico, 1 Neste trabalho, uma abordagem semelhante à proposta por
câmera RGB na parte frontal, 1 Arduino Leonardo, 1 Penharbel [2004] foi utilizada. O algorítmo utilizado para
protoboard, 5 servos motores, 1 bateria de 12V, 1 regulador de análise das imagens está baseado na biblioteca OpenCV (Open
tensão e 1 PcDuino. Source Computer Vision Library). OpenCV é uma biblioteca,
de código aberto, desenvolvida inicialmente pela Intel. Ela
2.2 Controle básico de movimentos e implementa ferramentas de interpretação de imagens, indo
sensoriamento desde operações simples como um filtro de ruído, até
operações complexas, tais como a análise de movimentos,
As funções básicas responsáveis e disponíveis para a reconhecimento de padrões e reconstrução em 3D.
movimentação do robô são: “irParaFrente” (movimento para
frente), “irParaTras” (movimento para trás), “parar” (para o Além disso, esse trabalho utiliza uma abordagem por espaço de
robô), “virarEsquerda” (movimento para esquerda), cores HSV/HSI (Hue, Saturation and Value / (Hue, Saturation
“virarDireita” (movimento para direita). Estas funções foram and Intensity) e descritores.
embarcadas numa placa micro controladora (Arduino As imagens (frames) capturadas em RGB são enviadas para o
Leonardo). pcDuino. Assim, o algoritmo trata toda a informação dada pela
O sensoriamento básico é realizado pelo sonar e pela câmera. câmera guardando-a em um dicionário, que tem os pixeis como
índice. O RGB de cada pixel é convertido para HSV e salvo em
outro dicionário com o nome “HSV”.
3 SISTEMA DE DETECÇÃO E Após isso, somente a posição dos pixeis que tem a cor
RASTREAMENTO DE LINHA E DE predeterminada são salvos em um terceiro dicionário, chamado
de “mask”. Este terceiro dicionário consiste em um mapa
DETECÇÃO DE OBJETO
binário onde se torna verdadeiro a posição desses pixeis.
O sistema proposto trabalha orientado por visão computacional
Para descartar quaisquer ruídos na imagem e suavizar a forma
com o objetivo de tratar questões sobre a navegação e a
do que foi salvo em mask, são implementados alguns
detecção de objeto, buscando um baixo nivel de erro, a partir
tratamentos de imagens. Esse passo é necessário, pois muitos
do tratamento das imagens captadas com uma câmera.
pixeis podem ser da cor predeterminada, mas não fazem parte
A Figura 2 mostra o diagrama da arquitetura do sistema do do objeto alvo ou os pixeis agrupados que indicam um objeto
robô e seu funcionamento de forma teórica. podem não ser encontrados por completo. Com os tratamentos

Mostra Nacional de Robótica (MNR)


de imagem utilizados esses problemas podem ser solucionados. tamanho do objeto, descobrir a diferença desses dois pixeis.
As funções utilizadas podem ser definidas como: Aplicando a proporcionalidade é possivel descobrir a distância
que esse objeto se encontra da câmera.
 inRange: procura os píxeis da cor predeterminada;
Através do conhecimento do contorno do objeto é possível
 erode: salva a posição do pixel da cor predeterminada; também descobrir o centro de massa, possibilitando enviar
 morphology: extrai as informações relativo às através de uma comunicação serial com o arduíno, a direção
características de uma imagem e compara com um que o robô deve seguir para chegar ao objeto (direita, centro,
outro conjunto menor e de forma já conhecida; esquerda), como mostra a Figura 6.

 dilate: considera a vizinhança como pixeis


semelhantes;
 bilateralFilter: suaviza os contornos do objeto alvo;
 medianBlur: suaviza a imagem usando um filtro
mediano;
A Figura 3 ilustra a sequência do algoritmo utilizando as
funções descritas acima.

Figura 3 – Algoritmo suavização das imagens.


Após, o algoritmo cria um novo dicionário, chamado
“FrameFiltrado”, onde somente os pixeis que estão presentes
como verdadeiro no mapa binário estarão no FrameFiltrado,
descartando o fundo ou qualquer cor que não seja a Figura 6 – Algoritmo, executado no PcDuino, estimando a
predeterminada. Em seguida, é criado uma matriz chamada distância para o objeto e demonstrando a informação a ser
“contornoMask”, que armazena o X e Y de cada pixel enviada ao arduino com a direção que o robô deve seguir.
considerado o contorno do grupo de pixeis salvo em mask,
como mostra o trecho do algoritmo na Figura 4. 3.3 Rota por uma câmera RGB
Para seguir a linha, o centro de massa e os pixeis mais externos
são usados para enviar ao robô qual direção ele deve seguir
para continuar em cima da linha (direita, centro, esquerda) e
informar se a curva é uma curva fechada ou não (curva fechada
a direita, curva fechada a esquerda).
Figura 4 – Algoritmo de remoção do fundo e de definição
de contorno do objeto.
A Figura 5 demonstra a detecção do objeto por padrão de cor, 4 TESTES E RESULTADOS
realizando a separação do objeto por contorno e a separação do
objeto por cor. Para validar o modelo proposto, foram feitos testes no
laboratório, em ambiente controlado, conforme vídeo
(https://www.youtube.com/watch?v=aIj0E-
QwKP4&feature=youtu.be )
Para os testes foi montado um pequeno circuito feito com fita
isolante preta e alguns obstáculos, onde o robô tinha a tarefa de
seguir a linha a fim de desviar de possíveis obstáculos, chegar
ao final do percurso e detectar o objeto predefinido. Como
esperado ele seguiu corretamente e com uma boa precisão todo
o percurso proposto. Seu nível de acerto foi maior que o
encontrado ao realizar testes utilizando somente sensores
ultrassônicos e infravermelhos.
Como esperado a câmera realizou a leitura da imagem e o
PcDuino a tratou corretamente e definiu a rota a ser tomada.
Após, os comandos básico foram enviados a um Arduino que
executou os comandos de controle de movimentação do robô,
Figura 5 – Detecção do objeto por padrão de cor, separação ocorrendo tudo em tempo real.
do objeto por contorno e separação do objeto por cor. Também foi realizado testes substituindo o PcDuino por um
Após os tratamentos de imagem e as separações de contorno, é notebook para a comparação de desempenho. A Figura 7
possivel saber qual o primeiro pixel a esquerda do contorno e a desmonstra os teste realizados utilizando o notebook como
direita do contorno, possibilitando, quando conhecido o controlador principal do robô.
Mostra Nacional de Robótica (MNR) 3
O projeto cumpriu seus objetivos e a plataforma robótica
proposta demonstrou bom rendimento, se tornando um bom
caminho na construção de robôs para competições utilizando
visão computacional.
Trabalhos futuros podem ser executados na estrutura física do
robô, além de melhorias nos algoritmos propostos, como por
exemplo, a implentação de um algoritmo para desviar de
obstáculos mais completo ou seguir mapas sem linhas ou até
mesmo calcular a melhor rota a seguir de um ponto a outro
dentro de um mapa predefinido.

Figura 7 - Robô seguindo linha pela visão computacional REFERÊNCIAS BIBLIOGRÁFICAS


em uma plataforma de testes utilizando o notebook como Arduino. (2016). Language Reference, Disponível em:
controlador principal. http://arduino.cc/en/Reference/HomePage. Acesso em:
Para que o PcDuino fosse capaz de processar as informações da julho de 2016.
câmera foi realizada uma redução da resolução da imagem. Queiroz, L. R. de. (1998). Um Laboratório virtual de robótica e
Após essa redução, o processador do PcDuino foi capaz de visão computacional. Universidade Estadual de
executar essa tarefa. A Figura 8 monstra os teste realizados Campinas (UNICAMP). Instituto de Computação.
com o robô seguindo linha pela visão computacional, em sua
plataforma mais recente, utilizando o PcDuino como Molz, R. F. (2001). Uma metodologia para o desenvolvimento
controlador principal. de aplicações de visão computacional utilizando um
projeto conjunto de Hardware e Software. Universidade
Federal do Rio Grande do Sul, Instituto de Informática,
Programa de pós-graduação em Ciência da
Computação.
PcDuino. (2016). pcDuino Quick Start, Disponível em:
http://learn.linksprite.com/. Acesso em: julho de 2016.
Penharbel, E. A. (2004). Filtro de Imagem Baseado em Matriz
RGB de Cores Padrão para Futebol de Robôs
Disponivel em:
http://fei.edu.br/~rbianchi/publications/Enri2004-1.pdf.
Acesso em Agosto 2016.
Pin, L. B. e De Oliveira, D., Amaral, E. M. A. (2012).
Figura 8 - Robô seguindo linha pela visão computacional, LUDEbot: Uma plataforma com Servomotores e
em sua plataforma mais recente, utilizando o PcDuino Sensoriamento utilizando a Placa Arduino e Controle
como controlador principal. Externo, In: III Workshop on Educational Robotics,
IEEE SBR/LARS/WRE (I Brazilian Robotics
5 DISCUSSÃO Symposium, IX Latin American Robotics Symposium),
Fortaleza, CE, 2012.
Neste trabalho foi desenvolvido um robô autônomo seguidor de
linha baseado em visão computacional. As soluções propostas Processing. (2016). Language Reference, Disponível em:
demonstraram ser um bom caminho na construção e http://www.processing.org/reference/. Acesso em: julho
implementação de robôs utilizando sensoriamento visual por de 2016.
camera.
O robô desenvolvido permitiu o aproveitamento de ferramentas
tecnológicas sofisticadas, como a própria robótica, a visão
computacional e o Processing. Neste contexto, o robô
demostrou eficácia em realizar tarefas como seguir linha e
identificar um objeto predefinido.
A partir do robô é possivel que hajam melhorias em seus
algoritmos para propiciar uma captura de imagens ainda
melhor, e um nível mais alto no tratamento de imagens.

6 CONCLUSÕES
A construção desse projeto demonstrou ser viável a navegação
do robô usando uma câmera como principal sensor de
orientação para um seguidor de linha, diminuindo possíveis
falhas e erros em robôs autônomos, quando comparado a robôs
usando somente sensores de refletância ou infravermelho.

Mostra Nacional de Robótica (MNR)

Você também pode gostar