ram*_*ssa 107 bluetooth objective-c ios bluetooth-lowenergy ibeacon
试图掌握与ibeacon(beacon/bluetooth-le/ble)之间距离的基本概念.有关ibeacon可以测量多远的真实文档吗?可以说我距离300英尺...... ibeacon有可能检测到这个吗?
dav*_*ung 215
iOS提供的距离估计基于iBeacon信号强度(rssi)与校准发射机功率(txPower)之比.txPower是距离1米处rssi的已知测量信号强度.必须使用此txPower值校准每个iBeacon,以允许精确的距离估计.
当我们构建Android iBeacon库时,我们必须提出我们自己的独立算法,因为iOS CoreLocation源代码不可用.我们在已知距离处测量了一堆rssi测量值,然后根据我们的数据点进行了最佳拟合曲线.我们提出的算法如下所示为Java代码.
请注意,这里的术语"准确度"是iOS代表距离(米).这个公式并不完美,但它大致接近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;
}
}
Run Code Online (Sandbox Code Playgroud)
注意:值0.89976,7.7095和0.111是求解我们测量数据点的最佳拟合曲线时计算的三个常数.因人而异
And*_*ski 72
我正在非常彻底地调查与iBeacons的准确性/ rssi /接近度问题,我真的认为互联网上的所有资源(博客,StackOverflow中的帖子)都是错误的.
davidgyoung(接受回答,> 100赞成)说:
请注意,这里的术语"准确度"是iOS代表距离(米).
实际上,大多数人都说这个,但我不明白为什么!文档非常清楚CLBeacon.proximity:
以米为单位表示一西格玛水平精度.使用此属性可区分具有相同邻近值的信标.不要用它来识别信标的精确位置.由于RF干扰,准确度值可能会波动.
让我再说一遍:以米为单位的西格玛精度.谷歌关于这个主题的所有10个首页都只有文档引用的术语"一个西格玛",但没有一个分析这个术语,这是理解这一点的核心.
非常重要的是解释实际上一个西格玛的准确性.以下网址开头:http://en.wikipedia.org/wiki/Standard_error,http://en.wikipedia.org/wiki/Uncertainty
在物理世界中,当你进行一些测量时,你总会得到不同的结果(因为噪声,失真等),并且通常会形成高斯分布.描述高斯曲线有两个主要参数:
一个sigma是另一种描述窄/宽是高斯曲线的方法.
它简单地说,如果测量的平均值是X,并且一个西格玛是σ,那么所有测量的68%将在X - ?和之间X + ?.
例.我们测量距离并得到高斯分布.平均值是10米.如果σ为4m,则意味着68%的测量值在6m到14m之间.
当我们用信标测量距离时,我们得到RSSI和1米校准值,这允许我们测量以米为单位的距离.但每次测量都会给出不同的值,形成高斯曲线.而一个西格玛(和准确度)是测量的准确性,而不是距离!
这可能会产生误导,因为当我们将信标移得更远时,一个sigma实际上会增加,因为信号更糟.但是使用不同的信标功率级别,我们可以获得完全不同的精度值,而无需实际改变距离.功率越高,误差越小.
有一个博客文章彻底分析了这个问题:http://blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/
作者假设精确度实际上是距离.他声称来自Kontakt.io的信标在将功率增加到最大值时是错误的,准确度值非常小,只有1,5米甚至15米.在增加功率之前,精度非常接近距离值.我个人认为这是正确的,因为功率越高,干扰影响越小.令人奇怪的是,为什么Estimote信标不会这样做.
我并不是说我100%正确,但除了是iOS开发人员之外我还拥有无线电子学位,我认为我们不应该忽略来自文档的"一个sigma"术语,我想开始讨论它.
Apple的精确算法可能只收集最近的测量值并分析它们的高斯分布.这就是它如何确定准确性.我不排除他们使用信息表格加速计来检测用户是否正在移动(以及多快)以重置先前的分发距离值的可能性,因为他们肯定已经改变了.
Mar*_*ler 61
iBeacon输出功率在1米的距离内测量(校准).我们假设这是-59 dBm(仅举例).iBeacon将此号码作为其LE广告的一部分.
听音装置(iPhone等)将测量设备的RSSI.例如,假设这是-72 dBm.
由于这些数字以dBm为单位,因此功率的比率实际上是以dB为单位的差值.所以:
ratio_dB = txCalibratedPower - RSSI
Run Code Online (Sandbox Code Playgroud)
要将其转换为线性比率,我们使用dB的标准公式:
ratio_linear = 10 ^ (ratio_dB / 10)
Run Code Online (Sandbox Code Playgroud)
如果我们假设能量守恒,则信号强度必须下降为1/r ^ 2.所以:
power = power_at_1_meter / r^2.解决r,我们得到:
r = sqrt(ratio_linear)
Run Code Online (Sandbox Code Playgroud)
在Javascript中,代码如下所示:
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;
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果你在钢铁建筑内,那么可能会有内部反射使信号衰减慢于1/r ^ 2.如果信号通过人体(水),那么信号将被衰减.天线很可能在所有方向上没有相同的增益.房间内的金属物体可能会产生奇怪的干涉图案.等等...... YMMV.
| 归档时间: |
|
| 查看次数: |
120356 次 |
| 最近记录: |