Você está na página 1de 15

Modelagem de um controlador fuzzy para pêndulo

invertido utilizando a Fuzzy Logic Toolbox™

José Vergara Dietrich


Yuri Garcia Silva

I – Introdução
teoria de conjuntos fuzzy, apresentada em (Zadeh, L.A, 1965), permitiu uma nova
abordagem de pesquisa na área de controle, o que possibilitou o projeto de controladores
independentemente da especificação de um modelo matemático para a planta. A lei de
controle de tais dispositivos é baseada em regras condicionas que relacionam as entradas
com uma determinada ação de saída. Quanto maior o número de regras, melhor será a
resposta de saída e obviamente um controle de melhor qualidade. Estas regras são
geradas de modo a manter a proximidade com a linguagem natural, facilitando uma
possível alteração das leis de controle.
Os controladores fuzzy são largamente utilizados e apresentam uma imensidão de
aplicações possíveis, tais como lava-louças, câmeras fotográficas, elevadores, etc. Para o
entendimento das técnicas apresentadas nesse artigo, recomenda-se a leitura de
(Ibrahim, 2003).
A ferramenta Fuzzy Logic Toolbox™ para MATLAB® fornece meios
computacionais de desenvolvimento de controladores fuzzy através de uma interface
gráfica. Tais controladores podem ter seu desempenho verificado através da ferramenta
Simulink®, que fornece um ambiente de simulação para sistemas dinâmicos. Utilizando as
ferramentas citadas anteriormente como suporte, este artigo mostra como é feito um
controlador fuzzy para o problema clássico do pêndulo invertido sobre um carro.
Adicionalmente é realizada uma comparação entre o desempenho do controlador
fuzzy desenvolvido e um controlador PID, cujo processo de construção não é descrito
neste artigo. Em resumo, a intenção deste artigo é especificar, através de um guia prático,
como é feito o desenvolvimento de um controlador fuzzy utilizando as ferramentas
presentes no MATLAB®.
II – Fuzzy Logic Toolbox™
No Fuzzy Logic Toolbox™ há cinco interfaces gráficas para auxiliar no projeto do
controlador, das quais três são editores de dados e duas são observadores de resultados.
A ferramenta suporta a criação de controlador do tipo Mamdani e Sugeno.
Para iniciar a modelagem de um controlador fuzzy, deve-se digitar fuzzy na janela
de comando do MATLAB®. Esta ação resulta na abertura do editor do sistema de
inferência fuzzy
(FIS Editor – Fuzzy Inference System Editor).
Figura 1- Fuzzy Inference System Editor

Nesta janela verifica-se a partir de uma ilustração o conjunto de entradas e saídas


que se relacionam com o controlador. É nesta interface onde se deve escolher os
parâmetros a serem utilizados pelas funções de pertinência e de fuzzificação, além da
determinação do número de entradas e saídas. Para escolher o tipo do controlador, basta
acessar no FIS Editor a seqüência File → New FIS → {Mamdani ou Sugeno}. A inserção
de novas entradas ou saídas segue a seqüência Edit→ Add Variable →{Input ou
Output}. Caso se faça necessário a remoção de uma entrada ou saída a seqüência se
torna selecionar a variável a ser removida → Edit → Remove Selected Variable.
Na configuração das funções de pertinência utiliza-se a ordem de comando Edit
→Membership Function, o que acarreta na abertura da janela Membership Function
Editor, a qual é exibida na figura 2
Figura 2 – Membership Function Editor

Nesta tela escolhe-se a quantidade e o tipo de função de pertinência que se quer


aplicar a cada entrada e saída do controlador. Também é determinado o domínio da
grandeza para qual se quer estipular o valor de pertinência. Para alterar a configuração da
função de pertinência deve-se primeiro remover as funções de pertinências inicialmente
carregadas pelo Membership Function Editor, o que é feito por selecionar a entrada →
Edit → Remove All MFs.
Posteriormente adicionam-se as novas funções de pertinências por Edit → Add
MFs. Isto abre uma nova janela que permite selecionar o tipo de função e o número de
funções.
Para adequar as funções à especificação desejada, deve-se digitar no campo
Params de cada função o valor do intervalo para o qual a função de pertinência assume
valores diferentes de zero.
Tal procedimento também pode ser realizado arrastado com o mouse os pontos de
cada função no gráfico. O domínio da grandeza é alterado através do campo Range do
Membership Funtion Editor.
A configuração das regras é feita acessando a janela Rule Editor, que pode ser
acessada a partir do FIS Editor por Edit →Rules. A figura 3 ilustra o Rule Editor.
Uma regra é determinada selecionando diferentes entradas e associando-as a um
conector (AND ou OR) e impondo uma conseqüência de saída. Cada regra possui um
peso, representando o quanto se “acredita” na regra, que pode ser atribuído pelo campo
weight.
Figura 3 – Rule Editor

As interfaces gráficas descritas até agora estão ligadas são do tipo editores de
dados.
Para complementar o processo de desenvolvimento, o Fuzzy Logical Toolbox™
disponibiliza ainda as interfaces Rule Viewer e Surface Viewer.
Figura 4 – Rule Viewer

Através do Rule Viewer é possível selecionar valores para as variáveis de entrada


e verificar como o controlador fuzzy responde a cada regra previamente estipulada, além
do valor numérico obtido na defuzzificação. Os valores de entrada devem ser inseridos no
campo Input. Para abrir o Rule Viewer deve-se ir por View → Rule Viewer a partir do FIS
Editor. A figura 4 demonstra claramente esta situação para um controlador de duas
entradas e uma saída. É possível ainda visualizar uma superfície que relaciona duas
variáveis de entrada com uma variável de saída. Isto pode ser feito pela seqüência View
→Surface a partir do FIS Editor.

Para salvar um projeto deve-se clicar em File → Export → To Disk. O


carregamento de um controlador fuzzy no Fuzzy Logical Toolbox™ é feito seguinte a
ordem File → Import → From Disk.

III – Modelo do pêndulo invertido


O modelo do pendulo invertido (figura 5) utilizado neste artigo consiste basicamente num
carro que possui uma haste articulada na parte superior. O objetivo é manter a haste na
posição vertical através do acionamento do motor que traciona as rodas.
Figura 5 – Modelo do pêndulo invertido
O controle em malha fechada (figura 6) consiste em realimentar informações de
saída do pendulo na entrada do controlador para estabilizar o sistema.
Para testar o desempenho do controlador, foi utilizada uma perturbação do tipo
impulso aplicada como uma força na horizontal no carro.

Figura 6 – Controle em malha fechada do pêndulo invertido

IV – Modelagem do controlador fuzzy


Para dar inicio ao projeto do controlador, faz-se necessário definir as variáveis de entrada
e saída, assim como o domínio de cada uma delas, como pode ser visto na tabela abaixo:

TABELA 1 - Entradas e saídas do controlador fuzzy

Os domínios das variáveis foram definidos de forma empírica utilizando


conhecimentos do fenômeno físico. Por exemplo, os limites máximos para os valores de
theta (ângulo) foram definidos como ±45º que equivale a 0.8 rad. Para a velocidade foram
feitas algumas simulações e chegamos a valores de ±2 rad/s como limites aceitáveis. A
saída, tensão de controle, foi limitada em ± 20V, supondo um motor acionado sob esta
tensão.
As funções de pertinência foram definidas da maneira como é mostrado nas figuras
7,8 e9.

Figura 7 – Funções de pertinência da entrada posição


Figura 8 – Funções de pertinência da entrada velocidade
Figura 9 – Funções de pertinência da saída motor
A tabela de inferêcia fuzzy (TABELA 2) utilizada para o controlador foi montada com base
na tabela de inferência mostrada por Luger (2004, p.10).

TABELA 2 - Tabela de inferência fuzzy mostrada

A tabela de inferência fuzzy representa a ação do controlador para as situações


possíveis nas quais o modelo pode se encontrar. Os dados de entrada, posição e
velocidade, são interpretados como medidas nebulosas. Os valores de entrada são
divididos em três regiões: Negativo (N), Zero (Z) e Positivo (P), onde a primeira coluna da
tabela representa os valores para posição e a primeira linha os valores de velocidade.
A solução da tabela se dá interpolando os valores de entrada posição e velocidade.
O intervalo de saída foi dividido em 5 regiões: Negativo Rápido (NEG_R), Negativo Lento
(NEG_L), Zero, Positivo Lento (POS_L) e Positivo Rápido (POS_R).
Variável Range
Posição θ [rad] [-0.8 0.8]
Entradas
Velocidade Angular ω [rad/s] [-2 2]
Saída Tensão aplicada ao Motor U [V] [-20 20]
Esta configuração foi testada no modelo do pêndulo invertido e o gráfico da ângulo
é mostrado na figura 7.
Figura 7 - Gráfico mostrando o resultado da implementação da TABELA 2. Perturbação e
a posição do pêndulo

Como a variação, tanto da posição θ quanto do sinal de controle, apresentaram


valores altos e tempo de acomodação elevado, foram feitas alterações nos parâmetros do
controlador
fuzzy.
Na figura 7 pode ser visto que o sobre sinal do erro de theta é de 18% e o tempo
de acomodação em torno de 5 segundos, para uma perturbação de 0,1 radianos.
Para melhorar a resposta do sistema foram feitas mudanças na tabela de
inferência, obtendo uma segunda solução, mostrada na tabela 3.

TABELA 3 - Tabela de inferência fuzzy alterada nas posições ZN,


PN, NP e PZ.
Estas alterações foram feitas seguindo o raciocínio de que se a posição é negativa,
ou seja, o pêndulo está à esquerda e a velocidade angular é positiva, o que representa o
deslocamento do pêndulo para a direita tendendo ao equilíbrio, o sinal de controle do
motor deve ser baixo em direção do deslocamento. Isto é feito para evitar que o pêndulo
ultrapassasse o ponto zero, gerando sobre sinal. Seguindo a mesma lógica, porém de
modo invertido, fez-se a alteração para a situação em que a posição é positiva e a
aceleração negativa.
Foi alterado o parâmetro aggregation de MAX para SUM que é a forma como se dá
a combinação das ações de cada regra do sistema de inferência Mamdani, preparando os
dados para a defuzzificação. O resultado destas mudanças pode ser observado na figura
8.

Figura 8 - Gráfico mostrando o resultado da implementação da Tabela 3. Sinal de


controle, perturbação e a posição do pêndulo.

Na figura 8 pode ser visto que o sobre sinal do erro de theta é de 2,5% e o tempo
de acomodação em torno de 0,3 segundos para uma perturbação de 0,1 radianos.
Desta forma, analisando os gráficos, foi feita mais uma mudança na tabela de
inferência, a qual foi a que apresentou melhores respostas. Ver tabela 4.
TABELA 4 - Tabela de inferência fuzzy que apresentou melhor desempenho, com
mudanças nas posições ZN e ZP.

Esta mudança diminui o esforço de controle, mantendo os mesmos resultados em


relação ao sobre sinal e ao tempo de acomodação. Nesta solução, quando o ângulo
estiver na região chamada de ZERO, se houver aceleração angular, tanto positiva quanto
negativa, o controlador responde com a curva de inferência rápida, sendo NEG_R para
aceleração negativa e POS_R para positiva.
O gráfico gerado pela TABELA 4 é mostrado na figura 9.

Figura 9 - Sinal do ângulo theta


Na figura 9 pode ser visto que o sobre sinal do erro de theta é de 2,5% e o tempo
de acomodação em torno de 0,3 segundos, para uma perturbação de 0,1 radianos.
Na tentativa de melhorar o sobre sinal, foi alterado o peso das regras 4 e 6. As
regras do controlador podem ser observadas na figura 10 e o resultado final da
implementação do controlador fuzzy na figura 11.

Figura 12 – Desempenho do controlador PID mostrando a perturbação e o ângulo do


pêndulo.
Figura 13 – Resultado final do controlador fuzzy mostrando a perturbação e o ângulo do
pêndulo

A comparação entre os controladores pode ser feita em função da resposta


transitória, como pode ser visto na Tabela 5.

TABELA 5 – Comparação dos resultados do controlador PID e fuzzy.

VI – Conclusão

A utilização da ferramenta de programação Matlab® em conjunto com o Simulink™


possibilita ao usuário projetar de forma interativa e relativamente simples um controlador
fuzzy. Uma das grandes vantagens de utilizar o ambiente é a facilidade de utilizar a
interface gráfica para parametrizar o controlador.
Além da facilidade de interação com a linguagem de programação, o ambiente
Simulink permite que, através da descrição de modelos matemáticos, o fenômeno físico
possa ser simulado e o controlador validado. Através dessas experimentações o
controlador pode ser mais bem ajustado possibilitando um refinamento de parâmetros que
eventualmente sejam utilizados num processo real.
A implementação de controladores fuzzy não requer a descrição matemática do modelo
do fenômeno físico, já que o controlador, chamado de heurístico, trabalha com
informações do modelo do operador do sistema e não do sistema em si. Desta forma,
apenas com regras do tipo Se-Então pode ser configurado um controlador fuzzy. A
desvantagem é que ele não apresenta as garantias matemáticas que um controlador
clássico PID oferece.

REFERÊNCIAS BIBLIOGRÁFICAS

ANDERSON, N. A. Instrumentation for process


measurement and control. 3 ed., Florida: CRC,
1998.

D’AZZO J. J.; HOUPIS, C. H. Linear control


system analysis and design. 2 ed., New York:
McGraw-Hill, 1981.

DORF, R.C.; BISHOP, R. H. Sistemas de


controle modernos. Rio de Janeiro: LTC, 2001.

FRANKLIN, G. F.; POWELL, J. D.; WORKMAN, M.


Digital control of dynamic systems. 3 ed., Menlo
Park: Addison Wesley Longman, Inc., 1998.

IBRAHIM, A. M. Fuzzy Logic for Embedded


Systems Applications. USA: Elsevier, 2003.

LUGER, G.F. Inteligência artificial: Estruturas e


estratégias para a solução de problemas comple-
xos. 4 ed., Porto Alegre: Bookmann, 2004.

MUTAMBARA, A. G. O, Design and analysis of


control systems. Florida: CRC, 1999.

NISE, N. S. Engenharia de sistemas de controle.


3 ed., Rio de Janeiro: LTC, 2002.

OGATA, K. Engenharia de controle moderno.


Rio de Janeiro: LTC, 2000.

SHAW, I.S.; SIMÕES, M.G. Controle e modela-


gem fuzzy. São Paulo: Edgard Blücher LTDA,
2001.

TEWARI, A. Modern control design with Matlab


and Simulink. England: John Wiley & Sons Ltd.

ZADEH, L. A. "Fuzzy Sets". Information and


Control, V. 8: 338-353.1965.

Você também pode gostar