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.

Bancada explode

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.

Bancada front view

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.

Bancada explode

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.

entrada

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).

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:

filter

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.

bancada real

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.

model

Para baixar os códigos da bancada de testes, basta ir no link do github e seguir os passos no Readme.

Referências

  1. COELHO, Antonio Augusto Rodrigues; DOS SANTOS COELHO, Leandro. Identificação de sistemas dinâmicos lineares. 2004.
  2. 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.
  3. RIBEIRO, David A. et al. Validação de modelo linear ARX com base em métodos clássicos de identificação.



Autor


Not found

Matheus França
Pesquisador Júnior (estagiário) no laboratório de Robótica e Sistemas Autônomos (RoSA), Senai Cimatec, graduando em Engenharia de Controle e Automação.