İvmeölçer sensörü verilerimi nasıl normalleştirmeliyim?


9

Birçok konu tarafından giyilen çoklu sensörler ile toplanan ivmeölçer verileri büyük bir set ile çalışıyorum. Ne yazık ki, buradaki hiç kimse cihazların teknik özelliklerini bilmiyor gibi görünüyor ve bunların yeniden kalibre edildiğini düşünmüyorum. Cihazlar hakkında çok fazla bilgim yok. Yüksek lisans tezim üzerinde çalışıyorum, ivmeölçerler başka bir üniversiteden ödünç alındı ​​ve durum biraz şeffaftı. Peki, cihazda önişleme mi yapıyorsunuz? İpucu yok.

Bildiğim, 20Hz örnekleme oranına sahip üç eksenli ivmeölçerler oldukları; dijital ve muhtemelen MEMS. Kaynaklara göre çoğunlukla 0.3-3.5Hz aralığında aktivite üretmesi gereken sözsüz davranış ve el hareketi ile ilgileniyorum.

Verileri normalleştirmek oldukça gerekli görünüyor, ancak ne kullanacağımdan emin değilim. Verilerin çok büyük bir kısmı dinlenme değerlerine yakındır (yerçekiminden ~ 1000 ham değerler), ancak bazı günlüklerde 8000'e kadar, hatta diğerlerinde 29000'e kadar bazı uçlar vardır. Aşağıdaki resme bakın . Bence bu normalleştirmek için max veya stdev'e bölmeyi kötü bir fikir haline getiriyor.

Böyle bir durumda olağan yaklaşım nedir? Medyan ile bölünür mü? Yüzdelik değer mi? Başka bir şey?

Bir yan sorun olarak, ben aşırı değerleri kırpmak gerekir emin değilim ..

Herhangi bir tavsiye için teşekkürler!

Düzenleme : İşte size verilerin nasıl dağıtıldığı hakkında bir fikir vermek için yaklaşık 16 dakikalık veri (20000 örnek) bir çizim.

resim açıklamasını buraya girin


1
Ölçüm kurulumunuz hakkında biraz daha bilgi verebilir misiniz? Akla gelen sorular: ( 1 ) Bu tek eksenli ivmeölçerler mi yoksa çok eksenli mi? ( 2 ) Yüksek geçişli filtreli mi, değil mi ve eğer öyleyse, nasıl? (Açıklamanıza göre öyle değil gibi görünüyor.) ( 3 ) Tam olarak neyi ölçüyorsunuz ve ilgilendiğiniz sinyalin frekans aralığı nedir? ( 4 ) Kullandığınız ivmeölçerlerin algılama mekanizması (yani MEMS, piezoelektrik, kapasitif vb.) Veya hatta parça numarası (!) Nedir? ...
kardinal

... (devamı) ( 5 ) Bunlar tamamen dijital mi yoksa kendi ADC'niz var mı (16-bit, belki de verdiğiniz açıklamaya göre)?
kardinal

@cardinal: Sorularınızın cevaplarını düzenledim, sorduğunuz için teşekkürler. ADC'nin ne olduğundan emin değilim. Denemeye dahil oldum, ancak verilerin cihaz belleğinden çıkarılmasında değil, veri toplama ile bir sürü ikili günlük aldığım yer arasında bir boşluk var.
Junuxx

Merhaba Junuxx. Açıklanamayan kısaltma için üzgünüm (ADC = "analogdan dijitale dönüştürücü"); Bunu, sorunuza dayanarak tanıyacağınızı varsaydım.
kardinal

1
Bu verilerden ne bulmaya çalışıyorsunuz? Belki de belirli türdeki olayları tespit etmeye, olayların sıklıklarını tahmin etmeye, ortalama ivmeleri tahmin etmeye, farklı ivmeölçerler arasında korelasyonlar bulmaya mı çalışıyorsunuz? ... Mesele şu ki, iyi, ilgili tavsiye almak istiyorsanız, verilerle teknik prosedürler hakkında sormayın (uygulamaya bağlı olarak ilgisiz veya hatta işe yaramayabilir): önce bize hangi sorunu çözmeye çalıştığınızı söyleyin .
whuber

Yanıtlar:


14

Yukarıda gösterdiğiniz ham sinyaller filtrelenmemiş ve kalibre edilmemiş gibi görünüyor. Bazı artefakt reddi ile uygun filtreleme ve kalibrasyon aslında verileri normalleştirir. İvmeölçer verileri ile standart yaklaşım aşağıdaki gibidir:

  1. Filtre - örn. 4. sıra, sıfır fazlı IIR alçak geçiren veya bant geçiren filtre
  2. Artefakt reddetme - eşik tabanlı
  3. Kalibrat - Ferraris ve diğerleri yöntemi ( Üç eksenli jiroskop ve ivmeölçerlerin zahmetsiz alan içi kalibrasyon prosedürü, F Ferraris, U Grimaldi, M Parvis - Sensörler ve Aktüatörler, 1995 ) yöntemi bunun için iyi çalışır.

Ataletsel sensör verilerinde artefakt reddi yapılması tavsiye edilir. Verilerin provenansını bilmediğinizden endişe ediyorum ve bu nedenle sensörlerin tüm konulara doğru ve tutarlı bir şekilde (yönlendirme ve fiziksel yerleşim açısından) eklendiğini garanti edemezsiniz . Sensörler doğru bir şekilde takılmamışsa, sensör vücut segmentine göre hareket edebileceğinden, sinyallerde çok fazla yapaylık elde edebilirsiniz. Benzer şekilde, sensörler farklı konular üzerine farklı bir şekilde yönlendirildiyse (nasıl yerleştirildiklerine), verilerin özneler arasında karşılaştırılması zor olacaktır.

Bildirdiğiniz aykırı değerlerin boyutu göz önüne alındığında, muhtemelen bir yapaylık gibi görünüyor. Bu tür artefaktlar, herhangi bir kalibrasyon hesaplamasını neredeyse kesin kılacaktır (etkileri uygun filtreleme ile azaltılacaktır) ve bu nedenle artefakt reddinden sonra kalibrasyon yapılmalıdır .

Basit bir eşik bir başlangıç ​​artefakt reddetme rutini için iyi çalışabilir, yani NaNbelirli bir ampirik eşiğin üzerindeki tüm örnekleri kaldırın (veya onunla değiştirin ). Daha sofistike teknikler, çalışan bir ortalama veya hareketli bir pencere kullanarak bu eşiği uyarlamalı olarak hesaplayacaktır.

Sensörün konumuna bağlı olarak, yerçekiminin ivme sinyalleri üzerindeki etkisini düzeltmek de isteyebilirsiniz, ancak sensör eksenleri ve konumlandırması hakkında ayrıntılı bilgi burada çok önemlidir. Moe-Nillson yöntemi ( R. Moe-Nilssen, Gerçek hayattaki çevresel koşullar altında yürüyüşte motor kontrolünü değerlendirmek için yeni bir yöntem Bölüm 1: Araç, Klinik Biyomekanik, Cilt 13, Sayılar 4-5, Haziran-Temmuz 1998, Sayfa 320-327 ) en yaygın kullanılanıdır ve bel üstü atalet sensörleri için iyi çalışır.

Jest tanıma için verileri incelemeye başlamak için iyi bir yer, filtrelenmiş, kalibre edilmiş verileri dönemlere (örneğin 10s) bölmek ve dönem başına bir dizi özelliği hesaplamak ve bunları veriler için sahip olduğunuz etiketlerle ilişkilendirmek olacaktır. Veri kümesi ve ilişkili etiketler hakkında daha fazla bilgi sahibi olmadan daha özel tavsiyeler sunmayın.

Bu yardımcı olur umarım.


Bu inanılmaz bir cevap @BGreene, çok teşekkür ederim! Referanslar da çok faydalıdır. Keşke bu soruyu birkaç ay önce sormuş olsaydım. Sensörler boynun etrafındaki bir kordon üzerine giyildi (benim fikrim değil), bu yüzden kesinlikle vücuda göre çok fazla hareket var. Önerilerinizden bazıları daha fazla araştırma için daha uygun olabilir, ancak en azından Gelecek Çalışmam bölümüm için yararlı olacaklar. Ve neyse ki tanıma kısmı sorun değil, makine öğreniminde oldukça sağlam bir geçmişim var, ancak bu konuda öneriler için teşekkürler.
Junuxx

Sorun değil. Bu durumda, kaba hareketleri bir kordon olarak incelemekle sınırlı kalacağınızı düşünüyorum, vücudun nasıl hareket ettiğini güvenilir bir şekilde söyleyemeyeceğiniz anlamına gelir, sadece sensör. Büyük sensör çıkış değerlerinin büyük brüt hareketlerle eşit olduğunu tahmin edebilirsiniz, ancak düzgün bir şekilde takılmış bir sensörün netliğini çok kaybedersiniz.
BGreene

(+1 +1) Yukarıdaki (1.) 'de birkaç şey dikkate alınabilir. İlgilenilen frekans aralığının alt sınırı oldukça küçük olduğundan, göz önünde bulundurulması gereken bir alternatif, bir düşük geçiş filtresi uygulamak ve ortalamayı çıkarmaktır. İkincisi, bir IIR filtresi yerine, bu durumda doğrusal-fazlı bir sonlu-dürtü-tepki filtresi düşünülebilir. Bunu söylüyorum çünkü çok eksenli ivmeölçer sinyalini kullanarak hareketleri tahmin etmek için, hareketin frekanstan bağımsız olarak senkronize olmasını sağlamak isteyeceğim. (devamı)
kardinal

(...) Bir IIR filtresinin doğrusal olmayan faz tepkisi, farklı bileşenleri farklı miktarlarda kaydırır ve bu etki, kesme frekanslarının yakınında daha kötü olma eğilimindedir. Her şey dijital olduğundan, doğrusal fazlı FIR filtresiyle gitmek mantıklıdır. Çoğu zaman geçici yanıtı da daha iyi kontrol edebilirsiniz. :-)
kardinal

@cardinal thats all doğru - yukarıdaki yanıtımı düzenledim. kodumu kontrol ettim - en son ivmeölçer algoritmam sıfır fazlı Butterworth IIR filtresi kullanıyor. Kısa veri segmentleri için ortalamanın çıkarılmamasını tercih
etsem de
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.