13fdd3bf2d22ab0aeecff212df10bd4c

6
SBA Controle & Automação Vol. 00 no. 00 / Jan., Fev., Mar, Abril de 0000 1 DESENVOLVIMENTO DE UMA BIBLIOTECA FUZZY PARA O CONTROLE AUTÔNOMO DE UM ROBÔ MÓVEL EM AMBIENTE DESCONHECIDO Douglas Santiago Kridi, Antônio José de Oliveira Alves, Marcus Vinícius de Sousa Lemos, Ricardo de Andrade Lira Rabêlo Universidade Estadual do Piauí – Uespi / Laboratório de Informática Aplicada - LAIC Caixa Postal 381 CEP 64002-150 - Teresina PI Resumo Este trabalho introduz a eFLL (Embedded Fuzzy Logic Library), uma biblioteca escrita em C++ que auxilia na implementação de controladores fuzzy em plataformas embarcadas. Além de demonstrar o funcionamento da biblioteca, este artigo analisa o desempenho da mesma por meio de um controlador fuzzy, embarcado em um microcontrolador ATmega, para o controle de um robô móvel autônomo. Palavras Chaves: Arduino, Robótica Móvel, Inteligência Artificial, Controlador Fuzzy. Abstract: This paper introduces the eFLL (Embedded Fuzzy Logic Library), a library written in C ++ that helps in the implementation of fuzzy controllers in embedded platforms. In addition to demonstrating the operation of the library, this article analyzes its performance using a fuzzy controller, embedded in an ATmega microcontroller to control an autonomous mobile robot. Keywords: Arduino, Mobile Robotics, Artificial Intelligence, Fuzzy Controller. 1 INTRODUÇÃO A robótica móvel tem sido objeto de discussão constante em artigos e trabalhos com os mais diversos propósitos e, segundo Wolf et al. (2009), nas ultimas duas décadas esta área de estudos e pesquisas se multiplicou com o surgimento de novas tecnologias cada vez mais acessíveis e embarcadas. Uma das ferramentas que alavancaram a robótica móvel autônoma foi a utilização de técnicas de inteligência artificial [Silva 2008] que deram aos robôs a característica adaptativa de lidar com ambientes desconhecidos ou que sofrem modificações aleatórias. Robôs desenvolvidos para explorar lugares inóspitos ou que ofereçam extremo perigo, são exemplos de aplicações que envolvem a mobilidade autônoma e seus percalços. Para que um robô possa tomar atitudes como se desviar de um obstáculo, ou traçar uma trajetória eficiente, ele precisa obter dados a respeito do ambiente. Estas informações são obtidas por meio de sensores que equipam o robô e permitem a percepção do que está ao seu redor, dando a maquina sinais de entrada que serão usados no processo decisório responsável pelas interações do robô com o ambiente, sem a intervenção humana [Jácobo 2001]. Como o cenário em que o robô irá se locomover é um ambiente desconhecido, assim como a localização dos possíveis obstáculos, o método de controle que originará as regras e parâmetros de navegação precisa ser capaz de modelar o conhecimento incerto ou impreciso. Neste ponto, podemos recorrer a uma técnica de inteligência artificial conhecida por sistemas fuzzy ou sistemas nebulosos, que se baseia nos conceitos de lógica fuzzy [Zadeh 1965] e na teoria dos conjuntos fuzzy [Zadeh 1965]. Na literatura, podemos encontrar vários trabalhos que utilizam uma abordagem baseada em sistemas fuzzy para o controle de robôs móveis [Moratori et al 2006], [Fracasso e Costa 2005], [Ottoni e Lages 2000]. Diversos trabalhos em robótica utilizam hardware com recursos limitados, no entanto, ainda não há uma biblioteca que auxilie na implementação de sistemas fuzzy neste tipo de tecnologia embarcada. Este artigo introduz a eFLL (Embedded Fuzzy Logic Library), uma biblioteca capaz de auxiliar o desenvolvimento de sistemas fuzzy em plataformas de hardware embarcados, de forma a tornar a criação de controladores fuzzy para robôs móveis e outras aplicações diversas mais intuitiva e rápida. A biblioteca é suficientemente leve para ser executada em microcontroladores com recursos limitados, além de possuir uma implementação simples e direta. O restante do artigo é descrito a seguir. Na seção 2, apresentamos uma visão geral sobre sistemas, conjuntos e lógica fuzzy. Na seção 3, descrevemos brevemente os principais componentes da biblioteca desenvolvida, enquanto na seção 4, serão descritos os testes feitos em ambiente real usando a biblioteca. Por fim, na seção 5 apresentamos as conclusões e trabalhos futuros. 2 CONJUNTOS FUZZY, LÓGICA FUZZY E SISTEMAS DE INFERÊNCIA Na teoria clássica de conjuntos, um valor só pode assumir dois estados (verdadeiro ou falso) o que nos leva ao raciocínio exato. Lofti A. Zadeh, em 1965, apresenta a teoria dos conjuntos fuzzy, a qual visa determinar um grau de pertinência que indica o quanto um determinado elemento pertence a um determinado conjunto. Esse grau de pertinência é definido por meio de uma função característica real (função de pertinência) mapeada por μ F : U [0,1], que associa a cada (universo de discurso) um número real μ F (x) no intervalo [0,1], ao invés dos valores binários usuais: pertence (1) e não

Upload: carlosotiniano

Post on 30-Sep-2015

214 views

Category:

Documents


1 download

DESCRIPTION

TRANSCRIPT

  • SBA Controle & Automao Vol. 00 no. 00 / Jan., Fev., Mar, Abril de 0000 1

    DESENVOLVIMENTO DE UMA BIBLIOTECA FUZZY PARA O CONTROLE AUTNOMO DE UM ROB MVEL EM AMBIENTE DESCONHECIDO

    Douglas Santiago Kridi, Antnio Jos de Oliveira Alves, Marcus Vincius de Sousa Lemos, Ricardo de Andrade Lira Rablo

    Universidade Estadual do Piau Uespi / Laboratrio de Informtica Aplicada - LAIC Caixa Postal 381

    CEP 64002-150 - Teresina PI

    Resumo Este trabalho introduz a eFLL (Embedded Fuzzy Logic Library), uma biblioteca escrita em C++ que auxilia na implementao de controladores fuzzy em plataformas embarcadas. Alm de demonstrar o funcionamento da biblioteca, este artigo analisa o desempenho da mesma por meio de um controlador fuzzy, embarcado em um microcontrolador ATmega, para o controle de um rob mvel autnomo.

    Palavras Chaves: Arduino, Robtica Mvel, Inteligncia Artificial, Controlador Fuzzy. Abstract: This paper introduces the eFLL (Embedded Fuzzy Logic Library), a library written in C ++ that helps in the implementation of fuzzy controllers in embedded platforms. In addition to demonstrating the operation of the library, this article analyzes its performance using a fuzzy controller, embedded in an ATmega microcontroller to control an autonomous mobile robot.

    Keywords: Arduino, Mobile Robotics, Artificial Intelligence, Fuzzy Controller.

    1 INTRODUO A robtica mvel tem sido objeto de discusso constante em artigos e trabalhos com os mais diversos propsitos e, segundo Wolf et al. (2009), nas ultimas duas dcadas esta rea de estudos e pesquisas se multiplicou com o surgimento de novas tecnologias cada vez mais acessveis e embarcadas. Uma das ferramentas que alavancaram a robtica mvel autnoma foi a utilizao de tcnicas de inteligncia artificial [Silva 2008] que deram aos robs a caracterstica adaptativa de lidar com ambientes desconhecidos ou que sofrem modificaes aleatrias. Robs desenvolvidos para explorar lugares inspitos ou que ofeream extremo perigo, so exemplos de aplicaes que envolvem a mobilidade autnoma e seus percalos. Para que um rob possa tomar atitudes como se desviar de um obstculo, ou traar uma trajetria eficiente, ele precisa obter dados a respeito do ambiente. Estas informaes so obtidas por meio de sensores que equipam o rob e permitem a percepo do que est ao seu redor, dando a maquina sinais de entrada que sero usados no processo decisrio responsvel pelas interaes do rob com o ambiente, sem a interveno humana [Jcobo 2001].

    Como o cenrio em que o rob ir se locomover um ambiente desconhecido, assim como a localizao dos possveis obstculos, o mtodo de controle que originar as regras e parmetros de navegao precisa ser capaz de modelar o conhecimento incerto ou impreciso. Neste ponto, podemos recorrer a uma tcnica de inteligncia artificial conhecida por sistemas fuzzy ou sistemas nebulosos, que se baseia nos conceitos de lgica fuzzy [Zadeh 1965] e na teoria dos conjuntos fuzzy [Zadeh 1965]. Na literatura, podemos encontrar vrios trabalhos que utilizam uma abordagem baseada em sistemas fuzzy para o controle de robs mveis [Moratori et al 2006], [Fracasso e Costa 2005], [Ottoni e Lages 2000]. Diversos trabalhos em robtica utilizam hardware com recursos limitados, no entanto, ainda no h uma biblioteca que auxilie na implementao de sistemas fuzzy neste tipo de tecnologia embarcada. Este artigo introduz a eFLL (Embedded Fuzzy Logic Library), uma biblioteca capaz de auxiliar o desenvolvimento de sistemas fuzzy em plataformas de hardware embarcados, de forma a tornar a criao de controladores fuzzy para robs mveis e outras aplicaes diversas mais intuitiva e rpida. A biblioteca suficientemente leve para ser executada em microcontroladores com recursos limitados, alm de possuir uma implementao simples e direta. O restante do artigo descrito a seguir. Na seo 2, apresentamos uma viso geral sobre sistemas, conjuntos e lgica fuzzy. Na seo 3, descrevemos brevemente os principais componentes da biblioteca desenvolvida, enquanto na seo 4, sero descritos os testes feitos em ambiente real usando a biblioteca. Por fim, na seo 5 apresentamos as concluses e trabalhos futuros.

    2 CONJUNTOS FUZZY, LGICA FUZZY E SISTEMAS DE INFERNCIA

    Na teoria clssica de conjuntos, um valor s pode assumir dois estados (verdadeiro ou falso) o que nos leva ao raciocnio exato. Lofti A. Zadeh, em 1965, apresenta a teoria dos conjuntos fuzzy, a qual visa determinar um grau de pertinncia que indica o quanto um determinado elemento pertence a um determinado conjunto. Esse grau de pertinncia definido por meio de uma funo caracterstica real (funo de pertinncia) mapeada por F: U [0,1], que associa a cada (universo de discurso) um nmero real F (x) no intervalo [0,1], ao invs dos valores binrios usuais: pertence (1) e no

  • 2 SBA Controle & Automao Vol. 00 no. 00 / Jan., Fev., Mar, Abril de 0000

    pertence (0). Vrios conjuntos fuzzy podem estar associados a um nome, chamado de varivel lingustica[Engelbrecht 07]. Por exemplo, a distncia de um determinado rob com relao a um obstculo pode ser uma varivel lingustica assumindo os valores perto, mdio e longe. Estes valores so descritos por intermdio de conjuntos fuzzy, representados por funes de pertinncia, conforme mostrado na figura Figura 2. Na imagem, os conjuntos Perto e Longe so representados por um trapzio, enquanto o conjunto Mdio representao por um triangulo. Pode-se definir lgica fuzzy (difusa) como sendo uma ferramenta capaz de capturar informaes vagas, em geral descritas por meio de uma preposio fuzzy (afirmao do tipo P A, onde P nome de uma varivel e A um conjunto fuzzy), e atribuir um grau de verdade a esta preposio, no intervalo [0,1]. De modo figurativo enquanto a lgica clssica enxerga somente o preto e branco, a logica fuzzy capaz de, alm do preto e branco, enxergar vrios tons de cinza entre as duas cores. Sistemas de inferncia fuzzy so capazes de tratar processos bastante complexos, onde existem informaes incertas ou imprecisas. Para tanto os sistemas de inferncia fuzzy utilizam regras lingusticas do tipo se...ento que tem na teoria dos conjuntos fuzzy [Zadeh 1965] e na lgica fuzzy [Zadeh 1965] a base matemtica condizente [Leal 2011]. A Figura 1 mostra a viso geral de um sistema fuzzy.

    Figura 1. Viso geral de um sistema fuzzy. Nos sistemas fuzzy, em geral, o comportamento dinmico do sistema modelado por meio de regras fuzzy. Estas regras so baseadas no conhecimento e na experincia de um especialista da rea [Engelbrecht 2007]. Regras fuzzy so definidas na seguinte forma:

    Se ento O antecedente e consequente de uma regra fuzzy so proposies contendo variveis lingusticas:

    Se A a e B b ento C c A base de regras e a base de dados formam a base de conhecimentos de um sistema fuzzy [Leal 2011]. Alm desta base de conhecimento, um sistema de raciocnio fuzzy composto por outros componentes, cada qual realizando uma tarefa especfica. Estes componentes so descritos a seguir.

    2.1 Fuzzificao Para demonstrar alguns conceitos, vamos usar um exemplo prtico em que teremos duas variveis lingusticas, uma de entrada, chamada Distncia, e outra de sada, chamada Velocidade. Estas variveis podero assumir um conjunto de valores, que no caso, sero Perto, Mdio e Longe, para a varivel Distncia, e Lento, Normal e Rpido, para a varivel Velocidade.

    A Figura 2 mostra como o valor da entrada Distncia pertence a dois conjuntos, com graus de pertinncia diferentes.

    Figura 2. Mostra a fuzzificao da entrada Distancia. No exemplo da Figura 2, o valor de entrada 3,50 pertence ao conjunto Perto, com grau de pertinncia 0,45 e tambm pertence ao conjunto Mdio com grau de pertinncia 0,65.

    2.2 Inferncia O valor preciso da entrada Distncia resultante de leituras externas feitas por sensores passou por um estgio de fuzzificao, isto , atribui-se o grau de pertinncia do valor desta entrada em relao a um dado conjunto fuzzy. Aps a fuzzificao, iniciado o processo de inferncia. Neste momento associamos as combinaes possveis entre as pertinncias e conjuntos ativados pela varivel de entrada, e seus reflexos nos conjuntos da varivel de sada. O mdulo de inferncia do sistema fuzzy ir associar os conjuntos atingidos na fuzzificao da entrada aos conjuntos correspondentes na sada, sempre se baseando nas regras que foram modeladas previamente.

    2.3 Defuzzificao Aps a inferncia descobrir com qual grau de pertinncia os conjuntos da varivel de sada foram acionados, iniciado o processo de defuzzificao. O objetivo desta etapa descobrir o valor preciso associado ao grau de pertinncia de um dado conjunto, como ilustra a Figura 3. Este procedimento necessrio, pois, em aplicaes prticas, geralmente so requeridas sadas precisas. No caso de um sistema de controle da navegao de um rob, por exemplo, em que o controle efetuado por um sistema de inferncia fuzzy (ou controlador fuzzy), este deve fornecer ao rob dados ou sinais precisos, j que a "apresentao" de um conjunto fuzzy entrada do rob no teria significado algum. Existem vrios mtodos de defuzzificao na literatura; dois dos mais empregados so o centro de gravidade e a mdia dos mximos. Neste, a sada precisa obtida tomando-se a mdia entre os dois elementos extremos no universo que correspondem aos maiores valores da funo de pertinncia do consequente. Com o centro de gravidade, a sada o valor no universo que divide a rea sob a curva da funo de pertinncia em duas partes iguais. Neste trabalho, consideramos apenas a mdia dos mximos.

    3 A BIBLIOTECA A biblioteca desenvolvida neste trabalho implementa computacionalmente os conceitos e tcnicas fuzzy abordados na seo anterior, para serem usados principalmente em aplicaes embarcadas que possuem recursos limitados no seu processamento. Deste modo, desenvolvemos um algoritmo orientado a objetos, usando a linguagem de programao C++ [Stroustrup 2000]

  • SBA Controle & Automao Vol. 00 no. 00 / Jan., Fev., Mar, Abril de 0000 3

    por esta ser uma linguagem de propsitos gerais, alm de ser a linguagem de programao padro do microcontrolador ATmega (plataforma utilizada neste projeto). Outra vantagem da biblioteca ser escrita em C++ a fcil portabilidade para outras plataformas de micro controladores. A biblioteca possui uma interface de fcil configurao, permitindo que o sistema fuzzy seja rapidamente projetado. A seguir, descrevemos a biblioteca e seus principais elementos.

    Figura 3. Defuzzificao da sada Velocidade.

    3.1 Classes e Principais Mtodos A biblioteca composta por 4 classes, chamadas Fuzzy, FuzzySet, FuzzyRule e FuzzyComposition, que se relacionam como na Figura 4.

    Figura 4. Relacionamento entre as classes. Fuzzy.cpp a classe principal, na qual determinamos quantas entradas o nosso sistema poder ter, e obtemos a fuzzificao dos valores das entradas por meio do mtodo fuzzify(), alm de

    encontrar o ponto em que a fuzzificao atinge os conjuntos das variveis, usando truncate(). Para determinar quais conjuntos estaro associados a uma entrada, e seus respectivos valores, usamos a classe FuzzySet.cpp e seus mtodos. Fornecemos 4 valores para cada conjunto, o limite inferior, o ponto de mximo 1, o ponto de mximo 2, e o limite superior, assim, podemos ter um conjunto que graficamente seja representado por um triangulo ou por um trapzio, dependendo dos valores dos seus pontos. A Figura 5 ilustra a posio dos pontos.

    Figura 5. Disposio dos pontos de um conjunto fuzzy. De acordo com a Figura 5, que os valores dos pontos de mximo 1 e 2, orientados pela horizontal, determinam se o grfico da funo ser um trapzio ou um triangulo. No exemplo da Figura 5, quando temos o ponto de mximo 1 valendo 2 e o ponto de mximo 2 valendo 4, obtemos uma reta que forma a base menor de um trapzio. Mas quando temos os pontos de mximo 1e 2 valendo 4, obtemos um ponto que forma um dos vrtices do triangulo. Assim, quando determinarmos pontos de mximo diferentes, teremos um trapzio, e quando determinarmos pontos de mximo iguais, teremos um triangulo. J em FuzzyRule.cpp, construmos todas as regras que guiaro as decises de nosso sistema fuzzy, sendo que estas sero chamadas e organizadas respectivamente, pelos mtodos addRule() e reOrderBaseRules(), ambos da classe Fuzzy. Na classe FuzzyComposition, ser feita a defuzzificao do valor obtido pelo sistema fuzzy, neste trabalho, consideramos apenas o mtodo mdia dos mximos onde obtemos a mdia entre os pontos das extremidades do conjunto acionado na sada. A defuzzificao chamada pelo mtodo defuzzify() na classe principal, Fuzzy. Podemos ver este mtodo de defuzzificao na Figura 6.

    Na Tabela 1, podemos verificar um exemplo de cdigo em que chamamos a biblioteca fuzzy criada em nosso trabalho. O cdigo expresso na Tabela 1, um exemplo da implementao de um sistema fuzzy por meio da biblioteca criada neste trabalho. No exemplo, usamos o mesmo caso trabalhado na Seo 2 deste artigo. Trata-se de um sistema que avalia a distancia de um rob a um obstculo, e gera como sada uma variao de velocidade para este rob. O algoritmo foi escrito em Arduino Programing Language, uma de linguagem de programao utilizada nas placas baseadas na plataforma Arduino. Vale destacar que a linguagem permite a importao de bibliotecas escritas em C++. Dessa forma, foi possvel a utilizao da nossa biblioteca com a referida linguagem.

  • 4 SBA Controle & Automao Vol. 00 no. 00 / Jan., Fev., Mar, Abril de 0000

    Figura 6. Defuzzificao por mdia entre os mximos.

    Tabela 1 Exemplo de Cdigo

    sitemaFuzzy.pde 1. #include 2. 3. //Definindo o nmero de entradas// 4. Fuzzy fuzzy(0); 5. 6. //Nomes e pontos para a entrada// 7. FuzzySet perto(0, 0, 2, 5); 8. FuzzySet medio(2, 5, 5, 8); 9. FuzzySet longe(5, 8, 10, 10); 10. 11. //Nomes e pontos para a sada// 12. FuzzySet lento(0, 0, 5, 10); 13. FuzzySet normal(5, 10, 10, 15); 14. FuzzySet rapido(10, 15, 20, 20); 15. //Criando as regras do sistema// 16. //Se Distancia=&perto Ento Velocidade=&lento// 17. FuzzyRule rule1(&perto,&lento); 18. FuzzyRule rule2(&medio,&normal); 19. FuzzyRule rule3(&longe,&longe); 20. 21. //Entrada 0 Distancia// 22. fuzzy.addFuzzySet(0,0, &perto); 23. fuzzy.addFuzzySet(0,1, &medio); 24. fuzzy.addFuzzySet(0,2, &longe); 25. 26. //Saida Velocidade// 27. fuzzy.addFuzzySet(1,0, &lento); 28. fuzzy.addFuzzySet(1,1, &normal); 29. fuzzy.addFuzzySet(1,2, &rapido); 30. 31. //Adicionando as regras que criamos// 32. fuzzy.addRule(rule1); 33. fuzzy.addRule(rule2); 34. fuzzy.addRule(rule3); 35. 36. //setando a(s) entrada(s)// 37. fuzzy.setInputs(0,dist); 38.

    39. //Fuzzificando a entrada// 40. fuzzy.fuzzify(0); 41. 42. //Avaliando as pertinncias// 43. fuzzy.evaluate(); 44. 45. //Defuzzificao// 46. float velAjuste= fuzzy.desfuzzify();

    Na linha 4, definimos quantas variveis de entrada havero no sistema, o ndice da varivel de entrada comea em zero, ou seja, ndice 0 a primeira entrada e ndice 1 a segunda entrada. No exemplo inserimos 0 como parametro, portanto, temos uma entrada (velocidade), e consequentemente teremos a sada como n+1, neste caso a sada que ter ndice 1. Atualmente, nossa biblioteca aceita no mximo duas variveis de entrada e mais uma de sada, ao todo, trs variveis. J da linha 7 at a 14, inserimos os nomes e pontos dos conjuntos da entrada e da sada, respectivamente. Criamos as regras nas linhas 17, 18 e 19, totalizando trs regras. Da linha 22 a 29, associamos os conjuntos criados as variveis, sempre observando o ndice das mesmas, 0 para a entrada e 1 para a sada. Nas linhas 32, 33 e 34 adicionamos as trs regras que criamos anteriormente. Em seguida chamamos a fuzzificao e defuzzificao, obtendo o valor final determinado pelo sistema, que indicar a variao de velocidade.

    4 AVALIAO EM AMBIENTE REAL Para testar a aplicabilidade da biblioteca desenvolvida, em ambiente real, utilizamos um rob mvel controlado por um chip ATmega 328P por meio de uma placa Arduino Duemilanove [Arduino 11]. Nos nossos testes, o rob deve cumprir um pequeno trajeto com curvas e retas, sem que o mesmo bata ou fique preso pelo caminho. Para conseguir seu objetivo e chegar ao fim do precursso sem erros o rob ser guiado por um controlador fuzzy que ir determinar os movimentos corretos para fazer as curvas e para qual lado guia-las. A compilao do cdigo de teste, somado ao da biblioteca, geram 13144 bytes, um tamanho perfeitamente aceitvel para a plataforma utilizada (ATmega 328P) que suporta 30720 bytes.

    4.1 O Rob O nosso rob est equipado com dois sensores de infravermelhor e um sonar, por meio dos quais dever ser capaz de perceber o ambiente ao seu redor. Alm disso, possui trs servo-motores, dos quais dois se responsabilizam por cada roda, e o terceiro se encarrega pela movimentao do sonar, como podemos ver na Figura 7. Nestes testes no levamos em considerao as leituras do sonar.

    4.2 Descrio do Controlador Fuzzy O sistema fuzzy que modelamos por meio de nossa biblioteca, conta com duas variaveis de entrada, sendo que uma armazena a leitura de distncia do infravermelho esquerdo, e a outra armazena a leitura de distncia do infraverelho direito. Alm da variavelde sada que indica quantos graus virar a esquerda ou a direita. A Figura 8, ilustra as funes de pertinncia para os conjuntos das variveis do sistema.

  • SBA Controle & Automao Vol. 00 no. 00 / Jan., Fev., Mar, Abril de 0000 5

    Figura 7. Rob utilizado nos testes da biblioteca.

    Figura 8. Funes de pertinncia das variveis usadas Por meio da biblioteca, pudemos implementar rapidamente o sistema fuzzy e calibrar os valores e regras at obter um arranjo ideal. Neste sentido, a biblioteca acelerou bastante a realizao dos testes, por agilizar as modificaes que eram feitas no controlador fuzzy. A Tabela 2, mostra a base de regras final usada no teste.

    Tabela 2. Base de regras final usada nos testes.

    Esq Dir

    P M L

    P C PD D

    M PE C D

    L E E C

    4.3 Desempenho nos Testes Nos testes iniciais o rob invariavelmente colidia com as paredes do cenrio, ento, modificamos a varivel de sada, adicionando a ela mais dois conjuntos (PE PoucoEsquerda e PD PoucoDireita) e diminuindo o espao de busca das entradas (para tornar as leituras dos sensores infravermelho mais consistentes). Assim observamos uma melhora significativa no desempenho do controlador ao guiar o rob, pois a partir de ento ele foi capaz de cumprir seu trajetopelo

    cenrio sem colidir com as paredes. A Figura 9 apresenta algumas imagens que demonstram os testes feitos em ambiente real.

    Nos itens a), b) e f), o rob anda em linha reta, pois a distncia observada pelos sensores de infravermelho igual ou muito prxima, ou seja, a diferena entres as distancias laterais entre o rob e a parede so parecidas de tal modo, que ele se mantm retilineo. J nos itens c) e d), existe uma diferena consideravel entre as distncias laterais, mais precisamente, o lado esquerdo possui uma distncia maior que o direito, portanto, o conjunto de regras fuzzy acionadas, faz com que o rob faa uma curva a esquerda. Em e), as diferenas das distncias laterais vo diminuindo e se igualando, at que o rob volte a andar em reta.

    Figura 9. Rob navegando em ambiente fechado. Na Figura 10, ilustramos como o rob entende que deve fazer uma curva a partir das diferenas de distncias laterais e como estes parmetros acionam as regras fuzzy que implicam na ao do rob.

    Figura 10. Orientao do rob de acordo com suas leituras. Podemos observar, na Figura 10, que os valores das entradas Esquerda e Direita ativam os conjuntos que, combinados, vo acionar as regras correspondentes para andar reto, como em a) e para fazer uma curva a esquerda, como em b). Podemos atestar estas concluses, observando as funes de pertinncia na Figura 8, e a base de regras na Tabela 2.

    bom reforar, que a dinmica envolvida em modificar os parmetros do sistema fuzzy e testar as suas implicaes nos

  • 6 SBA Controle & Automao Vol. 00 no. 00 / Jan., Fev., Mar, Abril de 0000

    resultados, foram realizadas muito facilmente devido a praticidade da biblioteca.

    5 TRABALHOS FUTUROS sabido que sistemas fuzzy utilizados conjuntamente com outras tcnicas de inteligncia artificial, podem trazer resultados mais eficientes [Tahboub e Al-Din 2009]. Assim, vislumbramos uma possvel continuidade deste trabalho, analisando o desempenho desta biblioteca juntamente com outras tcnicas de inteligncia artificial, no sentido de aprimorar os resultados do controlador.

    Alm disso, pretendemos implementar na biblioteca outros mtodos de defuzzificao, como o mtodo do centride (centro de rea) [Passino e Yurkovich 1998], bem como permitir outras formas de representao de funes de pertinncia, como a gaussiana [Barbosa 2005]. Outra melhoria a ser implementada deve aumentar a quantidade de variaveis de entrada suportadas pela biblioteca.

    Uma das dificuldades que tambm percebemos nos testes, foi a inconsistncia dos sensores de infravermelho. Embora tenhamos amenizado as disparidades a partir de ajustes no espao de busca das variaveis de entrada, temos como sugesto para futuros trabalhos a adoo de sonares tanto para leituras laterais como para leituras frontais, esta ltima, para controle da variao de velocidade global do rob.

    6 CONCLUSES De um modo geral, as leituras adquiridas pelo rob mvel, so presumivelmente, suficientes para determinar as aes de controle apropriadas ao rob no cumprimento de seu objetivo, navegar com segurana em ambientes desconhecidos. Para este fim, usamos para o controlador, unicamente sistemas fuzzy, pois esse, torna possvel modelar o conhecimento incerto e impreciso presente nestes ambientes.

    Um dos problemas associados aos sistemas fuzzy, quando usados como nica forma de controle, que as suas regras e parametros no podem ser ajustados em tempo real, e seu ajuste off-line acaba sendo um processo trabalhoso [Tahboub e Al-Din 2009]. Neste contexto, a biblioteca que ns apresentamos , supera esta desvantagem, deixando a modelagem, bem como, os futuros ajustes do sistema fuzzy, como uma tarefa menos trabalhosa e demorada, permitindo que o pesquisador utilize esta ferramenta em aplicaes diversas.

    Ao analisar em ambiente real esta biblioteca, pudemos atestar sua viabilidade no que foi proposto por este artigo, observando a facilidade de ajuste do controlador, quando estes ajustes se mostraram necessrios, assim como pudemos perceber a liberdade que tivemos em criar um sistema fuzzy para qualquer propsito. Outro ponto que destacamos na utilidade da biblioteca, se concentra na ausncia de uma soluo parecida para o desenvolvimento de aplicaes embarcadas, onde o poder de procesamento limitado.

    7 REFERNCIA BIBLIOGRFICA Moratori, P. B., Cruz, A. J. O., Ferreira, E. B., Pedro, M. V.,

    Manhes, L.M.B., Andrade, L.C.V., Lima, C., Moratori, R. B. (2006) Anlise de Estabilidade e Robustez de um Sistema de Controle Fuzzy Otimizado Desenvolvido para Guiar um Rob Simulado. XXV Congresso da Sociedade Brasileira de Computao (Brasil). P.1704-1714.

    Wolf, D F., Osrio, F. S., Simes, E., Trindade J. O. (2009) Intelligent Robotics: From Simulation to Real World Applications, SBC - JAI 2009 - Congresso da SBC Sociedade Brasileira de Computao (Brasil). SBC Jornada de Atualizao em Informtica. p. 279-330.

    Ottoni, G. L., Lages, W. F. (2000). Planejamento de Trajetrias para Robs Mveis em Ambientes Desconhecidos, Projeto de Graduao em Engenharia de Computao, Universidade Federal do Rio Grande.

    Jcobo, J.E.A. (2001). Desenvolvimento de um Rob Autnomo Mvel Verstil utilizando Arquitetura Subsumption, Faculdade de Engenharia Mecnica, Universidade Estadual de Campinas.

    Silva, A.L.V. (2008). Arquitetura Compacta Para Projeto de Robs Mveis Visando Aplicaes Multipropsitos, Mestrado em Engenharia Eltrica, Universidade de So Paulo.

    Fracasso, P. T., Costa, A. H. R. (2005). Navegao Reativa de Robs Mveis Autnomos Utilizando Lgica Nebulosa com Regras Ponderadas, Laboratrio de Tcnicas Inteligentes LTI. Escola Politcnica da Universidade de So Paulo.

    Tahboub, K. K., Al-Din, M. S. N. (2009). A Neuro-Fuzzy Reasoning System for Mobile Robot Navigation, Jordan Journal of Mechanical and Industrial Engineering, Volume 3, Nmero 1, Maro. 2009. ISSN 1995-6665. p 77 88.

    Barbosa, D. A., (2005). Ferramenta de Desenvolvimento e de Aplicao de Lgica Fuzzy, Universidade Federal de Itajub, dissertao de Mestrado em Engenharia Eltrica. Instituto de Engenharia Eltrica.

    Passino. K. M., Yurkovich. S., (1998) Fuzzy Control. Ed. Addison-Wesley Longman, Inc. ISBN 0-201-18074-X

    Bittencourt, G. (2006). Inteligncia Artificial: Ferramentas e Teoria. 3. Ed. rev. Editora da UFSC. P.290. ISBN: 85-328-0138-2

    Zadeh, L. (1965). Fuzzy Sets. Information and Control. v.8, n.3, 1965. p.338-353.

    Engelbrecht, Andries P. Computational Intelligence: An Introduction. Jonh Wiley & Sons, Ltd. Second Edition, 2007

    Leal, L. B., (2011). Uma Abordagem para Estimao da Qualidade de Rotas em Redes de Sensores Sem Fio Multi-Sink Baseada em Sistemas Fuzzy Genticos. Dissertao de Mestrado em Informtica Aplicada. Universidade de Fortaleza

    Stroustrup, B. (2000). A Linguagem de Programao C++. Ed. Addison-Wesley. ISBN 0201700735

    Arduino (2011). Site oficial: www.arduino.cc, acessado em 17/08/2011.