Ultrasonik sinyal algılama


9

Cep telefonlarını coğrafi olarak konumlandırmak (hoparlörlere göre) için iki hoparlörden yayılan ultrasonik sinyalleri kullanan oldukça basit bir TDOA sistemi oluşturdum. İki sinyal frekans ile ayrılır.

Sistem aşağıdaki kısıtlamalara sahiptir:

  • Sinyaller duyulmamalıdır. Bu amaçla 17 kHz üzerindeki frekanslara bağlı kalıyoruz. Birkaç kişi bunu duyabiliyor, ama çoğu duyamıyor.
  • Örnekleme hızı 44,1 kHz'dir.
  • Müzik genellikle çalınır, bu nedenle düşük frekanslarda çok fazla parazit vardır.
  • Hoparlörlerin ve mikrofonların üst frekanslarda ne kadar iyi çalıştığı üzerinde kontrolümüz yoktur, bu nedenle üst sınırımızı yaklaşık 20 kHz'de tuttuk.

Kullandığım özel sinyal, iyi otokorelasyon özellikleri nedeniyle BPSK modülasyonlu 13 bit Barker kodlarıdır. Otokorelasyon aşağıdaki gibi görünür- Sinyal otokorelasyonu

Gerçek hayatta alınan sinyale karşı beklenen sinyali çapraz olarak ilişkilendirdiğimde, tipik olarak aldığım şey şöyle görünüyor- Tipik çapraz korelasyon

Mavi, hoparlör 1 sinyali ile çapraz korelasyon ve kırmızı, hoparlör 2 sinyali ile çapraz korelasyondur. Ekoların anlamlı olduğu ve maalesef mikrofonun yön kazancı nedeniyle doğrudan yol sinyalinden daha güçlü olduğu görülmektedir.

Doğrudan yol olması muhtemel olduğu için sinyalin en eski görünümünü tespit etmeyi denedim. Bu yaklaşım, sinyal bulunduğunda karar vermek için kullandığım eşik değerine çok duyarlıdır ve bu nedenle hiç de sağlam değildir.

Sinyalin "gerçek" varış zamanını, yani doğrudan yol sinyalinin varış zamanını belirlemek için sağlam bir yaklaşım istiyorum. Belki bir çeşit kanal tahmini ve dekonvolüsyon? Öyleyse, bu nasıl çalışır?

Veri / Kod: Kimsenin verileri analiz etmesini veya kodumu incelemesini beklemediğimi açıklığa kavuşturmak istiyorum. Bunu yapmak istemeniz durumunda onları kullanıma sundum. Çoğunlukla fikirlerle ilgileniyorum.

Ham alınan sinyali ve modüle edilmiş beklenen sinyalleri indirmeye hazır hale getirdim. Hepsi 44.1 kHz'de örneklenmiştir. Alınan sinyalin beklenen sinyallerle ilişkilendirilmesi yukarıdaki resimle benzer ancak özdeş olmayan bir şey üretecektir çünkü alınan sinyalleri taban bandına taşıyorum ve beklenen sinyallerle korelasyon yapmadan önce azalıyorum.

Alınan sinyal

Beklenen sinyal # 1

Beklenen sinyal # 2

Matlab komut dosyaları Matlab komut dosyalarında hem sinyal oluşturma komut dosyası (genLocationSig.m) hem de alma / işleme komut dosyam (calcTimingOffset.m) bulunur.


Rx1, rx2 ve şablon verilerinizi paylaşmanız mümkün müdür?
Tarin Ziyaee

@ user4619 Bu akşam yapmaya çalışacağım.
Jim Clay

Çok hızlı: Verilerinizi aldım ve kontrastlı bir STFT-PSD ürettim . En alttaki 5 bip'in frekansınızla ayrılmış iki sinyaliniz olduğunu tahmin ediyorum. Sinyalleriniz iyi iletiliyor gibi görünüyor, ancak yankı veya çok yollu sorunun olduğuna inanmıyorum. Gördüğünüz gibi, en azından başlangıçta darbeler arasında çok fazla aralıklı (geniş bant) gürültü var. Karmaşık bant kayması, altörnek, barker dizinizle ilişkili ve zarfa bakarsanız, ne görüyorsunuz?
Tarin Ziyaee

1
Tamam, birkaç şey: I) bunun gibi kodlanmış dalga formları yerine doğrusal-cıvıltı kullanmayı düşündünüz mü? Onlarla çok daha fazla esnekliğiniz var ve çok daha az hareketli parça var. II) Varsa, bant genişliği kısıtlamalarınız nelerdir? Örneğin, şablonlarınız yaklaşık 1 KHz genişliğinde gibi görünüyor, bunun bir nedeni var mı? Daha yükseğe çıkabilir misin? Doğrusal bir cıvıltı ile bu kolaydır. III) Demodülasyonunuzla ilgili yanlış bir şey olduğundan şüphe duymakla birlikte, yardımcı olmak yardımcı olacaktır. Bu, ve bana yazma zahmetinden kurtarırdı!
Tarin Ziyaee

1
Biraz yorumlar ile ilgili yanlış anlama var: Barkod kodunun 13 durumunun her birine bir 'çip' diyelim. Bu yüzden biraz iletirsem, 13 çip gönderiyorum. 2 bit iletirsem, 26 çip vb. İletiyorum. Yani sorum şu: kaç bit iletiyorsunuz? Sadece 1 bit ilettiğinizi varsayıyorum ve bu yüzden kodlama kazancınızı artırmak için çok daha fazla iletmeyi de düşünebilirsiniz diyebilirim. bu mantıklı mı?
Tarin Ziyaee

Yanıtlar:


3

Bunlar aradığınız kodlar değil ...

Yorumlarda belirttiğim gibi, sağlam TDOA yapmanın birçok yolu vardır. (Lineer Cıvıltılar, Üstel Cıvıltılar ve CDMA tipi yöntemler ile çapraz korelasyon). Kodları kullanarak zaten bir TDOA sistemi oluşturdunuz (ve doppler için sağlamlığa ihtiyacınız varsa, aslında lineer cıvıltılara göre iyi bir seçimdir), ancak kendinizi yapay olarak iki şekilde sınırlandırıyorsunuz:

  • Barker kodları sadece uzunluğa kadar çıkar . Bununla birlikte, çok daha fazla kodlama kazancı elde etmek için PN-dizi kodlarını keyfi uzunlukta yapabiliriz.13
  • İletiminizde sadece bit kullanımı . İletmek için birçok bitin önsözünü kodlayabiliriz ve çok yollu daha fazla esneklik kazanabiliriz.1

PN-Sekansı kullanın:

Böylece, çok basit bir şekilde, operatörünüzü değiştirmek için kullandığınız kodları şu şekilde değiştirin: Bunun yerine PN-Sekansları kullanın. PN tarafından üretilen kodlar (neredeyse) keyfi uzunlukta olabilir ve LFSR'ler aracılığıyla oluşturulabilir . (Ayrıca bazı metinlerde 'beyazlatıcılar' olarak da adlandırılırlar). Burada sırasıyla , ve uzunluğunda üç PN dizisi verilmiştir.3161127

PN_31 = [ 1  1 -1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1 -1  1 -1  1 -1  1  1  1 -1  1  1 -1 -1 -1  1  1  1];

PN_61 = [ 1  1  1 -1  1  1 -1  1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1  1 -1  1  1  1  1 -1 -1  1 ...
     -1  1 -1 -1 -1  1  1 -1 -1 -1 -1  1 -1 -1 -1 -1 -1  1  1  1  1  1  1 -1  1 -1  1 -1 ...
      1  1 -1 -1  1  1 -1];

PN_127 = [-1     1     1     1    -1     1    -1    -1     1    -1     1     1    -1    -1    -1     1     1    -1     1     1     1     1    -1     1     1    -1     1    -1 ...
       1     1    -1     1     1    -1    -1     1    -1    -1     1    -1    -1    -1     1     1     1    -1    -1    -1    -1     1    -1     1     1     1     1     1 ...
      -1    -1     1    -1     1    -1     1     1     1    -1    -1     1     1    -1     1    -1    -1    -1     1    -1    -1     1     1     1     1    -1    -1    -1 ...
       1    -1     1    -1    -1    -1    -1     1     1    -1    -1    -1    -1    -1     1    -1    -1    -1    -1    -1    -1     1     1     1     1     1     1     1 ...
      -1     1    -1     1    -1     1    -1    -1     1     1    -1    -1     1     1     1];

Sekansların dairesel ve doğrusal oto-korelasyonları aşağıda gösterilmiştir. Açıkça beyaz spektrumlar üretecekler, ancak bundan daha fazla, artık çip uzunluğu ile sınırlı değiliz . Aslında, son kod olan PN_127, barker dizisi üzerinde dB kazanç kodlama kazancı sağlar , bununla birlikte beyaz spektrumları garanti eder.1310 log[12713]10

resim açıklamasını buraya girin

Bir önsöz iletin:

Özel uygulamanızda, yalnızca bir bit ilettiğinizden bahsettiniz. Daha fazla kodlama kazancı elde etmek için yardımcı olabilirseniz ve uygulamanızın izin verdiği kadar bit iletmeniz durumunda bundan kaçınmaya çalışmalısınız .

Bir paketin başlangıcına uyum sağlamak için iletişim protokollerinde yaygın olarak yapılan şey budur. Birçok bitten oluşan (bilinen) bir önsöz iletilir . Her bit, birçok çipten oluşur. (Örneğimizde, yukarıdaki PN kodlarından herhangi birine sahip , veya yongalar). Son olarak, bit dizisinin kendisi yine başka bir PN dizisinden oluşabilir veya isterseniz, bir barker deseni oluşturan bit iletebilirsiniz , her bir bit yukarıdaki PN dizilerinden herhangi birinden oluşur.316112713


Bu çözümlerden birini veya her ikisini deneyin ve sonuçlarınızı belirtin. Bundan sonra tekrar edebileceğimiz somut gelişmeler olmasını bekliyorum. (Darbe şekillendirme, farklı / daha uzun PN dizileri, vb.).


1
Evet, daha uzun sekanslar denemeyi planlıyorum. Pn dizilerinin dairesel otokorelasyonlarının çok güzel olduğunu bilmiyordum. Ne yazık ki benim uygulama için önemli olan doğrusal otokorelasyon. Önsöz ile ilgili olarak - bütün sekans, bir bakıma, bir önsözü faydalı kılan şeyin bilinen bir veri örüntüsü olması anlamında bir "önsöz" dür. Tüm sinyalim bir önsel olarak biliniyor.
Jim Clay

Sorunun sinyali uzatarak çözülebildiğini kanıtlamak veya ortadan kaldırmak için bir sipariş 10 lfsr (1023 yonga) kullanarak sinyal uzunluğunda biraz aşırı gitmeye karar verdim. Ne olacağını göndereceğim.
Jim Clay

1
@JimClay Bunu duyduğuma sevindim. Alınan xcorrs / sinyallerin şimdi nasıl göründüğünü merak ediyorum. Yine de harika.
Tarin Ziyaee

1
@ endolith Evet, doppler bir problem. Bunu, birden çok kez ilişkilendirerek, alınan sinyalin frekansını her seferinde farklı bir miktarda kaydırarak hallederim. Frekans alanında korelasyon yapıyorsanız bunu yapmak kolaydır.
Jim Clay

1
@endolith Jim Clay yöntemini tarif ettiği gibi, temel olarak Belirsizlik İşlevi olarak bilinen şeyi hesaplar . Yani, ikinci boyut temel frekansa karşılık gelecek şekilde sonuçları çapraz olarak düzeltin. Bu daha sonra zirveyi ortaya çıkaracaktır ve bu nedenle orijinal frekansı, doppler derecesini bildiğimiz için.
Tarin Ziyaee
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.