Controle de Velocidade de Motores DC com Auxílio da Lógica Nebulosa Ben Hur Gonçalves1, Roseli A. F. Romero1 1
Instituto de Ciências Matemáticas e de Computação, ICMC – Universidade de São Paulo, USP – São Carlos – SP – Brasil
[email protected],
[email protected]
Abstract. Nowadays, about 90% of the industries’ control systems are PID, but this kind of compensator is not intuitive and isn’t also robust. The aim of this work is to implement types of fuzzy logic controllers and to compare its results with the results of PID controllers, showing that fuzzy thinking, if correctly used, can be more precise and efficient than the traditional control systems. Resumo. Hoje em dia, cerca de 90% dos sistemas de controle industriais são PID, mas esse tipo de compensador não é nem intuitivo e nem robusto. O objetivo deste trabalho é programar diferentes tipos de controle nebuloso e comparar seus resultados com os resultados de um controlador PID clássico, evidenciando que a lógica nebulosa, se corretamente usada, pode ser mais precisa e eficiente que os sistemas de controle tradicionais.
1. Introdução Robótica é uma ótima plataforma para realizar aprendizado multidisciplinar, além de estar mudando o modo como sentimos e interagimos com o mundo. No entanto, a maioria dos controles robóticos são PI (proporcional e integral) ou PID (proporcional, integral e derivativo), que não traduzem corretamente o modo humano de pensar. Com a evolução da inteligência computacional, um modo interessante de fazer as máquinas pensarem como seres humanos é programar um controlador nebuloso hierárquico [Hung e Chung 2006]. Outro método já implementado é aplicar controlador nebuloso hierárquico para múltiplos indivíduos [Jeong e Lee 1999]. Há também trabalhos que tratam do controle nebuloso de robôs de duas rodas [Wong 2007], mas ainda há pouco progresso sobre ajustes do controlador PID por lógica nebulosa e seus efeitos comparados com o controlador PID clássico. Neste sentido, este trabalho trata da modelagem de um robô não-holonômico e do controle de seus motores de corrente contínua. Também é realizado um controle PID do robô, de tal forma que o desempenho do controle nebuloso possa ser comparado. Este trabalho é de natureza empírica, e tem como intuito demonstrar, através de simulações, que a lógica nebulosa, se corretamente utilizada, gera controles mais eficientes que os controles clássicos. Antes da discussão dos resultados, no entanto, será apresentada uma visão simplificada do time de futebol de robôs do Laboratório de Aprendizado de Robôs, da Universidade de São Paulo, que são os objetos de estudo deste trabalho.
2. Visão Geral Apesar da dificuldade de desenvolvimento de projetos multidisciplinares, como de robótica, o grupo de pesquisa é composto apenas por quatro alunos, tanto de graduação quanto de mestrado, responsáveis por partes como visão computacional, controle, mecânica, eletrônica, estratégia e programação em Assembly e C para microcontrolador. A visão computacional utiliza uma câmera e um computador com placa de captura, utilizando como base um filtro HSV (tonalidade, saturação e valor, em inglês). O sistema de visão se comunica com o computador da estratégia, por um protocolo, e passa as posições e ângulos de cada robô, assim como da bola. É possível ver como a visão interpreta as imagens do campo de jogo na Figura 1.
Figura 1. O campo de jogo, segundo o sistema de visão.
O modulo de estratégia é baseado em campos potenciais [Melo, Maia e Guimarães 2007]. Isso significa que esse módulo calcula forças atrativas e repulsivas, para, respectivamente, a bola e os jogadores adversários. Nessa estratégia, as forças atrativas da bola são constantes, o que quer dizer que os robôs sentem a bola, mesmo quando muito distantes, e as forças geradas pela repulsão são inversamente proporcionais ao quadrado da distância, o que quer dizer que inimigos muito distantes não influenciam na trajetória dos robôs. Seguindo esta lógica, a estratégia calcula velocidades ideais para as ambas as rodas de cada robô e manda um sinal de rádio para estes últimos. Na Figura 2 é possível ver um simulador baseado em Open GL, desenvolvido por membros do laboratório, usado para treinar e aperfeiçoar o módulo da estratégia.
Figura 2. Simulador 3D desenvolvido por membros do grupo.
O módulo da eletrônica se comunica com dois outros: o da mecânica e o do controle. O controle envia através do transmissor do rádio o vetor “$A,B,C,D,E*” para o rádio da eletrônica. O rádio repassa o comando para o microcontrolador PIC através da interface RS-232 da comunicação serial. O microcontrolador lê o sinal “$” e inicia a rotina de nova mensagem. A partir desse ponto associa “A” ao sentido da roda esquerda, “B” passa a ser a velocidade desejada para a mesma, numa escala de 0 a 63, “C” ao sentido da outra roda, “D” passa a ser a velocidade desejada para a mesma, também numa escala de 0 a 63. O caractere “*” indica o final da mensagem. Cada microcontrolador reconhece a mensagem, decodifica, verifica a veracidade da informação e faz a lógica de seleção de direção e potência dos motores, tudo através de uma Ponte-H e duas portas com módulo PWM (modulação de largura de pulso, em inglês) [Souza 2005]. A placa eletrônica de cada robô é idêntica uma à outra e foi produzida seguindo a Figura 3. O microcontrolador, além das portas PWM, usa ainda mais quatro portas para ativar a Ponte-H, que faz a seleção de para qual lado o motor deve girar. Apenas um circuito integrado de Ponte-H cuida de ambos os motores DC. O circuito ainda é constituído por acopladores ópticos, que isolam fisicamente o circuito do PIC do circuito dos motores, o que evita que picos de corrente, na partida dos motores, desliguem o microcontrolador [Fitzgerald 1975]. Uma dificuldade de construção desse circuito é configurar o PIC para possuir menor freqüência possível de PWM, pois os acopladores ópticos ficam insensíveis a pulsos de freqüência muito alta. Os motores também foram sobrecarregados em 150% de voltagem, fazendo-os ter menor vida útil, porém maior desempenho em termos de torque e velocidade.
Figura 3. Como funciona o circuito de cada robô.
O sistema mecânico dos robôs é relativamente simples, mas foi uma das partes mais dispendiosas do projeto, uma vez que todo o robô deve ocupar um volume máximo de cubo de 75 milímetros de aresta. Devido a tal complicação, o sistema mecânico foi desenhado em CAD (desenho auxiliado por computador) e manufaturado em máquinas de precisão na Escola de Engenharia de São Carlos. Devido à sobrecarga do motor, à redução e ao fato do motor já possuir torque elevado, os robôs são muito imprevisíveis, e para tanto foi necessário um sistema de controle robusto. A Figura 4 mostra como ficaram os robôs após o término da primeira versão estável do projeto.
Figura 4. Os robôs do time de futebol.
3. Modelagem dos Robôs Houve a necessidade de modelar os robôs, a fim de que fosse possível simulá-los e para que as melhores soluções de controle fossem encontradas. Para realizar a modelagem do sistema, foi preciso analisar o circuito equivalente a um motor DC [Ogata 2002]. A Figura 5 mostra como um motor de corrente contínua pode ser considerado uma resistência em série com uma indutância e uma força eletromotriz, que é a responsável por gerar movimento em seu rotor. Como a voltagem perdida pela indutância é muito menor que a perdida pela resistência, é possível simplificar a equação (1) na equação (2). É importante ressaltar que a força eletromotriz é diretamente proporcional à velocidade de rotação do eixo do motor.
Figura 5. Circuito equivalente a um motor DC.
V = R m I + L&I + Vemf (1)
I=
(V - K g ω m ) Rm
(2)
Outra fórmula que foi utilizada diz respeito ao torque Tm do rotor, que é diretamente proporcional à corrente I que passa através do mesmo (3). O argumento η é a eficiência do motor. Também foi necessário utilizar a equação (4), de momento de inércia. O raio do pinhão, da engrenagem, e da roda são respectivamente Rsg, Rbg e Rw. Os momentos de inércia do robô, do eixo, do motor e da engrenagem são Jrobot, Jax, Jm e Jbg. O símbolo ω indica velocidades angulares, sendo que T1 e T2 são os torques que a engrenagem e o pinhão causam um no outro. As equações (4) e (5) são respectivamente as equações do eixo do motor e do eixo da roda. As equações (6) e (7) são relações devido aos diâmetros da engrenagem e do pinhão.
Tm = ηΚ m Ι (3) T2 =
(η .Κ m ) (V - K gω w R bg ) J mω& w R bg (4) Rm R sg R sg
T1 = (J bg + J ax + J w ) ω& w + f Ff R w (5) ω m = ω sg =
T1 =
f Ff =
ω w R bg
(6)
R sg
T2 R bg R sg
(7)
ω& w J robot R w (8) 4R 2robot
A equação (8) mostra a aceleração como função da força de atrito com o piso. Unindo as equações (4), (5), (6), (7) e (8) e substituindo-as em (2), é possível obter as equações finais da modelagem do robô. As equações (9), (10) e (11) foram encontradas através da Laplaciana da modelagem final, sendo que podem ser usadas para simular o comportamento do robô quando submetido a diversas entradas de voltagem, o que na prática corresponderia ao ajuste de voltagem proveniente do PWM. ωw A (9) (s) = V Bs + 1 A=
B=
R sg R bg K g
(10)
J robot R 2w R sg2 R m 4R 2robot R 2bg K m K g η
(11)
Tabela 1. Variáveis e seus valores reais calculados. Constante
Valor
Descrição do item
Rm
6,41 Ohms
Resistência elétrica do motor
Kg
0,00505 Vs/rad
Resistência de rotação do motor
Km
0,006414 Nm/A
Resistência de torque do motor 2
Jrobot
0,0006125 Kg.m
Momento de inércia do robô todo
Rw
0,030 m
Raio da roda
Rbg/Rsg
3
Proporção da redução
η
12 – 100 %
Eficiência do motor
Rrobot
0,035
Distância entre o centro de gravidade e a roda
4. Sistemas de Controle Depois que o modelo do sistema foi conhecido, foi possível projetar compensadores que controlassem a velocidade angular de cada roda, tendo como alimentação a velocidade angular de cada quadro anterior, calculada pelo sistema de visão. Foi possível projetar o PID ótimo, assim como um controlador nebuloso, do tipo PI-fuzzy, PID-fuzzy ou ainda PID clássico com seus ganhos ajustados pela lógica nebulosa. As diferenças entre esses compensadores estão descritas nos itens a seguir. 4.1. Controlador PID Clássico O controlador PID possui três constantes a serem ajustadas. A constante proporcional K acelera a reação do sistema, enquanto a constante integral Ti diminui o erro do sistema em estado permanente e a constante derivativa Td amortece as curvas de reação, evitando que entre em instabilidade. A parte derivativa do controle aumenta a estabilidade do modelo matemático por adicionar um zero à função de transferência em malha fechada, deslocando o gráfico do lugar das raízes para esquerda [Franklin, Powell e Emami-Naeini 1994]. A fórmula padrão de um controlador proporcional-integralderivativo é dada:
D(s) = K(1 +
1 + Td s) (12) Ti s
Por diversas décadas os engenheiros tentaram analisar sistemas dinâmicos e definir valores para os ganhos de um controlador PID, puramente baseados nas plantas dos processos, mas foi com J. G. Ziegler e N. B.Nichols [Ogata 2002] que foi definida uma lógica para K, Ti e Td. O método Z-N (Ziegler- Nichols) de malha fechada é um dos métodos mais comumente utilizados para sintonizar controladores. O método de laço aberto também é útil para a maioria dos processos de controle. O algoritmo de laço fechado determina o ganho proporcional Kcr no qual um sistema ficará submetido a oscilações sustentadas. Em seguida, o algoritmo recalcula novos ganhos proporcional, integral e derivativo em função desse valor encontrado. Esta pode ser considerada boa afinação, mas não é necessariamente um ajuste ótimo. Com esse segundo método, são encontrados Kcr e T, que é o período do ciclo de oscilação sustentada, e em seguida os outros ganhos são calculados seguindo a Tabela 2. Tabela 2. Valores obtidos com o método Ziegler-Nichols. K
Ti
Td
Fórmula
0,6.Kcr
0,5.T
0,125.T
Valor Encontrado
0,24
0,825
0,206
Figura 6. Duas entradas degrau diferentes para o PID tipo ZN.
O controlador da Figura 6 foi submetido à função de saturação, que limita o fornecimento de até 7,4 Volts ao motor, que é a voltagem máxima utilizada nos robôs reais. É possível observar que o chute inicial de Ziegler-Nichols funciona relativamente bem para o controlador, porém ainda foi necessário retirar o sobressinal da resposta. Para isso, foram feitos ajustes manuais das constantes, como na Figura 7.
Figura 7. Melhores ajustes para entrada baixa (esquerda) e alta (direita).
Pela Figura 7, é possível observar que quando o sistema é ajustado para responder bem a pequenas referências (esquerda) o sobressinal, quando submetido a entradas grandes, se mostra muito significativo. O contrário é válido para o ajuste de entrada alta. Isso acontece porque o sobressinal corresponde a uma mesma porcentagem da entrada, tanto para alta quanto para baixa. No entanto, com grandes entradas, esse sobressinal se torna muito grande em módulo, o que pode deixar o robô instável.
4.2. Controlador PI-Fuzzy O controlador PI-fuzzy trabalha com o erro e com a integral do erro. Isso quer dizer que tem as mesmas entradas de um controlador PI clássico, mas ao invés dos ganhos K e Ti, possui essas entradas tratadas por um conjunto de funções nebulosas. Essas funções estão descritas na seqüência em termos de suas entradas, onde cada N dá uma idéia de como a entrada é negativa e cada P indica o grau que a entrada é positiva, enquanto que Z indica a proximidade dessa entrada com o erro no valor zero. Esse sistema de nomeação também funciona para a saída, que é a voltagem aplicada ao motor. Como é possível ver na Tabela 3, a variável erro tem um fator de 30% na saída, em comparação com a variável da integral do erro. Vê-se também que o que está
aplicado na Tabela 3 abaixo possui a mesma idéia que um operador humano utilizaria para controlar o sistema: se o erro é positivo, é porque a velocidade de referência é maior que a real, portanto é necessária uma potência positiva na saída, enquanto que a integral do erro detecta quando o erro de regime é grande. Tabela 3. Relações do erro e sua integral com a voltagem. Variável
Relações entre as funções
Int. Erro
NNN
NN
N
Z
P
PP
PPP
Voltagem
NNN
NN
N
Z
P
PP
PPP
Erro
NNN
NN
N
Z
P
PP
PPP
Voltagem
NNN.0,3
NN.0,3
N.0,3
Z.0,3
P.0,3
PP.0,3
PPP.0,3
O fator de 30% do erro foi obtido empiricamente através das simulações no software matemático Matlab [Davis e Sigmon 2005]. Foram testados vários tipos de fuzzyficação e defuzzyficação [Saito e Massa 2004]. Pela Tabela 3 também vemos que as variáveis de entrada são independentes entre si. A superfície de controle do controlador PI-fuzzy está na Figura 8, abaixo. É possível observar pela Figura 8 que a superfície de controle é complexa, mas ainda assim suave. A variável do erro está no espaço [-400, 400], enquanto que a integral do erro está no espaço [-50, 50]. É importante notar que quando se usa controle nebuloso não é necessário utilizar uma função de saturação da saída, pois é possível configurar esse valor máximo e mínimo na própria lógica nebulosa. No gráfico da Figura 9 fica evidente que o sistema nebuloso respondeu mais rápido que o PID clássico, porém sobrou um erro de regime no valor de 5% do degrau de entrada.
Figura 8. Gráfico de controle do compensador PI-fuzzy.
No gráfico da Figura 9, em seqüência, vermelho indica a resposta do sistema para uma entrada degrau no valor de 200 rad/s. O roxo indica a resposta para uma
entrada no valor de 40 rad/s. Como é possível notar, o controlador nebuloso permite convergência tanto para entradas altas como para baixas, ao contrário do PID. O problema do controlador nebuloso está no fato de ser mais difícil de configurar, o que provoca o erro de regime, que segundo a Figura 9 está em torno de cinco por cento para ambas as respostas. O controlador PI-nebuloso possui vinte e uma funções que devem ser configuradas, cada uma com três valores (máximo, mínimo e médio), enquanto que cada controlador PI clássico possui no total apenas duas variáveis.
Figura 9. Melhores respostas para entrada baixa e alta com o PI-fuzzy.
4.3. Controlador PID-Fuzzy O controlador PID-fuzzy trabalha com o erro, com a integral do erro e com a derivada do erro. Isso quer dizer que tem as mesmas entradas de um controlador PID clássico, mas ao invés dos ganhos K e Ti e Td, possui essas entradas tratadas por um conjunto de funções nebulosas. As mesmas funções do controlador PI-fuzzy foram mantidas, mas também foram adicionadas novas, relacionadas à derivada do erro. As Tabelas 4 e 5 em seqüência mostram as inferências adicionadas ao controlador nebuloso, com relação à saída “voltagem”. Observa-se também que esse tipo de controlador possui vinte e oito funções, cada uma com três variáveis, contra três do PID. Tabela 4. Relações do erro e sua derivada com a voltagem. Variável Erro
Derivada do erro NNN
NN
N
N
PPP
PP
Z
PPP
P
PPP
Z
P
PP
PPP
P
N
NN
NNN
PP
P
N
NN
NNN
PP
P
N
NN
NNN
NNN NN
PP PPP Tabela 5. Relações do erro e sua integral com a voltagem.
Variável Int. Erro
Derivada do erro NNN
NN
N
N
PPP
PP
Z
PPP
P
PPP
Z
P
PP
PPP
P
N
NN
NNN
PP
P
N
NN
NNN
PP
P
N
NN
NNN
NNN NN
PP PPP
O fator de 30% do erro foi mantido nas funções antigas, mas essas novas funções possuem todas fator de valor unitário. Vê-se pelas Figuras 10 e 11 que a superfície de controle também é complexa, mas ainda assim suave. A variável do erro do controlador está no espaço [-400, 400], enquanto que a integral do erro está no espaço [-50, 50] e a derivada do mesmo está em [-1000, 1000]. Nota-se pelo gráfico da Figura 12, que o sistema respondeu rapidamente e desta vez praticamente não apresentou erro de regime. Isso mostra que o controlador PID-fuzzy respondeu melhor que o PI-fuzzy, que respondeu melhor que o PID [Saito e Massa 2004]. O interessante é que realmente o controlador PID tem suas limitações, principalmente quando a entrada tem valores muito diferentes para cada situação.
Figura 10. Gráfico dos eixos erro e sua derivada em função da voltagem.
Figura 11. Gráfico dos eixos erro e sua integral em função da voltagem.
Figura 12. Gráfico da resposta para entradas altas e baixas com o PID-fuzzy.
4.4. PID Controlado Por Lógica Nebulosa Uma solução inteligente para o problema do controlador PID seria ajustar seus ganhos K, Ti e Td de acordo com a entrada fornecida [Saito e Massa 2004]. Uma forma de fazer isso é utilizando um controlador nebuloso específico. A entrada do sistema é o valor da rotação (em rad/s) e a saída é o ganho a ser utilizado no controlador clássico. As simulações anteriores mostraram que pode-se melhorar muito o rendimento do controlador proporcional-integral-derivativo. Quanto maior o valor da entrada, maior deve ser o ganho derivativo ao qual a planta do sistema é submetida. Vale o mesmo para o ganho proporcional e o inverso para o ganho integral. Para esse controle nebuloso foram utilizadas três funções nebulosas de entrada e três de saída para cada saída (Alta, Média, Baixa). A entrada é a rotação da roda em módulo e varia em [0, 600], enquanto que as saídas são a constante Td que varia em [0,02 , 0,15], a constante Ti que varia em [0,02 , 0,2] e a constante K que varia em [0,5 , 0,9]. O esquemático do projeto no Matlab está na Figura 13 e o gráfico da transferência nebulosa é dado na Figura 14.
Figura 13. Modo como funciona o controlador fuzzy para compensadores PID.
Figura 14. Gráfico da resposta para entradas de vários níveis.
É possível observar no gráfico da Figura 14 acima, que o mesmo controlador PID atingiu com rapidez todos os valores requisitados, o que mostra que a lógica nebulosa foi a responsável por ajustar o mesmo, aumentando sua eficiência. Esse tipo de projeto é recomendado para situações que o controlador deva ser mais robusto que um controlador clássico comum, mas mesmo assim relativamente simples.
5. Conclusões O controle PID, quando submetido a grandes variações de entrada pode deixar o sistema instável, problema que pode ser corrigido implementando-se um controlador nebuloso para administrar os ganhos do controlador clássico. Foi observado que a lógica nebulosa é mais trabalhosa de se desenvolver, possuindo muito mais variáveis que o PID, mas é mais intuitiva [Faria e Romero 2000], pois simula o pensamento humano, enquanto que o PID é menos intuitivo, já que trabalha com erro, derivada do erro e integral do erro. Este ponto só não é válido para o controle nebuloso dos ganhos do PID. A lógica nebulosa precisa ser testada e otimizada antes de ser programada, pois é muito complexa e tem muitas variáveis, mas isso pode ser feito calculando a planta do sistema e simulando através do Matlab [Davis e Sigmon 2005], assim como foi realizado neste trabalho. Os controladores nebulosos tendem a ser bem mais precisos e bem mais robustos, como foi mostrado nos gráficos apresentados nesse trabalho.
Como trabalhos paralelos a este, estão o desenvolvimento e implementação de controladores PID de posição e velocidade [Vieira, Medeiros, Alsina, e Araújo 2004] assim como um sistema de ajuste de ganhos proporcionais, integrativos e derivativos com base numa análise estatística de comportamento. Como trabalho futuro, está previsto o desenvolvimento de uma rede neural que realize o ajuste dos parâmetros da lógica nebulosa.
Referências Davis, T. A. e Sigmon, K. (2005), “Matlab Primer”. Ed. CRC Press. Faria, G. e Romero, R. A. F. (2000), “Incorporating Fuzzy Logic to Reinforcement Learning”. Proceedings of the 9th IEEE International Conference of Fuzzy Systems. Fitzgerald, A. E. (1975), “Máquinas elétricas”, Ed. McGraw-Hill. Franklin, G. F., Powell, J. D. e Emami-Naeini, A. (1994), “Feedback Control of Dynamic Systems”, Ed. Addison-Wesley. Hung, L. e Chung, H. (2006), “Design of Hierarchical Fuzzy Logic Control for Mobile Robot Systems”. IEEE Conference on Robotics, Automation and Mechatronics. Jeong, I. e Lee, J. (1999), “Evolving Fuzzy Logic Controllers for Multiple Mobile Robots”. Fuzzy Systems Conference Proceedings. Melo, D. O., Maia, A. H. C. e Guimarães, J. A. A. (2007), “Aplicação de Campos Potenciais em Estratégias de Futebol de Robôs”, Semcomp 2007. Ogata, K. (2002), “Modern control engineering”. Ed. Pearson. Souza, D. J. (2005), “Desbravando o PIC: ampliado e atualizado para PIC16F628A”, Ed. Érica. Saito, K. e Massa, M. C. (2004), “Sistemas inteligentes em controle e automação de processos”, Ed. Ciência Moderna. Vieira, F. C., Medeiros, A. A. D., Alsina, P. J. e Araújo Jr., A. P. (2004), “Position and Orientation Control of a Two-Wheeled Differentially Driven Nonholonomic Mobile Robot”, ICINCO - International Conference on Informatics in Control, Automation and Robotics. Wong, C., Wang, H., Li, S., e Cheng, C., (2007), “Fuzzy Controller Designed by GA for Two-wheeled Mobile Robots”, International Journal of Fuzzy Systems, Vol. 9, No. 1, Março de 2007.