3.1 PROJETO
3.1.4 Modelagem UML
Abaixo são apresentados os diagramas UML utilizados para representar os aspectos da estrutura e aspectos dinâmicos do sistema, contendo suas devidas explicações.
3.1.4.1 Diagrama de Componente
A visão geral dos principais comportamentos deste trabalho é apresentada na Figura 19.
Diversos robôs, possivelmente heterogêneos, realizam o patrulhamento de uma área. Eles podem trocar informações e comandos entre si, usando alguma tecnologia de comunicação sem fio. Essas informações podem ser advindas do ambiente ao redor (obtidas por sensores) e que podem ser compartilhadas com outros robôs ou retransmitidas através destes até uma central. Nesse sentido, os robôs funcionam como uma rede de sensores sem fio. Diversas situações podem fazer com que o
robô seja desejável. Nesse sentido, um robô também pode enviar comandos a outros robôs solicitando seu deslocamento até certo local ou outro serviço específico.
Por não possuírem interface com o usuário, os robôs precisam ser programados ou configurados remotamente, através de uma estação central presente no local de patrulhamento (devido à limitação de alcance da rede sem fio). Através de uma conexão com a internet, os robôs poderiam ser configurados de qualquer lugar, como da empresa de segurança, por exemplo.
Do mesmo modo que os robôs comunicam-se entre si ou recebem novas configurações e comandos da central, eles também podem reportar situação anormais à central ou à empresa, como a presença de intrusos, movimentos não identificados, mudanças de luminosidade, etc.
Figura 19. Diagrama de Componentes
3.1.4.2 Diagrama de Caso de Uso
Os diagramas de caso de uso descrevem de maneira conceitual os requisitos que devem ser atendidos pelo sistema.
A figura 20 ilustra o diagrama de caso de uso de envio e recebimento de mensagens, onde durante o patrulhamento, o robô ao encontrar alguma variação no ambiente que necessite de sua atenção, envia uma mensagem a Central informando o remetente, o destinatário, o que causou a notificação e as coordenadas correspondentes ao local que foi obtido o valor e ao receber a mensagem a Central envia uma mensagem ao robô confirmando seu recebimento. O robô também pode enviar e receber comandos para uma central ou para outros robôs, repassando uma ação a ser
Figura 20. Diagrama de Caso de Uso
3.1.4.3 Diagrama de Classes
O diagrama de classe representa a estrutura lógica e os elementos que descrevem o modelo e suas relações. Cada classe descreve as ações que serão realizadas. A Figura 21 ilustra uma visão geral das classes das classes deste sistema, que são: Robô, Estrategista, Analisador de Ambiente, Sensores, Ambiente, Solo, Mecanismo de Locomoção, Planejador de Rotas, Grafo, Dijkstra, Atuadores, Meio de Locomoção, Controlador Fuzzy, Comunicador.
A Figura 22 ilustra as classes que compõe o Analisador de Ambiente, onde o Estrategista invoca o Analizador de Ambientes, que por sua vez chama a classe Sensores, que faz uma varredura no ambiente coletando informações através de sensores como sonares, de colisão, de temperatura, entre outros. Estas informações então são encaminhadas ao Analisador de Ambiente que verifica se algum sensor retornou um valor que indique uma variação no ambiente e que possa necessitar de atenção por parte do robô. Se um valor deste é identificado, ele envia uma notificação para o Estrategista, contendo o nome do sensor e o valor obtido pelo sensor e ele processa esta informação e verifica qual é a melhor ação a ser tomada para aquela situação. Quando o Analisador de Ambiente decta esta variação ele verifica se
veio de um sonar ou sensor de colisão e caso tenha vindo de um destes sensores, ele então inclui um novo obstáculo na classe Ambiente.
Figura 21. Diagrama com uma visão geral das classes
A Figura 23 ilustra a classe Estrategista e sua interação com as classes Planejador de Rotas, Mecanismo de Comunicação e Controlador Fuzzy. Depois que o estrategista recebe a notificação do Analisador de Ambiente, conforme descrito anteriormente, ele repassa esta informação ao Controlador Fuzzy que através de uma função de pertinência transforma esse valor e processa o resultado utilizando uma serie de regras pré- definidas, que retornam ao Estrategista qual a ação que deve ser executada naquele momento.
Quando a ação for movimentar o robô para determinada posição, o Estrategista então aciona o Planejador de Rotas, repassando as coordenadas para onde ele deve deslocar o robô. Ele então encaminha estas coordenadas ao Gerenciador de Grafo que utilizando o Algoritmo de Dikstra faz uma busca nos nós gerados durante a movimentação do robô e retorna o menor caminho ate o ponto desejado, caso este caminho não seja conhecido, ele então retorna o ponto mais próximo conhecido. Após receber as coordenadas o Planejador de Rotas então aciona os
atuadores e movimenta o robô ate estas coordenadas, repetindo este processo ate atingir o local desejado. Ela também ilustra a interação do Estrategista com o Mecanismo de Comunicação, que após ser acionado para enviar uma mensagem, pega o conteúdo desta e salva em um arquivo texto. E sempre que é acionado pelo Estrategista para verificar se a alguma mensagem para ele, o conteúdo deste arquivo texto é aberto e processado, sendo repassado ao estrategista o nome do destinatário da mensagem que por sua vez verifica se a mensagem é para ele e se for então salva o seu conteúdo e avisa o Mecanismo de Comunicação que a mensagem foi lida e esta então é apagada do arquivo texto.
Figura 22. Diagrama de classe do Analisador de Ambiente
Figura 23. Diagrama de classe do Estrategista
3.1.4.4 Diagrama de Seqüência
O diagrama de seqüência representa o comportamento dos objetos em um sistema em seqüência temporal de mensagens e representação das atividades e operações. Os objetos são desenhados em linhas verticais e as ações seguem uma seqüência acompanhando as linhas de cima para baixo.
O diagrama ilustrado na Figura 24, representa o processo de tomada de decisão por parte do Estrategista. O Robô invoca o Estrategista, que invoca o Analisado de Ambiente e aguarda por uma notificação informando uma alteração relevante no ambiente. O Analisador de Ambiente aciona os Sensores que varem o ambiente e retornam os valores obtidos, estes valores são enviados ao Analisador de Ambiente que os processa e verifica se algum deles merece atenção por parte do Estrategista. Se o valor merecer atenção o Analisador de Ambiente notifica o Estrategista, informando o nome do sensor e o valor obtido por ele durante a leitura. Então o Estrategista invoca o Gerenciador de Lógica Fuzzy e repassa este valor, que pega esta informação e processa devolvendo ao Estrategista a ação que deve ser tomada. O Estrategista então recebe esta informação e passa a operar no modo correspondente a ação.
A Figura 25 ilustra o diagrama representa as ações executadas para movimentação do robô.
Onde o Estrategista determina uma coordenada para onde o robô deve se deslocar e invoca o Planejador de Rotas, enviando esta coordenada para o mesmo, que solicita ao Gerenciador de Grafo o menor caminho até este ponto. O Gerenciador de Grado utiliza o Algoritmo de Dijkstra para determinar o menor caminho até a coordenada repassada e devolve o primeiro ponto que o robô deve se deslocar para chegar ao local determinado, caso o caminho até este ponto não seja conhecido ele retorna o ponto conhecido mais próximo do local desejado. O Planejador de Rotas então aciona o Mecanismo de Locomoção que processa as coordenadas recebidas e aciona os Atuadores, que movimentam o robô.
O Mecanismo de Comunicação é representado pelo Diagrama ilustrado na Figura 26.
O Estrategista pode optar por enviar ou receber uma mensagem, para enviar o Estrategista aciona o Mecanismo de Comunicação e envia uma mensagem para ele, que pega esta mensagem e salva em um arquivo texto. Para receber as mensagens o Estrategista verifica com o Mecanismo de comunicação se existe alguma mensagem, este então faz a leitura do arquivo texto e processa estas informações retornando a mensagem ao
estrategista que verifica se o nome do destinatário confere e então se for para ele coleta as informações e informa ao Mecanismo de Comunicação que a mensagem foi lida e ele apaga a mensagem do arquivo texto. Estas mensagens podem ser informações que foram coletadas no ambiente e precisam ser repassadas a outros robôs ou a uma central ou então comando referentes a ações que devem ser executadas pelos robôs ou pela central.
Figura 24. Diagrama de Seqüência de tomadas de decisão do Estrategista
Figura 25. Diagrama de Seqüência do Planejador de Rotas
Figura 26. Diagrama de Seqüência do Mecanismo de Comunicação
3.1.5 Controlador Fuzzy
Para tomar as decisões, o Estrategista utiliza um controlador implementado, utilizando lógica Fuzzy, e que possui definidas em seu interior as seguintes variáveis: (i) Temperatura, usada para avaliar a temperatura do local em busca de possíveis incêndios e possui os valores para Temperatura Baixa de 0, 15, 25 e 30, para Temperatura Média de 25, 30, 40 e 45 e para Temperatura Alta de 40, 50, 60 e 70; (ii) Altura, utilizado para ajudar o robô durante o seu deslocamento em busca de buracos, com valores para Altura Baixa de 0, 0.03, 0.06 e 0.10, para Altura Média de 0.08, 0.12, 0.16 e 0.20, e para Altura Alta de 0.18, 0.22, 0.28 e 0.30;
(iii) Terreno, utilizado para avaliar o quanto o terreno é macio e se é possível se deslocar por este terreno com o meio de locomoção utilizado pelo robô, com os valores para Terreno Macio de 0, 0.5, 1.5 e 2, para Terreno Médio de 1.5, 2, 2.5 e 3 e Terreno Duro de 2.5, 3, 3.5 e 4; (iv) Nível de Segurança, utilizado para avaliar o nível de segurança da local que esta sendo patrulhado, com os valor para Nível de Segurança Baixo de 0, 0.5, 1 e 1.5, para Nível de Segurança Médio de 0.5, 1, 1.5 e 2 e para Nível de Segurança Alto de 1.5, 2, 2.5 e 3; (v) Velocidade, utilizado para avaliar a velocidade de deslocamento do Robô, com os valor para Velocidade Baixa de 0, 0.1, 0.3 e 0.4, para Velocidade Média de 0.3, 0.4, 0.6 e 0.7 e para Velocidade Alta de 0.6, 0.7, 0.9 e 1; e (vi) Distância, utilizado para avaliar a distancia do Robô ate o obstáculo, com os valores para Distância Baixa de 0, 0.2, 0.4 e 0.6, para Distancia Média de 0.6, 1, 1.6 e 2, e para Distância Alta de 1.8, 2, 2.5 e 3.
O valor que é obtido através dos sensores é transformado por uma função de pertinência, conforme Quadro 5, no processo chamado de Fuzzyficação, para que valores de grandezas diferentes possam ser avaliados de maneira igual. Estes valores então são calculados para avaliar o quanto este pertence (baixo, médio ou alto) ao conjunto definido da variável em questão e esta condição atribuída a variável as regras descritas abaixo, para determinar qual ação deverá ser executada pelo Robô. As regras são:
Se TEMPERATURA for ALTA então retorne “FIRE”;
Se ALTURA_ANTERIOR for BAIXA e ALTURA for MÉDIA então retorne “FOLLOW”;
Se ALTURA_ANTERIOR for BAIXA e ALTURA for ALTA então retorne “DIVERT”;
Se ALTURA_ANTERIOR for MÉDIA e ALTURA for ALTA então retorne “FOLLOW”;
Se ALTURA_ANTERIOR for ALTA e ALTURA for BAIXA então retorne “DIVERT”;
Se TERRENO for BAIXO então retorne “DIVERT”;
Se NIVEL_SEGURANÇA for MÉDIO então retorne “CHECK”;
Se NIVEL_SEGURANÇA for ALTO então retorne “CAPTURE”;
Se DISTANCIA_ANTERIOR for MAIOR que DISTANCIA então retorne “CHECK”;
Se DISTANCIA for BAIXA então retorne “DIVERT”;
Se DISTANCIA for ALTA e VELOCIDADE for BAIXA então retorne “ACCELERATE”;
Se DISTANCIA for MEDIA E VELOCIDADE for BAIXA então retorne “ACCELERATE”; e Se DISTANCIA for MEDIA E VELOCIDADE for alta então retorne “BRAKING”.
Esta ação então é devolvida ao Estrategista que entra em modo correspondente a ação para executa - lá, ainda a opção de desfuzificar esta variável para obter o valor correspondente à ação.
CONDIÇÃO FUNÇÃO DE PERTINENCIA
Se (_value < _min) f(x) = 0
Se (_value >= _min) e (_value <= _md1) f(x) = (_value - _min) / 5;
Se (_value >= _md1) e (_value <= _md2) f(x) = 1
Se (_value >= _md2) e (_value <= _max) f(x)(_max - _value) / 5;
Se (_value > _max) f(x) = 0;
Quadro 5. Função de pertinência
3.2 IMPLEMENTAÇÃO
Nesta sessão são apresentados alguns aspectos de implementação do sistema, incluído os métodos e componentes utilizados para isso. Serão também apresentados os procedimentos realizados para validação e teste do sistema.
3.2.1 Execução do Sistema
O sistema desenvolvido não possui um interface que permita a interação direta do usuário com o Robô, o sistema é chamado através do Simulador Simbad, que proporciona um ambiente de simulação para robôs em 3 dimensões e fornece algumas das funções de baixo nível necessárias para o funcionamento do robô.
3.2.1.1 Testes e validações
Os testes do Robô foram realizados no Simulador Simbad, submetendo o mesmo a diversas situações, buscando coletar os mais diversos valores por parte dos sensores e avaliar se o comportamento adotado corresponde as regras especificadas no Controlador Fuzzy. A Figura 25 mostra o ambiente de simulação utilizado para os testes.
Figura 27. Ambiente de Simulação Simbad
A Figura 28 mostra o log obtido através do NetBeans (interface de programação em Java) durante a simulação com o Robô, onde o Estrategista recebe uma notificação do Analisador de Ambiente, informando que um dos sensores de distância (sonar) retornou o valor de 0.31000018, esta informação então é repassada ao Controlador Fuzzy que processa esta informação e retorna a ação a ser executada pelo Estrategista, que neste caso é desviar. O Estrategista então solicita ao Planejador de Rotas para girar o Robô, que por sua vez aciona o Mecanismo de Locomoção, que repassa aos atuadores e executa a aperação.
A Figura 29 ilustra o log obtido quando o Robô verifica uma variação muito grande no ambiente como, por exemplo neste caso, estava captando valores pequenos nos sensores de
distância e depois encontrou um valor maior, então o Estrategista recebe uma notificação no Analisador do Ambiente informando que a variação foi detectada através de um sonar e o valor obtido por ele foi 0.5999998. Este valor então é repassado ao Controlador Fuzzy, que executa os cálculos e retorna a ação Check, para que o robô verifique o motivo de tal variação e como no caso anterior o Estrategista então invoca o Planejador de Rotas que se encarrega de levar o robô ate o local.
Na Figura 30 é mostrado o log de quando o Robô encontra um buraco, sendo que o sensor de altura coletou uma variação no terreno de 0.05 (5 centímetros) e este valor foi repassado ao Estrategista, que por sua vez repassou ao Controlador Fuzzy que processou esta informação e retornou a ação desviar ao Estrategista, que entrou em modo desviar e acionou o Planejador de Rotas para executar a tarefa.
Strategist:update(EnvironmentAnalyser@1c80b01,sonar#0.31000018) FuzzyController: calcular
FuzzyController: fuzzyficador FuzzyController: desfuzzyficador FuzzyController: rules
FuzzyController:Action Divert RoutePlanner:spinRobot() MovingMechanism:spinRobot() RobotActuators:spinRobot()
Figura 28. Log obtido quando Robô detecta obstáculo próximo
Strategist:update(EnvironmentAnalyser@1a8bd74,sonar#0.5999998) FuzzyController: calcular
FuzzyController: fuzzyficador FuzzyController: desfuzzyficador FuzzyController: rules
FuzzyController:Action Check RoutePlanner:goRobot()
MovingMechanism:goRobot()
RobotActuators:setvelocity(0.6)
Figura 29. Log obtido quando Robô detecta uma alteração grande no ambiente
Strategist:update(EnvironmentAnalyser@1542a75,terrain#0.05) FuzzyController: calcular
FuzzyController: fuzzyficador FuzzyController: desfuzzyficador FuzzyController: rules
FuzzyController:Action Divert RoutePlanner:spinRobot() MovingMechanism:spinRobot() RobotActuators:spinRobot()
Figura 30. Log obtido quando Robô encontra um buraco
A Figura 31 ilustra o robô percorrendo o ambiente, sendo capaz de identificar diferentes tipos de obstáculos como paredes e buracos, assim como tipo de terreno. Onde, (i) a primeira tela, ilustra o ambiente conforme a visão do robô através dos sensores; (ii) a segunda tela, mostra o robô em sua posição inicial; (iii) a terceira tela, mostra o momento em que o robô encontra uma parede e altera sua trajetória; (iv) a quarta tela, ilustra o deslocamento do robô após ter desviado da parde;
(v) a quinta tela, mostra o momento em que o robô identifica o tipo de terreno como sendo água;
(vi) a sexta tela, mostra o momento em que o robô desvia da água; (vii) a sétima tela, mostra o momento em que o robô encontra um declive no terreno que não pode ser ultrapassada por ele; e (viii) a oitava tela, ilustra o momento em que o robô desvia do buraco.
A Figura 32 ilustra o robô no momento em que encontra uma alteração no ambiente e informa esta alteração a Central. Sendo que, (i) a primeira tela, mostra o robô em seu estado inicial;
(ii) a segunda tela, ilustra o momento em que o robô encontra uma parede e desvia da mesma seguindo na direção oposta; (iii) a terceira tela, mostra o momento em que durante o patrulhamento é constatada uma alteração no ambiente, através do sensor de temperatura, que constata que a temperatura esta muito elevada naquele local e envia uma mensagem notificando a Central da alteração encontrada no ambiente; ; (iv) a quarta tela, ilustra o momento em que a Central confirma o recebimento da mensagem enviada pelo robô; (v) a quinta tela, mostra o momento em que o robô se retira do local para preservar sua integridade.
Figura 31. Robô identificando diferentes tipos de obstáculos
Figura 32. Robô encontra uma alteração no ambiente e notifica a Central
A Figura 33 ilustra o robô recebendo uma mensagem da Central com um comando para que ele desloque até um determinado ponto. Onde, (i) a primeira tela, mostra o robô em sua posição inicial; (ii) a segunda tela, ilustra o robô patrulhando o ambiente; (iii) a terceira tela, mostra o momento em que o robô recebe uma mensagem da Central contendo o comando para que ele desloque até um determinado ponto; (iv) a quarta tela, mostra o robô confirmando o recebimento
da mensagem enviada pela Central; (v) a quinta tela, ilustra o robô durante o deslocamento até o ponto repassado; (vi) a sexta tela, ilustra o momento em que o robô chega a coordenada determinada;
Figura 33. Robô se desloca até uma coordenada repassada pela Central
As Figuras 34 e 35 ilustram o robô verificando a presença de intrusos e funcionários em local não autorizado. Sendo que, (i) a primeira tela, mostra o robô em seu estado inicial; (ii) a segunda tela, mostra o robô durante o patrulhamento; (iii) a terceira tela, mostra o momento em que o robô detecta a presença de outro robô e identifica o mesmo como sendo a Central e que esta possui autorização para estar naquele setor; (iv) a quarta tela, mostra o momento em que o robô retorna ao patrulhamento; (v) a quinta tela, ilustra o momento em que o robô encontra um intruso;
(vi) a sexta tela, ilustra o momento em que o robô envia uma mensagem a Central notificando a presença de um intruso; (vii) a sétima tela, ilustra o momento em que a Central confirma o recebimento da mensagem; (viii) a oitava tela, mostra o robô no momento em que ele retorna ao patrulhamento; (ix) a nona tela, ilustra o momento em que o robô encontra um funcionário da empresa e ao identificá-lo verifica que o mesmo não tem permissão para estar naquele setor; (x) a décima tela, mostra o momento em que o robô envia uma mensagem a central notificando a presença do mesmo; (xi) a décima primeira tela, mostra a Central confirmando o recebimento da mensagem.
Figura 34. Robô verifica pessoal autorizado - parte 1
Figura 35. Robô verifica pessoal autorizado – parte 2
4 CONCLUSÃO
Este trabalho apresentou uma descrição geral de uma modelagem para robôs autônomos, assim como a implementação de parte desta modelagem e a realização de testes através do simulador Simbad. Os objetivos propostos inicialmente para este trabalho eram modelar um robô capaz de se locomover sem a ajuda humana (autonomamente), atuar em diferentes modos de operação, receber parâmetros determinando sua área de patrulhamento, aprender os caminhos para se alcançar um ponto dentro de uma área de atuação, desviar de obstáculos, localizar alterações no ambiente, distinguir entre pessoal autorizado e não autorizado, possuir uma interface que possibilite a comunicação com outros robôs ou com uma central, receber ordens de outro robô ou de uma central, enviar informações a central sobre qualquer alteração encontrada e determinar sua posição dentro do ambiente que está patrulhando.
Pelo que foi apresentado ao longo do texto e dos resultados obtidos durante os testes realizados no simulador, concluiu-se que o mesmo atendeu de maneira satisfatória aos objetivos propostos, pois é capaz de realizar todas as ações previstas nos requisitos do sistema.
Apesar de ter apresentado resultados satisfatório nas simulações o robô apresenta limitações, pois possui apenas uma interface de mais alto nível o que impossibilita testes em um robô real sem que seja necessário a implementação das camadas de mais baixo nível e talvez pequenas adequações no código.
Varias dificuldades foram encontradas durante o desenvolvimento deste trabalho, sendo que o principal deles foi encontrar um simulador para ser utilizado como plataforma base para o robô e na realização de testes para validação do projeto. A maioria dos simuladores encontrados apresentaram problemas principalmente por suas limitações tanto na parte de construção de um ambiente de simulação próximo a um ambiente real, assim nas limitações referentes a parte de programação e expansão das funcionalidades do robô, que não permitiam que fossem atingidos os requisitos do sistema.
O sistema permite melhorias, as quais podem ser realizadas em trabalhos futuros, sendo que algumas delas são apresentadas a seguir.
Mesmo tendo sido implementado uma série de ações e modos de operações para o robô, a parte de lógica ainda possibilita uma grande ampliação, podendo ser incluídas novas regras no Gerenciador de Lógica Fuzzy, que farão com que cada vez mais o raciocínio do robô seja parecido com o de uma pessoa. Assim como a implementação e inclusão de novos sensores que tornarão
mais precisas as informações e em maior número, o que possibilita uma análise mais precisa da situação.
Outra sugestão para o futuro seria a implementação do mecanismo físico, para testar o sistema e seu desempenho em um ambiente real. E até mesmo virar um produto comercial, caso sejam realizadas as melhorias necessárias para tal finalidade.
Por fim o desenvolvimento deste trabalho deve auxiliar estudantes e professor na área de robótica, pois possui a implementação de vários conceitos importantes para esta área e pode servir como base para o desenvolvimento de trabalhos futuros.