Tôi biết có rất nhiều câu hỏi về stackoverflow liên quan đến câu hỏi của tôi, nhưng tôi muốn biết nếu có bất kỳ cách nào để có được khoảng cách chính xác từ RSSI.Tính toán khoảng cách từ RSSI BLE android
Tôi đã theo dõi this link và một số khác git library methods for distance calculation cũng như điều này tutorial. Nhưng tôi không thể có được giải pháp đúng.
Đây là những gì tôi đang sử dụng để đo khoảng cách:
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;
}
}
Khi tôi gọi phương pháp này tôi vượt qua standard và RSSI những gì tôi đang nhận được từ mLeScanCallBack của tôi()
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);
}
}
});
}
};
Tôi đang gặp phải vấn đề gì?
Không có gì sai với mã ở trên. Nó cho tôi khoảng cách nhưng tôi không hài lòng với điều đó bởi vì nó không phải là khoảng cách chính xác. Vì vậy, bất cứ ai có thể cho tôi biết nếu nó có thể để có được khoảng cách chính xác với phương pháp trên hoặc nếu có cách nào khác?
Tôi đang trong tình cảnh tương tự như bạn, các tín hiệu RSSI không hoàn hảo, bởi vì đối với môi trường có nhiều yếu tố làm méo tín hiệu như từ tính và những thứ khác khiến tín hiệu bị ảnh hưởng. Có một số bộ lọc loại bỏ tín hiệu nhiễu là "Bộ lọc Kalman" hoặc "Bộ lọc hạt" nhưng tôi không tìm thấy cách áp dụng nó khi bạn có một mảng tín hiệu RSSI, nếu bạn tìm cách cho tôi biết! –
bạn có nhận được giải pháp nào không? – Araf
Không có người đàn ông xin lỗi cho đến khi tôi không nhận được giải pháp chính xác cho phép tính này –