OTIMIZAÇÃO DA COBERTURA DE ESPAÇO COM … · A imagem foi criada à “mão livre” usando um...
Transcript of OTIMIZAÇÃO DA COBERTURA DE ESPAÇO COM … · A imagem foi criada à “mão livre” usando um...
Anais do XVII Encontro de Iniciação Científica e Pós-Graduação do ITA – XVII ENCITA / 2011
Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, 19 de outubro de 2011
OTIMIZAÇÃO DA COBERTURA DE ESPAÇO COM MANUTENÇÃO DA
COMUNICAÇÃO POR UM GRUPO DE ROBÔS
Marcos Ricardo Omena de Albuquerque Maximo Instituto Tecnológico de Aeronáutica - ITA
HTO, apartamento 323, CEP: 12228-615, Campus do CTA, São José dos Campos, SP, Brasil
Bolsista PIBIC-CNPq
Jackson Paul Matsuura Divisão de Eletrônica
Instituto Tecnológico de Aeronáutica
Praça Marechal Eduardo Gomes, 50, Vila das Acácias, CEP: 12.228-900, São José dos Campos, SP, Brasil
Resumo. O projeto apresentado objetiva buscar soluções para otimizar a cobertura de comunicação por um grupo de robôs. Essa
questão é importante em diversas atividades em que grupos de robôs são desejáveis, como remoção de minas terrestres, limpeza e
resgate. Assim, a cobertura ótima de comunicação é o tema do Deployment Test, um dos testes de qualificação da Robocup Rescue
Simulation League, categoria de resgate da famosa competição de robótica Robocup. A ITANDROIDS, equipe de competições de
robótica do ITA, participou dessa categoria em anos anteriores com bons resultados. Desse modo, a motivação principal desse
trabalho foi desenvolver algoritmos para serem usados dentro do ambiente da competição de modo que pudessem ser utilizados no
time da ITANDROIDS. Devido à alta complexidade do USARSim, ambiente de simulação usado na competição, fez-se um
simulador próprio simplificado para facilitar os testes e verificar resultados mais rapidamente; este foi implementado com uso do
framework de desenvolvimento de jogos XNA. Por conta disso, os algoritmos para solução do problema foram desenvolvidos foram
em linguagem de programação C#.
Palavras chave: cobertura, comunicação, robôs.
1. Introdução
A cobertura ótima de comunicação é desejável em diversas aplicações. Na construção de uma infraestrutura de
comunicação por antenas, por exemplo, é interessante que estas sejam dispostas de modo a oferecer sinal à máxima área
possível.
O problema torna-se bem mais complexo quando as unidades de comunicação são móveis. Este é um cenário
comum quando se tem um grupo cooperativo de robôs, dado que em geral a comunicação via wireless é a forma mais
conviente de troca de informações entre os robôs. Nesse contexto, deve-se tratar a movimentação, encontrando-se
caminhos eficientes até as posições que resultam máxima cobertura. Remoção de minas terrestres, limpeza de
ambientes e busca e resgate de vítimas são exemplos de atividades em que a manutenção da comunicação é muito
importante para uma boa cooperação entre os agentes robóticos (Batalin), (Rekleitis, 2004).
Uma outra problemática comum é o não conhecimento prévio do espaço. Assim, os robôs devem replanejar à
medida que mapeiam o espaço.
Dada a importância do problema, este motivou um dos testes de qualificação da Robocup Rescue Simulation
League (Technical Commitee; Arnoud Visser et al, 2010), categoria de resgate virtual da Robocup, a competição de
robótica mais famosa do mundo (procurar citação). Essa categoria envolve a programação de robôs virtuais para
executar tarefas de resgate e tem como objetivo incentivar desenvolvimentos em robótica de resgate real (Rob11). O
teste de qualificação citado é nomeado Deployment Test e consiste em criar uma infraestrutura de comunicação em
torno de uma estação base buscando máxima área de cobertura de comunicação (Technical Commitee; Arnoud Visser
et al, 2010).
A ITANDROIDS, equipe de competições de robótica do ITA, participou da categoria com bons desempenhos em
anos anteriores. Assim, a possibilidade de que a pesquisa desenvolvida melhore o desempenho da equipe foi a principal
motivação desse projeto.
Este artigo está organizado da seguinte forma: a seção 2 apresenta o ambiente da competição Robocup Rescue
Simulation League, a 3 comenta sobre as restrições envolvidas no Deployment Test, a 4 apresenta os desenvolvimentos
feitos durante o projeto e a 5 conclui o trabalho. Em seguida, são apresentados agradecimentos e as referências
bibliográficas utilizadas.
2. Robocup Rescue Simulation League
As ligas de resgate da Robocup foram criadas como uma forma de incentivo a pesquisa e desenvolvimento em
resgate robótico. Em muitos cenários de desastre, o ambiente é muito hostil e apresenta grande riscos para agentes
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
humanos, o que torna o uso de agentes robóticos é desejável nessas situações. Nesse contexto, o problema introduz
diversos temas de pesquisa em robótica e inteligência artificial, como percepção robótica, planejamento, mapeamento
do espaço, cooperação entre múltiplos agentes etc.
A categoria de resgate virtual da Robocup surgiu como a versão virtual da equivalente usando robôs reais. A
vantagem de se usar robôs virtuais é a possibilidade de se desenvolver soluções em software sem a necessidade de se
arcar com os altos custos de produção de um robô real. Isso permite que mais pesquisadores se envolvam na área. Além
disso, em simulação pode-se criar ambientes controlados para testes específicos sem que se tenha que submeter o robô a
um cenário de desastre real ou que se crie algum artificialmente.
Para simulação, é utilizado o USARSim (Unified System for Automation and Robot Simulation), um simulador de
alta fidelidade baseado na poderosa engine de jogos eletrônicos Unreal. Atualmente, o simulador já é executado com a
última versão da engine: a Unreal Engine 3. O USARSim é capaz de simular uma vasta gama de robôs, sensores e
atuadores.
O USARSim é baseado numa arquitetura cliente-servidor em que cada robô é um cliente independente. A câmera é
um sensor especial e é simulada com o sistema de renderização da Unreal. As demais percepções através de sensores e
o controle dos atuadores são feitos por meio de troca de mensagens TCP/IP seguindo protocolo próprio. Com isso,
procura-se simular a interface com o ambiente presente em robôs reais. A Fig. 1 apresenta a arquitetura do simulador.
Figura 1. Arquitetura do USARSim (Extraída de (Wang, et al.)).
A simulação procura ser a mais fiel possível; logo problemas físicos inerentes ao hardware são incluídos, como
ruído na comunicação, imprecisão dos sensores e atuadores etc. A Física é simulada pela engine de Física PhysX,
embutida na Unreal. Com isso, experimentos de validação mostraram forte correlação entre a simulação do USARSim
e o comportamento real dos robôs. Assim, diversos grupos de pesquisa usam o USARSim como ambiente de teste para
algoritmos antes que sejam implementados em sistemas reais.
A Figura 2 apresenta a renderização de uma simulação executada no USARSim.
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
Figura 2. Simulação, no USARSim, de um robô P3AT usando um sensor gerador de linha laser (Extraída de
(Balakirsky)).
3. Deployment Test
O teste consiste em construir uma infraestrutura de comunicação. Cada time é provido de um grid de ocupação do
ambiente e um certo número de posições iniciais; pode-se utilizar até oito robôs na tarefa. O objetivo é posicionar os
robôs autonomamente (sem interferência de humanos) de modo que seja cobertura a máxima cobertura de comunicação
possível enquanto mantém-se conexão com uma estação base conhecida e fixa.
Apenas as posições finais dos robôs são levadas em conta para cálculo de pontuação. Um ponto do espaço é
considerado coberto nesse teste se o sinal de comunicação nesse ponto estiver acima de um certo limiar segundo
modelo de atenuação usado na simulação. Deve-se destacar que a área de comunicação deve estar conectada e incluir a
estação base, ou seja, cada entidade (robô ou estação base) da infraestrutura de comunicação deve ser capaz de se
comunicar com qualquer outra entidade nessa infraestrutura através de encaminhamento de mensagens na
infraestrutura.
4. Desenvolvimento
Como comentado na seção 2, o USARSim simula os robôs o mais fiel possível dos equivalentes reais. Assim, deve-
se fazer o devido tratamento de sensores e assim localizar o robô e mapear o ambiente. Também, deve-se controlar os
atuadores corretamente para movimentar o robô conforme desejado.
Embora a ITANDROIDS tenha participado da competição em anos anteriores, o time não foi continuado e o
desenvolvimento que havia foi perdido. Desse modo, esses tratamentos de baixo nível teriam de ser implementados
para que fossem feitos os testes dos algoritmos desenvolvidos.
Além disso, os erros de sensores e atuadores adicionam uma complicação extra ao problema e poderiam prejudicar
as análises dos resultados obtidos. Portanto, a primeira decisão tomada foi a implementação em uma plataforma
separada que permitisse melhor controle e resultados mais rápidos. A plataforma escolhida foi o framework de
desenvolvimento de jogos eletrônicos XNA.
Outro ponto é que o problema considerando todas as problemáticas envolvidas é demasiadamente complexo. Isso
motivou estabelecer uma metodologia de desenvolvimento incremental e iterativo em que se começaria com uma
versão simplificada do problema e iria se adicionando complexidade a cada nova iteração.
4.1. Implementação de simulador simplificado
O XNA é um framework de desenvolvimento de jogos em linguagem C# mantido pela Microsoft. O simulador
simplificado foi pensado de modo que provesse uma estrutura mínima para testes e análises dos algoritmos
desenvolvidos, dado que se trata apenas de uma plataforma de testes e não o foco da implementação. As principais
vantagens do uso do XNA foram devido às seguintes soluções já existentes na ferramenta:
Estruturas geométricas, como pontos e vetores;
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
Manipulação de imagens pixel a pixel;
Rotinas gráficas de alto nível para desenho de sprites;
Simples manipulação e desenho de texto;
Fácil tratamento de entrada de teclado e mouse;
Estrutura de simulação baseada em tempo.
Desse modo, o simulador foi implementado com uma interface gráfica 2D muito simples minimamente funcional,
apesar do poder gráfico do XNA, que utiliza DirectX 9 para renderização. A simulação consiste de um mapa (cenário)
estático em que apenas dois tipos de regiões são identificadas: regiões permitidas para os robôs trafegarem e as
proibidas. Seguindo a metodologia proposta, novas funcionalidades foram sendo adicionadas ao simulador conforme a
necessidade; essas são comentadas nas respectivas iterações em que foram implementadas.
O mapa é entrado como uma imagem em que foi convencionado que pontos pretos identificam posições proibidas e
pontos brancos indicam as permitidas. Isso permitiu a rápida confecção de mapas usando um editor simples de imagens
ou mesmo em código. Então, é feito um processamento da imagem que representa o mapa para transformar-lá num grid
de ocupação, ou seja, uma matriz de booleanos indicando posições proibidas. Para evitar problemas, antes desse
procedimento normaliza-se a imagem transformando-a em monocrática. A Figura 3 mostra um dos mapas gerados para
teste. Observe que não há diferenciação de terreno nas posições permitidas.
Figura 3. Mapa conforme convenção adotada no simulador: pontos brancos são posições permitidas e os pretos
representam as proibidas. A imagem foi criada à “mão livre” usando um simples editor de imagens.
Os robôs inicialmente foram implementados como são simples pontos sem que fossem consideradas a direção de
visada do robô, tipo de locomoção utilizada e outras questões irrelevantes dentro do escopo do trabalho. As demais
iterações tiveram que implementar movimento do robô e o conhecimento de mundo mantido por estes.
O modelo de comunicação utilizado considera que a área de cobertura é um círculo com centro no entidade de
comunicação (estação base ou robô) em questão. No caso, pontos proibidos do mapa nunca são considerados cobertos,
mesmo que estejam dentro do círculo de cobertura de algum entidade de comunicação. Não foi levada em conta a
atenuação do sinal devido à presença de obstáculos no caminho de propagação.
4.2. Primeira iteração
A primeira iteração envolveu a implementação de uma versão simplificada do problema com as seguintes
características:
Conhecimento prévio do mapa;
Robôs são posicionados diretamente nas localidades desejadas.
Dessa forma, o problema torna-se semelheante ao posicionamento de antenas sobre uma região conhecida de modo
que seja obtida a máxima área de cobertura.
A técnica pensada para tratar o espaço foi a de dividi-lo em uma malha de quadrados (grid) como mostra a Fig. 4.
Com isso, transforma-se o espaço contínuo em discreto e portanto mais tratável por algoritmos. Note que na utilização
dessa técnica, faz-se uma espécie de amostragem do espaço e cria-se uma relação de compromisso.
Quanto mais granulado o grid (i.e., quanto menores forem as células), melhor é a precisão e portanto espera-se
melhor resultados. Por outro lado, uma maior granularidade aumenta o número de elementos envolvidos, o que exige
mais recursos computacionais (memória e processamento). Assim, há uma relação de compromisso entre precisão e
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
desempenho. Na realidade, o processo implementado envolve a passagem de grids (em especial do grid de ocupação
gerado diretamente da imagem do mapa) para outros de menor precisão com o objetivo de reduzir o processamento
requerido. As próxima referências a grid de ocupação nesse artigo serão referências à versão de menor precisão.
→
Figura 4. Aplicação de grid a uma figura no espaço.
A técnica de grids foi usada para determinar regiões permitidas para posicionamento dos robôs quanto as cobertas
pela comunicação de modo que trabalhou-se com dois tipos de grids: de ocupação e de comunicação. Na montagem de
grids de ocupação, considera-se que uma célula é ocupada caso algum ponto dentro desta seja ocupado (proibido). No
caso da Fig. 4, o procedimento de construção do grid é o de um grid de ocupação, em que pontos pretos representam
posições proibidas.
Já no caso de grids de comunicação, uma célula é considerada coberta apenas se todos os pontos desta são cobertos.
Note que construído um grid de comunicação, a área de cobertura é aproximadamente proporcional ao número de
células consideradas cobertas. Desse modo, a contagem das células cobertas no grid de comunicação foi usada para
avaliar se um determinado posicionamento é melhor (em termos de área coberta) que outro.
Perceba que, dada a restrição de conectividade completa, um robô só pode ser posicionado numa célula coberta no
grid de comunicação. Com essa observação, reduz-se consideravelmente o espaço de possibilidades.
A implementação do algoritmo para determinar a melhor disposição dos robôs feita segue uma estratégia gulosa.
Para cada robô, determina-se qual a posição ótima no grid para o momento atual e posiciona-se o robô em questão nela;
então, não se volta atrás na decisão feita. A determinação da posição ótima para cada robô é feita por força bruta: testa-
se todas as possibilidades e guarda-se aquela que resultou maior número de células cobertas no grid de comunicação.
Observe que a estratégia gulosa implementada faz com que nem sempre chegue-se a solução realmente ótima, porém
esta reduz consideravelmente a complexidade computacional do algoritmo enquanto produz soluções muito boas.
Nesse estágio, ainda não havia sido implementada a estação base de comunicação, logo a escolha do primeiro robô
era feita considerando que qualquer posição é possível para este, embora não seja coberta por comunicação. Assim,
iterava-se sobre todas as células permitidas no grid de ocupação para determinar a ótima. Para os demais robôs, caía-se
no caso em que só é interessante posicioná-los em células cobertas no grid de comunicação.
As Figuras 5 a 10 mostram resultados da simulação implementada nesta iteração para três diferentes mapas, com
visão do ambiente em si e em grid. As figuras em grid mostram células proibidas do grid de ocupação como pretas e
células cobertas no grid de comunicação como azuis. Em todos os testes mostrados, utilizou-se mapas com resolução
800x600 pixels e grid com células 10x10, o que resulta em grids de 80x60 células; o número de robôs utilizado foi
sempre oito. Diversos outros mapas além dos apresentados aqui foram testados e obteve-se resultados semelhantes.
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
Figura 5. Posicionamento dos robôs no mapa 1 (mapa gerado à “mão livre”).
Figura 6. Grids (de ocupação e de comunicação) para o mapa 1.
Figura 7. Posicionamento dos robôs no mapa 2 (formado por figuras geométricas simples).
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
Figura 8. Grids (de ocupação e de comunicação) para o mapa 2.
Figura 9. Posicionamento dos robôs no mapa 3 (elipse).
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
Figura 10. Grids (de ocupação e de comunicação) para o mapa 3.
Embora o algoritmo desenvolvido tenha produzido boas soluções como mostram as Figs. 5 a 10, o tempo de
processamento foi demasiadamente alto nos testes realizados conforme apresenta a Tab. 1. Levando-se em conta que se
trata de um algoritmo que deve ser executado diversas vezes à medida que se toma maior conhecimento do cenário e
enquanto são processadas diversas outras tarefas do robô, esse não é um desempenho aceitável. Portanto, ficou para as
próximas iterações a tarefa de melhorar o desempenho do algoritmo gerado.
Tabela 1. Tempos de processamento médios para execução do algoritmo encontrar disposição que produz cobertura
ótima desenvolvido na primeira iteração. A máquina utilizada para testes possui processador Core i7 720QM e
6 GB RAM DDR3.
Mapa Tempo de Processamento Médio (s)
Mapa 1 (“mão livre”) ~2,5
Mapa 2 (figuras geométricas) ~1,8
Mapa 3 (elipse) ~1,2
4.3. Segunda iteração
A complexidade acordada para ser adicionada nessa iteração foi tratar a questão da movimentação dos robôs. Ainda
considera-se que o mapa é conhecimento previamente. Dado que se possui um grid de ocupação do ambiente,
movimentar os robôs até as posições desejadas, que são as posições da disposição considerada ótima pelo algoritmo
implementado na primeira iteração, é equivalente a achar uma sequência de posições no grid até a posição desejada sem
passar por uma célula proibida. O problema de se achar um caminho entre dois pontos de um grid (path finding) é
conhecido e extensivamente estudado, assim buscou-se por algoritmos desse domínio.
O algoritmo escolhido para implementação foi o A* (A star) (Buckland, 2005), (Patel). Trata-se de um algoritmo
de busca em grafo guiada por uma heurística que é uma estimativa do custo até o destino. O algoritmo faz a busca
dando preferência para expandir nós com menor estimativa de custo.
Primeiramente, um grid de ocupação pode ser visto como um grafo em que as células são vértices e as arestas são
movimentações possíveis entre as células. Isso é mostrado na Fig. 11 para o caso em que são permitidas apenas
movimentações horizontais e verticais. Note que embora sejam representados vértices na figura para células ocupadas,
elas são posições proibidas e não devem fazer parte do caminho.
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
Figura 11. Grid de ocupação visto como um grafo.
Dado que não diferenciação de terreno, foi estipulado que o algoritmo deveria encontrar o caminho com menor
distância. Também, no modelo de movimentação implementado, considerou-se que são permitidas apenas
movimentações horizontais e verticais (não é possível se mover no grid em diagonal, por exemplo). Assim, a função de
custo assumida foi o número de células do caminho, que é equivalente a menor distância dadas as simplificações feitas.
Desse modo, a estimativa de custo do nó atual até o destino usada no A* foi a distância de Mannhatan (Patel),
apresentada na Eq. (1). Nessa equação, n e g são respectivamente o nó atual e o destino e as coordenadas utilizadas são
em relação ao grid.
| | | | (1)
Observe que essa estimativa da Eq. (1) é a menor distância considerando movimentações apenas na horizontal e na
vertical, logo é uma estimativa otimista. Num ambiente em que a movimentação pode se dar em qualquer direção como
acontece na realidade, uma menor estimativa seria a distância euclidiana (distância em linha reta). Para compor a
estimativa total de custo, o A* considera o custo despendido até o vértice em questão somado com a estimativa até o
destino.
A segunda tarefa realizada foi a melhora do desempenho do algoritmo de determinação de disposição que produz
cobertura ótima desenvolvido na primeira iteração. Na implementação que havia, o grid de comunicação era
armazenada em memória como uma matriz de mesma dimensão que o grid de ocupação. Assim, o algoritmo precisava
iterar sobre toda a matriz para verificar se aquela era uma célula coberta e portanto posição candidata para o robô em
questão e para contar o número de células cobertas.
Percebeu-se que a área de comunicação é pequena em relação ao tamanho do mapa, então decidiu-se passar a
armazenar o grid de comunicação como uma lista de pontos (coordenadas X e Y) referenciando o grid de ocupação.
Desse modo, precisa-se iterar apenas sobre uma lista de dimensão do número de células cobertas, o que reduz
consideravelmente a quantidade de computação necessária.
A Tabela 2 apresenta tempos de processamento para execução do algoritmo utilizando essa nova abordagem;
observe que houve uma melhora substancial. Comparando os dados da Tab. 1 e da Tab. 2, conclui-se que houve um
speedup (melhora de desempenho) médio de 4,78 (478%).
Tabela 2. Tempos de processamento médios para execução do algoritmo encontrar disposição que produz cobertura
ótima com alteração feita na segunda iteração. A máquina utilizada para testes possui processador Core i7
720QM e 6 GB RAM DDR3.
Mapa Tempo de Processamento Médio (ms)
Mapa 1 (“mão livre”) ~600
Mapa 2 (figuras geométricas) ~300
Mapa 3 (elipse) ~250
Algumas implementações adicionais foram feitas no simulador. Implementou-se a estação base e um mecanismo
para posicionar as entidades no cenário com uso do mouse. Também, foi necessário implementar a locomoção dos
robôs. Como trata-se de uma questão muito dependente da implementação feita no simulador e até mesmo do tipo de
robô utilizado, escolheu-se um modelo bem simples: faz-se o robô deslocar-se em linha reta com velocidade constante
até o próximo ponto do caminho determinado.
A Figura 12 mostra a simulação em execução como implementada na segunda iteração. Em amarelo, são mostrados
os caminhos encontrados até o destino pelos robôs.
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
Figura 12. Simulação em execução como implementada na segunda iteração. Os caminhos encontrados são mostrados
em amarelo.
4.4. Terceira iteração
A última questão a ser tratada é a falta de conhecimento prévio do mapa por parte dos robôs. Nesse caso, adotou-se
que os robôs consideram que o grid de ocupação do mapa inicialmente é tal que não há regiões proibidas. Assim, o
algoritmo para encontrar as posições de cobertura ótima é primeiramente executado considerando apenas as regiões
proibidas na área observável pelos robôs em suas posições iniciais e envia-se os robôs para as posições determinadas.
Então, o algoritmo de determinação de posições que produzem cobertura ótima é reexecutado periodicamente
levando-se em conta as últimas atualizações de conhecimento do mapa (regiões proibidas descobertas) e sobrescreve-se
os destinos dos robôs.
Para evitar que um robô colidisse com os extremos do mapa caso esteja seguindo um caminho que passa por uma
região que num mapeamento posterior se releve uma região proibida, a cada momento o robô verifica se a próxima
posição no caminho não corresponde a um ponto proibido de acordo com o conhecimento do mapa mais atualizado. Se
isso ocorrer, o robô procura um outro caminho até o destino (reexecuta o algoritmo de path finding).
Caso seja impossível encontrar um caminho na situação descrita, significa que o destino se revelou na verdade uma
posição proibida. Assim, o robô pára e espera até que o algoritmo de determinação da cobertura ótima seja reexecutado
e um novo destino seja dado a ele.
Como o robô mapeia o ambiente em torno dele é algo também dependente do simulador e dos sensores utilizados,
então novamente decidiu-se por usar um modelo bem simples. O modelo de percepção do ambiente do robô utilizado
foi de que este é capaz de tomar perfeito conhecimento do ambiente ao redor dele num quadrado de 3x3 células do grid
de ocupação.
A Figura 13 mostra a implementação feita na terceira iteração. As células de grid em vermelho sobrepostas ao
mapa são as células conhecidas como ocupadas no momento pelos robôs.
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
Figura 13. Implementação feita na terceira iteração. As células de grid em vermelho mostram as células já mapeadas
como ocupadas.
5. Conclusão
O problema foco deste projeto foi a otimização da cobertura de comunicação por um grupo de robôs. Dada sua
importância, ele é o tema de um do teste de qualificação Deployment Test da Robocup Rescue Simulation League.
Dada a alta complexidade do simulador usado na competição, o USARSim, decidiu-se fazer as implementações dos
algoritmos em uma simulação própria para fins de testes de modo que pudessem ser obtidos resultados rápidos. Assim,
fez-se o desenvolvimento de um simulador bem simples utilizando o framework XNA. Os algoritmos foram
implementados em linguagem C# e com algumas ferramentas providas pela API do XNA.
Dada ainda a complexidade inerente ao problema, foi seguido um metodologia iterativa e incremental de
desenvolvimento de modo que a complexidade fosse tratada por partes. Inicialmente, considerou-se conhecido o mapa
previamente e que os robôs pudessem ser colocados nas posições desejadas sem necessidade de locomoção. Em
seguida, foi tratada a questão da movimentação dos robôs. Por fim, adicionou-se a falta de conhecimento prévio do
mapa de modo que os robôs passaram a precisar mapeá-lo enquanto tentam encontrar a melhor solução para o problema
com a porção de mapa já conhecida.
Esperava-se que esse trabalho fosse finalmente integrado à equipe de resgate virtual da ITANDROIDS que
acreditava-se que seria reativada em 2011. Infelizmente, isso não ocorreu. Desse modo, não foi possível integrar os
algoritmos desenvolvidos nesse projeto ao simulador USARSim dada a necessidade de tratar diversas outras questões
que fogem do escopo deste projeto e esperava-se que fossem tratadas pelo restante da equipe que se acreditava que seria
reativada.
6. Agradecimentos
Agradeço ao meu professor orientador Jackson Paul Matsuura pela orientação na busca de soluções para o
problema tratado neste trabalho. Ao ITA por me proporcionar um ensino de qualidade e participação em projetos de
pesquisa como esse.
Agradeço aos meus amigos e companheiros de quarto Guilherme Augusto Loureço Pereira e Humberto Consolo
Holanda pelo companheirismo e pela boa convivência.
Por fim, agradeço ao CNPq pelo apoio financeiro concedido.
7. Referências
Robocup Rescue. [Online] [Citado em: 11 de agosto de 2011.] http://www.robocuprescue.org/.
Balakirsky, Stephen. Line Laser. USARSim wiki. [Online] [Citado em: 11 de agosto de 2011.]
http://usarsim.sourceforge.net/wiki/index.php/Line_Laser.
Batalin, Maxim A. e Sukhatme, Gaurav S. Coverage, Exploration and Deployment by a Mobile Robot and
Communication Network. International Workshop on Information Processing in Sensor Networks.
Buckland, Mat. 2005. Programming Game AI by Example. Plano : Wordware Publishing, Inc., 2005.
Patel, Amit. Amit's A* Pages. Amit Patel's Home Page. [Online] http://theory.stanford.edu/~amitp/GameProgramming/.
Anais do XVII ENCITA, ITA,19 de outubro de 2011
,
Rekleitis, Ioannis, et al. 2004. Limited Communication, Multi-Robot Team Based Coverage. IEEE International
Conference on Robotics & Automation. 2004.
Technical Commitee; Arnoud Visser et al. 2010. Robocup Rescue Simulation League Virtual Robots competition Rules
document. 2010.
Wang, J. e Balakirsky, S. USARSim v3.1.3 Manual.