Identificação de Sistemas [COELHO, 2004] é um termo genérico utilizado para descrever as ferramentas matemáticas e os algoritmos que permitem construir modelos dinâmicos a partir de dados medidos. Podemos identificar um sistema por meio de equações da física (chamado de caixa branca), podemos identificar sistemas sem conhecer o modelo prévio (modelo caixa preta) e ainda temos um método que é um meio termo entre a caixa branca e a caixa preta, chamado de caixa cinza. Para a identificação do modelo dos atuadores que serão usados no projeto Bbot, vamos utilizar a modelagem caixa preta.
Modelo 3D
O modelo do Bbot utiliza torque como sinal de atuação das rodas, porém, o atuador do Bbot (Dynamixel xm430 w210) utiliza um sinal PWM como entrada. Então para fazer essa conversão foi necessário a criação de uma bancada de testes, no qual enviamos ao motor um sinal PWM e com uma célula de carga medimos o torque do sinal enviado.
Tendo o funcionamento em vista, temos que modelar a bancada de forma que seja possível realizar essas coletas. Abaixo mostramos as peças detalhadamente do modelo final da bancada.
A bancada final comporta um HUB que suporta os atuadores Dynamixel. Acoplado a bancada está um display de 7’’ touchscreen para o Raspberry Pi 4, isso dá autonomia para que a bancada funcione sem o uso de um computador externo. A renderização do modelo final pode ser vista a seguir.
A bancada pode ser facilmente modificada para acoplar outros modelos de atuadores, basta copiar o modelo feito no software Onshape neste LINK e realizar as modificações desejadas. A seguir mostramos o motor do modelo Dynamixel MX-106 também acoplado a bancada.
Tendo finalizado o modelo 3D da bancada, partimos agora para a modelagem do programa de identificação do sistema.
Identificação do sistema
A identificação do sistema está dividida em alguns passos que abordamos em seguida:
Coleta de dados
Com a bancada de testes montada, enviamos um sinal do tipo degrau para o atuador. O mesmo, com o HUB acoplado, faz um esforço na célula de carga. O programa então salva um arquivo (dataset) com o sinal de entrada, de saída e o tempo percorrido a cada sinal do teste.
Processamento e refinamento dos dados
Com os dados coletados, carregamos num programa em Python (LINK) que vai tratar dos próximos passos. Para iniciar o refinamento, calculamos o sinal do sistema subtraindo o torque pela média dos seus valores.
signal = torque - np.mean(torque)
Então, calculamos a transformada discreta de Fourier, pela biblioteca numpy (LINK). A função np.fft.fft
calcula a Transformada de Fourier Discreta (DFT) unidimensional com o algoritmo da Transformada Rápida de Fourier (FFT).
Depois utilizamos o filtro FIR, que é um tipo de filtro digital caracterizado por uma resposta ao impulso que se torna nula após um tempo finito [OLIVEIRA, 2007]. Então com o lfilter
, filtramos uma sequência de dados x usando um filtro digital. Para mais sobre o filtro, consultar LINK.
Ao final, fazemos o corte de sinais com valores abaixo de 0. Resultando no seguinte sinal:
Modelo
Após os passos acima, usamos a biblioteca SIPPY para identificar o sistema. O principal objetivo deste código é fornecer diferentes métodos de identificação para construir modelos lineares de sistemas dinâmicos. Para isso utilizamos como modelo interno dele o ARX (do inglês, Autoregressive with Extra Input) [RIBEIRO]. Então obtemos o seguinte modelo de primeira ordem:
\$\$ \frac{0.0006618}{z - 0.8444}, dt = 0.0125 \$\$
Resultados
O projeto 3D foi corretamente montado, resultando em uma bancada de autonomia própria para coleta de modelos no tipo caixa preta. O projeto final da bancada de teste, já montada, pode ser vista a seguir.
O modelo final nos garantiu controlar o Bbot corretamente, que pode ser visto no post de controle (LINK). A figura a seguir mostra em laranja o sinal de entrada em torque e o azul o modelo identificado com a bancada de testes.
Para baixar os códigos da bancada de testes, basta ir no link do github e seguir os passos no Readme.
Referências
- COELHO, Antonio Augusto Rodrigues; DOS SANTOS COELHO, Leandro. Identificação de sistemas dinâmicos lineares. 2004.
- OLIVEIRA, EEC; CORREIA, SEN; MENDONÇA, L. M. Implementação do filtro de resposta finita (FIR) não recursivo através do método das janelas. In: II CONGRESSO DE PESQUISA E INOVAÇÃO DA REDE NORTE NORDESTE DE EDUCAÇÃO TECNOLÓGICA. 2007.
- RIBEIRO, David A. et al. Validação de modelo linear ARX com base em métodos clássicos de identificação.