ROBÔS MÓVEIS AUTÔNOMOS DA UNESP-SOROCABA NA “MISSÃO MARTE”: DESCREVENDO UM SISTEMA REATIVO COM TRANSIÇÃO SEQÜENCIAL DE COMPORTAMENTOS Alexandre da Silva Simões [email protected] Laboratório de Automação e Processamento de Imagens (LAPI) Campus de Sorocaba – Universidade Estadual Paulista (UNESP) Av. Três de Marco, 511 – Alto da Boa Vista – 18087-180 – Sorocaba – SP – Brazil ABSTRACT This paper details the project of the reactive UNESP-Sorocaba autonomous mobile robots team developed to accomplish the “Mars Land” task, focusing on the robots behaviors. The team was the champion of the II IEEE Brazilian robot competition in the LEGO category in 2004. KEYWORDS: Biologically reactive paradigm. inspired robots, behaviors, RESUMO Este artigo descreve em detalhes o projeto do time de robôs móveis autônomos reativos da UNESP-Sorocaba desenvolvido para completar a tarefa da “Missão Marte”, focando nos comportamentos dos robôs. O time foi o campeão da II Competição IEEE brasileira de robôs na categoria LEGO de 2004. PALAVRAS-CHAVE: Robôs biologicamente inspirados, comportamentos, paradigma reativo. 1 INTRODUÇÃO Nas últimas décadas, a concepção de robôs tem sido fundamentalmente baseada em três primitivas básicas: sentir, planejar e agir. Embora a definição exata destas primitivas possa variar ligeiramente de acordo com os diferentes autores e suas linhas de pesquisa, uma definição bem aceita (Murphy, 2002) é apresentada a seguir. A primitiva básica sentir preocupa-se com a tomada de dados dos sensores e a produção de informações para o robô. O planejamento preocupa-se com a elaboração de uma ou mais tarefas que o robô deve executar baseado nas informações dos sensores. Por fim agir é a primitiva que preocupa-se em enviar comandos aos atuadores tomando como base as primitivas anteriores. Fundamentados no tripé sentir-planejar-agir, três paradigmas têm sido historicamente colocados para a robótica móvel: o paradigma hierárquico, o paradigma reativo e o paradigma híbrido (ou delibirativo-reativo). No paradigma hierárquico, cujas raízes remontam à década de 60, tipicamente um robô VII SBAI/ II IEEE LARS. São Luís, setembro de 2005 sente o mundo, planeja sua próxima ação, e então age. Entre suas características principais estão uma representação centralizada do conhecimento e o foco no planejamento. Ao longo dos anos, a tarefa do planejamento mostrou-se excessivamente complexa. No final da década de 80, um novo modelo foi proposto, inspirado principalmente nos estudos biológicos do comportamento animal e da psicologia cognitiva. Nascia o paradigma reativo, cujo princípio básico é emular o comportamento de animais em sistemas computacionais simplificados. Para isso, a etapa de planejamento foi sumariamente descartada, e uma organização baseada apenas nas primitivas sentir-agir foi adotada. Esse paradigma fundamenta-se na idéia de que múltiplas instâncias simultâneas e concorrentes do par sentir-agir (ou comportamentos) são suficientes para que ações – muitas vezes não explicitadas em nenhum dos comportamentos – emirjam da combinação de comportamentos, conferindo aos sistemas robóticos a capacidade de interagir mais satisfatoriamente com o ambiente. Procurando fundir as vantagens dos robôs deliberativos com a simplicidade dos robôs reativos surgiu o paradigma híbrido. Nesta abordagem, o robô tipicamente decompõe uma tarefa em subtarefas (de forma deliberativa), e depois decide quais são os comportamentos (reativos) mais adequados para cumprir cada subtarefa, estabelecendo uma organização planejar, sentir-agir. Um diagrama esquemático dos três paradigmas é apresentado na Figura 1. A opção por um ou outro paradigma tem sido um dos pontos de debate ao longo dos anos, e em suma pode ser entendido como um problema dependente da aplicação. Para a tarefa da missão Marte simplificada1, optamos pela adoção de um sistema plenamente reativo com transição seqüencial de comportamentos. Para a concepção do projeto, adotamos uma metodologia de projeto similar à proposta por Murphy (2002), 1 Por tarefa simplificada entenda-se: sem a necessidade de exploração completa do ambiente e sem a presença de objetos não previstos apresentada esquematicamente na Figura 2. Esta metodologia propõe o desenvolvimento do sistema robótico em três fases distintas: i) uma descrição geral do problema (tarefa, ambiente e robô), ii) uma fase de descrição comportamental e iii) uma fase de implementação. tripulantes mortos não devem ser resgatados. Assim, dois robôs devem entrar em um ambiente desconhecido – o ambiente da superfície de Marte -, diferenciar sobreviventes e tripulantes que morreram na queda e trazer todos os sobreviventes para um local especificado – a nave de resgate. A tarefa deve ser cumprida tão rapidamente quanto o possível. 2.2 (a) (b) (c) Figura 1 – Os três paradigmas da robótica móvel: a) paradigma hierárquico; b) paradigma reativo; c) paradigma híbrido. Descrevendo o ambiente O ambiente da “Missão Marte” – apresentado esquematicamente na Figura 3 – é composto por dois pavimentos de madeira interligados por uma rampa de inclinação acentuada (aproximadamente 30º). Os dois pavimentos e a rampa são perfeitamente lisos, de cor branca e nos pavimentos existem salas delimitadas por paredes e portas. Linhas pretas de largura não informada descrevem um caminho através dos dois pavimentos do ambiente. Garante-se que estas linhas nunca se cruzam e também que elas não passam a uma distância muito pequena de outras linhas ou paredes. O formato do caminho não é informado a priori, e as trilhas podem apresentar curvas suaves ou mudanças bruscas de direção com qualquer ângulo. A nave de resgate é indicada por uma fita verde de tamanho não informado em formato de circunferência disposta em lugar aleatório no pavimento inferior. As vítimas vivas e mortas são representadas por pedaços de madeira de cores distintas (a cor é sorteada no início da competição). Garante-se que as vítimas sempre estarão sobre as trilhas (ao menos no início do desafio), mas a posição e orientação das mesmas não são conhecidas. Figura 2 – Etapas do projeto de um sistema reativo. Este trabalho encontra-se organizado seguindo as etapas apresentadas na Figura 2: a descrição do problema é realizada na seção 2. A seção 3 exibe uma descrição mais aprofundada dos comportamentos implementados e sua forma de ativação no agente reativo. A seção 4 apresenta os resultados das implementações realizadas, e a seção 5 apresenta as conclusões do trabalho. 2 2.1 Figura 3 – O ambiente da “missão marte”. DESCREVENDO O PROBLEMA Descrevendo a tarefa A tarefa de resgate da “Missão Marte” simplificada pode ser descrita como se segue: duas espaçonaves deveriam completar uma missão em Marte. Uma das naves – cuja tripulação era composta por 5 humanos – perdeu óleo e caiu no planeta vermelho. A espaçonave restante tem dois robôs com capacidade para resgatar os sobreviventes e trazê-los para a nave de resgate. Como não há muito espaço na nave, os VII SBAI/ II IEEE LARS. São Luís, setembro de 2005 2.3 Descrevendo o robô 2.3.1 Aspectos mecânicos Considerando as exigências e restrições impostas pela tarefa e pelo ambiente, os robôs foram mecanicamente concebidos como o descrito a seguir (Figura 4): • • • Compartimento de transporte das vítimas: disposto na região frontal do robô em forma de uma caixa ligeiramente maior do que uma vítima disposta na posição horizontal. O mecanismo é completado por uma tampa retrátil para abertura e fechamento do compartimento. Esta arquitetura permitiu unificar os sistemas de resgate de sobreviventes e remoção de vítimas mortas; Atuadores: 01 motor para a abertura e fechamento do compartimento de resgate sem redução e com transmissão através de correia; 02 motores para a locomoção do robô (com redução) conectados a rodas posicionados na parte traseira, auxiliados por duas rodas “livres” dispostas na parte frontal; 5 1 Sensores: 01 sensor de luz na parte frontal para identificação das cores das vítimas; 02 sensores dispostos na parte inferior do robô para a perseguição de trilhas; 01 sensor de toque acoplado a uma antena para a identificação da entrada em uma nova sala do ambiente. 4 2 3 Como em qualquer sistema automatizado, a confiabilidade dos sensores é crítica para a conclusão da tarefa. Assim sendo, uma particular atenção foi reservada a eles. O sensor de toque (para identificação da transição entre as salas do ambiente), por exemplo, requer uma pressão acentuada em seu terminal para o registro de um evento. Desta forma, optamos por utilizar uma “antena” relativamente longa acoplada ao mesmo para aumentar a força sobre seu terminal de contato. Já o sensor de luz para identificação das vítimas apresentou inicialmente dois problemas principais: • Retorno de um valor de leitura aleatório quando nenhum objeto se encontra próximo do sensor; • Leitura com excessiva dependência das condições de iluminação do ambiente. (a) 7 6 O primeiro problema foi contornado orientando o sensor para uma cor previamente conhecida, fixando, portanto, seu valor de resposta em vazio. O segundo problema foi atenuado posicionando os sensores de trilhas dentro do compartimento de transporte das vítimas (local com iluminação controlada). 2.3.2 8 (b) Aspectos de programação Definida a mecânica do robô, as seguintes habilidades foram consideradas fundamentais para completar a tarefa, e, portanto, consideradas relevantes para a concepção da programação: • Habilidade de seguir linhas de qualquer espessura sobre uma superfície branca; • Habilidade de capturar vítimas e liberá-las; • Habilidade de remover vítimas da trilha; • Habilidade de retornar à nave de resgate, se possível utilizando informações adquiridas sobre o ambiente; • Habilidade de se comunicar com principalmente visando evitar colisões; o outro 9 10 robô (c) Estas habilidades foram tomadas como base para a definição dos comportamentos dos robôs, descritos na seção seguinte. A programação dos mesmos foi realizada na plataforma NQC (Not Quite C), devido principalmente à sua similaridade com a linguagem C, estabilidade e facilidade de programação. Para uma visão geral deste ambiente veja por exemplo Baum (2004). VII SBAI/ II IEEE LARS. São Luís, setembro de 2005 Figura 4 – Concepção mecânica do robô: a) atuador da roda (1), atuador da tampa (2), roda livre (3) compartimento de transporte da vítima (4), tampa retrátil (5); b) sensor de identificação da vítima (6), antena (7) e sensor de toque para identificação do ambiente (8); c) vista inferior dos sensores de linha (9) e vítima (10). 3 DESCREVENDO COMPORTAMENTOS Esta seção descreve os comportamentos desenvolvidos para os robôs e a sistemática de acionamento dos comportamentos para o agente reativo. 3.1.1 Seguir linha Este comportamento objetiva seguir uma linha pela lateral (neste caso esquerda) utilizando dois sensores de luz. Enquanto o robô estiver posicionado na lateral esquerda da linha, o sensor esquerdo deverá retornar branco, e o direito preto. Sempre que o sensor esquerdo invadir a linha preta, o robô efetuará um giro para a esquerda até que o sensor retorne a ler branco. De forma análoga, para o sensor direito o robô efetuará um giro para a direita. Esta estratégia mostrou-se simples e eficiente independe do formato da trajetória, tanto para curvas suaves quanto para trajetórias com mudanças bruscas. 3.1.3 Remover obstáculos Como o robô na fase de busca encontra-se com a porta do compartimento de transporte aberta, quando uma vítima morta é detectada ela já se encontra dentro do compartimento de carga. Assim, para removê-la da pista o robô deverá efetuar um giro (digamos 45º), empurrar a vítima e retornar de costas até a linha preta. IF (SENSOR_VITIMA == VITIMA_MORTA) { GIRAR_PARA_ESQUERDA(TEMPO1); IR_PARA_FRENTE(TEMPO2); WHILE (SENSOR_DIR!=PRETO) { IR_PARA_TRÁS(); } } 3.1.4 Retornar à nave Comportamento muito similar ào de seguir linhas, contudo eventos são apenas retirados da pilha. Uma vez que o robô saiba que está entrando no ambiente onde se encontra a nave de resgate (através da análise dos eventos armazenados na pilha), ele tipicamente emite um aviso utilizando a porta de infravermelho direcionado ao outro agente. If (SENSOR_TOQUE==PRESSIONADO) { RETIRA_PILHA(PORTA); PORTA--; . If (PORTA==0) EMITIR_AVISO(); Figura 5 – Ilustração do robô seguindo uma linha espessa de trajetória desconhecida. } 3.1.5 Liberar vítima IF ((SENSOR_ESQ== BRANCO) && (SENSOR_DIR == PRETO)) IR_PARA_FRENTE (); ELSE IF (SENSOR_ESQ == PRETO) GIRAR_PARA_ESQUERDA(); Uma vez que o robô tenha chegado à nave de resgate, ele deve conduzir a vítima ao centro da nave, liberá-la, e então retornar para a procura de mais sobreviventes. ELSE GIRAR_PARA_DIREITA(); IF(SENSOR_ESQ==VERDE) { Este comportamento também é o responsável por atualizar o mapa do mundo. Diferentemente da proposta original para a “Missão Marte” apresentada em Simões et. al. (2004), para o ambiente da “Missão Marte simplificada” uma representação rudimentar do mundo na forma de uma pilha mostrou-se eficiente. Desta forma, um novo evento foi adicionado à pilha cada vez que o robô atingiu uma das portas do ambiente. SEGUIR_LINHA(TEMPO1); GIRAR_PARA_DIREITA(TEMPO2); IR_PARA_FRENTE(TEMPO3); ABRIR_COMPART_TRANSP(); WHILE(SENSOR_2 != PRETO) { IR_PARA_TRÁS(); } PARAR(); IF (SENSOR_TOQUE==PRESSIONADO) { PORTA++; } ADICIONA_PILHA(PORTA); 3.1.6 } 3.1.2 Capturar vítimas Uma vez encontrada uma vítima viva, o compartimento de transporte deve ser fechado, e o robô efetuará um giro de 180º, preparando-se para navegar até a nave de resgate. Como nenhum sensor de rotação foi utilizado, a rotação é feita até que os sensores identifiquem novamente a linha preta. Evitar colisão (latência) Quando um sinal do outro membro da equipe é recebido ativase um comportamento de “latência” durante um tempo definido, de forma a minimizar a possibilidade de choque com o primeiro robô, prestes a efetuar o resgate. Trata-se de uma sistemática rudimentar de cooperação para a resolução da tarefa. Este comportamento é hierarquicamente superior aos demais, ou seja, quando ativado este comportamento inibe qualquer outra possível ação do agente. IF (SENSOR_VITIMA == VITIMA_VIVA) { FECHAR_PORTA_COMPART_TRANSP(); WHILE (SENSOR_ESQ != PRETO) { GIRAR_PARA_ESQUERDA(); } } VII SBAI/ II IEEE LARS. São Luís, setembro de 2005 IF(SENSOR_IR==TRUE) LATENCIA(TEMPO1); 3.1.7 Acionando os comportamentos 1 2 3 4 5 6 Para o acionamento dos comportamentos do agente reativo foi adotada uma sistemática seqüencial (máquina de estados), como o apresentado esquematicamente na Figura 6a. Destaquese o fato de que o comportamento de evitar colisões é hierarquicamente superior aos demais, e acarreta a inibição total dos demais comportamentos. A máquina de estados implementada é apresentada na Figura 6b. (a) SEGUIR LINHA LIBERAR VÍTIMA VÍTIMA MORTA VÍTIMA LIBERADA REMOVER VÍTIMA DENTRO DA NAVE VÍTIMA VIVA (b) 1 2 3 4 5 6 CAPTURAR VÍTIMA VÍTIMA CAPTURADA RETORNAR À NAVE (b) Figura 6 – Modelagem do sistema reativo: a) A arquitetura do sistema; b) A máquina de estados do sistema. 4 RESULTADOS A Figura 7 apresenta algumas imagens dos robôs executando algumas das funções descritas na seção anterior. 1 2 (c) 3 4 (a) VII SBAI/ II IEEE LARS. São Luís, setembro de 2005 Figura 7 – Os Robôs exibindo alguns dos comportamentos projetados para a “Missão Marte” simplificada: a) capturando um sobrevivente; b) removendo um obstáculo (a vítima morta é recusada); c) Evitando colisão com o outro robô no retorno à nave de resgate (o movimento de um dos robôs é inibido pela entrada do outro). Durante a fase de implementação todos os comportamentos e também a transição entre os comportamentos mostraram-se adequados para a realização da tarefa. 5 CONCLUSÕES Neste artigo apresentamos em detalhes o modelo do sistema robótico desenvolvido pela equipe da UNESP para completar a tarefa da “Missão Marte” simplificada na II competição IEEE brasileira de robôs. O sistema implementado mostrou robustez no cumprimento das metas propostas, estimulando que esta arquitetura seja utilizada em tarefas simplificadas. Para tarefas mais elaboradas, um modelo híbrido com representação do conhecimento mostra-se mais aplicável. É necessário destacar que embora exista um modelo rudimentar do mundo no modelo aqui adotado, trata-se de um modelo de agente reativo, que não deve ser confundido com um modelo de agente híbrido, dado que não existe uma fase deliberativa bem caracterizada. Para a continuidade das investigações aqui iniciadas, destacamos como trabalhos futuros: • Investigar a conduta dos agentes reativos quando comportamentos de menor granularidade são utilizados, possivelmente estimulando o acionamento de mais de um comportamento simultaneamente; • Evoluir a sistemática de comunicação entre os robôs, possivelmente estudando mecanismos do âmbito dos sistemas multiagentes; desenvolvimento dos robôs. Em particular ao aluno Robinson Franklin Bruginski também pelas figuras utilizadas. Da mesma forma à direção do campus de Sorocaba da UNESP, à prefeitura da cidade de Sorocaba e à Monções Turismo, que juntas tornaram possível a realização deste trabalho. Alexandre da Silva Simões foi parcialmente financiado pela FUNDUNESP através do projeto de pesquisa PROMETEU (projeto no. 00404/04-DFP), e pela pró-reitoria de pósgraduação e pesquisa PROPP-UNESP através do programa de capacitação docente. Sua participação no evento foi parcialmente financiada pelo auxílio FUNDUNESP 00815/05DFP. REFERÊNCIA BIBLIOGRÁFICA Baum, D. NQC Programmer´s guide – version 2.5 a4. Disponível em: http://www.baumfamily.org/nqc/. Acesso em 20/05/2004. Gardiman, R. Q.; Fernandes, J. R. M.; Bruginski, R. F.; Simões, A. S. (2004) Completando uma tarefa de resgate utilizando robôs móveis autônomos. XII Simpósio Internacional de Iniciação científica. Universidade de São Paulo. São Paulo, 17 de dezembro. Murphy, R. R. (2002) “Introduction to AI robotics”. MIT Press, 2nd edition. • Evoluir a sistemática de representação de conhecimento, propondo representações mais abrangentes; Rich, E. and Knight, K. (1993) “Inteligência Artificial”, McGrawHill, 2nd edition. • Investigar a possibilidade de evolução para um sistema híbrido com fase deliberativa, de forma a conferir aos robôs capacidade de planejamento das ações. Russel, S. and Norvig, P. (1995) “Artificial Intelligence: a modern approach”, Prentice Hall. AGRADECIMENTOS O autor gostaria de expressar publicamente seus agradecimentos aos alunos Robinson Franklin Bruginski, Renato Quarentei Gardiman, Thiago Augusto da Silva Barba e José Roberto Fernandes, campeões da II competição IEEE brasileira de robôs, pelo trabalho realizado durante os meses de VII SBAI/ II IEEE LARS. São Luís, setembro de 2005 Simões, A. S.; Botura, G.; Gardiman, R.; Bruginski, R.; Fernandes, J. R.; Barba, T. A. S. (2004) UNESP autonomous mobile robots in the “mars land” rescue task: strategy issues. II Competição IEEE Brasileira de Robôs. Jornada de Robótica Inteligente – JRI. Anais do XXIV Congresso da Sociedade Brasileira de Computação - SBC. Salvador, 1~6 de agosto.