使用 python 分别在每个 BLE 设备上应用卡尔曼滤波的方法
A way to apply Kalman filtering on each BLE device separately using python
我正在尝试使用卡尔曼滤波获取每个 BLE 信标的滤波 RSSI 值。我不能在所有 BLE 设备上使用单个卡尔曼滤波实例,如何为每个 BLE 设备映射或分配一个卡尔曼滤波器实例。我知道它与地图有关,但不知道如何实现它。
任何帮助将不胜感激。
from bluepy.btle import Scanner
from kalman import KalmanFilter
scanner = Scanner().withDelegate(ScanDelegate())
blemacid = ["d7:b1:41:09:ca:c2","ed:9d:41:19:4c:43","fe:98:f1:d3:85:4f","de:0d:34:4d:66:5e"]
kalmanfilter=map(KalmanFilter(0.008,0.1),blemacid)
while(True):
devices=scanner.scan(3.0)
for device in devices:
if device.addr in blemacid:
print ("DEV={} RSSI ={}".format(device.addr,kalmanfilter.filter(device.rssi)))
卡尔曼滤波器实现在这里kalman filer
我认为 map
不是解决此问题的正确方法。存储在字典中并由设备地址键入的过滤器实例似乎是更好的解决方案。例如:
from bluepy.btle import Scanner
from kalman import KalmanFilter
scanner = Scanner().withDelegate(ScanDelegate())
blemacid ={"d7:b1:41:09:ca:c2": KalmanFilter(0.008,0.1),
"ed:9d:41:19:4c:43": KalmanFilter(0.008,0.1),
"fe:98:f1:d3:85:4f": KalmanFilter(0.008,0.1),
"de:0d:34:4d:66:5e": KalmanFilter(0.008,0.1)}
while(True):
devices=scanner.scan(3.0)
for device in devices:
if device.addr in blemacid.keys():
print("DEV={} RSSI ={}".format(device.addr,blemacid[device.addr].filter(device.rssi)))
我还要注意 device.addr
returns 小写地址,与 blemacid
键中的地址相同,因此地址比较工作正常。
我正在尝试使用卡尔曼滤波获取每个 BLE 信标的滤波 RSSI 值。我不能在所有 BLE 设备上使用单个卡尔曼滤波实例,如何为每个 BLE 设备映射或分配一个卡尔曼滤波器实例。我知道它与地图有关,但不知道如何实现它。 任何帮助将不胜感激。
from bluepy.btle import Scanner
from kalman import KalmanFilter
scanner = Scanner().withDelegate(ScanDelegate())
blemacid = ["d7:b1:41:09:ca:c2","ed:9d:41:19:4c:43","fe:98:f1:d3:85:4f","de:0d:34:4d:66:5e"]
kalmanfilter=map(KalmanFilter(0.008,0.1),blemacid)
while(True):
devices=scanner.scan(3.0)
for device in devices:
if device.addr in blemacid:
print ("DEV={} RSSI ={}".format(device.addr,kalmanfilter.filter(device.rssi)))
卡尔曼滤波器实现在这里kalman filer
我认为 map
不是解决此问题的正确方法。存储在字典中并由设备地址键入的过滤器实例似乎是更好的解决方案。例如:
from bluepy.btle import Scanner
from kalman import KalmanFilter
scanner = Scanner().withDelegate(ScanDelegate())
blemacid ={"d7:b1:41:09:ca:c2": KalmanFilter(0.008,0.1),
"ed:9d:41:19:4c:43": KalmanFilter(0.008,0.1),
"fe:98:f1:d3:85:4f": KalmanFilter(0.008,0.1),
"de:0d:34:4d:66:5e": KalmanFilter(0.008,0.1)}
while(True):
devices=scanner.scan(3.0)
for device in devices:
if device.addr in blemacid.keys():
print("DEV={} RSSI ={}".format(device.addr,blemacid[device.addr].filter(device.rssi)))
我还要注意 device.addr
returns 小写地址,与 blemacid
键中的地址相同,因此地址比较工作正常。