Como devo normalizar os dados do sensor do acelerômetro?

9

Estou trabalhando com um grande conjunto de dados do acelerômetro coletados com vários sensores usados ​​por muitos assuntos. Infelizmente, ninguém aqui parece conhecer as especificações técnicas dos dispositivos e acho que nunca foram recalibrados. Não tenho muitas informações sobre os dispositivos. Estou trabalhando na tese de mestrado, os acelerômetros foram emprestados de outra universidade e, no geral, a situação era um pouco intransparente. Então, pré-processamento a bordo do dispositivo? Nenhuma pista.

O que sei é que são acelerômetros triaxiais com uma taxa de amostragem de 20Hz; MEMS digital e presumivelmente. Estou interessado em comportamento e gestos não-verbais, que, de acordo com minhas fontes, deveriam produzir principalmente atividade na faixa de 0,3 a 3,5 Hz.

Normalizar os dados parece bastante necessário, mas não tenho certeza do que usar. Uma parte muito grande dos dados está próxima dos valores restantes (valores brutos de ~ 1000, a partir da gravidade), mas existem alguns extremos, como até 8000 em alguns logs ou mesmo 29000 em outros. Veja a imagem abaixo . Eu acho que isso torna uma má idéia dividir pelo max ou stdev para normalizar.

Qual é a abordagem usual em um caso como este? Dividir pela mediana? Um valor percentual? Algo mais?

Como questão secundária, também não tenho certeza se devo cortar os valores extremos.

Obrigado por qualquer conselho!

Edit : Aqui está um gráfico de cerca de 16 minutos de dados (20000 amostras), para lhe dar uma idéia de como os dados são normalmente distribuídos.

insira a descrição da imagem aqui

Junuxx
fonte
11
Você pode fornecer um pouco mais de informação sobre sua configuração de medição? Perguntas que vêm à mente: ( 1 ) Esses acelerômetros de eixo único ou multieixo? ( 2 ) São filtros passa-alto ou não e, em caso afirmativo, como? (Parece que não, com base na sua descrição.) ( 3 ) O que exatamente você está medindo e qual é a faixa de frequência do sinal de interesse? ( 4 ) Qual é o mecanismo de detecção (por exemplo, MEMS, piezoelétrico, capacitivo etc.) ou, ainda, o número de peça (!) Dos acelerômetros que você está usando? ...
cardeal
... (cont) ( 5 ) São totalmente digitais ou você tem seu próprio ADC (16 bits, talvez, pela descrição que você fornece)?
Cardinal
@ cardinal: Eu editei as respostas às suas perguntas, obrigado por perguntar. Não tenho certeza do que é um ADC. Eu participei do experimento, mas não na extração dos dados da memória do dispositivo, existe um espaço entre a coleta de dados e onde recebi vários logs binários.
Junuxx
Olá, Junuxx. Desculpe pela sigla inexplicável (ADC = "conversor analógico-digital"); Eu assumi implicitamente que você o reconheceria com base na sua pergunta.
Cardinal
11
O que você está tentando descobrir com esses dados? Você está talvez tentando detectar certos tipos de eventos, estimar frequências de eventos, estimar acelerações médias, encontrar correlações entre diferentes acelerômetros, ...? O ponto é que, se você quiser conselhos bons e relevantes, não pergunte sobre procedimentos técnicos com os dados (que podem ser irrelevantes ou até inúteis, dependendo da aplicação): primeiro, diga-nos qual o problema que você está tentando resolver.
whuber

Respostas:

14

Os sinais brutos que você mostra acima parecem não filtrados e não calibrados. Filtragem e calibração apropriadas , com alguma rejeição de artefato , normalizarão os dados. A abordagem padrão com dados do acelerômetro é a seguinte:

  1. Filtro - por exemplo, filtro passa-baixa IIR ou passa-banda IIR de 4ª ordem
  2. Rejeição de artefato - baseado em limite
  3. O método Calibrate - Ferraris et al. ( Procedimento para calibração em campo sem esforço de giroscópios e acelerômetros de taxa de três eixos, F Ferraris, U Grimaldi, M Parvis - Sensores e Atuadores, 1995 ) funciona bem para isso.

É aconselhável executar a rejeição de artefato nos dados inerciais do sensor. Eu ficaria preocupado com o fato de você não conhecer a procedência dos dados e, portanto, não pode garantir que os sensores foram afixados correta e consistentemente (em termos de orientação e posicionamento físico) a todos os assuntos. Se os sensores não foram afixados corretamente, é possível obter muitos artefatos nos sinais, pois o sensor pode se mover em relação ao segmento do corpo. Da mesma forma, se os sensores foram orientados de maneira diferente (em como foram colocados) em assuntos diferentes, será difícil comparar os dados entre os assuntos.

Dado o tamanho dos discrepantes que você relatar, parece provável que sejam artefatos. Esses artefatos quase certamente distorceriam qualquer cálculo de calibração (embora seu efeito seja diminuído pela filtragem apropriada) e, portanto, a calibração deve ser realizada após a rejeição do artefato.

Um limite simples pode funcionar bem para uma rotina inicial de rejeição de artefato, ou seja, remova (ou substitua por NaN) todas as amostras acima de um determinado limite empírico. Técnicas mais sofisticadas calcularão adaptativamente esse limite usando uma média em movimento ou uma janela móvel.

Dependendo da localização do sensor, você também pode corrigir a influência da gravidade nos sinais de aceleração, embora o entendimento detalhado sobre os eixos e o posicionamento do sensor seja crucial aqui. O método Moe-Nillson ( R. Moe-Nilssen, Um novo método para avaliar o controle motor da marcha em condições ambientais da vida real. Parte 1: O instrumento, Clinical Biomechanics, Volume 13, Edições 4-5, junho a julho de 1998, Páginas 320-327 ) é a mais comumente usada e funciona bem para sensores inerciais montados na região lombar.

Um bom lugar para começar a examinar os dados para o reconhecimento de gestos seria dividir os dados filtrados e calibrados em épocas (por exemplo, 10s) e calcular vários recursos por época e relacioná-los aos rótulos que você possui para os dados. t oferecer conselhos mais específicos sem saber mais sobre o conjunto de dados e os rótulos associados.

Espero que isto ajude.

BGreene
fonte
Essa é uma resposta incrível @BGreene, muito obrigado! Referências também são muito úteis. Eu gostaria de ter feito essa pergunta há alguns meses. Os sensores foram usados ​​em um cordão ao redor do pescoço (não é minha ideia), então há definitivamente muito movimento em relação ao corpo. Algumas de suas sugestões podem ser mais adequadas para futuras pesquisas, mas pelo menos serão úteis para minha seção de Trabalhos futuros. E, felizmente, a parte do reconhecimento não é o problema, eu tenho uma experiência bastante sólida em aprendizado de máquina, mas obrigado pelas sugestões também.
Junuxx
Sem problemas. Nesse caso, acho que você se limitará a examinar movimentos grosseiros como um cordão, o que significa que você não pode dizer com segurança como o corpo estava se movendo, apenas o sensor. Você pode inferir que os valores grandes de saída do sensor se igualam a grandes movimentos brutos, mas você perde muito a nitidez de um sensor corretamente afixado.
BGreene
(+1 ontem) Algumas coisas podem ser levadas em consideração em (1.) acima. Como o limite inferior da faixa de interesse é muito pequeno, uma alternativa a considerar é simplesmente aplicar um filtro passa-baixo e subtrair a média. Segundo, em vez de um filtro IIR, pode-se considerar um filtro de resposta de impulso finito de fase linear nesta instância. Digo isso porque suspeito que, para prever gestos usando o sinal do acelerômetro multieixo, é recomendável manter o movimento sincronizado independentemente da frequência. (continuação)
cardeal
(...) A resposta de fase não linear de um filtro IIR mudará componentes diferentes em quantidades diferentes e esse efeito tende a ser pior perto das frequências de corte. Como tudo é digital, faz sentido usar um filtro FIR de fase linear. Muitas vezes, também se tem um melhor controle da resposta transitória. :-)
cardinal
@ cardinal isso é tudo verdade - editei minha resposta acima. acabei de verificar meu código - meu algoritmo acelerômetro mais recente usa um filtro Butterworth IIR de fase zero. Embora eu prefiro evitar subtraindo a média para os segmentos de dados curtos
BGreene