Posts Tagged “fuzzy”
Resumo
Sistemas robóticos podem ser compreendidos como sistemas concebidos de liberdade de movimentos para realizarem tarefas de forma autônoma, suas aplicações estendem-se por um amplo espectro de áreas, tais como: automação industrial; medicina; exploração espacial e outros. O presente artigo utiliza ferramentas de software livre para simular um sistema de navegação nebuloso para um agente robótico. O software Simbad, em conjunto com a biblioteca jFuzzyLogic, foram aplicados para realizar esta simulação, cujos resultados demonstram que o agente robótico é capaz de percorrer o trajeto proposto, ao mesmo tempo em que desvia dos obstáculos.
Palavras-chave: robótica móvel, lógica nebulosa, software livre
1. Introdução
O emprego de robôs para a realização de diversas tarefas tem sido cada vez mais comum, facilitando, dessa forma, o desempenho de inúmeras atividades, inclusive as mais perigosas, nas quais seria inviável ou impossível a realização delas pelo homem. Algumas vantagens proporcionadas pela utilização de robôs são: aumento de produtividade na indústria; maior precisão e velocidade na fabricação e montagem dos produtos e afastamento da mão de obra humana dos locais inóspitos. Dessa maneira, o incentivo ao desenvolvimento da robótica torna-se cada vez mais crucial para a melhoria da qualidade de vida e desenvolvimento da sociedade.
Sistemas robóticos podem ser compreendidos como sistemas concebidos de liberdade de movimentos para realizarem tarefas com certo nível de autonomia de decisão, suas aplicações estendem-se por um amplo espectro de áreas, como: automação industrial (FILHO et al., 2010); medicina (PREISING et al., 1991); exploração espacial (HIRZING et al., 1994) e outros.
O avanço da robótica também é percebido no ramo educacional, onde diversos robôs têm sido empregados para o ensino, para o provimento da multidisciplinaridade e interdisciplinaridade, fornecimento de conhecimento tecnológico e principalmente para disseminar conceitos da mecânica, eletrônica, engenharia e computação (SOLIS et al., 2009). Dessa forma, a utilização de robôs autônomos proporciona inúmeras vantagens e possui grande empregabilidade em inúmeras áreas de atuação.
A utilização de softwares livres, da mesma maneira, tem se mostrado cada vez mais notória em iniciativas governamentais e privadas. As vantagens oriundas desses softwares vão além do custo econômico, a possibilidade de modificar o código-fonte do software fornece uma grande liberdade e flexibilidade para os sistemas computacionais (STALLMAN, 1999). As características existentes no software livre contribuem para elaboração de ferramentas de simulação de sistemas robóticos, auxiliando na resolução de diversos problemas nessa área.
O objetivo deste artigo é realizar a simulação de um sistema de navegação robótica através da utilização de softwares livres. Para isso, foi utilizado o simulador Simbad (HUGUES e BREDECHE, 2006) escrito em Java, o mesmo fornece um ambiente de simulação contendo um ou mais robôs, que podem ser equipados com câmeras e sensores e um cenário contendo obstáculos e vários outros recursos adicionais. Foi utilizado também um pacote, o jFuzzyLogic (CINGOLANI, 2011), para implementar o paradigma reativo para o desvio de obstáculos através da utilização da lógica fuzzy, proporcionando ao sistema uma metodologia para representar a percepção baseada em ações. Estas duas ferramentas de software livre foram aplicadas para realizar essa simulação, cujos resultados demonstram que o agente robótico é capaz de percorrer a sequência de coordenadas especificadas, ao mesmo tempo em que desvia dos obstáculos do ambiente.
O restante do trabalho está dividido em seis seções. A seção 2 traz conceitos de robótica móvel e as dificuldades existentes na navegação robótica. A seção 3 do artigo discorre sobre a lógica fuzzy. A seção 4 detalha as ferramentas utilizadas na simulação. A seção 5 mostra como foi implementado o sistema robótico. A seção 6 exibe os resultados da simulação. Finalmente, a última seção mostra as considerações finais obtidas com a conclusão desse trabalho.
2. Robótica Móvel
A robótica móvel engloba todos aqueles dispositivos automatizados capazes de se locomoverem em um determinado ambiente. A movimentação pode ser controlada através da intervenção humana, onde temos o uso de controle remoto, por exemplo, ou através de inteligência computacional, onde os robôs podem tomar decisões sobre a rota a ser seguida através da leitura do ambiente. Existe uma grande variedade de ferramentas para a locomoção de robôs, cada uma atendendo a características específicas do ambiente. Por exemplo, robôs podem atuar em solos rochosos ou arenosos, em ambientes aquáticos ou até mesmo em céu aberto. Cada ambiente requer equipamento e controles especiais para atenderem suas especificidades.
Os paradigmas da robótica móvel são mostrados na Figura 1. A escolha de qual paradigma empregado no projeto depende da necessidade e da complexidade da tarefa a ser executada.
Figura 1 – Paradigmas na robótica: (i) hierárquico, (ii) reativo, (iii) híbrido (SIMÕES et al., 2006).
Para projetos mais complexos, nos quais o ambiente apresenta uma grande quantidade de informações, o paradigma hierárquico é mais adequado porque o robô pode tomar decisões baseadas no grau de dificuldade obtida, permitindo um domínio maior da situação. Por sua vez, o paradigma reativo procura diminuir a complexidade gerada pelo paradigma hierárquico, pois com o decorrer dos anos a etapa de planejamento se tornou demasiadamente complexa. Com o intuito de mesclar as vantagens dos dois paradigmas apresentados, surge o paradigma híbrido. Assim, uma tarefa pode ser decomposta em sub-tarefas para que o robô possa escolher qual a ação mais adequada para executá-las (SIMÕES et al., 2006).
A navegação robótica torna-se um obstáculo encontrado no desenvolvimento da robótica móvel. Inúmeros fatores podem torná-la mais complicada uma vez que é necessária a leitura e a interpretação do ambiente para que as decisões sejam tomadas, visando permitir ações rápidas que evitem colisões e garantindo que a trajetória seja percorrida com sucesso (FRACASSO et al., 2005).
A percepção territorial realizada pelo robô pode ser feita através de diversos métodos, dependendo do terreno onde o mesmo se encontra. Pode-se utilizar sonares em ambientes em que a informação é pouca ou nenhuma (OTTONI et al., 2003) ou o rastreamento pode ser feito através da visão (MOTTA et al., 2008). As informações captadas passam por um estágio de processamento, onde muitas vezes são filtradas para que sejam interpretadas com maior precisão. A partir daí, os resultados obtidos pela etapa de processamento são usados para realizar a ação do robô, onde os comandos são enviados para os atuadores.
Estudos têm buscado diminuir várias dificuldades encontradas na navegação de um robô (BATISTA et al., 2010). Nosso trabalho tem como objetivo realizar uma simulação de um sistema robótico móvel e nebuloso, o qual será descrito nas seções seguintes, utilizando ferramentas de software livre.
3. Lógica Fuzzy
A lógica fuzzy ou lógica nebulosa é uma forma de realizar a interface entre processos inerentemente analógicos, que se movem através de uma faixa contínua de valores, para o universo digital, onde os valores são definidos como discretos. Foi inicialmente proposta por Lotfi A. Zadeh (PERRY, 1995) na Universidade da Califórnia em Berkeley em um artigo datado de 1965.
As implementações da lógica nebulosa permitem que estados indeterminados possam ser tratados por dispositivos de controle. Desse modo, é possível avaliar conceitos não quantificáveis. A lógica fuzzy deve ser vista mais como uma área de pesquisa sobre tratamento da incerteza, ou uma família de modelos matemáticos dedicados ao tratamento da incerteza, do que uma lógica propriamente dita. A lógica nebulosa normalmente está associada ao uso da teoria de conjuntos fuzzy.
A lógica fuzzy pode ser empregada no ramo industrial, possibilitando automatizar diversas tarefas. Tal fato pode encorajar a utilização da lógica fuzzy na robótica móvel, possibilitando desta forma a navegação robótica de uma maneira mais simplificada. Alguns trabalhos que seguem tal linha de pesquisa podem ser encontrados em Joshi e Zaveri (2009) e Raguraman et. al (2009), por exemplo. A lógica fuzzy também pode ser aplicada em outras funcionalidades existentes no robô.
Em um sistema de controle fuzzy, possuímos variáveis de entrada que representam os valores que podem ser obtidos através de sensores. Tais valores podem ser categorizados em faixas: muito longe, longe, normal, perto, muito perto. Esses estados são conhecidos como estados fuzzy e não possuem um limiar definido de um para outro. As variáveis de entrada podem pertencer a vários estados com diferentes níveis de pertinência. A Figura 2 apresenta um exemplo de funções de pertinência de uma variável fuzzy.
Figura 2 – Note que a um dado instante, a distância será um grau de pertinência com respeito a dois conjuntos fuzzy: 0.3 Muito Longe e 0.7 Longe, 0.4 Normal e 0.6 Perto, assim por diante.
Os valores de entrada, conhecidos como crisp, são convertidos para valores fuzzy em um processo conhecido como “fuzzificação”, utilizando as funções de pertinência dos termos fuzzy de entrada. O grau de participação de uma grandeza de entrada é dado em função dos termos primários definidos como o “Universo do Discurso” de entrada. Assim, cada valor de entrada tem um grau de pertinência para cada termo primário definido. A arquitetura fuzzy pode ser observada na Figura 3.
Dados “mapeamentos” das variáveis de entrada para as funções de pertinência e valores verdade, um micro-controlador pode então tomar decisões sobre a ação a ser executada baseada em um conjunto de regras, da forma:
“Se a distância frontal é muito perto e a velocidade é muito rápida então gire acentuadamente à esquerda”
É possível perceber que, neste exemplo, a variável de saída é também definida como um conjunto fuzzy que pode assumir os valores como “acentuadamente à esquerda”, “levemente à direita” e assim por diante. Existe uma ampla gama de funções que podem ser utilizadas, como: NÃO-fuzzy, E-fuzzy e OU-fuzzy.
Figura 3 – Arquitetura de um controlador fuzzy.
Os valores obtidos por todas as regras de inferência que foram acionadas são “defuzzificados” para valores exatos por meio de um dentre vários métodos possíveis. Por exemplo, o método do centróide retorna o centro de massa do resultado como valor exato. Por sua vez, o método da altura retorna o maior valor. A Figura 4 apresenta um exemplo de um sistema de inferência nebuloso que utiliza o método do centróide para realizar a defuzzificação.
Figura 4 – Exemplo de ativação das regras em um sistema de inferência nebuloso e o processo de defuzzificação pelo cálculo do centroide.
4. Ferramentas de software livre
Esta seção apresenta as ferramentas de software livre utilizadas para simular o sistema nebuloso de navegação proposto neste trabalho.
4.1 Simulador Simbad
O Simbad é um simulador de sistemas robóticos utilizado para fins científicos e educacionais. Esta ferramenta é principalmente dedicada a pesquisadores/programadores que querem uma base simples para estudar Inteligência Computacional (IC), aprendizado de máquina e outros algoritmos IC no contexto da robótica autônoma e agentes autônomos. O projeto Simbad está hospedado no SourceForge, este projeto é livre para ser usado e modificado sob as condições da Licença Pública Geral GNU.
O emprego de um simulador de sistemas robóticos traz inúmeras vantagens. Uma destas vantagens é a sua utilização no desenvolvimento da programação offline (programas elaborados em um computador e carregados posteriormente no robô, possibilitando que o mesmo não seja retirado das funções de produção e ocupado com a tarefa de programação), permitindo que sejam feitos testes dos programas antes de executá-los no robô real (REDEL e HOUNSELL, 2004). Outra vantagem é a possibilidade de seu uso para o ensino, pois permite que cada aluno se familiarize com o robô de forma individual, mesmo sem a existência física do mesmo, fazendo com que estes alunos adquiram os conhecimentos básicos necessários antes de utilizarem o robô real.
O simulador Simbad possui sensores de visão, sensores de alcance (com sonares e infravermelho) e sensores de contato. O uso destes sensores permite a interação do robô com o ambiente que o rodeia de uma forma flexível. Existem vários tipos de sensores e cada um se adapta a uma função específica. Estes são adicionados no sentido anti-horário em cada robô e retornam o alcance, o ângulo e informam se houve colisão.
O Simbad possui uma interface que permite a manipulação e a visualização dos eventos da simulação. Durante a execução do programa, aparecerá uma janela dividida em três setores, como mostra a Figura 5. A janela World exibe o mundo da simulação descrito pelo usuário ou algum dos exemplos presentes no Simbad. Na parte lateral situada à esquerda são exibidas as informações do robô e de seus acessórios, como o nome do robô, alcance dos sensores, velocidade translacional e rotacional, visão da câmera, colisão, tempo de vida do robô, entre outras, que podem variar de acordo com o projeto. A terceira janela é a Control, esta é dividida em três abas. As abas View From e a Follow são responsáveis pela visualização da simulação. A aba Simulator permite rodar, pausar, reiniciar ou passar cada etapa da simulação manualmente, além de alterar a velocidade da simulação na opção Time Factor.
Figura 5 – Visão geral do simulador Simbad.
4.2 jFuzzyLogic
O jFuzzyLogic é um pacote de lógica fuzzy escrito em Java, disponível pela licença “LGPLv3”, este pacote implementa uma Linguagem de Controle Fuzzy (FCL). A FCL é um padrão para a programação de Controle Difuso, publicado pela Comissão Electrotécnica Internacional (IEC). As especificações para a sintaxe FCL podem ser encontradas no documento IEC 61131-7. Esta linguagem é uma linguagem de programação de domínio específico, ou seja, possui características diretamente relacionadas com a lógica fuzzy. Dessa forma, o FCL permite ao programador especificar conjuntos fuzzy, que são listas de pontos em um gráfico, bem como o conjunto de regras do sistema de inferência e o método de defuzzificação.
5. Sistema Robótico móvel e nebuloso
O sistema robótico móvel e nebuloso proposto neste trabalho objetiva controlar os movimentos do agente robótico de forma que este seja capaz de alcançar uma sequência especificada de coordenadas no ambiente, ao mesmo tempo em que desvia dos obstáculos. Neste modelo, o agente robótico é ciente de sua localização no ambiente, bem como das coordenadas que devem ser alcançadas para completar sua trajetória.
Figura 6 – Módulo de navegação e diferença de direção, adaptado de Fracasso (2005).
A postura do robô é determinada pela sua orientação no ambiente (x, z, ξ), na qual x e z representam suas coordenadas no plano bi-dimensional e o ângulo ξ representa a direção do seu movimento. Durante a navegação, a postura atual, a próxima postura e o ângulo atual são utilizados para calcular o ângulo de rotação necessário para o robô alcançar o objetivo, como ilustrado na Figura 6. Os sonares frontais indicam a distância dos obstáculos que possam existir no caminho. O controlador nebuloso utiliza as informações sobre a diferença angular das posturas e da distância dos obstáculos para definir o ângulo de rotação. A velocidade de translação do robô é mantida fixa para simplificar a modelagem.
5.1 Variáveis linguísticas
Neste sistema nebuloso, são utilizadas três variáveis linguísticas de entrada. As variáveis esquerda e direita indicam a distância dos obstáculos obtida pela leitura dos pares de sonares existentes. A última variável linguística é o ânguloє1, queé obtida pela diferença dos ângulos de orientação das posturas inicial e final. Além disso, existe apenas uma variável linguística de saída: o ângulo de rotaçãoє2.
As funções de pertinência das variáveis linguísticas são apresentadas na Figura 7. Pode-se observar que o universo do discurso dos sonares varia de 0 à 1.5m, com os valores linguísticos: Perto e Longe, simplificando o projeto para que o robô apenas evite as colisões. Por outro lado, o universo do discurso dos ângulos de entrada є1 e de saída є2 varia de -30º à +30º, ambos possuem doze variáveis linguísticas, Ângulo Muito Pequeno (AMP), Ângulo Pequeno (AP), Ângulo Médio (AM), Ângulo Médio Zero (AMZ), Ângulo Grande (AG), Ângulo Muito Grande (AMG), que podem ser positivos ou negativos.
Figura 7 – Funções de pertinência das variáveis de entrada: direita/esquerda e ângulo. A função de pertinência para o ângulo de saída é a mesma da função que representa o ângulo de entrada.
5.2 Regras, sistema de inferência e defuzzificação
As regras de inferência são colocadas no arquivo navigation.fcl, tendo um objetivo com duas premissas: fazer o robô desviar dos obstáculos, se os mesmos estiverem próximos, ou fazer simplesmente o robô continuar a sua trajetória quando o caminho está livre. A Figura 8 apresenta algumas das regras utilizadas. O sistema utilizado foi o método dos mínimos de Mamdani. No processo de defuzzificação, os valores obtidos pelas regras acionadas foram defuzzificados através do método de máximo mais à esquerda.
Figura 8 – Exemplo de algumas regras utilizadas na simulação.
6. Resultados
Após a implementação dos sistemas de fuzzificação, motor de inferência e defuzzificação, bem como a implantação do conjunto de regras elaboradas, iniciou-se a etapa de simulação. O código-fonte do simulador Simbad foi modificado para que a rota realizada pelo robô seja exibida em tempo de simulação. Possibilitando, dessa forma, a visualização do percurso realizado.
A avaliação do sistema proposto utiliza dois ambientes de simulação. Nos quais foram criados obstáculos no intuito de bloquear a trajetória do robô através das coordenadas inseridas, representadas pelas esferas vermelhas no cenário, testando assim, a lógica nebulosa para desvio de obstáculos. Para o primeiro ambiente, foi modelado um cenário simples, com dois obstáculos do tipo parede, o qual é ilustrado na Figura 9. Através da utilização da lógica fuzzy, a navegação do robô foi realizada com êxito. A Figura 9 demonstra também como o robô consegue seguir as coordenadas estipuladas e, ao mesmo tempo, desviar dos obstáculos dispostos no ambiente.
Figura 9 – Rota realizada pelo robô antes e após a simulação.
Em uma segunda simulação, foi utilizado um ambiente com mais obstáculos. A Figura 10 demonstra o ambiente antes do início da simulação e o percurso realizado pelo robô com tais obstáculos. Durante essa simulação, o robô consegue novamente percorrer com êxito as coordenadas definidas.
Figura 10 – Rota realizada pelo robô em um segundo ambiente de simulação.
Como foi visto, a lógica nebulosa para o desvio de obstáculos funcionou perfeitamente para os dois ambientes de simulação propostos. O robô apresentou como saída os movimentos giratórios para esquerda ou direita, fazendo com que o mesmo consiga evitar as colisões validando, dessa forma, o sistema fuzzy proposto.
7. Considerações finais
Este artigo apresenta o modelo e a simulação de um sistema robótico móvel e nebuloso baseado nas ferramentas de software livre: Simbad e jFuzzyLogic. Os resultados demonstram que o agente robótico consegue não só desviar dos obstáculos, mas percorrer a trajetória designada nos dois ambientes de simulação propostos. Contudo, o modelo apresentado não é capaz de percorrer trajetos em um ambiente mais complexo e com muitos obstáculos, nesse caso é necessário modificar as regras e tornar o sistema mais robusto. Assim, surgem duas motivações principais para um futuro trabalho: adicionar e melhorar as regras existentes, com o objetivo de deixar o sistema mais tolerante a falhas, e realizar a implementação desse projeto em um ambiente com elementos reais.
Referências
BATISTA, I. J. L. et al. Navegação de Robôs Móveis com Ênfase em Planejamento e Supervisão de Trajetórias. In: XVIII Congresso Brasileiro de Automática, 1., 2010, Bonito. Anais… Bonito: UNESP-MS. 1 CD-ROM.
CINGOLANI, P. jFuzzyLogic. Disponível em: <http://jFuzzyLogic.sourceforge.net> Acesso em: 20 jul. 2011.
FILHO, F. A. R. et al. Development of Robots for the Pipeline Industry… 2010.Trabalhoapresentadoao41st International Symposium (ISR) on and 2010 6th German Conference on Robotics (ROBOTIK), Munique, 2010.
FRACASSO, P. T.; REALI COSTA, A. H. Navegação reativa de robôs móveis autônomos utilizando lógica nebulosa com regras ponderadas. In: IEEE LATIN-AMERICAN ROBOTICS SYMPOSIUM. São Luis, MA, 2005. SBAI IEEE LARS. São Luis: IEEE, 2005. pp. 1-7.
FUZZY INFERENCE SYSTEMS. Disponível em: <http://www.mathworks.com/help/toolbox/fuzzy/fp351dup8.html>. Acessado em: 21 jul. 2011.
GOEBEL, G. A Introduction To Fuzzy Control Systems. Disponível em: <http://www.faqs.org/docs/fuzzy/> Acesso em: 19 jul. 2011.
HIRZINGER, G. et al. ROTEX-the first remotely controlled robot in space.In: Proc. IEEE Conf. on Robotics and Automation. Anais Proceedings San Diego: IEEE, 1994. pp. 2604-2611.
HUGUES, L.; BREDECHE, N. Simbad: An Autonomous Robot Simulation Package for Education and Research. In: Proceedings of SAB’2006. pp.831~842
JOSHI, M.M.; ZAVERI, M.A.; Fuzzy Based Autonomous Robot Navigation System. Proceedings of the India Conference (INDICON), 2009 Annual IEEE, ISBN: 978-1-4244-4858-6, DOI: 10.1109/INDCON.2009.5409419, pp. 1-4, Gujarat, India, 18-20 Dec. 2009.
MOTTA, J. M. S. T.; TOURINO, S. R. G. Sistema de Rastreamento por Visão em Robôs Móveis com Otimização por Projeto Fatorial. Revista Iberoamericana de Ingeniería Mecánica. Vol. 12, N° 1, pp. 25-34, jan. 2008.
OTTONI, G. L.; LAGES, W. F. Navegação de robôs móveis em ambientes desconhecidos utilizando sonares de ultra-som. Sba Controle & Automação [online]. 2003, vol.14, n.4, pp. 402-411.
PERRY, T.S. Lotfi A. Zadeh [fuzzy logic inventor biography]. Ieee Spectrum. Disponível em: <http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=387136> Acesso em: 21 jul. 2011.
PREISING, B.; HSIA, T. C.; MITTELSTADT, B. A literature review: robots in medicine. IEEE Engineering in Medicine and Biology Magazine. Vol. 10, N° 2, pp. 13-22, jun. 1991.
REDEL, R.; HOUNSELL, M.S. Implementação de Simuladores de Robôs com o Uso da Tecnologia de Realidade Virtual. In: IV Congresso Brasileiro de Computação, Itajaí – SC. IVCBCOMP, v. 1, 2004, pp. 398-401.
RAGURAMAN, S.M.; TAMILSELVI, D.; SHIVAKUMAR, N. Mobile robot navigation using Fuzzy logic controller. In: International Conference on Control, Automation, Communication and Energy Conservation, Perundurai – 638052, Erode, Tamilnadu, Índia – INCACEC 2009. pp. 1-5.
SIMBAD PROJECT HOME. Disponível em: <http://simbad.sourceforge.net/> Acesso em: 21 jun. 2011.
SIMÕES, A. S.; MARTINS, A. C. G.; CARRION, R. Robôs móveis autônomos na missão marte: projetando um sistema reativo com transição sequencial de comportamentos. In: Anais do XXVI Congresso da Sociedade Brasileira de Computação (SBC). ENRI’06: Encontro de Robótica Inteligente. Campo Grande, 17-20 de julho de 2006.
SOLIS, J.; TAKANISHI, A. Practical Issues on Robotic Education and Challenges Towards RoboEthics Education. In: 18th IEEE International Symposium on Robot and Human Interactive Communication, 3., 2009, Toyama. IEEE Press, 2009 pp. 561-565.
STALLMAN, R. Open Source: Voices from the Open Source Revolution. 1. ed. Sebastopol: O’Reilly & Associates. 1999.
Autores
Jardel Rodrigues <jardel.ifce@gmail.com> – Aluno de graduação em Ciência da Computação, IFCE Campus Maracanaú.
Leandro Bezerra <leandrobezerramarinho@gmail.com> – Aluno de graduação em Ciência da Computação, IFCE Campus Maracanaú.
MSc. Otávio A. de Lima Jr. <otavio@ifce.edu.br> – Professor, IFCE Campus Maracanaú.