CONTROLE FUZZY PARA BRAÇO ROBÓTICO UTILIZANDO A

Propaganda
CONTROLE FUZZY PARA BRAÇO ROBÓTICO UTILIZANDO A ABORDAGEM
ADAPTATIVA NEURO-FUZZY (ANFIS) DO MATLAB
João Rodolfo Côrtes Pires (PG)
Cairo Lúcio Nascimento Júnior (PQ)
Divisão de Engenharia Mecânica-Aeronáutica
Instituto Tecnológico de Aeronáutica
12228-900-São José dos Campos-SP
e-mail: [email protected]
Divisão de Engenharia Eletrônica
Instituto Tecnológico de Aeronáutica
12228-900-São José dos Campos-SP
e-mail: [email protected]
RESUMO
Em muitos casos a lógica fuzzy tipo Mamdani possibilita o rápido desenvolvimento de um controlador
para um sistema físico mesmo se o projetista não dispor de um rigoroso modelo matemático do
sistema a ser controlado. Variáveis lingüísticas são então usadas para modelar o conhecimento
intuitivo dos operadores do sistema e assim desenvolver regras fuzzy tipo Mamdani que rapidamente
produzirão um controle grosseiro. Entretanto, se for desejado um controlador de alto desempenho, os
controladores fuzzy tipo Mamdani são difíceis de serem ajustados. Uma alternativa é o
desenvolvimento de controladores fuzzy tipo Sugeno. Porém controladores desse tipo são de difícil
ajuste manual visto que a topologia usada por este estilo de lógica fuzzy favorece o modelamento
matemático em prejuízo da utilização do conhecimento intuitivo. Este artigo propõe a combinação do
uso destes dois tipos de controladores fuzzy usando a estrutura de controle conhecida por feedbackerror-learning. Nesta estrutura um controlador fuzzy tipo Mamdani é rapidamente ajustado para
implementar um controlador feedback estável mas de baixo desempenho. Então os parâmetros de um
controlador fuzzy tipo Sugeno, funcionando como controlador feedforward, são ajustados por uma
rotina de treinamento para sistemas neuro-fuzzy do software MATLAB (ANFIS – Adaptive NeuroFuzzy Inference System). As simulações computacionais desta abordagem mostraram que para um
braço robótico foi possível o rápido desenvolvimento de um sistema de controle com desempenho
superior ao obtido quando apenas um dos dois tipos de controladores foi usado.
ABSTRACT
In many cases, by using the Mamdani-style fuzzy logic, a designer can rapidly develop a controller for
a physical system even if a rigorous mathematical model of the system is not available. Linguistic
variables and Mamdani-style fuzzy logic are then used to model the intuitive knowledge about the
system, which was acquired by the operators through their everyday experience with the real-world
system. In this way a rough controller can be rapidly obtained. However, if a high-performance
controller is desired, experience has shown that it will be difficult to fine tune the Mamdani-style fuzzy
controller manually or by using a training algoritthm. A possible alternative is to develop a Sugenostyle fuzzy controller which are hard to be adjusted manually since their topology favours
mathematical modelling instead of the expression of intuitive knowledge. Sugeno-style fuzzy controller
can be adjusted automatically by a training algorithm but it may be difficult to initialize the
parameters of such a controller to obtain a stable learning process. This article proposes to combine
the Mandani and Sugeno fuzzy controllers using the control structure known as Feedback-ErrorLearning. Initially, only the Mandani-style fuzzy controller is used as the feedback controller and is
rapidly tuned which to produce a rough stable controller. Then a Sugeno-style controller is used as a
feedforward controller and is tuned by a neuro-fuzzy training algorithm available in the software
package MATLAB (ANFIS - Adaptive Neuro-Fuzzy Inference System). Computer simulations of a
highly non-linear robotic arm demonstrate that by using the proposed approach, when the two types of
fuzzy controllers are used simultaneously, one could more rapidly develop a better controller than
using either one of these two types of fuzzy controllers.
1. INTRODUÇAO
Um sistema de controle tem como função fornecer respostas a uma determinada entrada de
acordo com sua função de transferência. Para muitos sistemas esta função apresenta grande
complexidade o que dificulta o controle através dos procedimentos convencionais. Nestes caso os
controladores fuzzy podem ser aplicados com bons resultados. Os controladores fuzzy permitem que
expressões linguísticas sejam usadas, e dessa maneira de maneira simples o conhecimento intuitivo
dos operadores humanos pode ser codificado e usado, mesmo se os sistemas forem complexos e nãolineares.
2. LÓGICA FUZZY
A lógica fuzzy (também chamada de lógica nebulosa) permite o tratamento de expressões que
envolvam grandezas de forma não exata. Esta forma de mensurar as grandezas é muito parecida com o
comportamento dos seres humanos, por isso sendo um bom modelo para emular o nosso
comportamento. A lógica nebulosa baseia-se no estudo de operações sobre conjuntos nebulosos (fuzzy
sets) e pode ser entendida como uma generalização da lógica clássica (crisp sets) [1], [2].
A lógica clássica pode ser representada pela função indicadora I(.), que assume apenas dois
valores, {0,1}, conforme respectivamente o elemento não pertença ou pertença ao conjunto em
questão. Desta forma, dado um conjunto A contido num universo X, um elemento x deste universo
pode assumir apenas dois estado em relação ao conjunto A, que é representado pela função IA(x):
IA(x) = { 1 se x ∈ A, ou 0 se x ∉ A}
Portanto podemos definir um conjunto clássico como:
A={x ∈ X | IA(x) = 1}
No caso da lógica nebulosa 3 casos são possíveis pois o mesmo elemento x ∈ X: 1) pode
pertencer integralmente ao conjunto A, 2) pode não pertencer a A, ou 3) pode pertencer parcialmente
ao conjunto A. O fato de um elemento pertencer parcialmente a um conjunto faz com que tenhamos de
trocar a função indicadora I(.) = {0,1} por uma função pertinência µ (.) = [0,1], ou seja, o grau de
pertinência de um elemento a um conjunto é um número real no intervalo fechado [0,1] ao invés de
apenas os dois valores extremos do intervalo como no caso da lógica clássica.
Deste modo passamos a definir um conjunto fuzzy como:
A={x ∈ X | µ A(x) = ξ , 0 ≤ ξ ≤ 1}.
Assim como no caso de conjuntos clássicos podem ser definidas operações como união e intersecção
de conjuntos nebulosos. Entretanto para conjuntos nebulosos temos:
A ∪ Ac ≠ X
A ∩ Ac ≠ φ
onde Ac indica o complemento do conjunto A, X indica o conjunto universo e φ indica o conjunto
vazio.
3. CONTROLADOR NEBULOSO
Um controlador nebuloso é basicamente um processo de inferência em conjunto nebulosos.
Podemos dividi-lo em três partes principais: a fuzzificação; a máquina de inferência nebulosa; e a
defuzzificação;
O processo de fuzzificação consiste em obter a partir de uma variável numérica x ∈ X, o seu
grau de pertinência aos conjuntos Ai contidos no universo X (figura 1).
Figura 1 - Graus de pertinência de x aos conjuntos Ai.
O processo de inferência nebulosa realiza as operações com conjuntos nebulosos. Neste
artigo foram usadas as seguintes definições para os operadores A ∪ B, A ∩ B, ¬ A:
A ∪ B = max( µ A, µ B)
A ∩ B = min( µ A, µ B)
¬A = 1 – µ A
Para a operação implica ( ⇒ ) adotou-se a definição onde o valor da função pertinência obtida do
conjunto resultante do primeiro termo é transferida para o conjunto do segundo termo.
O processo de defuzzificação consiste em obter a partir do valor da função pertinência
resultante das diversas regras de inferência um valor numérico de saída. Neste ponto é que temos a
diferença entre o controlador do tipo Mamdani e do tipo Sugeno [3], [4], [5].
Nos controladores do tipo Mamdani ao transferirmos o valor da função de pertinência para o
conjunto de saída obtemos como resultado uma área para os valores inferiores ao da função
pertinência. A união dessas áreas para todas as regras nos dá o conjunto fuzzy de saída, que para
passar para o valor numérico usa-se por exemplo a abcissa do centro de gravidade da área obtida.
Para o controlador do tipo Sugeno temos como saída uma função polinômio de grau “n” em
função das variáveis de entrada. Usualmente adota-se n = 0 ou n = 1, visto que a melhora dos
resultados não justifica o aumento da complexidade obtida. O fato da saída do tipo Sugeno ser uma
função linear nos parâmetros que devem ser ajustados permite que o método do backpropagation ou
um método híbrido de backpropagation e mínimos quadrados seja aplicado para ajustar o controlador
tipo Sugeno [5].
Um controlador fuzzy típico normalmente é projetado para se comportar de forma dedutiva,
ou seja, inferir conclusões baseado no conhecimento que ele contenha. Outra forma de aplicação
destes controladores seria projetá-lo para possuir comportamento indutivo, onde é possível a
aprendizagem e generalização através de exemplos particulares provenientes da observação do seu
comportamento numa situação dinâmica.
4. EXPERIMENTO
A abordagem que utilizamos foi de usar um controlador do tipo Mamdani atuando de forma
dedutiva e um controlador do tipo Sugeno de forma indutiva. Para isso foi simulado um sistema de
controle do braço robótico com um controlador Mamdani atuando como controlador tipo feedback e
um controlador Sugeno atuando como controlador tipo feedforward, de acordo com a estrutura de
controle neural conhecida como Feedback-Error-Learning [6]. Tal estrutura é mostrada na figura 2.
Figura 2 - Estrutura de controle Feedback-Error-Learning.
A idéia central é fazer com que, através da abordagem adaptativa neuro-fuzzy, o controlador
Sugeno (que é iniciado de forma tal a ter atuação nula) aprenda a cada sessão de treinamento a
reproduzir o torque total aplicado no braço robótico sem o torque bias. Desta maneira, o controlador
Sugeno paulatinamente assumirá o controle do braço robótico e a saída do controlador Mamdani irá
convergir para valores muito pequenos [6].
As figuras 3 e 4 ilustram o braço robótico e o diagrama de simulação no software
MATLAB/SIMULINK. Conforme mostrado no diagrama de simulação (figura 4) a entrada do modelo
Sugeno (cujos parâmetros foram armazenados no arquivo bracosug.fis) é a posição de referência e a
sua derivada no instante t e a saída é o torque total aplicado ao braço robótico antes da aplicação da
adição do valor bias (figuras 2 e 4). O valor bias foi ajustado de forma a ser o valor do torque
necessário para manter o braço robótico parado na posição horizontal.
Figura 3 - Braço robótico.
Figura 4 - Diagrama de simulação em MATLAB/SIMULINK.
O sinal de referência da posição que o braço deve estar em função do tempo, é um uma onda
senoidal de amplitude +90º a -90º com freqüência de 2 rad/s . este sinal pode ser visto na figura 5.
bracoanfis
100
50
0
-50
-100
32
34
36
Tim e (Seconds)
38
40
Figura 5 - Trajetória de referência para o braço robótico.
O treinamento do controlador Sugeno foi realizado ao final de cada sessão de simulação, ou
seja, durante cada sessão de simulação os parâmetros do controlador Sugeno foram mantidos
constantes e os dados de treinamento foram colhidos. Ao final de cada sessão de simulação, o
controlador Sugeno foi então treinado com os dados colhidos na sessão de treinamento imediatamente
anterior.
Na primeira sessão de simulação da estrutura Feedback-Error-Learning (iteração zero) apenas
o controlador Mamdani foi usado. Este controlador foi ajustado manualmente de forma tal a produzir
para o braço robótico uma trajetória estável. Tal trajetória é mostrada na figura 6. Os parâmetros do
controlador Mamdani e os parâmetros iniciais do controlador Sugeno são mostrados no apêndice deste
artigo.
bracoanfis
150
100
50
0
-50
-100
32
34
36
Tim e (Seconds)
38
40
Figura 6 - Trajetória do braço robótico ao final da primeira sessão de simulação.
Ao final da primeira sessão de simulação o valor de referência da posição ( θ ), a derivada do
valor de referência ( θ ) e o torque total sem o bias foi armazenado em uma matriz “teta”, considerando
os 40 segundos de operação do braço amostrados com intervalo 0,1 s. Desta matriz, foram extraídos os
dados referentes aos 2 últimos ciclos do sinal de referência. Os dados referentes ao penúltimo ciclo
foram armazenados na variável bracosugTrn enquanto que os dados referentes ao último ciclo foram
armazenados na variável bracosugChk. A função ANFISEDIT do software MATLAB 6.0 [5] foi
então usada par treinar um sistema neuro-fuzzy tipo Sugeno usando os dados da variável bracosugTrn
como dados de treinamento (training data) e os dados da variável bracosugChk como dados de
verificação do treinamento (checking data) para evitar o chamado overtraining. Foi utilizada a
facilidade da função ANFISEDIT onde o treinamento é realizado até que o mínimo erro sobre o
conjunto checking data seja atingido. Este procedimento composto de sessão de simulação e sessão de
treinamento foi repetido 12 vezes.
Ao final da 12a sessão de treinamento, foi então implementado um aumento de 2% no torque
de bias e a estrutura Feedback-Error-Learning foi novamente simulada. A figura 7 mostra a trajetória
real do braço após o treinamento do controlador Sugeno por 12 sessões e o ajuste fino no torque de
bias. Pode-se observar nesta figura que a trajetória real do braço robótico é muito próxima da trajetória
de referência desejada.
bracoanfis
100
50
0
-50
-100
32
34
36
Tim e (Seconds)
38
40
Figura 7 - Trajetória real do braço robótico ao final do
treinamento e do ajuste fino no torque de bias.
A figura 8 mostra a integral do valor absoluto dos torques gerados pelos controladores
Mamdani e Sugeno ao final de cada uma das 13 sessões de simulação da estrutura Feedback-ErrorLearning. Note, como reportado em [1] e [6], o efeito do chaveamento entre os controladores feedback
(Mamdani) e feedforward (Sugeno) e a consequente redução do erro de trajetória do braço robótico
conforme mostrado pela figura 7.
Integral de abs(Torque)
20
M amdani
Sugeno
15
10
5
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14
No da sessão
Figura 8 - Integral do valor absoluto dos torques gerados pelos
controladores Mamdani e Sugeno ao final de cada sessão de simulação.
6. CONCLUSÃO
Podemos perceber que a arquitetura de dois controladores fuzzy , um do tipo Mamdani
trabalhando em feedback e o outro do tipo Sugeno trabalhando em feedforward se adequou
satisfatoriamente ao ajuste do braço mecânico com um grau de liberdade. Na realidade obtivemos a
vantagens dos dois tipos de controladores fuzzy, o primeiro tem a vantagem de ser ajustado
rapidamente manualmente, e o segundo tem a vantagem de permitir o ajuste fino através de uma
abordagem adaptativa neuro-fuzzy. Uma possível melhoria nessa arquitetura poderia ser testada
fazendo com que o controlador Sugeno aprendesse também o torque de bias, não necessitando então
de um ajuste final como necessário neste caso.
BIBLIOGRAFIA
[1] Nascimento Jr., C. L.; Yoneyama, T.; Inteligência Artificial em Controle e Automação, Edgard
Blücher, São Paulo, 2000.
[2] Shaw,I. S.; Simões,M.G.; Controle e Modelagem Fuzzy, Edgard Blücher, São Paulo, 1999.
[3] Jang, J.-S. R.; ANFIS: Adaptive-Network-Based Fuzzy Inference System, IEEE Trans. Systems,
Man, and Cybernectics, vol. 23, no. 3, págs. 665-685, May/June 1993.
[4] Jang, J.-S. R.; Sun, C.-T.; Neuro-Fuzzy Modeling and Control, Proceedings of the IEEE, vol. 83,
no. 3, págs. 378-406, March 1995.
[5] The Mathworks Inc.; Fuzzy Logic Toolbox User’s Guide, http://www.mathworks.com/.
[6] Rios Neto, Wilson; Nascimento Jr., Cairo L.; Góes, Luiz Carlos S.; “Controle Adaptativo Inverso
usando Feedback-Error-Learning”, Anais do XII Congresso Brasileiro de Automática, Vol. I,
págs. 351-356, Uberlândia, 14-18 Set. 1998.
Apêndice - Dados dos Controladores
A.1. Controlador Mamdani:
A.1.1. Regras usada no controlador Mamdani:
If (erro is neg) and (rate is neg) then (torque is neg) (1)
If (erro is pos) and (rate is pos) then (torque is pos) (1)
If (erro is pos) and (rate is neg) then (torque is BPC) (1)
If (erro is neg) and (rate is pos) then (torque is BPC) (1)
If (erro is zero) and (rate is zero) then (torque is BPM) (1)
A.1.2. Funções de Pertinência para as entrada e a saída do controlador Mamdani:
input 1 "erro"
input 2 "derivada do erro"
pos
1
D egree of membership
zero
0.8
0.6
0.4
0.2
0
-3
de rivad a-t eta -po s it iva
derivada-teta-negativa
zero
derivada-teta-positiva
0.8
0.6
0.4
0.2
0
-2
-1
0
erro
1
2
3
-10
-5
Input 1
0
rate
Input 2
output " torque " controlador tipo M amdani
1
D egree of membership
D egree of membership
1
neg
neg
BPC
BPM
pos
0.8
0.6
0.4
0.2
0
-15
-10
-5
0
torque
Output
5
10
15
5
10
A.2.Controlador Sugeno:
A.2.1. Regras usadas no controlador Sugeno:
If (erro is teta-neg) and (rate is derivada-teta-positiva) then (torque is TGP) (1)
If (erro is teta-pos) and (rate is derivada-teta-positiva) then (torque is TPP) (1)
If (erro is teta-pequeno) and (rate is derivada-teta-positiva) then (torque is TMP) (1)
If (erro is teta-pequeno) and (rate is derivada-teta-negativa) then (torque is TMN) (1)
If (erro is teta-neg) and (rate is derivada-teta-negativa) then (torque is TPN) (1)
If (erro is teta-pos) and (rate is derivada-teta-negativa) then (torque is TGN) (1)
A.2.2. Funções de Pertinência para as entradas do controlador Sugeno antes do processo de
aprendizagem:
input 1 "referencia"
input 2 "derivada da referencia"
teta-pequeno
teta-pos
1
D egree of membership
D egree of membership
1
teta-neg
0.8
0.6
0.4
0.2
derivada-teta-positiva
0.8
0.6
0.4
0.2
0
-3
derivada-teta-negativa
0
-2
-1
0
referência
1
2
3
-1 0
-5
Input 1
0
deriva da-referê nc ia
5
10
Input 2
A.2.3. Funções de Pertinência para as entradas do controlador Sugeno depois do processo de
aprendizagem:
Input 2 "derivada da referência"
Input 1 " referencia"
teta-pequeno
teta-pos
1
Degree of membership
Degree of m embership
1
teta-neg
0.8
0.6
0.4
0.2
derivada-teta-positiva
0.8
0.6
0.4
0.2
0
0
-3
derivada-teta-negativa
-2
-1
0
referência
1
2
3
-10
Input 1
-5
0
derivada-referência
5
10
Input 2
A.2.4. Funções de Pertinência para a saída do controlador Sugeno:
Todos os parâmetros das funções de pertinência de saída do controlador Sugeno foram
inicializados em zero e ao final das 12 sessões de treinamento apresentaram os seguintes valores:
TGP = [
TPP = [
TMP = [
TMN = [
TPN = [
TGN = [
26,8937
-2,4470
3,9341
-4,0166
-86,6385
-4,1739
-20,8633
1,6767
-3,8351
-7,5853
-32,8735
-0,1532
88,3323]
-5,0372]
14,9434]
-26,0597]
-187,6150]
0,5572]
Download