So che ci sono molte domande sullo stackoverflow relative alla mia domanda, ma vorrei sapere se esiste un modo per ottenere la distanza esatta da RSSI.Calcolo della distanza da RSSI BLE android
Ho seguito this link e altri git library methods for distance calculation e questo tutorial. Ma non riesco a ottenere la soluzione corretta.
questo è quello che sto usando per misurare la distanza:
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;
}
}
Quando chiamo questo metodo passo il standard e RSSI cosa sto ricevo dal mio 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);
}
}
});
}
};
Quale problema sto affrontando?
Non c'è niente di sbagliato nel codice sopra. Mi dà la distanza ma non sono soddisfatto perché non è la distanza corretta. Quindi qualcuno può dirmi se è possibile ottenere la distanza esatta con il metodo sopra o se c'è un altro modo?
Sono nella stessa situazione come lei, i segnali RSSI non sono perfetti, perché l'ambiente ci sono molti fattori che distorce i segnali come il magnetismo e altre cose che influenzano i segnali. Ci sono diversi filtri che rimuovono i segnali di rumore come "Filtro Kalman" o "Filtro particelle" ma non ho trovato il modo di applicarlo quando si dispone di un array di segnale RSSI, se trovi un modo di dirmi per favore! –
hai trovato qualche soluzione? – Araf
Nessuno mi dispiace finché non ho ottenuto una soluzione accurata per questo calcolo –