Memahami jarak ibeacon

113

Mencoba memahami konsep dasar tentang bagaimana menjaga jarak dengan ibeacon (beacon / Bluetooth-lowenergy / BLE) dapat bekerja. Apakah ada dokumentasi yang benar tentang seberapa jauh tepatnya sebuah ibeacon dapat mengukur. Katakanlah saya 300 kaki jauhnya ... mungkinkah ibeacon mendeteksi ini?

Khusus untuk v4 &. v5 dan dengan iOS tetapi umumnya perangkat BLE apa pun.

Bagaimana frekuensi & throughput Bluetooth memengaruhi ini? Dapatkah perangkat beacon meningkatkan atau membatasi jarak / meningkatkan BLE yang mendasarinya?

yaitu

               | Range       | Freq       | T/sec      | Topo       |      
               |–—–––––––––––|–—––––––––––|–—––––––––––|–—––––––––––|
Bluetooth v2.1 | Up to 100 m | < 2.481ghz | < 2.1mbit  | scatternet |
               |-------------|------------|------------|------------|
Bluetooth v4   |     ?       | < 2.481ghz | < 305kbit  | mesh       |
               |-------------|------------|------------|------------|
Bluetooth v5   |     ?       | < 2.481ghz | < 1306kbit | mesh       |
rambossa
sumber

Jawaban:

223

Perkiraan jarak yang disediakan oleh iOS didasarkan pada rasio kekuatan sinyal suar (RSSI) di atas daya pemancar yang dikalibrasi (txPower). TxPower adalah kekuatan sinyal terukur yang diketahui dalam rssi pada jarak 1 meter. Setiap suar harus dikalibrasi dengan nilai txPower ini untuk memungkinkan perkiraan jarak yang akurat.

Meskipun perkiraan jarak berguna, namun tidak sempurna, dan mengharuskan Anda mengontrol variabel lain. Pastikan Anda membaca kerumitan dan batasan sebelum menyalahgunakannya.

Saat kami membangun pustaka iBeacon Android, kami harus membuat algoritme independen kami sendiri karena kode sumber iOS CoreLocation tidak tersedia. Kami mengukur sekumpulan pengukuran RSSI pada jarak yang diketahui, kemudian melakukan kurva yang paling sesuai untuk mencocokkan poin data kami. Algoritme yang kami hasilkan ditunjukkan di bawah ini sebagai kode Java.

Perhatikan bahwa istilah "akurasi" di sini adalah iOS untuk jarak dalam meter. Rumus ini tidak sempurna, tetapi secara kasar mendekati apa yang dilakukan iOS.

protected static double calculateAccuracy(int txPower, double rssi) {
  if (rssi == 0) {
    return -1.0; // if we cannot determine accuracy, return -1.
  }

  double ratio = rssi*1.0/txPower;
  if (ratio < 1.0) {
    return Math.pow(ratio,10);
  }
  else {
    double accuracy =  (0.89976)*Math.pow(ratio,7.7095) + 0.111;    
    return accuracy;
  }
}   

Catatan: Nilai 0,89976, 7,7095, dan 0,111 adalah tiga konstanta yang dihitung saat mencari kurva yang paling sesuai dengan titik data terukur kami . YMMV

davidgyoung
sumber
4
Jawaban dan kode bagus David. Dari manakah nilai txPower berasal? Apakah nilai kalibrasi dilakukan di sisi klien (penerima)? Atau apakah itu metrik yang bisa Anda dapatkan dari suar?
rmooney
14
untuk apa nilai 0,89976, 7,7095 dan 0,111?
malhal
4
Dengan persamaan ini, saya mendapatkan 84457991114.574738 saat suar berada di 1/4 dari ponsel saya.
jdog
1
Eddystone adalah titik referensi 0 m, yrs. Pembagian vs. Pengurangan karena kita tidak menggunakan fungsi logaritmik dalam kasus ini. Pengurangan tidak berhasil untuk pencocokan kurva yang kami gunakan.
davidgyoung
1
@davidgyoung dapatkah Anda membagikan formula pencocokan kurva terbaik atau apa pun yang dengannya kami dapat mengetahui 3 nilai ini untuk perangkat kami?
Paresh Mayani
77

Saya dengan sangat teliti menyelidiki masalah akurasi / rssi / kedekatan dengan iBeacons dan saya benar-benar berpikir bahwa semua sumber daya di Internet (blog, posting di StackOverflow) salah.

davidgyoung (jawaban diterima,> 100 suara positif) mengatakan:

Perhatikan bahwa istilah "akurasi" di sini adalah iOS untuk jarak dalam meter.

Sebenarnya, kebanyakan orang mengatakan ini tapi saya tidak tahu kenapa! Dokumentasi membuatnya sangat jelas bahwa CLBeacon.proximity:

Menunjukkan akurasi horizontal satu sigma dalam meter. Gunakan properti ini untuk membedakan antara beacon dengan nilai kedekatan yang sama. Jangan gunakan untuk mengidentifikasi lokasi yang tepat untuk suar. Nilai akurasi dapat berfluktuasi karena interferensi RF.

Izinkan saya ulangi: satu akurasi sigma dalam meter . Semua 10 halaman teratas di google tentang subjek memiliki istilah "one sigma" hanya dalam kutipan dari dokumen, tetapi tidak satupun dari mereka menganalisis istilah tersebut, yang merupakan inti untuk memahami ini.

Sangat penting untuk menjelaskan apa sebenarnya akurasi satu sigma . Mengikuti URL untuk memulai: http://en.wikipedia.org/wiki/Standard_error , http://en.wikipedia.org/wiki/Uncertainty

Dalam dunia fisik, ketika Anda melakukan beberapa pengukuran, Anda selalu mendapatkan hasil yang berbeda (karena noise, distorsi, dll) dan seringkali hasilnya berupa distribusi Gaussian. Ada dua parameter utama yang menggambarkan kurva Gaussian:

  1. rata-rata (yang mudah dipahami, nilai puncak kurva terjadi).
  2. deviasi standar, yang menyatakan seberapa lebar atau sempit kurva tersebut. Kurva yang lebih sempit, akurasi yang lebih baik, karena semua hasil saling berdekatan. Jika kurva lebar dan tidak curam, maka pengukuran dari fenomena yang sama sangat berbeda satu sama lain, sehingga pengukuran memiliki kualitas yang buruk.

satu sigma adalah cara lain untuk menggambarkan seberapa sempit / lebarnya kurva gaussian.
Ini hanya mengatakan bahwa jika rata-rata pengukuran adalah X, dan satu sigma adalah σ, maka 68% dari semua pengukuran akan berada di antara X - σdan X + σ.

Contoh. Kami mengukur jarak dan mendapatkan distribusi gaussian sebagai hasilnya. Rata-rata adalah 10m. Jika σ adalah 4m, berarti 68% pengukuran berada di antara 6m dan 14m.

Saat kami mengukur jarak dengan beacon, kami mendapatkan RSSI dan nilai kalibrasi 1 meter, yang memungkinkan kami mengukur jarak dalam meter. Namun setiap pengukuran memberikan nilai yang berbeda, yang membentuk kurva gaussian. Dan satu sigma (dan akurasi) adalah akurasi pengukuran, bukan jarak!

Mungkin menyesatkan, karena ketika kita memindahkan beacon lebih jauh, satu sigma sebenarnya meningkat karena sinyalnya lebih buruk. Tetapi dengan tingkat daya suar yang berbeda, kita bisa mendapatkan nilai akurasi yang sangat berbeda tanpa benar-benar mengubah jarak. Semakin tinggi daya, semakin sedikit kesalahan.

Ada entri blog yang menganalisis masalah ini secara menyeluruh: http://blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/

Penulis memiliki hipotesis bahwa akurasi sebenarnya adalah jarak. Dia mengklaim bahwa beacon dari Kontakt.io rusak karena ketika dia meningkatkan daya ke nilai maksimal, nilai akurasinya sangat kecil untuk 1, 5, dan bahkan 15 meter. Sebelum meningkatkan daya, akurasi cukup dekat dengan nilai jarak. Menurut saya pribadi itu benar, karena semakin tinggi level daya, semakin sedikit dampak interferensi. Dan aneh mengapa beacon Estimote tidak berperilaku seperti ini.

Saya tidak mengatakan bahwa saya 100% benar, tetapi selain sebagai pengembang iOS, saya memiliki gelar dalam bidang elektronik nirkabel dan saya pikir kita tidak boleh mengabaikan istilah "one sigma" dari dokumen dan saya ingin memulai diskusi tentangnya.

Mungkin saja algoritme akurasi Apple hanya mengumpulkan pengukuran terbaru dan menganalisis distribusi gaussiannya. Dan begitulah cara menetapkan akurasi. Saya tidak akan mengecualikan kemungkinan bahwa mereka menggunakan akselerometer formulir info untuk mendeteksi apakah pengguna bergerak (dan seberapa cepat) untuk mengatur ulang nilai jarak distribusi sebelumnya karena mereka pasti telah berubah.

Andrzej Dąbrowski
sumber
Pengenalan yang sangat baik untuk korelasi "sigma". Juga akan menjadi aneh bagi seorang geek (bahkan seorang pecandu Apple) untuk menggunakan nama variabel "akurasi" ketika itu berarti "jarak". Setiap penentuan "jarak" atau "lokasi" RSSI disertai dengan "margin of error" (misalnya, Anda di sini +/- sejauh ini). Jadi masuk akal jika perpustakaan mereka memiliki fungsi untuk "jarak" dan fungsi untuk "akurasi".
Jesse Chisholm
@ r00dY penjelasan yang brilian harus saya katakan. Sekarang, tinggal pertanyaan jika Anda bisa membantu. Saya memiliki data kalibrasi untuk suar yang diukur pada 1m, 2m ... 15m, ... 20m dan seterusnya. Saya memiliki nilai jarak rata-rata untuk setiap jarak. Nah, dari delegasi pengelola lokasi ketika kita mendapatkan data beacon seperti beacon mayor, minor, rssi, dll apakah disarankan menggunakan jarak yang diperoleh dari kalibrasi di atas yang saya jelaskan? Tolong sarankan, bantuan apa pun akan dihargai. Terima kasih sebelumnya.
Alkesh Fudani
Apple accuracyadalah fungsi dari rssidan tx power. Bukan sepenuhnya tidak mungkin Estimote memutuskan untuk merekayasa balik accuracyfungsi tersebut dan mulai memberikan tx powernilai sedemikian rupa sehingga pembacaan accuracymemperkirakan jarak. Ini memberikan pengalaman pengembang yang lebih sederhana untuk memperkirakan jarak, tetapi melanggar definisi Apple tentang accuracy. Merek lain mungkin lebih setia pada definisi Apple accuracydan benar-benar memberikan "perkiraan 1 meter" daripada nilai rekayasa terbalik yang membuat accuracyperkiraan jarak.
Senseful
63

Daya keluaran iBeacon diukur (dikalibrasi) pada jarak 1 meter. Misalkan ini adalah -59 dBm (hanya sebuah contoh). IBeacon akan menyertakan nomor ini sebagai bagian dari iklan LE-nya.

Perangkat pendengar (iPhone, dll), akan mengukur RSSI perangkat. Misalkan, misalnya, ini adalah, katakanlah, -72 dBm.

Karena angka-angka ini dalam dBm, rasio daya sebenarnya adalah selisih dB. Begitu:

ratio_dB = txCalibratedPower - RSSI

Untuk mengubahnya menjadi rasio linier, kami menggunakan rumus standar untuk dB:

ratio_linear = 10 ^ (ratio_dB / 10)

Jika kita mengasumsikan kekekalan energi, maka kekuatan sinyal harus turun sebagai 1 / r ^ 2. Begitu:

power = power_at_1_meter / r^2. Memecahkan r, kita dapatkan:

r = sqrt(ratio_linear)

Dalam Javascript, kodenya akan terlihat seperti ini:

function getRange(txCalibratedPower, rssi) {
    var ratio_db = txCalibratedPower - rssi;
    var ratio_linear = Math.pow(10, ratio_db / 10);

    var r = Math.sqrt(ratio_linear);
    return r;
}

Perhatikan, jika Anda berada di dalam gedung baja, maka mungkin akan ada pantulan internal yang membuat peluruhan sinyal lebih lambat dari 1 / r ^ 2. Jika sinyal melewati tubuh manusia (air) maka sinyal tersebut akan dilemahkan. Sangat mungkin antena tidak memiliki gain yang sama di semua arah. Benda logam di dalam ruangan dapat membuat pola interferensi yang aneh. Dll, dll ... YMMV.

Mark Fassler
sumber
karena penasaran: bagaimana cara ratio_dB = txCalibratedPower - RSSIkerjanya? Karena kedua ukuran dalam dBm, saya akan menganggap hasilnya dalam dBm juga?
BlackWolf
3

Jarak ke sumber paket iklan berformat iBeacon diperkirakan dari atenuasi jalur sinyal yang dihitung dengan membandingkan kekuatan sinyal yang diterima yang diukur dengan daya pancar yang diklaim yang seharusnya dikodekan oleh pemancar dalam data iklan.

Skema berbasis kehilangan jalur seperti ini hanya perkiraan dan dapat bervariasi dengan hal-hal seperti sudut antena, objek yang menghalangi, dan mungkin lingkungan RF yang berisik. Sebagai perbandingan, sistem yang benar-benar dirancang untuk pengukuran jarak (GPS, Radar, dll) mengandalkan pengukuran waktu propagasi yang tepat, dalam kasus yang sama bahkan memeriksa fase sinyal.

Seperti yang ditunjukkan Jiaru, 160 kaki mungkin berada di luar jangkauan yang dimaksudkan, tetapi itu tidak berarti bahwa sebuah paket tidak akan pernah bisa lewat, hanya saja seseorang tidak boleh mengharapkannya bekerja pada jarak itu.

Chris Stratton
sumber
1

Itu mungkin, tetapi itu tergantung pada keluaran daya dari suar yang Anda terima, sumber rf lain di sekitar, rintangan dan faktor lingkungan lainnya. Hal terbaik untuk dilakukan adalah mencobanya di lingkungan yang Anda minati.

danh
sumber
1

Dengan beberapa telepon dan beacon di lokasi yang sama, akan sulit untuk mengukur kedekatan dengan tingkat akurasi yang tinggi. Coba gunakan aplikasi Android "b dan l bluetooth le scanner", untuk memvisualisasikan variasi kekuatan sinyal (jarak), untuk beberapa suar, dan Anda akan segera menemukan bahwa algoritme adaptif yang rumit mungkin diperlukan untuk menyediakan segala bentuk pengukuran kedekatan yang konsisten .

Anda akan melihat banyak solusi yang hanya menginstruksikan pengguna untuk "pegang telepon Anda di sini", untuk mengurangi frustrasi pelanggan.

BlueSpectrumz
sumber