gpt4 book ai didi

android - RSSI BLE android的距离计算

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:12 25 4
gpt4 key购买 nike

我知道有很多关于我的问题的关于 stackoverflow 的问题,但我想知道是否有任何方法可以获得与 RSSI 的确切距离。

我已关注 this link和其他一些 git library methods for distance calculation以及这个 tutorial .但我无法得到正确的解决方案。

这是我用来测量距离的:

protected double calculateDistance(float txPower, double rssi) {

if (rssi == 0) {
return -1.0; // if we cannot determine distance, 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;
}
}

当我调用这个方法时,我传递了 standard和 rssi 我从我的 mLeScanCallBack() 得到的
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {

@Override
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
runOnUiThread(new Runnable() {

@Override
public void run() {

BluetoothDeviceModel bluetoothDeviceModel = new BluetoothDeviceModel(device, rssi);

mLeDeviceListAdapter.addDevice(bluetoothDeviceModel, rssi, bluetoothDeviceModel.device.getAddress());
mLeDeviceListAdapter.notifyDataSetChanged();

if (mapBluetooth != null) {
mapBluetooth.put(bluetoothDeviceModel.getDevice().getAddress(), bluetoothDeviceModel);
mLeDeviceListAdapter.refresh(mapBluetooth);
}
}
});
}
};

What Problem i'm facing?



上面的代码没有任何问题。它给了我距离,但我对此并不满意,因为它不是正确的距离。那么谁能告诉我是否可以通过上述方法获得确切的距离,或者还有其他方法吗?

最佳答案

我也在做同样的事情。使用此方法,您可以计算距离,但该距离经常变化。这是因为 RSSI 值也经常变化。

您需要做的是平滑您的结果,为此您必须申请 卡尔曼滤波器 或 ( 线性二次估计 )。如果您想坚持使用卡尔曼滤波器,请从这里开始。
Beacon Tracking

我仍然在为我的项目寻找更好的卡尔曼滤波器实现。或者,您可以平滑您的 RSSI 值

𝑅𝑆𝑆𝐼𝑠𝑚𝑜𝑜𝑡h = 𝛼 ∗ 𝑅𝑆𝑆𝐼𝑛 + (1 − 𝛼) ∗ 𝑅𝑆𝑆𝐼𝑛−1



𝑅𝑆𝑆𝐼𝑛 是最近的 𝑅𝑆𝑆𝐼 值,而 𝑅𝑆𝑆𝐼𝑛−1 是 𝑅𝑆𝑆𝐼 直到前一个 𝑅𝑆的平均值。

𝛼 从 0 到 1 变化 [考虑 𝛼=0.75]

来源:- RSSI Smoothing

关于android - RSSI BLE android的距离计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36399927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com