INTEGRAÇÃO DE UM SISTEMA DE INFERÊNCIA FUZZY EM AMBIENTE DE SIMULAÇÃO ROBÓTICA PARA
APRENDIZAGEM DE TÉCNICAS INTELIGENTES
ALEXANDRE G. XAVIER 1 2, NIVAL N. ALMEIDA 1.
1.
Programa de Pós-Graduação em Engenharia Eletrônica, Faculdade de Engenharia, Universidade do
Estado do Rio de Janeiro
Rua São Francisco Xavier, 524, 5°andar-Sala 5016E, Maracanã, Rio de Janeiro, RJ, CEP 20550-900
E-mails: [email protected], [email protected]
2. Centro de Conhecimento em Tecnologia da Informação, Universidade Estácio de Sá
Av. Pastor Martin Luther King Jr., 126, Campus Nova América, Del Castilho, Rio de Janeiro
CEP 20765- 971
Abstract This paper presents the development of an educational package for the area of control and automation, which uses a
Fuzzy Inference System, control of mobile robotic platforms, a virtual environment and a real. The virtual one was built from the
V-Rep platform for robotics simulation, which has as a way to control the objects in your scene the programming language
LUA, and in a real environment was assembled a robot from the Arduino prototyping platform. The fuzzy inference system has
methods for defining input membership functions and output in addition to the inference rules. The performances of the created
functionalities were compared with Matlab 2009a Fuzzy Logic Toolbox. The case studies were built virtually and in real environment to evaluate the modeling. The results legitimate use of the application developed, using the simulator in combination
with the robots assembled,, with a view to learning computational intelligence techniques.
Keywords Fuzzy Logic, Mobile Robotics, V-REP, Arduino
Resumo Este artigo apresenta o desenvolvimento de um pacote educativo para a área de controle e automação, que usa um
Sistema de Inferência Fuzzy, em plataforma robótica móvel, num ambiente virtual e num similar real. O ambiente virtual foi
construído a partir da plataforma de simulação robótica V-Rep, que utiliza como forma de controle dos objetos em seu cenário a
linguagem de programação LUA. No ambiente real, foi montado um robô a partir da plataforma de prototipagem Arduino. O
Sistema de Inferência Fuzzy executado conta com métodos para definição de funções de pertinência de entrada e de saída, além
das regras de inferência. Os desempenhos das funcionalidades desenvolvidas foram comparados com o Fuzzy Logic Toolbox do
Matlab 2009a. Por sua vez, os estudos de casos foram simulados virtualmente e construídos num ambiente real para avaliação da
modelagem. Afinal, os resultados obtidos mostram-se interessantes e viabilizam o uso da aplicação desenvolvida, utilizando-se o
simulador em conjunto com o robô montado, com vistas à aprendizagem dos métodos de inteligência computacional.
Palavras-chave Lógica Nebulosa, Robótica Móvel, V-REP, Arduino
1 Introdução
A simulação robótica por software permite que se
conheça o comportamento de agentes autônomos e
sua interação com certos ambientes, antes de se produzir o mesmo em aplicações reais. Além disso, os
experimentos reais podem levar muito tempo para
que se ajustem os equipamentos e se obtenha o resultado desejado. Por outro lado, os sistemas de simulação permitem que sejam testadas várias possibilidades de forma mais rápida, além de evitar o risco e
danos aos equipamentos.
Neste sentido, um estudante de robótica precisa
adquirir os conhecimentos necessários para começar
a desenvolver as simulações. Este aprendizado não
ocorre de forma imediata e carece que ele interaja
com várias áreas técnico-científicas. Ademais, o uso
de ambientes de simulação pode auxiliar a compreensão do funcionamento de sensores e atuadores, assim
como a sua aplicação na área de automação industrial. Além disso, permite a montagem de peças robóticas móveis sem que exista a necessidade de que estes
recursos físicos estejam disponíveis, tais como: sensores, interfaces analógica-digitais, condicionadores
de sinais, placas controladoras, atuadores ou robôs
completos.
Por sua vez, as técnicas inteligentes apresentam
soluções para diversos problemas, que possuem dificuldades em se desenvolver a modelagem matemática
que os represente de forma o mais próximo do funcionamento real de equipamentos, ou que a solução
seja muito custosa. Uma das técnicas inteligentes
bastante usadas são os Sistemas de Inferência Fuzzy
(SIF), pois apresentam uma forma de interpretar um
cenário que é abordada neste artigo.
Este trabalho apresenta uma avaliação da aplicação de um Sistema de Inferência Fuzzy no ambiente
de simulação V-Rep, desenvolvido pela COPPELIA
(2015). A linguagem de programação utilizada pelo
sistema foi a LUA, cuja primeira versão foi desenvolvida em 1993 por Roberto Ierusalimschy, Luiz
Henrique de Figueiredo e Waldemar Celes, no Computer Graphics Technology Group da Pontifícia Universidade Católica do Rio de Janeiro. Vale lembrar
que além da linguagem LUA, o V-REP também oferece interação com outras linguagens de programação, como por exemplo, Java.
Um exemplo de aplicação foi realizado na plataforma Arduino, por esta ser de baixo custo e de fácil
aquisição, a fim de emular o ambiente real. O funcionamento do robô no ambiente de simulação foi comparado com o do robô montado, bem como, as funcionalidades do SIF desenvolvido em LUA foram validadas, usando-se o ambiente Matlab como parâmetro.
A escolha dos componentes do pacote educativo
foi feita a partir de sistemas e equipamentos que
permitissem a utilização em ambientes de aprendizagem, tendo como um dos objetivos a viabilidade de
sua aplicação, pois o V-Rep possui uma versão educacional gratuita, possibilitando assim a sua utilização por instituições destinadas a qualquer faixa econômica.
2 Contextualização
A simulação de projetos robóticos pode ser realizada
em vários ambientes encontrados no mercado, existindo uma diversidade de tipos, com recursos e facilidades diversas. Outro fator que deve ser levado em
consideração é a relação custo/benefício. O valor de
determinados softwares acaba tornando proibitiva a
sua utilização em certos setores, por esse motivo,
buscou-se algum que fosse gratuito e/ou que possuísse versão para uso educacional.
Igualmente, os simuladores devem fornecer ferramentas que permitam a construção de agentes robóticos, a sua inserção na área de testes e a interação
com objetos disponibilizados na mesma área. Assim,
as tarefas para configuração do controle e uso do
modelo robótico podem ser realizadas de forma intuitiva pelo estudante. Ademais, o simulador também
deve permitir o uso de linguagem de programação,
para que seja criado o controle dos movimentos realizados pelo agente robótico. Uma comparação entre
alguns ambientes foi realizada por Staranowicz &
Mariottini (2011), onde se podem verificar algumas
características específicas de sua utilização. A avaliação e o desenvolvimento desses ambientes pode ser
constatada ainda nos trabalhos de Fernandes (2010),
Iñigo-Blasco et al. (2012), Rohmer et al. (2013). Assim sendo, alguns sistemas são caracterizados por:
permitirem utilizar várias linguagens, fornecerem
ambientes 3D, disponibilizarem uma interface gráfica
para o usuário, oferecerem mais de um tipo de sensores, possuírem internamente equações matemáticas e
físicas para o tratamento da dinâmica de veículos,
braços ou pernas robóticas.
A utilização de um SIF permite que se controle
um sistema robótico, sem ter a necessidade da sua
formulação matemática. Esse tipo de controle tem
sido aplicado a problemas como: pêndulo invertido,
seguidores de linha e em outros casos como os descritos por Mester (2009), Olivares-Mendez et al.
(2014) e Ortigosa & Morillas (2014). Portanto, o
aprendizado da técnica inteligente pode ser em conjunto com a aplicação dos saberes adquiridos em uma
sala de aula como encontrado em Fabregas et al.
(2015). Logo, a junção dos ambientes de simulação
com um SIF tem como objetivo o desenvolvimento
do conhecimento integral sobre o tema “controle robótico inteligente” para os estudantes de robótica,
fazendo com que ao elaborar as soluções, os mesmos
adquiram mais e melhores conhecimentos, e não apenas uma noção de como deve ser o funcionamento de
tais sistemas, mais ainda, apreendendo o porquê de
como eles funcionam.
Analogamente, a plataforma Arduino vem sendo
usada largamente na educação para o aprendizado de
robótica e áreas afins, como apresentado pelos trabalhos de Araújo, Portugal, Couceiro & Rocha (2014) e
Grover et al. (2014). Ela oferece uma linguagem de
programação, que dispensa conhecimentos em programação.
Finalmente, o ambiente virtual de simulação robótica deve fornecer uma interface gráfica em que se
possa visualizar a interação do robô com os objetos
em terceira dimensão. Deve ainda proporcionar o uso
de uma linguagem de programação, para que seja
possível controlar os objetos inseridos no ambiente
virtual. Ele deve oferecer bibliotecas de técnicas inteligentes ou permitir que as mesmas sejam criadas.
Não obstante, o software precisa oferecer componentes, como por exemplo, atuadores e sensores, juntamente com drivers compatíveis, aos respectivos atuadores e sensores utilizados na placa robótica. Ele
deve permitir a comunicação com o modelo robótico
real, incluindo a embarcação no robô do programa de
controle desenvolvido no ambiente virtual, ou seja, a
exportação do código para a memória existente no
processador da placa robótica.
3 Desenvolvimento
3.1 O Ambiente de Simulação
O simulador selecionado para o desenvolvimento
do sistema educacional robótico inteligente foi o VRep, pois existe uma versão educacional gratuita,
mostrada na figura 1, e apresenta algumas das funcionalidades desejadas, como a interface gráfica com
três dimensões. Ele possui ainda, como componentes,
algumas plataformas de robôs, existentes no mercado, que podem ser inseridos no cenário virtual. Para
se configurar o sistema de controle robótico nesta
pesquisa, foi utilizado um computador com o sistema
operacional Windows 7, pois o programa apresentou
incompatibilidade com a versão do sistema operacional Windows XP.
A linguagem existente no simulador para a inclusão de funcionalidades nos componentes robóticos
foi a LUA. Ela possui uma sintaxe própria, apesar de
não ser muito distinta de outras linguagens. Essa linguagem possui todas as características de orientação
a objetos, entretanto, permite a criação de classes e
métodos. O ambiente possibilita o uso de outras linguagens como o Java ou o C++, elas podem ser cha-
madas através de funções disponíveis em LUA. Como parte da avaliação foi usada apenas a Linguagem
LUA disponível no próprio ambiente.
recida ainda a possibilidade do uso de bibliotecas,
que podem ser referenciadas no script do V-Rep.
Existem alguns editores para a linguagem LUA e
extensões (add-ons ou plug-ins) para ambientes de
desenvolvimento integrado, fazendo com que estes,
criem projetos para a linguagem. Nesta pesquisa,
usou-se o software Netbeans 8.0 com o plug-in Lua
Glider para a codificação conforme mostrado na figura 2. O suporte da linguagem LUA para o editor foi
feito através do Software Development Kit chamado
Corona.
Figura 1. V-REP - ambiente de simulação robótica
A ferramenta V-Rep disponibiliza tutoriais no sítio eletrônico da empresa COPPELIA, que são instruções passo a passo para o aprendizado do uso do
ambiente. Nesse sentido, os projetos realizados no
ambiente são denominados de cenas, onde podem ser
colocados objetos móveis e fixos. A construção dos
objetos das cenas pode ser realizada através de formas primitivas e de componentes (atuadores, sensores, câmeras, sensor de força, caminhos, entre outros)
disponíveis. A elaboração de um agente robótico
pode ser realizada com esses objetos descritos, fazendo-se um agrupamento ou junção deles. As peças
devem ser combinadas ou fixadas umas as outras com
um sensor de força, dependendo do uso desejado. O
uso do sensor de força permite a modularização dos
componentes.
A criação de modelos exige que sua base de fixação, que também é um componente, seja configurada como um “Object is model base” através da
marcação da caixa de seleção em sua caixa de diálogo de propriedades, permitindo a exportação para um
modelo em um arquivo próprio. Essa característica
amplia o uso dos objetos, permitindo a inclusão dos
mesmos em outras cenas.
Os programas escritos no simulador são chamados de scripts, eles podem estar associados a um objeto na tela. Os scripts são configurados para que a
execução ocorra sequencialmente, ou seja, são gerenciados pelo controlador de tempo do V-REP, ou paralelamente, marcados como threads nesse último
caso. A escolha da forma de execução foi determinada pela seleção da plataforma robótica utilizada. Nesse caso, usou-se o script sem thread por ser o modo
compatível com a execução de programas na placa
Arduino.
O editor dos scripts da linguagem de programação é simples e oferece apenas um code completion
quando se começa a digitar uma das funções oferecidas pelo ambiente. Caso seja do interesse do programador, é possível usar um editor externo. A simulação é gravada em um único arquivo, com todos os
seus objetos e os scripts de controle, não sendo possível acessar o arquivo do código diretamente. É ofe-
Figura 2. Modelo do sensor ultrassônico
3.2 A Criação dos Modelos Robóticos
Foram usadas as formas primitivas para se construir
as partes do veículo, o chassi, as rodas, os motores e
o sensor. Para facilitar o reuso e outros experimentos,
o sensor e o conjunto “motor com roda”.
O objeto “sensor ultrassônico”, exibido na figura
3, foi adicionado ao modelo o objeto “Proximity Sensor” do V-Rep para dotar o objeto com as características desse sensor ultrassônico. O sensor possui configuração para distância e forma, podendo ter a sua
área de atuação na forma cônica ou cilíndrica.
O motor foi interligado à roda através de um
elemento do V-Rep que possui funcionamento de um
motor, o join. Ele possui configurações de tamanho e
de funcionamento, onde pode ser informada a velocidade máxima em que ele gira.
Usou-se como base os componentes disponíveis
no mercado que são compatíveis com a plataforma
Arduino, visando o aumento na facilidade da construção de um modelo robótico real.
Figura 3. Modelo do sensor ultrassônico
3.3 O Desenvolvimento
O algoritmo do SIF foi desenvolvido na linguagem do ambiente de simulação LUA. Os métodos de
entrada e saída da classe Fuzzy foram criados com
funções de pertinência triangulares e a função de
avaliação utilizada foi o método Mamdani, verificando o Mínimo e o Máximo no cálculo nas regras, para
entrada e saída respectivamente. A seguir foi feita a
agregação das funções de pertinência dos resultados
dos consequentes e, posteriormente, foi feito o cálculo do centro de massa para efetivar a defuzzificação.
O código da classe Fuzzy foi desenvolvido em
LUA no Netbeans, que é uma IDE (Integrated Development Environment) normalmente usada para programação na linguagem Java. Foram desenvolvidos
vários plug-ins para o programa, entre eles temos
Glider, que funciona em conjunto com o SDK (Software Development Kit) Corona. Observa-se, que é
possível usar arquivos externos no V-REP e fazer
referência através da instrução “require” nos scripts
criados com LUA.
Além disso, o ambiente de simulação não fornece um depurador que possa acompanhar a execução
do programa, a fim de se avaliar se ele está funcionando de forma correta ou para a detecção da existência de algum erro. Essa limitação aumentou o
tempo para a realização desse trabalho. A avaliação
do funcionamento foi feita usando uma função do
ambiente que apresenta informações na tela, a função
“simAddBanner” apresenta um texto com possibilidade de configuração de cor.
O desenvolvimento foi dividido em etapas, a
primeira possuiu um único conjunto de entrada e um
único conjunto de saída, enquanto a segunda permite
o uso de vários conjuntos de entrada e saída.
Neste sentido, o programa realiza chamadas para
os métodos da classe Fuzzy em duas fases de sua
execução. A primeira fase tem a responsabilidade de
configurar o sistema, informando as funções de entrada e saída, e posteriormente as regras de inferência, conforme apresentado na figura 4. A segunda
fase consiste em chamar o método de avaliação, que
realiza o processamento da entrada até apresentar a
saída, de acordo com o fluxograma da figura 5.
Em uma segunda etapa, o SIF passou a permitir
qualquer quantidade de entradas e também qualquer
quantidade de saídas. A avaliação do acréscimo de
funcionalidades foi realizada com a leitura de três
distâncias e a saída de duas informações para controlar os motores existentes no veículo. Os métodos
criados para o primeiro teste precisaram contemplar
esse acréscimo.
A utilização de sistemas nebulosos parte do
princípio que é necessário um especialista para modelar o problema ou podemos fazer uso de outros
métodos para corrigir algum problema no sistema
desenvolvido, temos redes neurais ou algoritmos genéticos como possibilidades. Os acertos das funções
de pertinência e das regras de inferência Fuzzy foram
realizados de forma empírica, para que o objetivo
fosse alcançado.
Figura 4. Fluxograma do algoritmo de configuração
Figura 5. Fluxograma do algoritmo da avaliação
Após a verificação do funcionamento do SIF em
LUA e a comparação com a execução do mesmo
experimento no software Matlab, o código desenvolvido foi convertido para a plataforma Arduino e implantado na placa Uno R3.
3.4 A Simulação
O veículo modelado, figura 6, continha duas rodas
com motores (joins), uma roda fixa, um chassi e um
sensor de distância. O cenário também possuía paredes, figura 7, limitando o movimento nas quatro direções. O objetivo do primeiro experimento era que o
carro parasse antes de bater na parede usando lógica
fuzzy. As funções de pertinência de entrada e de saída
sofreram ajustes para se alcançar a distância desejada. O veículo iniciou o percurso em afastamentos da
parede, sempre com uma diminuição de velocidade
até estacionar ao ponto desejado.
Figura 6. Veículo modelado pelos autores.
Figura 7. Cenário
O segundo experimento possibilitou que a classe
fosse testada com o controle do movimento do veículo, fazendo com que o mesmo parasse no centro da
região. Para determinar o próximo movimento do
veículo, fez-se necessário a determinação de sua distância para mais de uma parede, o sensor precisou ser
girado para que fosse possível a obtenção dessas informações. Optou-se pela verificação da distância em
três direções, direita, frente e centro, possibilitando
que controlando a velocidade de cada um dos dois
motores fosse possível conduzir o veículo ao centro
do quadrado formado. Foi introduzido um motor
abaixo do sensor ultrassônico para fazer a sua rotação.
4 Resultados
Testou-se inicialmente o ambiente proposto com um
experimento contendo dois conjuntos de entrada e
um de saída, contendo quatro regras de inferência,
para verificar o funcionamento da função Fuzzy desenvolvida. A modelagem possuía funções de pertinência triangulares de entrada e a aplicação das regras de inferência sobre as funções de saída, assim
como o valor obtido através do cálculo de centro de
massa. Pôde ser verificada a comparação entre os
valores obtidos no Matlab, conforme apresentado na
figura 8 e figura 9, e a função construída na tabela 1.
Cumpre registrar que este SIF foi avaliado com valores na mesma ordem de grandeza para as distâncias
utilizadas na simulação com o robô móvel. Posteriormente, foi avaliado se o veículo pararia de forma
correta antes de colidir com a parede. Ambas as situações funcionaram sem nenhum problema.
Figura 9. Aplicação de Fuzzy no Matlab
Tabela 1. Quadro comparativo para duas entradas e uma saída
O cenário com três medições de distância para
controle do carro foi criado nos dois ambientes, sendo também montado em um chassi com dois motores
controlados pela placa Arduino. A tabela 2 mostra os
valores resultantes do teste realizados nos dois ambientes virtuais para este caso. A modelagem contou
com 18 regras de inferência conforme apresentado na
figura 10 e na tabela 3. A figura 12 apresenta a concretização real do robô, cujo experimento evoluiu de
forma esperada para o mesmo cenário, podendo ser o
mesmo visualizado no sítio:
http://www.divulgando.com.br/sbai2015.
Tabela 2. Quadro comparativo para três entradas e duas saídas
Figura 10. Aplicação Fuzzy no Matlab para o veículo
Figura 8. Regras de inferência
Tabela 3. Regras de inferência para as três entradas
6
Agradecimentos
À Professora Doutora Karla Figueiredo do Departamento de Engenharia Elétrica da Pontifícia Universidade Católica do Rio de Janeiro, por sua inestimável
contribuição para a realização desse trabalho.
7
5
Conclusão
Nesse artigo foi avaliado o funcionamento de um
pacote educacional compreendido por: um ambiente
de simulação robótica 3D, o V-REP, com um conjunto de peças para um robô móvel; um SIF desenvolvido na linguagem LUA para este ambiente; e, uma
aplicação real do robô móvel na plataforma de prototipagem Arduino, com a respectiva codificação e
programação para o SIF desenvolvido.
Pôde ser observado que a simulação desenvolvida no V-Rep apresentou valores muito próximos aos
encontrados na execução do software Matlab. O resultado da confecção das peças, no ambiente de simulação robótica, também pôde ser modelado de
modo similar daquele normalmente encontrado no
mercado, que é usado para a montagem de protótipos
na plataforma Arduino. Assim, a emulação física do
dispositivo apresentou um bom funcionamento e correspondeu ao simulado. Esta particularidade mostrou-se eficaz e possibilitou acelerar a elaboração de
novos experimentos. Desta maneira, a metodologia
permitiu a aplicação da plataforma V-Rep em um
espaço educacional, e pode tornar mais eficiente o
processo de aprendizagem ativa dos estudantes.
A continuidade do presente trabalho será testada
junto a estudantes de graduação para a avaliação da
metodologia, bem como se deseja desenvolver alguns
Sistemas de Inferência Fuzzy na linguagem Java, por
esta poder ser utilizada em conjunto com o ambiente
de simulação.
Figura 12. Veículo com a placa Arduino e o sensor ultrassônico
Referências Bibliográficas
Araújo, A., Portugal, D., Couceiro, M. S. and Rocha,
R. P. (2014) Integrating Arduino-Based Educational Mobile Robots in ROS, J. Intell. Robot.
Syst. 77, pp. 281–2980
Fabregas, E., Farias, G., Dormido-Canto, S.,
Guinaldo, M., Sánchez, J. and Bencomo, S. D.
(2015) Platform for Teaching Mobile Robotics,
Journal of Intelligent & Robotic, Springer Netherlands, pp. 1-13
Fernandes, C. C. (2010). Ambiente Simulado da Metodologia RoboEduc, Natal. Dissertação (Mestrado em Engenharia da Computação) - Universidade Federal do Rio Grande do Norte.
Grover, R., Krishnan, S., Shoup, T. and Khanbaghi,
M. (2014) A competition-based approach for
undergraduate mechatronics education using the
arduino platform, Interdisciplinary Engineering
Design Education Conference (IEDEC), pp. 7883
Iñigo-Blasco, P., Diaz-del-Rio, F., Romero-Ternero,
M. C., Cagigas-Muñiz, D. and Vicente-Diaz, S.
(2012) Robotics software frameworks for multiagent robotic systems development, Robotics
and Autonomous Systems, No. 60, pp. 803–821,
Seville, Spain
Mester G. (2009) Intelligent Mobile Robot Control in
Unknown Environment, Intelligent Engineering
Systems and Computational Cybernetics, pp. 1526
Olivares-Mendez, M.A. Kannan and S. Voos, H.
(2014) V-REP & ROS Testbed for Design, Test,
and Tuning of a Quadrotor Vision Based Fuzzy
Control System for Autonomous Landing, International Micro Air Vehicle Conference and
Competition, Delft, The Netherlands
Ortigosa, N. and Morillas, S. (2014) Fuzzy Free Path
Detection from Disparity Maps by Using LeastSquares Fitting to a Plane, Journal of Intelligent
& Robotic Systems, Volume 75, Issue 2 , pp.
313-330
Rohmer, E., Singh, S.P.N. and Freese, M. (2013) REP: A versatile and scalable robot simulation
framework, Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and
Systems (IROS), pp. 1321–1326
Staranowicz A. and Mariottini G L. (2011) A survey
and comparison of commercial and open-source
robotic simulator software, 4th International
Conference on PErvasive Technologies Related
to Assistive Environments, New York, USA
Download

1. Programa de Pós-Graduação em Engenharia