ARMA 和 运行 平均滤波器背后的理论,是否有任何替代算法来计算与信号 RSSI 的距离?

Theory behind ARMA and Running Average filter and are there any alternative algorithms for calculating distance from RSSI of signal?

我可以看到 Android 培根库具有两种测量距离的算法:运行 平均滤波器和 ARMA 滤波器。

这些与库的实现有什么关系(除了使用过滤器的公式)? 我在哪里可以找到有关这些解释其背后理论的背景信息? 是否有任何已知的替代算法可以研究和试用以测量距离?

在 BLE 信标上进行距离估计有两个基本步骤。

  1. 收集 RSSI 样本

  2. 将 RSSI 样本转换为距离估计值。

这两个步骤都有不同的可能算法。 ARMA 和 运行 平均过滤器是用于收集 RSSI 样本的两种不同算法。

了解信标以周期性速率发送数据包,通常为每秒 1-10 次。这些数据包中的每一个在被 phone 接收时都会有自己的信号电平测量值,称为 RSSI。由于无线电噪声和测量误差,每个 RSSI 样本都存在大量方差,这会导致距离估计出现大幅波动。因此,通常您需要获取多个 RSSI 样本并将它们平均在一起以减少此错误。

运行 平均算法只需要 20 秒的样本(默认情况下,时间段是可配置的),丢弃顶部和底部的 10% RSSI 读数并取余数的平均值。 这类似于 iOS 平均样本的方式,因此出于跨平台兼容性原因,它是库 的默认算法。但它有距离估计滞后的缺点,告诉你phone平均10秒前相对于信标的位置。这可能不适合 phone 相对于信标移动的用例。

ARMA(自回归移动平均)算法在统计上对较新的样本的加权比较旧的样本更重,从而导致更少的滞后在距离估计中。但它的行为可能有点不确定,并且 在不同的无线电条件下会受到更多变化的性能影响

哪种算法适合您取决于您​​的用例。测试两者以查看哪个对您的表现更好通常是最好的方法。虽然还有其他可能的数据收集算法,但这些是库中内置的仅有的两个。由于它是开源的,欢迎您创建自己的并将它们作为拉取请求提交。

对于第 2 步,还有许多可能的算法。最常见的两个是曲线拟合公式和路径损耗公式。曲线拟合公式是库的默认值,路径损耗替代方案仅在正在开发的库的一个分支中可用。欢迎您使用后者,但它需要从源代码构建库。同样,作为一个开源库,欢迎并鼓励您开发自己的替代算法。