Spaces:
Runtime error
Runtime error
Create tracking/ball_tracker.py
Browse files- tracking/ball_tracker.py +20 -0
tracking/ball_tracker.py
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import numpy as np
|
| 2 |
+
from filterpy.kalman import KalmanFilter
|
| 3 |
+
|
| 4 |
+
class BallTracker:
|
| 5 |
+
def __init__(self):
|
| 6 |
+
self.kf = KalmanFilter(dim_x=4, dim_z=2)
|
| 7 |
+
self.kf.F = np.array([[1,0,1,0], [0,1,0,1], [0,0,1,0], [0,0,0,1]])
|
| 8 |
+
self.kf.H = np.array([[1,0,0,0], [0,1,0,0]])
|
| 9 |
+
self.kf.P *= 10.
|
| 10 |
+
self.kf.R *= 0.5
|
| 11 |
+
self.kf.Q *= 0.01
|
| 12 |
+
self.initialized = False
|
| 13 |
+
|
| 14 |
+
def update(self, measurement):
|
| 15 |
+
if not self.initialized:
|
| 16 |
+
self.kf.x[:2] = np.array([[measurement[0]], [measurement[1]]])
|
| 17 |
+
self.initialized = True
|
| 18 |
+
self.kf.predict()
|
| 19 |
+
self.kf.update(measurement)
|
| 20 |
+
return self.kf.x[:2].flatten()
|