No artigo “o que é um acelerômetro e onde pode ser utilizado”, foram abordados os assuntos iniciais na compreensão do acelerômetro, bem como um programa-exemplo de uso do acelerômetro na placa de desenvolvimento Beaglebone Blue e a matemática por trás da tarefa de estimar velocidade a partir de leituras de um acelerômetro. Agora, iremos abordar a parte de tratamento das acelerações medidas, de forma a eliminar o máximo de distorções e ruídos das mesmas e tornar tais medições mais confiáveis. Para isso, iremos utilizar algumas técnicas de Processamento Digital de Sinais (em inglês, DSP - Digital Signal Processing), sendo elas: calibração do acelerômetro, filtragem digital das leituras, checagem de fim de movimento e janelamento (discrimination window).
Porque fazer processamento digital de sinais em medições de um acelerômetro?
Fazer leitura de sensores de grandezas “do mundo real” (temperatura, umidade, pressão e, dentre várias outras, aceleração) implica sempre em medições com ruídos e distorções indesejadas. Apesar de clichê, a frase “nada é perfeito” se encaixa extraordinariamente bem quando o assunto é trabalhar com medições de sensores. Você já deve ter trabalhado com algum tipo de sensor antes e, com absoluta certeza, deve ter percebido que suas medições não são perfeitas (há oscilações, ruídos, distorções, enfim, nunca é uma medição “bonita” ao longo do tempo).
Apesar de natural, esta característica, se não for devidamente tratada e/ou eliminada, pode inviabilizar grande parte dos sistemas que dependem de tais medições. Ou seja, antes de utilizarmos quaisquer medições de um sensor, devemos condicioná-las / tratá-las para ficarem suficientemente confiáveis para uso. A este condicionamento, dá-se o nome de Processamento Digital de Sinais. Para se ter ideia dos efeitos de um Processamento Digital de Sinais, observe a figura 1. Nela, são mostrados exemplos de medições de aceleração no eixo X longo do tempo em um acelerômetro em movimento, evidenciando tanto as medições sem tratamento (em azul) quanto as mesmas medições após o Processamento Digital de Sinais (em laranja).
Nota-se na figura 1 que os spikes (picos de aceleração de curta duração) e pequenas flutuações foram suavizados, tendo-se como resultado final portanto um conjunto de acelerações ao longo do tempo bem mais próximo do que se esperava num “mundo perfeito”.
Portanto, para se ter acelerações confiáveis para se trabalhar, deve-se tratar tais medições utilizando técnicas de Processamento Digital de Sinais.
Técnica 1: calibração do acelerômetro
Ao observar atentamente um gráfico de medições não tratadas de aceleração com acelerômetro em repouso (figura 2), você notará que, independente do eixo, estas tendem a ser um pouco acima do esperado (0m/s² para eixos X e Y e a aceleração da gravidade no eixo Z). Este valor recebe o nome de offset. Para quem gosta de eletrônica, este é um conceito muito similar a um nível de tensão DC aplicado a um sinal de corrente alternada. Para eliminar (ou suprimir) este efeito, utiliza-se a técnica de calibração do acelerômetro.
Esta técnica consiste em, para cada eixo, com o acelerômetro em repouso, obter a média de vários dos valores sucessivos de aceleração, obtendo-se assim o offset. Daí pra frente, todo e qualquer valor de aceleração terá subtraído o valor de offset encontrado (do eixo correspondente).
Técnica 2: janelamento (discrimination window)
Conforme visto no tópico anterior, o acelerômetro, como qualquer outro sensor, produz medições com ruídos e distorções que precisam ser eliminadas ou suprimidas antes de utilizar tais medições para uma tarefa qualquer. E tais ruídos e distorções ocorrem, inclusive, com o acelerômetro parado. Observe a figura 2, onde mostra a aceleração (sem tratamento) no eixos X de um acelerômetro parado.
Pelo acelerômetro estar parado, totalmente em repouso, esperaríamos uma aceleração de 0m/s² (exceto no eixo z, eixo alinhado à gravidade). Com isso, conclui-se que, claramente, ruídos, distorções e oscilações estão presentes mesmo no acelerômetro parado. Isso pode ser um enorme problema, uma vez que erroneamente um movimento poderia ser identificado com base nestas medições.
Para suprimir (e, em alguns casos, eliminar por completo) este efeito, é utilizada a técnica de janelamento (na literatura referenciada por discrimination window). Esta técnica tem como objetivo zerar toda e qualquer medição de aceleração contida numa determinada faixa ou janela. Se você tem certa familiaridade com eletrônica, vai notar que esta técnica tem funcionamento semelhante ao do circuito comparador de janelas, feito com Amplificadores Operacionais.
Esta faixa (ou janela) é determinada conhecendo-se a aceleração máxima provocada pelos efeitos indesejados (ruídos, distorções, etc.). Uma vez conhecido este valor de aceleração - chamado, por exemplo de A - qualquer medição entre +A e -A será automaticamente zerada (atribuído o valor 0 a mesma). Observe a figura 3.
Técnica 3: filtragem digital
A filtragem digital é uma das técnicas mais importantes aqui abordadas. Ela é responsável por suavizar as medições de aceleração ao longo do tempo e eliminar os chamados spikes (picos de aceleração de curta duração).
Há uma grande variedade de filtros digitais desenvolvidos, cabendo ao projetista determinar quais deles se aplicam melhor ao projeto. No caso de filtragem digital de medições de aceleração, considero dois filtros os mais adequados, levando em conta a dificuldade de implementação e poder computacional exigido:
Filtro média móvel: em resumo, é um filtro que calcula a tendência (através de uma média) de um sinal considerando uma medição atual e N medições passadas. Este filtro foi abordado em detalhes neste nosso artigo e, além disso, você pode ver uma explicação detalhada deste filtro neste vídeo do Wagner Rambo .
Filtro Kalman: em resumo, possui duas características muito interessantes: predição de próximos valores com base no histórico de medições feitas e auto-ajuste durante o uso (quanto mais se usa, melhor se ajusta).
O filtro média móvel é muito mais simples de se implementar e demanda menos poder computacional que o filtro Kalman. Além disso, em testes práticos, particularmente achei o filtro de média móvel suficiente para filtragem digital de acelerações. Portanto, recomendo o filtro média móvel para este tipo de aplicação.
Se você leu o artigo “o que é um acelerômetro e onde pode ser utilizado”, um questionamento que você pode estar fazendo agora é: se os acelerômetros comumente já possuem filtros (filtros passa-baixa, no caso), posso ou devo utilizar um filtro digital adicional (filtro média móvel, por exemplo)? A resposta é: sim, você pode e deve utilizar filtros digitais em cascata. Isso ocorre pois o filtro nativo do acelerômetro e demais filtros digitais definidos em software possuem, geralmente, finalidades distintas, portanto filtrando as medições de forma mais eficaz e eficiente. Em suma, é comum (e esperado) o uso de filtros subsequentes (ou, no jargão técnico, filtros em cascata) neste caso.
Técnica 4: checagem de fim de movimento
Apesar de todo o tratamento com o sinal aplicado nas técnicas / processamento digital de sinais vistas até agora, há algo pendente que pode atrapalhar (e muito) o uso das medições de aceleração para alguma outra tarefa que necessita de medições confiáveis: a histerese do acelerômetro.
Ao se observar atentamente as medições de um acelerômetro (em qualquer eixo), você notará que após ser submetido a um movimento e ser colocado em repouso, dificilmente a aceleração final será nula. Ela será nula por algum período de tempo, porém há a possibilidade de sofrer um offset pequeno. Se considerado, este offset pode ser entendido como movimento, o que arruinaria qualquer estimativa confiável de velocidade a partir de medições de aceleração. Para conter este efeito é aplicada a técnica de checagem de fim de movimento.
A técnica de checagem de fim de movimento consiste em contabilizar quantas vezes a aceleração nos eixos do plano (exceto àquele que está alinhado à gravidade) é nula. Se forem contabilizadas um número pré-determinado de ocorrências disso, é considerado que o movimento terminou (ou seja, atribui-se velocidade zero ao corpo o qual o acelerômetro se encontra fixo).
Ordem de aplicação das técnicas
As técnicas aqui apresentadas devem ser aplicadas na ordem conforme descrito a seguir. Esta ordem visa ter o melhor conjunto de medições de aceleração.
Antes de tudo: técnica de calibração do acelerômetro
Após a calibração, aplicar a todas as medições de aceleração as técnicas a seguir na ordem referida:
- Técnica de janelamento (discrimination window)
- Técnica de filtragem digital (filtro digital à escolha do projetista)
- Técnica de checagem de fim de movimento
Técnicas aplicadas na prática
Possuo um projeto no github com estas técnicas aplicadas na prática. O projeto em questão é um robô com piloto automático. Este piloto automático primeiramente estima a velocidade do robô a partir de medições do acelerômetro e garante - usando controle do tipo PID - que o robô se mova numa velocidade pré-estabelecida. Tal velocidade é informada ao robô via Internet, utilizando MQTT.
O link para o projeto é: https://github.com/phfbertoleti/AutoPilot_Project
Conclusão
Neste artigo, você pode aprender mais sobre as técnicas de processamento digital de sinais aplicadas aos acelerômetros, a fim de permitir obter um conjunto de medições confiável e aplicável a outras tarefas, como a estimativa de velocidade a partir das acelerações, por exemplo.
Além disso, um projeto completo utilizando as técnicas foi disponibilizado, mostrando como os conceitos apresentados são aplicados na prática.