Você está na página 1de 18

1

Uso de visão computacional no futebol de robôs

Cleudiney Theodoro Brandão Dante Napoli Marcelo Cunha Robótica Professor Denilson Laudares

1. Resumo

Futebol de robôs tem sido adotado internacionalmente como um problema padrão, uma vez que possibilita a avaliação de várias teorias, algoritmos, arquiteturas e desempenhos, onde uma grande variedade de tecnologias podem ser integradas e analisadas, propiciando desenvolvimentos ligados à Inteligência Artificial e Robótica Inteligente. No futebol de robôs, uma frota de mini-robôs deve disputar uma partida de futebol de forma autônoma, ou seja, sem interferência humana. O que trataremos neste artigo é uma

forma de utilizar-se da visão computacional e a Inteligência Artificial e Robótica Inteligente para orientar estes robôs em campo.

Inicialmente apresentamos o sistema de visão, composto por uma fase preliminar de calibração e uma fase de identificação e rastreamento em tempo real dos objetos de interesse: robôs e bola. A seguir, descrevemos o módulo responsável pela decisão da estratégia de jogo, que se utiliza das informações fornecidas pelo sistema de visão e conhecimentos sobre o domínio (futebol) para determinar as ações que os robôs devem executar, expressas em direção e velocidade de navegação.

Palavras chaves: Threads, visão computacional, robôs, microcontroladores, multitarefa, RTOS, Inteligência Artificial, Cooperação Computacional, teoria de controle, interpretação e fusão sensorial, redes neuronais, computação evolutiva, visão, sistemas multi-agentes.

2. Introdução

A visão computacional para o futebol de robôs consiste em analisar uma imagem obtida através do dispositivo de captura de vídeo e extrair informações de alto nível, como por exemplo: posição da bola e posição e orientação dos robôs. A Figura 1 representa, esquematicamente, as etapas deste processo

Video
Video
representa, esquematicamente, as etapas deste processo Video Placa de Captura de Vídeo Captura Filtro Calibração
Placa de Captura de Vídeo
Placa de Captura de Vídeo
Captura Filtro Calibração Segmentação Análise Estratégia Visão Computacional
Captura
Filtro
Calibração
Segmentação
Análise
Estratégia
Visão Computacional

Figura 1

2

Partidas de futebol entre robôs constituem uma atividade que possibilita a realização de experimentos reais para o desenvolvimento e testes de robôs que apresentam comportamento inteligente e que cooperam entre si para a execução de uma tarefa, formando um time. Este artigo descreve o projeto e a implementação do sistema de visão computacional utilizado para partidas de futebol de robôs. Para tanto, é apresentado o domínio do Futebol de Robôs, a arquitetura básica do time e o sistema implementado, bem com a descrição dos algoritmos adotados para tratar os problemas específicos do domínio estudado. Como contribuição específica na área de Visão Computacional é apresentado um algoritmo simples e eficiente para a localização e a identificação dos robôs do time, visando uma atuação em tempo real, baseado no rastreamento das cores dos objetos no espaço de cores durante o jogo e no uso de um algoritmo eficiente para localização de centros de objetos circulares. Finalmente, é realizada uma comparação da eficiência do sistema implementado com dois algoritmos clássicos de segmentação de imagens, além da apresentação dos resultados do funcionamento do sistema durante os jogos.

dos resultados do funcionamento do sistema durante os jogos. Figura 2 O sistema de visão (câmera

Figura 2

O sistema de visão (câmera e localização) é responsável por identificar os jogadores e a bola em campo e informar ao módulo da estratégia a localização de cada um deles. A estratégia, considerada a parte inteligente de todo o sistema, é responsável por decidir para qual posição o robô deve ir. De posse das posições presente e futura, o controle (módulo de baixo nível) calcula as tensões que devem ser aplicadas a cada motor para se chegar na posição desejada. As tensões são enviadas via rádio para os jogadores do time. Este ciclo de localizar, decidir posição futura, calcular e enviar tensões, é repetido continuamente até o fim ou interrupção da partida. Neste artigo, uma proposta de um filtro baseado em uma matriz RGB que aponta para cores-padrão é apresentada de forma a fornecer um sistema de filtragem mais robusto, computacionalmente eficiente e menos influenciado por ruídos ou variação de luminosidade. Essas cores-padrão são definidas como intervalos no espaço de cores HSI, evitando assim o cálculo de transformação RGB para HSI durante a filtragem que geralmente é computacionalmente ineficiente e com o intuito de mostrar uma visão geral sobre o assunto, abordaremos conceito, benefícios, utilizações, gerenciamento e

3

características conceituais em alguns Sistemas Robóticos, bem como algumas aplicações.

3.

Conceitos

3.1

Inteligencia Artificial

Atualmente Inteligência Artificial tem sido apresentada a partir de uma visão integrada (Russell e Norvig, 1995). Isto não só permite que se trate os problemas desta área de pesquisa a partir de diversas abordagens, como é o resultado da compreensão, por parte dos pesquisadores, que IA não deve ser vista como segmentada. Na área de visão computacional estas mudanças se deram na forma do surgimento de novos paradigmas. Dentro destas novas abordagens, visão não é mais vista como um problema contido em si mesmo, mas sim como um sistema que interage com o ambiente através de percepção e ação. Um exemplo destes paradigmas é o da visão propositada (Aloimonos, 1994), que considera a visão dentro de um contexto de tarefas que um

agente deve realizar, retirando dos propósitos do agente as restrições para solucionar o problema de visão. Seguindo esta tendência, os domínios de aplicação pesquisados também começaram

a mudar. Na área dos jogos, clássica em IA, criar programas eficientes para jogos de tabuleiro deixou de ser um objetivo distante: no xadrez os computadores já conseguem vencer os campeões humanos. Novos domínios fizeram-se necessários.

O futebol de robôs foi proposto por diversos pesquisadores (Kitano et al, 1997;

Sanderson, 1997) para criar para IA um novo desafio a longo prazo. O desenvolvimento de times de robôs envolve muito mais que integração de técnicas de IA. Segundo Kraetzchmar et al. (1998), “Dispositivos mecatrônicos, hardware especializado para o controle de sensores e atuadores, teoria de controle, interpretação e fusão sensorial, redes

neuronais, computação evolutiva, visão, e sistemas multi-agentes são exemplos de campos envolvidos nesse desafio”.

3.2 Sistema de Visão

O sistema de visão é fisicamente composto de uma estrutura de iluminação e uma

câmera colocada acima do campo de jogo (figura 2), a qual é conectada a uma placa de aquisição de imagens.

A aquisição da imagem é feita através de uma placa digitalizadora padrão (marca

Imaging) e uma câmera de vídeo padrão RGB (marca JVC). As imagens são adquiridas

a uma taxa de 30 quadros por segundo e guardadas em uma posição da memória onde

pode ser acessada pelo módulo de visão. O tamanho das imagens é de 640 x 480 x 24 bits de cores. Um exemplo de imagem típica trabalhada pode ser vista nas figuras 2 e 3.

4

4 Figura 3 Figura 4 O objetivo deste sistema é capturar imagens do jogo e, através

Figura 3

4 Figura 3 Figura 4 O objetivo deste sistema é capturar imagens do jogo e, através

Figura 4

O objetivo deste sistema é capturar imagens do jogo e, através de técnicas de processamento digital de imagens, informar ao módulo da estratégia as localizações de cada robô (tanto os do próprio time quanto os do adversário) e da bola. O sistema de visão é responsável por obter, a partir da imagem adquirida da câmera disposta sobre o campo de jogo, a posição dos robôs e a posição da bola em coordenadas do plano (X,Y). No caso dos robôs do time, o algoritmo de visão determinará também a orientação e identificação do jogador, através do reconhecimento de identificadores coloridos colocados sobre o robô. A realização da identificação de cada robô torna o sistema independente da sequência de resultados do rastreamento dos objetos nas imagens. Assim, um objeto não ser encontrado em uma imagem não afeta o resultado para a imagem seguinte. Diversos programas de edição de imagens trabalham com espaços de cores diferentes, entre eles o RGB e o HSI [5]. O espaço de cores RGB se caracteriza por um cubo de lado

5

R, comprimento G e altura B. A Figura 2 mostra a representação do formato RGB, na forma de um cubo. Nesta figura é possível observarmos que cores parecidas podem ser representada por diversos valores de RGB, o que dificulta a construção de um filtro baseado em limites para estes três parâmetros.

um filtro baseado em limites para estes três parâmetros. Figura 5 O espaço de cores HSI
um filtro baseado em limites para estes três parâmetros. Figura 5 O espaço de cores HSI

Figura 5

O espaço de cores HSI particiona uma cor em Matiz, Saturação e Intensidade, sendo a Matiz

a cor propriamente dita, a saturação identifica o quão forte é a cor e a Intensidade identifica

a luminância da cor. A Figura 6 permite visualizar esta característica.

da cor. A Figura 6 permite visualizar esta característica. Figura 6 O espaço de cores HSI

Figura 6

O espaço de cores HSI forma um cone, com H variando de 0 a 360 graus e S e I variando de 0 a 100 porcento. O formato é mostrado na Figura 3. As equações que transformam uma cor definida em RGB para HSI são dadas a seguir [7]:

uma cor definida em RGB para HSI são dadas a seguir [7]: Figura 7 A transformação

Figura 7

A transformação de HSI para RGB pode ser realizada com as equações seguintes:

6

6 Figura 8 Figura 9 O sistema de filtro desenvolvido necessita da definição de cores-padrão, realizada

Figura 8

6 Figura 8 Figura 9 O sistema de filtro desenvolvido necessita da definição de cores-padrão, realizada

Figura 9

O sistema de filtro desenvolvido necessita da definição de cores-padrão, realizada na fase de calibração. Cada uma dessas cores-padrão deve ter a definição do intervalo de Matiz, Saturação e Luminância que identifica o objeto ou a cor na imagem de forma nítida e sem interferências. Um sistema GUI (Graphical User Interface) simples de calibração foi desenvolvido para ambiente LINUX permitindo a definição dessas corespadrão Figura 9.

7

7 Figura 10 Uma cor ou um conjunto de cores-padrão permite a definição de um objeto,

Figura 10

Uma cor ou um conjunto de cores-padrão permite a definição de um objeto, como bola, cor primária ou cores secundárias do jogador adversário, bem como as cores primária e secundária de seu jogador. A matriz RGB dará a cor-padrão para os valores de R, G e B do pixel da imagem, basta o sistema de visão classificá-lo como o objeto definido.

A matriz RGB implementa o cubo RGB com conteúdo limitado ao das cores padrão e não ao espectro de pouco mais de 16 milhões de cores. Isso significa, que a matriz classifica as possíveis 16 milhões de cores em no máximo 256 cores-padrão. Usualmente, menos de 10 cores-padrão são necessárias para identificar todos os objetos de um jogo de futebol de robôs do tipo Mirosot da FIRA e, considerando o jogo de futebol de robôs com 11 jogadores cada time de cores secundárias diferentes, existiriam no máximo 25 cores. Assim, um cubo que identificaria 16 milhões de cores diferentes, passará a identificar menos de 25 cores, o que permitirá uma eficiência e precisão maior ao filtro de imagem.

a identificar menos de 25 cores, o que permitirá uma eficiência e precisão maior ao filtro

Figura 11

8

A velocidade de processamento na filtragem das cores que esta implementação

atingiu foi de aproximadamente 5 milissegundos o que permite realizar a segmentação das imagens a uma taxa de 30 quadros por segundo. O processamento foi realizado em um microcomputador Pentium IV de 1.8 GHertz, com 256 Mbytes de Memória RAM, utilizando sistema operacional Linux. Os programas foram escritos em C++ (compilador GNU gcc) e Kylix (compilador Borland). para a aquisição das imagens foi utilizada uma câmera colorida de 480 linhas de resolução horizontal conectada à entrada de vídeo composto de uma placa de aquisição de imagens padrão BT-878, comumente usada em kits de videoconferência como o fabricado pela PixelView. As imagens usadas te 640 x 480 pixels de resolução.

Ressalta-se ainda que é muito provável que uma câmera com saída RGB possa

fornecer uma imagem melhor e sem ruídos do que a usada nos testes, fazendo com que

o sistema se torne ainda mais preciso e robusto.

4. Aplicação

A visão computacional desempenha papel fundamental na eficiência de um time,

influenciando diretamente nas decisões tomadas pelo sistema de inteligência artifical e

a estratégia da equipe. Neste sistema de visão, uma parte muito importante é o filtro de cores, que é usado na segmentação das imagens, permitindo localizar os objetos importantes para realizar o controle de um jogo.

A

distinção entre os jogadores e a bola em uma partida de futebol de robôs é feita com

o

auxílio de cores e formas. De acordo com as regras, a superfície do campo é preta,

as linhas e o círculo central brancos, a bola da cor laranja e cada jogador deve possuir obrigatoriamente um rótulo azul ou amarelo identificam seu time.

A tarefa do sistema de visão, portanto, pode ser dividida em três fases:

1. Na primeira fase o sistema deve localizar as regiões coloridas que existem na imagem e calcular a posição central e a etiqueta de cor para cada uma.

2. Uma vez definidas as posições e as etiquetas de cores das regiões, a segunda fase envolve a identificação dos robôs e da bola.

3. Na terceira fase é feita a individualização de cada um dos três robôs da equipe.

9

9 Figura 12 Utilizando-se das informações fornecidas pelo sistema de visão computacional, um algoritmo de decisão

Figura 12

Utilizando-se das informações fornecidas pelo sistema de visão computacional, um algoritmo de decisão de jogadas baseado em Inteligência Artificial é responsável pelas decisões quanto aos objetivos dos movimentos dos robôs. Este módulo produz como saída informações instantâneas de velocidade e ângulo desejados para cada um dos jogadores do time. Este algoritmo é implementado, em um primeiro momento, como uma máquina de estados simples, um tipo de modelo comportamental, baseado em reflexos pré-estabelecidos de situações x reações, o que se mostra ineficaz. A vantagem do uso da máquina de estados finita está na garantia de cobertura completa de todas as situações, evitando-se, assim, estados não previstos ou situações de impasse, porém em um segundo momento, pelo número de decisões simultâneas a serem tomadas, em um segundo momento optou-se pelo uso de Threads e maquinas de estados dentro de tais. O tempo de processamento da imagem é importante para o desempenho do time, pois se trata de uma aplicação em tempo real. Neste trabalho uma imagem deve ser tratada em menos de 33 ms. Além disso, a técnica adotada deve ser robusta a variações na condição de iluminação e ser capaz de reconhecer robôs de times adversários que usam rótulos de diferentes cores e formatos. Para tanto lancemos Threads.

10

10 Figura 13 O Sistema de Comando e Comunicação atua diretamente sobre os robôs, enviando informações

Figura 13

O Sistema de Comando e Comunicação atua diretamente sobre os robôs, enviando

informações através de um transmissor de rádio conectado à porta serial do computador, programada para o envio de caracteres a 1200 b.p.s. É responsável pelo cálculo das velocidades dos motores dos robôs a partir das informações de trajetória fornecidas pelo módulo anterior. Produz como saída informação instantânea de velocidade para os motores de cada jogador, traduzida em número de passos do motor;

O Sistema embutido nos robôs recebe informação de velocidade através de sinal de

rádio, e controla motores de corrente contínua através de tacômetros. O módulo final de controle trata diretamente os sinais de rádio emitidos pelo transmissor conectado ao computador central, controlando os motores de corrente contínua, cuja posição e velocidade de rotação são aferidas por tacômetros ópticos.

11

11 Figura 14 O sistema, conforme descrito, apresenta um conjunto de processos, seguindo uma sequência de

Figura 14

O sistema, conforme descrito, apresenta um conjunto de processos, seguindo uma sequência de controle definida, fechado em um “loop”. O tempo de ciclo deste sistema é aproximadamente 33 milissegundos. Para controle de todos estes processos faremos uso dos princípios de Threads aplicados em sistemas computacionais.

princípios de Threads aplicados em sistemas computacionais. Figura 15 Os programadores em tempo real tradicionais, como

Figura 15

Os programadores em tempo real tradicionais, como o programador usado em FreeRTOS procuram alcançar o determinismo, permitindo que o usuário atribua uma prioridade a cada thread de execução. O programador usa então a prioridade para saber qual thread de execução será executado em seguida. Em FreeRTOS, um thread de execução é chamado de Tarefa, Threads são tarefas, ou melhor, uma parte de um processo.

12

12 Figura 16 Uma característica de RTuinOS é que o comportamento de uma tarefa não está

Figura 16

Uma característica de RTuinOS é que o comportamento de uma tarefa não está totalmente predeterminado no tempo de compilação. O RTuinOS suporta tarefas regulares, controladas no tempo , bem como controladas exclusivamente por eventos. As tarefas podem ser preventivas ou se comportar de forma cooperativa. O agendamento de tarefas pode ser feito usando fatias de tempo e um padrão de round robin. Além disso, muitos desses modos podem ser misturados. Uma tarefa não é para ser regular, seu código de implementação decide o que acontece e isso pode ser decidido no contexto ou dependente da situação fazendo o uso de Threads.

Os projetos embarcados são, em sua maioria, compostos por diversas tarefas executadas para atender uma aplicação de propósito único. Dependendo da complexidade do sistema, tais tarefas podem exigir restrições de tempo, além de interagirem umas com as outras. Muitas vezes, o uso de arquiteturas mais simples, como orientada a interrupção ou máquina de estados, tornam o código muito complexo e de difícil manutenção. Devido a isso, os sistemas operacionais de tempo real (RTOS Real Time Operating System) se tornam uma boa opção, pois são capazes de atender as restrições temporais e tornar o código mais organizado e flexível.

Basicamente, um RTOS é um sistema operacional destinado a gerenciar múltiplas tarefas com períodos de execução pré-definidos. Este gerenciamento é feito pelo escalonador (ou scheduler em inglês) baseado em algum critério, como tempo máximo de execução, prioridade, criticidade de um evento, sequência de execução, entre outros. Em razão disso, define-se dois tipos de escalonadores: o escalonador preemptivo, que é capaz de interromper uma determinada tarefa para executar outra de maior prioridade, e o escalonador cooperativo (ou não-preemptivo) que executa cada tarefa até o fim, de modo que a próxima tarefa só é executada quando a anterior terminar .

13

13 5. Implementação O módulo da estratégia é considerado o “cé rebro ” de um time

5.

Implementação

O módulo da estratégia é considerado o “cérebro” de um time de futebol de robôs. A

sua função é de, dadas as localizações de cada objeto em campo, decidir para onde os jogadores do time devem ir, de forma que estes apresentem um comportamento cooperativo inteligente.

A estratégia está organizada em camadas [Yamamoto 2005]. Existem três níveis de

decisão: os papéis de cada robô estão no nível mais alto, no segundo nível estão os

estados e no nível mais baixo os cálculos das posições desejadas (referências) de cada robô. A figura 17 mostra a hierarquia das camadas da estratégia. Foram definidos três papéis para a equipe: goleiro, atacante e zagueiro, tendo cada um dos papéis um certo número de estados associados. No decorrer do jogo a estratégia irá indicar o papel mais adequado para cada robô na situação presente.

O papel de goleiro será sempre atribuído a um mesmo jogador escolhido antes do início

da partida, de forma que a alocação dinâmica acontecerá apenas com os papeis de atacante e zagueiro. Para definir os papéis dos jogadores restantes, a primeira

preocupação é saber a localização da bola:

• Caso a bola esteja no campo de defesa, o jogador atrás da linha da bola será o atacante. Se ambos estiverem ou atrás ou a frente desta linha, o jogador mais perto da bola será o atacante e o zagueiro será o robô restante.

• Na situação da bola estar no campo de ataque, o jogador mais perto da bola será o atacante e o outro robô será o zagueiro.

14

14 Figura 17 O goleiro pode estar nos estados DEFESA ou ESPERA. No estado ESPERA, fica

Figura 17

O goleiro pode estar nos estados DEFESA ou ESPERA. No estado ESPERA, fica no centro do gol. No estado DEFESA, fica posicionado de tal forma a interceptar a trajetória da bola para o gol. O estado ESPERA é adotado quanto a bola está no campo de ataque; caso contrário, impõe-se o estado DEFESA. O zagueiro apresente dois estados: ESPERA e ZAGUEIRO. O estado ESPERA é atribuído quando a bola está no campo de ataque. O robô se posiciona no campo de defesa, para esperar uma eventual sobra de bola. O estado ZAGUEIRO posiciona o jogador na linha formada pela posição da bola e centro do gol do time, de modo a interceptar o avanço da bola. Este estado é atribuído quando a bola está no campo de defesa.

15

15 Figura 18 - Malhas de controle do robô O controle de posição é feito no

Figura 18 - Malhas de controle do robô

O controle de posição é feito no computador. As variáveis controladas são a posição atual do robô (x, y, θ), calculadas pelo módulo de percepção a partir da análise das imagens da câmera de vídeo . A estratégia define as referências, que são a posição para a qual o robô deve se deslocar (xref, yref). A saída deste controlador é as velocidades angulares desejadas (ωdref, ωeref) para os dois motores do robô. Consideremos o modelo esquemático do robô na figura 8. No espaço cartesiano (x,y) definiremos a posição do robô como a posição do seu centro e sua orientação θ como sendo o ângulo entre o vetor da orientação do robô e o eixo x. Denominam-se v e ω, respectivamente, as velocidades linear e a angular do robô, medidas no seu centro.

Se as rodas tˆem raio R, b é a largura do robô (distância entre rodas), ωd e ωe são as velocidades angulares das rodas e vd e ve são as velocidades lineares de um ponto na circunferˆencia das rodas, sabe-se que:

de um ponto na circunferˆencia das rodas, sabe -se que: Figura 19 Figura 20 - Definições

Figura 19

de um ponto na circunferˆencia das rodas, sabe -se que: Figura 19 Figura 20 - Definições

Figura 20 - Definições de velocidade do robô

16

Com isso, ao invés do controlador de posição calcular diretamente as velocidades desejadas para os motores (ωdref, ωeref), ele pode calcular inicialmente as velocidades linear e angular desejadas (vref, ωref) e em seguida fazer a conversão usando a equação. A figura 21 ilustra o problema do posicionamento do robô, onde ∆l representa a distância entre o robô e a posição de referência (xref,yref) desejada no espaço cartesiano. O problema do controle de posição do robô será resolvido se ∆l → 0. Mostra-se [Vieira et al. 2004] que este problema pode ser resolvido por meio de dois controladores lineares simples: • Um controlador angular cujo objetivo ´e controlar a orientação do robô de forma a que ele aponte para a posição de referência desejada (xref,yref). A saída deste controlador é a velocidade angular desejada, ωref. A entrada é o erro angular ∆φ, que é a diferença entre a orientação desejada e a orientação atual e é dado por:

orientação desejada e a orientação atual e é dado por: Figura 21 • Um controlador linear

Figura 21

• Um controlador linear cujo objetivo ´e posicionar o robô ao longo da reta que corresponde à sua orientação atual no ponto mais próximo da posição de referência desejada (ponto R na figura 9). A saída deste controlador é a velocidade linear desejada, vref. A entrada é o erro linear ∆λ, dado por:

desejada, vref. A entrada é o erro linear ∆λ, dado por: Figura 22 Figura 23 –

Figura 22

vref. A entrada é o erro linear ∆λ, dado por: Figura 22 Figura 23 – Controle

Figura 23 Controle de posição do robô

Para o projeto tanto do controlador linear quanto do angular, o sistema a ser controlado é modelado por um integrador simples, G(s) = 1/s, pois o deslocamento angular θ é a integral da velocidade angular ω, o mesmo acontecendo com o deslocamento linear λ e a velocidade linear v.

17

6. Desenvolvimento do kernel e uso das Threads

De forma resumida, um Kernel é o núcleo central de um sistema operacional. Além dele gerenciar as tarefas, ele também gerencia a memória disponível e intermedia a comunicação entre os drivers de hardware e as aplicações. No entanto, neste artigo considerou-se um “microkernel” responsável apenas pelo gerenciamento das tarefas, como pode ser visto na implementação a seguir. Como mencionado, o Kernel deve ser capaz de armazenar as tarefas a serem executadas. Uma maneira simples de fazer isso é utilizando um buffer estático, do tipo ponteiro de função, que salva os endereços das funções correspondentes às tarefas. Além disso, precisamos informar qual o período da tarefa e, opcionalmente, o seu nome para debug e se ela está habilitada ou não para ser executada. Os ponteiros de função são variáveis que, como ponteiros, armazenam um endereço. A diferença é que esse endereço é de uma função, e não de uma variável. A declaração de uma variável do tipo ponteiro de função, em linguagem C, é bastante diferente da declaração de uma variável normal, sendo muito parecida com a declaração de um protótipo de função. Este Kernel é composto por quatro funções: uma para inicializa-lo, uma para adicionar tarefas, uma para remover tarefas e outra para rodar o escalonador. Em geral, a função que roda o escalonador entra num loop infinito e, conforme a base de tempo gerada pelo Timer, verifica qual tarefa deve ser executada no momento, de acordo com seu período.

7.

Conclusão

Foram estudados diversos algoritmos clássicos de segmentação de imagens e foi proposto um algoritmo específico para o domínio estudado, baseado em limiares adaptativos. Este algoritmo realiza a localização e a identificação dos robôs do time de maneira rápida e simples, visando uma atuação em tempo real, através do rastreamento das cores dos objetos no espaço de cores durante o jogo e do uso de um algoritmo eficiente para localização de centros de objetos circulares, para um tratamento mais rápido das informações foram propostos o uso de Inteligência Artificial e do conceito de Threads na montagem do código fonte e recursos para o robô ganhando assim poder computacional e velocidade de decisão nas estratégias pelo uso de teorias de máximos e mínimos da Inteligência Artifical.

18

8. Referências

[1] ALMEIDA, R. M. A.; MORAES, C. H. V.; SERAPHIM, T. F. P. Programação de Sistemas Embarcados: Desenvolvendo software para microcontroladores em linguagem C. Elsevier, 2016. [2] SHAW, A. C. Sistemas e software de tempo real. Bookman, 2003. [3] Desenvolvendo um RTOS: processos e tarefas disponível em https://www.embarcados.com.br/desenvolvendo-um-rtos-processos-e-tarefas/ com acesso em 01/05/2017

[4] Giozza, W. F.; Araújo, J. F. M.; Moura, J. A. B. & Sauvé, J. P.

Redes Locais de Computadores: Tecnologia e Aplicações. Mc Graw-Hill, São Paulo, Brasil (1986).

[5]Han, W.-G.; Baek, S.-M. and Kuc T.-Y

Path Planning of Visual-Servoed Multiple Mobile Robots using the Genetic Algorithms. Proceedings of Micro-Robot World Cup Soccer Tournament, pp. 57-63

(1996).

[6] Kim, S. H.; Kim, J. K.; Choi, J. C. and Kim, B. K.

Development of Cooperation System for Robot Soccer Team. Proceedings of Micro- Robot World Cup Soccer Tournament, pp. 90-94 (1996). [7] Kitano, H.; Kuniyoshi, Y.; Noda, I.; Asada, M.; Matsubara, H. and Osawa, H. RoboCup: A Challenge Problem for AI. AI Magazine 18(1), pp.73-85 (1997).

[8] Microsoft

for AI. AI Magazine 18(1), pp.73-85 (1997). [8] Microsoft Video for Windows Documentation

Video for Windows Documentation

ftp://ftp.microsoft.com/developer/drg/Multimedia/Jump start/VfW11e/DK/VFWDK(1993).

9. Repositórios na WEB ArduinoThread: https://github.com/ivanseidel/ArduinoThread