Controle de Tr´afego para um Enxame de Robˆos
Transcrição
Controle de Tr´afego para um Enxame de Robˆos
Leandro Soriano Marcolino Controle de Tráfego para um Enxame de Robôs Belo Horizonte 2008/1 Leandro Soriano Marcolino Controle de Tráfego para um Enxame de Robôs Monografia apresentada como requisito da disciplina Projeto Orientado em Computação I do Curso de Bacharelado em Ciência da Computação da UFMG. Orientador: Luiz Chaimowicz U NIVERSIDADE F EDERAL DE M INAS G ERAIS I NSTITUTO DE C I ÊNCIAS E XATAS D EPARTAMENTO DE C I ÊNCIA DA C OMPUTAÇ ÃO C URSO DE BACHARELADO EM C I ÊNCIA DA C OMPUTAÇ ÃO Belo Horizonte 2008/1 Prof. Dr. Luiz Chaimowicz Orientador “The end is nothing; the road is all.” Willa Cather Resumo Um enxame de robôs é composto por um grande número de robôs simples que trabalham de forma coordenada para realizar uma determinada tarefa. Em geral, os membros do grupo devem trabalhar de forma distribuı́da e utilizar somente comunicação local. Durante a navegação de um enxame, muitas vezes acontecem congestionamentos: um grande número de robôs se dirige para a mesma região do ambiente em um mesmo intervalo de tempo, causando disputas que desperdiçam tempo e recursos. Neste trabalho, é proposto um método de coordenação distribuı́da para evitar congestionamentos durante a navegação de um enxame. São apresentadas simulações que demonstram a eficácia do algoritmo para dois e para quatro grupos de robôs que se movimentam em direções opostas. Além disso, foram realizados experimentos em simulação para analisar a escalabilidade do algoritmo proposto e para comparar o método com o uso exclusivo de forças locais de repulsão. Os resultados mostraram que o algoritmo proposto permite uma melhor navegação do enxame, e deve ser escalável para um grande número de robôs. Palavras-chave: Enxames, Coordenação Multi-Robô, Coordenação Distribuı́da, Inteligência Artificial, Robótica Abstract A swarm of robots can be defined as a large number of simple robots that work together to accomplish a certain task. Generally, a swarm must work in a distributed way and use only local communication. During swarm navigation, congestion often happens: a large number of robots move towards the same region of the environment in the same time interval, causing conflicts that waste time and resources. In this work, we propose a distributed coordination method to avoid congestion during swarm navigation. Simulations are presented to show the efficacy of the algorithm in situations where two or four groups of robots move in opposite directions. We also ran simulations to analyze the scalability of the proposed algorithm and to compare the method with the exclusive use of local repulsion forces. Results show that the proposed algorithm allows the swarm to have a smoother navigation, and might be scalable to a large number of robots. Keywords: Swarms, Multi-Robot Coordination, Distributed Coordination, Artificial Inteligence, Robotics Sumário Lista de Figuras Lista de Tabelas 1 Introdução 2 Referencial Teórico p. 11 3 Metodologia p. 14 3.1 p. 14 Coordenação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 9 4 Resultados e Discussão p. 17 5 Conclusões e Trabalhos Futuros p. 23 Referências Bibliográficas p. 24 Lista de Figuras 1.1 Exemplo de uma situação onde ocorrem congestionamentos durante a navegação de um enxame. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 10 3.1 Passos da execução do algoritmo de coordenação proposto . . . . . . . . . . p. 15 3.2 Controlador utilizado pelo robô para evitar um congestionamento. . . . . . . p. 16 4.1 Execução com dois grupos utilizando forças de repulsão locais. . . . . . . . . p. 18 4.2 Execução com dois grupos utilizando o algoritmo de coordenação. . . . . . . p. 18 4.3 Execução com quatro grupos utilizando o algoritmo de coordenação. . . . . . p. 20 4.4 Tempo utilizado pelos dois algoritmos. As barras indicam o desvio padrão 4.5 dos resultados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 21 Número de mensagens utilizadas para um número crescente de robôs. . . . . p. 22 Lista de Tabelas 4.1 Principais constantes utilizadas. . . . . . . . . . . . . . . . . . . . . . . . . p. 17 9 1 Introdução Grandes grupos de robôs têm recebido muita atenção recentemente. Geralmente chamados de enxames, esses sistemas utilizam um grande número de agentes simples para realizar as mais diversas tarefas. Em geral, enxames de robôs devem trabalhar de forma distribuı́da e usar recursos limitados de comunicação. Devido a essas caracterı́sticas, novos algoritmos para controlar e coordenar esses grandes grupos de robôs têm sido desenvolvidos. Umas das principais caracterı́sticas desejadas ao se desenvolver um algoritmo para um enxame é a escalabilidade. É necessário que o algoritmo possa ser executado com um número arbitrário de robôs. Para se atingir a escalabilidade, deve-se, em geral, utilizar apenas comunicação local. Também é importante que o algoritmo seja tolerante a falhas: durante a navegação de um número muito grande de robôs podem ocorrer, por exemplo, falhas de hardware em alguns robôs. Geralmente, portanto, as soluções devem ser distribuı́das, sem depender de uma entidade central. Durante a realização de uma determinada tarefa, um enxame de robôs deve navegar no ambiente. A navegação de um enxame consiste na movimentação dos robôs no ambiente, de forma a atingir um determinado alvo. Normalmente, deseja-se que a navegação seja o mais eficiente e o mais confiável possı́vel. Uma das dificuldades encontradas durante a navegação de um enxame é o congestionamento: um grande número de robôs se dirige para a mesma região do ambiente em um mesmo intervalo de tempo, causando disputas que desperdiçam tempo e recursos. Esse problema pode acontecer tanto quando a região de congestionamento é um alvo para vários robôs, por exemplo durante a navegação por waypoints, como também quando grupos de robôs se movimentam em direções contrárias e por acaso se encontram durante a navegação. Assim, pode-se perceber que soluções para realizar o controle de tráfego são de grande importância para diminuir o desperdı́cio de tempo e recursos causados pelo congestionamento durante a navegação de um enxame. Durante as simulações realizadas em [1], por exemplo, observou-se um grande congestionamento quando os robôs se dirigiam ao mesmo waypoint ao 1 Introdução 10 Figura 1.1: Exemplo de uma situação onde ocorrem congestionamentos durante a navegação de um enxame. serem resgatados. Também foram observados congestionamentos quando um robô de resgate se movimentava no ambiente em busca de robôs presos, mas acabava se encontrando com um grande número de robôs se movimentando na direção oposta. Na Figura 1.1 pode ser vista uma cena das simulações realizadas no trabalho onde essas duas situações acontecem: um robô de resgate (representado por um triângulo apontado para a esquerda, na região inferior da imagem) se movimenta em busca de robôs presos, enquanto um grande número de robôs se movimenta na direção oposta, prejudicando a navegação do robô. Enquanto isso, vários robôs tentam chegar no mesmo waypoint, localizado na região inferior do obstáculo. Essas situações aumentam muito o tempo de convergência dos robôs. O objetivo deste trabalho, portanto, é investigar e desenvolver metodologias para realizar o controle de tráfego de um enxame de robôs. Pretende-se analisar e avaliar as soluções desenvolvidas através de simulações. Para isso, será utilizado o Player/Stage [2], um framework muito popular em robótica. As soluções desenvolvidas neste trabalho deverão aprimorar a navegação de um enxame, tornando-a mais eficiente e confiável. 11 2 Referencial Teórico Nesta seção serão apresentados alguns dos conceitos básicos de navegação de robôs. Além disso, serão discutidos alguns trabalhos relacionados ao controle de tráfego para grupos de robôs. Mais detalhes sobre os conceitos de robótica móvel apresentados nesta seção podem ser encontrados em [3]. A navegação de um robô consiste na movimentação do robô em um ambiente, de forma a atingir um determinado alvo. Normalmente, esse ambiente contem obstáculos, que podem ser previamente informados ao robô ou podem ser desconhecidos. Quando a posição dos obstáculos é previamente informada, o robô pode realizar um planejamento de seu caminho. Quando os obstáculos são desconhecidos, o robô deve utilizar seus sensores para perceber e evitar os obstáculos dinamicamente. Pode-se utilizar soluções hı́bridas, onde o robô planeja a sua navegação em um ambiente contendo obstáculos previamente informados, mas é capaz de perceber novos obstáculos e adaptar a sua trajetória apropriadamente. Um dos mecanismos que podem ser utilizados durante a navegação de um robô são os waypoints. É especificado um conjunto de pontos ordenados no ambiente e o robô se movimenta em direção a cada um desses pontos, na ordem estabelecida. A navegação por waypoints é muito útil em situações onde a posição dos obstáculos é previamente conhecida. Os waypoints a serem utilizados pelo robô para executar uma determinada trajetória podem ser gerados, por exemplo, por algoritmos de planejamento, como Dijkstra ou A*. Outro mecanismo popular para a navegação de um robô são os campos potenciais. Basicamente, o alvo atua como uma região de atração para o robô, enquanto os obstáculos atuam como uma região de repulsão. A superposição das forças de atração e repulsão guiam o robô em direção ao alvo, ao mesmo tempo em que o obriga a evitar obstáculos. Outro conceito importante é a configuração de um robô. A configuração de um robô pode ser representada por um vetor de configurações q, cuja dimensão especifica o número de graus de liberdade do robô. O número de graus de liberdade do robô representa o número mı́nimo de variáveis independentes que, juntamente com a sua geometria, são necessárias para especificar 2 Referencial Teórico 12 completamente o robô. Para que um robô mude a sua configuração, ou seja, realize efetivamente uma movimentação, pode-se considerar robôs holonômicos ou não-holonômicos. Em um robô não-holonômico, o número de velocidades de atuação é menor do que o número de graus de liberdade do sistema. Ou seja, existem restrições de movimento que não permitem o controle independente de todas as variáveis do vetor de configurações. Um robô semelhante a um carro, por exemplo, necessita realizar manobras para atingir uma determinada configuração. Já robôs holonômicos, ou completamente atuados, possuem um número de velocidades de atuação igual ao número de graus de liberdade do sistema. Portanto, podem controlar de forma independente todas as variáveis do vetor de configurações. Mais detalhes sobre esses conceitos podem ser encontrados em [4]. Neste trabalho, são desenvolvidos algoritmos para a navegação de um enxame de robôs. A área de navegação de grandes grupos de robôs tem sido muito ativa ultimamente. Uma abordagem comum é controlar os robôs de forma descentralizada, misturando a descida do gradiente com forças locais de repulsão [5]. Um dos primeiros trabalhos a lidar com o controle de movimento através de forças locais de iteração foi proposto em [6] para gerar animações realistas de grupos de pássaros. Porém, como no método convencional de campos potenciais [7], a presença de obstáculos e forças locais de repulsão entre os robôs pode prejudicar a convergência devido a presença de mı́nimos locais. Em [1], é proposto um método de coordenação descentralizada para superar esse problema. Notou-se, porém, que durante as simulações os robôs poderiam demorar para convergir devido à problemas de congestionamento. É interessante, portanto, coordenar os robôs para evitar o congestionamento. Em [8], é feito um survey na área de robótica cooperativa. O controle de tráfego é identificado como uma área importante de pesquisa, além de ser caracterizado como um problema de conflito de recursos. Existem trabalhos desde a década de oitenta, como por exemplo [9], onde são propostas várias polı́ticas para evitar o congestionamento de robôs em uma fábrica. Em [10] são propostas regras de trânsito para a navegação de um grupo de robôs. Em geral, os trabalhos nessa área assumem que os robôs navegam em faixas delimitadas (como ruas ou estradas). Essas faixas se encontram em interseções, onde podem ocorrer congestionamentos. Portanto, em geral, o controle de tráfego é realizado apenas nessas interseções. Trabalhos mais recentes podem ser encontrados tanto na área de robótica cooperativa como na área de sistemas multi-agentes. Alguns trabalhos utilizam um agente para gerenciar o tráfego nas interseções onde pode acontecer um congestionamento, como [11]. Uma abordagem semelhante, na área da robótica, pode ser vista em [12], onde uma rede de sensores é utilizada para coordenar o tráfego dos robôs. Em [13] é proposto um algoritmo onde os robôs coordenam 2 Referencial Teórico 13 suas velocidades de forma a evitar uma colisão. A coordenação pode envolver não só os robôs diretamente envolvidos na provável colisão, como também os robôs vizinhos, que podem ter que alterar suas velocidades para auxiliar os robôs envolvidos. Já em [14] é proposto um mecanismo para evitar o congestionamento ao ser simulada uma multidão de pessoas. Os autores propõe uma abordagem onde as pessoas planejam com antecedência para evitar um congestionamento, conseguindo uma trajetória mais suave do que ao se utilizar forças de repulsão locais. O método, porém, é muito centralizado para ser utilizada em um enxame de robôs. Neste trabalho é proposto um método de coordenação descentralizado que permite a um enxame de robôs navegar de forma suave, evitando situações de congestionamento. A abordagem não assume que os robôs navegam em faixas delimitadas, nem necessita de meios externos ao enxame, como redes de sensores ou agentes colocados nas interseções, para gerenciar o tráfego. 14 3 Metodologia Ao navegar um enxame de robôs, costuma-se utilizar forças de repulsão locais para evitar colisões. Portanto, dado um robô completamente atuado i, com modelo dinâmico dado por q̇i = vi , v̇i = ui , onde qi = [Xi ,Yi ]T é a configuração do robô i, ui é entrada do controle e vi o vetor velocidade, a seguinte lei de controle foi utilizada: ui = α f (qi , di ) −γ || f (qi , di )|| 1 −Cq̇i j∈Ni q j − qi ∑ (3.1) As constantes α, γ e C são positivas. O primeiro termo é a força de atração do robô em direção ao alvo. A função f calcula o vetor que aponta na direção do alvo do robô i, di . O segundo termo representa as forças locais de repulsão. Os robôs vizinhos ao robô i são representados pelo conjunto Ni . Define-se como vizinho todo robô que está dentro de um certo limite, δ , de distância do robô i. O terceiro termo é uma força de amortecimento. Quando se tem um número muito grande de robôs, porém, pode-se ter problemas ao se utilizar apenas forças locais de repulsão. Quando grupos de robôs se movimentam em direções contrárias, por exemplo, perde-se muito tempo até que um grupo consiga desviar completamente do outro. Portanto, é necessário uma maior coordenação entre os robôs para evitar esse problema. 3.1 Coordenação Nessa seção será explicado o mecanismo de coordenação proposto para evitar o congestionamento. Supõe-se que cada robô, i, utiliza o mesmo sistema de coordenadas e, portanto, sabe qual é a direção de seu destino, di . Além disso, considera-se que os robôs são capazes de se comunicar localmente com todos os vizinhos que estejam a uma distância máxima ρ. A idéia geral do algoritmo é que os primeiros robôs a perceberem o risco de um congestionamento avisem os outros, permitindo-os evitar o problema. 15 3.1 Coordenação (a) (b) (c) (d) Figura 3.1: Passos da execução do algoritmo de coordenação proposto Sempre que um robô, n, detecta a presença de outro, m, ele envia uma mensagem avisando qual é sua direção de destino. Considera-se que um robô detectou a presença de outro quando a distância entre eles é menor do que δ . Assim, caso dn 6= dm , o robô que recebeu a mensagem, m, é capaz de perceber o risco iminente de acontecer um congestionamento. De modo análogo, m também enviará uma mensagem para n avisando o seu destino, permitindo que ambos os robôs percebam o risco do congestionamento. Para diminuir o número de mensagens necessárias para a execução do algoritmo, cada robô só pode enviar uma mensagem avisando seu destino a cada ε iterações. Essa etapa inicial do algoritmo pode ser vista na Figura 3.1(a). Os robôs que perceberam o risco de um congestionamento enviam uma mensagem aos seus vizinhos, como pode ser visto na Figura 3.1(b). Cada robô, ao receber essa mensagem, a retransmite para seus respectivos vizinhos, como mostra a Figura 3.1(c). Dessa forma, a informação do risco de um congestionamento é transmitida pelo enxame e cada grupo poderá desviar de forma apropriada, como mostrado na Figura 3.1(d). Assim que um robô percebe o risco de um congestionamento, seja encontrando um robô do outro grupo, seja pelo aviso de outros robôs de seu próprio grupo, ele desvia do local onde aconteceria o congestionamento. Para realizar o desvio, o robô utiliza como base a direção de seu destino. Pode-se especificar, por exemplo, que cada robô desviará no sentido anti-horário, de forma que um grupo que vai da esquerda para a direita desviará por baixo, e um grupo que vai da direita para a esquerda desviará por cima. O controlador do robô durante o desvio, portanto, pode ser dado por: ui = α g(qi , di ) −γ ||g(qi , di )|| 1 −Cq̇i , j∈Ni q j − qi ∑ (3.2) 16 3.1 Coordenação Figura 3.2: Controlador utilizado pelo robô para evitar um congestionamento. onde g retorna um vetor que guiará o robô na direção do alvo, ao mesmo tempo em que o faz desviar na direção apropriada. Para simplificar a fórmula, será considerado que o robô se movimenta no eixo x e irá desviar no sentido negativo do eixo y. Assim, a função g pode ser dada por: g(qi , di ) = β (dix − qix ) + ψ(ciy − φ − qiy ), (3.3) onde β e ψ são constantes positivas e β < ψ, ciy é a posição do robô i no eixo y quando ele iniciou o desvio e φ é uma constante positiva, que caracteriza a distância a ser percorrida no eixo y durante o desvio. Quando a distância efetivamente percorrida no eixo y se aproxima de φ , o robô retorna ao seu controlador normal de movimento, dado pela equação 3.1. Uma representação gráfica do controlador de desvio pode ser vista na Figura 3.2. 17 4 Resultados e Discussão O algoritmo proposto foi implementado no Player/Stage, um framework que permite realizar simulações realistas. Ao se utilizar esse framework, normalmente o mesmo código pode ser utilizado tanto em simulações quanto na execução com robôs reais, sendo necessário fazer apenas pequenas modificações. As constantes utilizadas mais importantes podem ser vistas na tabela 4.1. Foram executadas simulações com dois grupos de robôs e com quatro grupos de robôs. Na execução com dois grupos utilizou-se 4 como valor de φ . Na execução com quatro grupos, utilizou-se 5 como valor de φ . Foram executadas simulações com dois grupos de 24 robôs se movimentando em direções opostas. Na Figura 4.1 pode ser visto o resultado utilizando apenas forças de repulsão locais (NORMAL). Na Figura 4.2 o resultado utilizando o algoritmo de coordenação (COORDENADO) pode ser visto. Como pode ser observado visualmente, o comportamento dos robôs foi melhor utilizando o algoritmo proposto. A navegação dos robôs foi mais suave, os grupos mantiveram-se coesos e o risco de colisões foi baixo. Já na navegação utilizando apenas forças locais de repulsão, os grupos se misturaram, ocorrendo um alto risco de colisões. Pode-se perceber uma aglomeração dos robôs na região central, caracterizando uma situação de congestionamento. Pode-se observar também que enquanto alguns robôs já conseguiram atingir o alvo, outros continuam presos na região do congestionamento, desperdiçando recursos. Percebese, assim, que a navegação utilizando o método de coordenação proposto é mais eficiente e confiável. Também foram executadas simulações com quatro grupos de 12 robôs. O resultado pode ser visto na Figura 4.3. Como pode ser observado, o algoritmo funcionou bem para quatro δ ρ ε ψ β 2 2 50 0,1 1 Tabela 4.1: Principais constantes utilizadas. 18 4 Resultados e Discussão (a) (b) (c) (d) (e) Figura 4.1: Execução com dois grupos utilizando forças de repulsão locais. (a) (b) (c) (d) (e) Figura 4.2: Execução com dois grupos utilizando o algoritmo de coordenação. 4 Resultados e Discussão 19 grupos. Os robôs realizaram um movimento aproximadamente circular em torno da região onde aconteceria o congestionamento, e cada grupo conseguiu chegar no destino especificado. Para avaliar melhor a eficiência e a escalabilidade do algoritmo, diversas simulações foram realizadas. Utilizou-se na avaliação o cenário em que dois grupos de robôs se movimentam em direções opostas. Variou-se o número de robôs por grupo, e mediu-se o tempo de execução e o número de mensagens utilizadas. Para um determinado número de robôs, rodou-se a simulação 10 vezes e calculou-se a média aritmética do resultado. Como medida do tempo de execução do algoritmo, considerou-se o número de iterações necessárias para que o último robô ultrapasse um determinado ponto na sua direção de movimento. Na Figura 4.4 pode ser visto o tempo utilizado pelos dois algoritmos. Como pode ser observado, para um número muito pequeno de robôs a eficiência dos algoritmos é semelhante, mas quando o número de robôs tornou-se maior, o algoritmo COORDENADO mostrou-se melhor do que o NORMAL. Também pode ser observado que o tempo gasto pelo algoritmo NORMAL foi muito instável, com um alto desvio padrão, enquanto o algoritmo COORDENADO apresentou um desvio padrão menor. Na Figura 4.5 pode ser visto o número de mensagens utilizadas pelo algoritmo proposto para um número variável de robôs. Na Figura 4.5 (a) pode ser visto o ajuste de curva linear, enquanto na Figura 4.5 (b) pode ser visto o ajuste quadrático. O melhor modelo linear encontrado foi y = 31, 5762x − 76, 8857, com um erro de 28, 4231. Já o melhor modelo quadrático foi y = 0, 3413x2 + 21, 3381x − 12, 3857, com um erro de 3, 9301. Apesar do melhor modelo ter sido uma função quadrática, o termo quadrático é pequeno. 20 4 Resultados e Discussão (a) (b) (c) (d) (e) Figura 4.3: Execução com quatro grupos utilizando o algoritmo de coordenação. 21 4 Resultados e Discussão 1800 Normal Coordenado 1600 Número de Iterações 1400 1200 1000 800 600 400 5 10 15 Número de Robôs por Grupo 20 25 Figura 4.4: Tempo utilizado pelos dois algoritmos. As barras indicam o desvio padrão dos resultados. 22 4 Resultados e Discussão 800 Dado Modelo Linear Número de Mensagens Enviadas 700 600 500 400 300 200 100 5 10 15 Número de Robôs por Grupo 20 25 (a) 800 Dado Modelo Quadrático Número de Mensagens Enviadas 700 600 500 400 300 200 100 5 10 15 Número de Robôs por Grupo 20 25 (b) Figura 4.5: Número de mensagens utilizadas para um número crescente de robôs. 23 5 Conclusões e Trabalhos Futuros Neste trabalho, foi proposto um algoritmo para realizar o controle de tráfego para um enxame de robôs, evitando o congestionamento. Foram apresentados resultados de simulações, onde mostrou-se a eficácia do algoritmo em cenários com dois e com quatro grupos de robôs. Além disso, comparou-se o algoritmo proposto com a utilização somente de forças locais de repulsão. Os resultados foram melhores utilizando o algoritmo proposto, além dele ter se mostrado mais estável. Percebe-se, assim, a importância de se utilizar mecanismos de coordenação durante a navegação de um enxame. Ao se analisar o número de mensagens utilizadas pelo algoritmo, percebeu-se uma tendência quadrática, porém o termo quadrático não é grande. Acredita-se, portanto, que esse algoritmo possa ser escalável para um número grande de robôs. Pretende-se adaptar o algoritmo para lidar com um número maior de grupos de robôs. Foi observado que os robôs devem executar um movimento aproximadamente circular em torno da região onde aconteceria o congestionamento para que o desvio seja bem sucedido. Deve-se estudar formas de se ter esse movimento para um número grande de grupos de robôs. Além disso, nos cenários testados, os grupos de robôs eram parecidos e se movimentavam de forma uniforme. Pode ser interessante testar cenários mais complexos, que apresentem uma menor uniformidade. Também deve-se investigar um mecanismo de coordenação para o caso em que um número muito grande de robôs deseja chegar no mesmo alvo, como pode acontecer durante a navegação por waypoints. Os trabalhos futuros também incluem a execução do algoritmo em robôs reais. Experimentos em robôs reais são muito importantes em robótica, por mostrar que um algoritmo pode efetivamente funcionar em robôs atuando no mundo real, com todos os problemas causados pelas incertezas geradas pelos erros dos sensores e dos atuadores, problemas de comunicação e restrições de tempo real. Assim, pretende-se mostrar que o algoritmo proposto pode efetivamente ser utilizado para realizar o controle de tráfego de um enxame de robôs, permitindo ao enxame navegar de forma coordenada e eficiente. 24 Referências Bibliográficas [1] MARCOLINO, L. S.; CHAIMOWICZ, L. No robot left behind: Coordination to overcome local minima in swarm navigation. In: Proceedings of the 2008 IEEE International Conference on Robotics and Automation. [S.l.: s.n.], 2008. p. 1904–1909. [2] GERKEY, B.; VAUGHAN, R. T.; HOWARD., A. The player/stage project: Tools for multirobot and distributed sensor systems. In: Proceedings of the 11th International Conference on Advanced Robotics. Coimbra, Portugal: [s.n.], 2003. p. 317–323. [3] SIEGWART, R.; NOURBAKHSH, I. R. Introduction to Autonomous Mobile Robots. [S.l.]: Bradford Book, 2004. ISBN 026219502X. [4] PEREIRA, G. A. S.; CHAIMOWICZ, L. Robôs móveis. In: tomática. [S.l.]: Blucher, 2007. v. 3, cap. 13. . Enciclopédia de Au- [5] BACHMAYER, R.; LEONARD, N. E. Vehicle networks for gradient descent in a sampled environment. In: Proceedings of the 41st IEEE Conference on Decision and Control (CDC02). [S.l.: s.n.], 2002. p. 112–117. [6] REYNOLDS, C. W. Flocks, herds and schools: A distributed behavioral model. In: Proceedings of the 14th annual conference on Computer graphics (SIGGRAPH 87). [S.l.]: ACM Press, 1987. p. 25–34. ISBN 0-89791-227-6. [7] KHATIB, O. Real-time obstacle avoidance for manipulators and mobile robots. Int. J. Rob. Res., Sage Publications, Inc., Thousand Oaks, CA, USA, v. 5, n. 1, p. 90–98, 1986. ISSN 0278-3649. [8] CAO, U. Y.; FUKUNAGA, A. S.; KAHNG, A. B. Cooperative mobile robotics: Antecedents and directions. Autonomous Robots, v. 4, n. 1, p. 7–23, March 1997. Disponı́vel em: <http://citeseer.ist.psu.edu/cao97cooperative.html>. [9] GROSSMAN, D. Traffic control of multiple robot vehicles. Journal of Robotics and Automation, v. 4, p. 491–497, 1988. [10] KATO, S.; NISHIYAMA, S.; TAKENO, J. Coordinating mobile robots by applying traffic rules. In: Proceedings of the IEEE International Conference on Intelligent Robots and Systems. [S.l.: s.n.], 1992. [11] DRESNER, K.; STONE, P. Multiagent traffic management: an improved intersection control mechanism. In: AAMAS ’05: Proceedings of the fourth international joint conference on Autonomous agents and multiagent systems. New York, NY, USA: ACM, 2005. p. 471–477. ISBN 1-59593-093-0. Referências Bibliográficas 25 [12] VISWANATH, K.; KRISHNA, K. M. Sensor network mediated multi robotic traffic control in indoor environments. In: Proceedings of the International Conference on Advanced Robotics. [S.l.: s.n.], 1997. [13] KRISHNA, K. M.; HEXMOOR, H. Reactive collision avoidance of multiple moving agents by cooperation and conflict propagation. In: Proceedings of the 2004 IEEE International Conference on Robotics and Automation. [S.l.]: IEEE, 2004. p. 2141–2146. [14] TREUILLE, A.; COOPER, S.; POPOVIć, Z. Continuum crowds. In: SIGGRAPH ’06: ACM SIGGRAPH 2006 Papers. New York, NY, USA: ACM, 2006. p. 1160–1168. ISBN 1-59593-364-6.