Técnicas de processamento de sinal para um sinal de acelerômetro?

7

Estou executando alguns testes em que estou gravando medições do acelerômetro. Estou procurando usar elementos de processamento de sinal nesse sinal, mas não tenho certeza sobre por onde começar ou qual deve ser minha abordagem.

Meu objetivo final é poder monitorar as leituras de aceleração em tempo real e exibir uma notificação quando isso eventocorrer. Como você pode ver por volta do tempo de 150.000 amostras, eventocorre um .

  • Se eu estiver monitorando esses dados em tempo real, que tipo de técnicas de processamento de sinal podem ser implementadas para reagir a esse evento?
  • Uma Transformada de Fourier de Curto Prazo (STFT) seria uma opção?

Estou monitorando meus dados em Python, e eles têm uma função STFT decente .

Os argumentos desta função são os seguintes:

scipy.signal.stft (x, fs = 1.0, window = 'hann', nperseg = 256, noverlap = None, nfft = None, 
detrend = False, return_onesided = True, limite = 'zeros', preenchido = True, eixo = -1)
  • Como determino os parâmetros ideais a serem usados ​​para processar este sinal?

  • Existem outros métodos que vocês acham que podem me ajudar a identificar quando isso eventocorre em tempo real (em vez de usar apenas a magnitude da aceleração)?

https://dsp.stackexchange.com/users insira a descrição da imagem aqui

EDIT 1:

Meu STFT foi adicionado acima.

Gary
fonte

Respostas:

5

Eu estou querendo saber por que o STFT aparece. Para mim, um limiar simples no próprio sinal ou em seu envelope não funcionaria melhor / assim como após a remoção do gdeslocamento?

Depois de decidir qual "medida" é melhor para detectar sua event, você pode aplicar o trabalho de Basseville e Nikiforov, que eu respondi aqui.

A referência clássica para esse problema é a detecção de mudanças abruptas - teoria e aplicação por Basseville e Nikiforov. O livro inteiro está disponível como um download em PDF .

Minha recomendação é que você leia o capítulo 2.2 no algoritmo CUSUM (soma cumulativa).

Peter K.
fonte
Obrigado por seu comentário! Adicionei uma foto da saída STFT acima. Agora, simplesmente executei a função STFT sem pensar muito nos parâmetros da função. Minha aceleração está sendo coletada a uma frequência de amostragem de 500 Hz. Posso usar isso para ajudar nos meus métodos?
24417 Gary
2
@ Gary Obrigado por adicionar o enredo. Estou observando as adições de alta frequência que aparecem, mas ainda acho que o aumento na amplitude parece mais fácil de entender - desde que ele capture todas as versões suas eventque você deseja detectar. Veja a resposta da Fat32 para um exemplo do que estou falando.
Peter K.
Ei Peter, como você interpreta o enredo do STFT e o coloca nos termos dos leigos. Minha frequência está no eixo y e o tempo no eixo x. Então, o que posso dizer sobre a frequência que está ocorrendo na marca do tempo 2.0?
24417 Gary
@ Gary: Há duas coisas para mim: a) a aparência do conteúdo harmônico (sub-harmônicos até o pico principal antes desse período) eb) algum ruído generalizado e não harmônico de alta frequência. Eu tentaria filtrar esse conteúdo de alta frequência e usá-lo para ver se ele ajudou a identificar o seu event.
Peter K.
A STFT ocorre para você, porque ele permite que você desenvolver um receptor CFAR quando o fundo tem constantes tons estaduais
5

Se esses gráficos representam o cenário de aplicativo mais típico, eu usaria uma estimativa simples de variação de janela curta e executaria o limiar posteriormente;

σx2=1 1Nn=0 0N-1 1xumac[n]2

Onde xumac[n]é o sinal de entrada removido por CC; ou seja,xumac[n]=x[n]-x¯[n] Onde x¯[n] é o valor DC (médio) da entrada x[n] que pode ser estimado localmente por

x¯[n]=1 1Nn=0 0N-1 1x[n]
Você também pode usar um filtro de entalhe de bloqueio de corrente contínua para eliminar qualquer acúmulo de corrente contínua em vez de calculá-lo.

Selecione um tamanho de janela pequeno o suficiente Napropriado para sua aplicação. Você pode executar a decisão do evento com base na comparação do desvio padrão (raiz quadrada dessa estimativa de variação calculada) com um limite selecionado corretamente.

Isso será facilmente calculado em tempo real com muito menos carga computacional em comparação com uma análise no domínio da frequência. Note-se que na aplicação em tempo real suas soma índices deve ir para trás a partir da amostra atual (em vez dos fomulas acima que usam um somatório não causal)

Como segunda alternativa eficiente, você também pode implementar uma detecção de envelope no domínio do tempo (seguida de limiar) para acionar o evento.

Fat32
fonte
" Variação da janela curta " está correto, ou seja,x[n] na sua fórmula deve realmente significar x[n]-x¯. Ou, mais ou menos equivalentemente, o sinal pode ser filtrado com alta frequência antes do processamento.
leftaroundabout
@leftaroundabout Qual é o melhor método para determinar a frequência de corte na qual construir meu HPF?
Gary
@leftaroundabout o parágrafo abaixo da fórmula na verdade afirma isso, mas acho que está perdido no detalhe. Então parece que tenho que deixar claro.
precisa
@ Gary que HPF é esse? onde você vai usá-lo?
Fat32
@ Fat32 Desculpe, acabei de ler seu comentário editado. Gostei da sua sugestão para detecção de envelope no domínio do tempo. Eu vou investigar esta opção.
Gary