dwm1000: Reset estimate when we loose the dwm so the sensor values is
authorErik Andresen <erik@vontaene.de>
Mon, 30 Jul 2018 11:14:19 +0000 (13:14 +0200)
committerErik Andresen <erik@vontaene.de>
Mon, 30 Jul 2018 11:14:19 +0000 (13:14 +0200)
trusted more then the estimate

scripts/dwm1000.py

index 535d81e..b237516 100755 (executable)
@@ -64,9 +64,9 @@ class DW1000(threading.Thread):
 
 class Position:
        def __init__(self):
-               R = np.matrix([[0.045, 0.5], [0.0, 0.008]])     # Varianz des Messfehlers
-               P_est = 1e-3 * np.eye(2)                        # Fehlerkovarianz
-               Q = np.matrix([[0.001, 0.0], [0.0, 0.00001]])   # Systemrauschen
+               R = np.matrix([[0.5, 0.0], [0.0, 0.2]])         # Varianz des Messfehlers
+               P_est = 1e50 * np.eye(2)                        # Fehlerkovarianz
+               Q = np.matrix([[0.001, 0.0], [0.0, 0.0001]])    # Systemrauschen
                self.filter_xy = simple_kalman(np.array([[1.0, 0.0]]).T, P_est, Q, R)
                self.speed_x = 0
                self.speed_y = 0
@@ -106,6 +106,7 @@ class Position:
                        self.filter_xy.set_measure_cov(np.matrix([[cov_00, 0.0], [0.0, cov_11]]))
                else:
                        pos = self.filter_xy.x_est
+                       self.filter_xy.P_est = np.matrix(1e50 * np.eye(2)) # reset estimate when lost
 
 
                x = pos.item((0, 0))