@@ -170,22 +170,14 @@ <h1>Source code for motrackers.kalman_tracker</h1><div class="highlight"><pre>
170
170
< span class ="sd "> """</ span >
171
171
< span class ="sd "> Kalman Filter Implementation.</ span >
172
172
173
- < span class ="sd "> Parameters</ span >
174
- < span class ="sd "> ----------</ span >
175
- < span class ="sd "> transition_matrix: numpy.ndarray</ span >
176
- < span class ="sd "> Transition matrix of shape (n, n).</ span >
177
- < span class ="sd "> measurement_matrix: numpy.ndarray</ span >
178
- < span class ="sd "> Measurement matrix of shape (m, n).</ span >
179
- < span class ="sd "> control_matrix: numpy.ndarray</ span >
180
- < span class ="sd "> Control matrix of shape (m, n).</ span >
181
- < span class ="sd "> process_noise_covariance: numpy.ndarray</ span >
182
- < span class ="sd "> Covariance matrix of shape (n, n).</ span >
183
- < span class ="sd "> measurement_noise_covariance: numpy.ndarray</ span >
184
- < span class ="sd "> Covariance matrix of shape (m, m).</ span >
185
- < span class ="sd "> prediction_covariance: numpy.ndarray</ span >
186
- < span class ="sd "> Predicted (a priori) estimate covariance of shape (n, n).</ span >
187
- < span class ="sd "> initial_state: numpy.ndarray</ span >
188
- < span class ="sd "> Initial state of shape (n,).</ span >
173
+ < span class ="sd "> Args:</ span >
174
+ < span class ="sd "> transition_matrix (numpy.ndarray): Transition matrix of shape ``(n, n)``.</ span >
175
+ < span class ="sd "> measurement_matrix (numpy.ndarray): Measurement matrix of shape ``(m, n)``.</ span >
176
+ < span class ="sd "> control_matrix (numpy.ndarray): Control matrix of shape ``(m, n)``.</ span >
177
+ < span class ="sd "> process_noise_covariance (numpy.ndarray): Covariance matrix of shape ``(n, n)``.</ span >
178
+ < span class ="sd "> measurement_noise_covariance (numpy.ndarray): Covariance matrix of shape ``(m, m)``.</ span >
179
+ < span class ="sd "> prediction_covariance (numpy.ndarray): Predicted (a priori) estimate covariance of shape ``(n, n)``.</ span >
180
+ < span class ="sd "> initial_state (numpy.ndarray): Initial state of shape ``(n,)``.</ span >
189
181
190
182
< span class ="sd "> """</ span >
191
183
@@ -225,7 +217,7 @@ <h1>Source code for motrackers.kalman_tracker</h1><div class="highlight"><pre>
225
217
< span class ="sd "> u (float or int or numpy.ndarray): Control input. Default is `0`.</ span >
226
218
227
219
< span class ="sd "> Returns:</ span >
228
- < span class ="sd "> numpy.ndarray : State vector of shape (n,).</ span >
220
+ < span class ="sd "> numpy.ndarray : State vector of shape ` (n,)` .</ span >
229
221
230
222
< span class ="sd "> """</ span >
231
223
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> x</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> dot</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> transition_matrix</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> x</ span > < span class ="p "> )</ span > < span class ="o "> +</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> dot</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> control_matrix</ span > < span class ="p "> ,</ span > < span class ="n "> u</ span > < span class ="p "> )</ span >
@@ -241,10 +233,7 @@ <h1>Source code for motrackers.kalman_tracker</h1><div class="highlight"><pre>
241
233
< span class ="sd "> Measurement update of Kalman Filter.</ span >
242
234
243
235
< span class ="sd "> Args:</ span >
244
- < span class ="sd "> z (numpy.ndarray): Measurement vector of the system with shape (m,).</ span >
245
-
246
- < span class ="sd "> Returns:</ span >
247
-
236
+ < span class ="sd "> z (numpy.ndarray): Measurement vector of the system with shape ``(m,)``.</ span >
248
237
< span class ="sd "> """</ span >
249
238
< span class ="n "> y</ span > < span class ="o "> =</ span > < span class ="n "> z</ span > < span class ="o "> -</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> dot</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> measurement_matrix</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> x</ span > < span class ="p "> )</ span >
250
239
@@ -266,6 +255,15 @@ <h1>Source code for motrackers.kalman_tracker</h1><div class="highlight"><pre>
266
255
267
256
268
257
< span class ="k "> def</ span > < span class ="nf "> get_process_covariance_matrix</ span > < span class ="p "> (</ span > < span class ="n "> dt</ span > < span class ="p "> ):</ span >
258
+ < span class ="sd "> """</ span >
259
+ < span class ="sd "> Generates a process noise covariance matrix for constant acceleration motion.</ span >
260
+
261
+ < span class ="sd "> Args:</ span >
262
+ < span class ="sd "> dt (float): Timestep.</ span >
263
+
264
+ < span class ="sd "> Returns:</ span >
265
+ < span class ="sd "> numpy.ndarray: Process covariance matrix of shape `(3, 3)`.</ span >
266
+ < span class ="sd "> """</ span >
269
267
< span class ="c1 "> # a = np.array([</ span >
270
268
< span class ="c1 "> # [0.25 * dt ** 4, 0.5 * dt ** 3, 0.5 * dt ** 2],</ span >
271
269
< span class ="c1 "> # [0.5 * dt ** 3, dt ** 2, dt],</ span >
@@ -281,8 +279,17 @@ <h1>Source code for motrackers.kalman_tracker</h1><div class="highlight"><pre>
281
279
282
280
283
281
< span class ="k "> def</ span > < span class ="nf "> get_transition_matrix</ span > < span class ="p "> (</ span > < span class ="n "> dt</ span > < span class ="p "> ):</ span >
284
- < span class ="n "> a</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> array</ span > < span class ="p "> ([[</ span > < span class ="mf "> 1.</ span > < span class ="p "> ,</ span > < span class ="n "> dt</ span > < span class ="p "> ,</ span > < span class ="n "> dt</ span > < span class ="o "> *</ span > < span class ="n "> dt</ span > < span class ="o "> *</ span > < span class ="mf "> 0.5</ span > < span class ="p "> ],</ span > < span class ="p "> [</ span > < span class ="mf "> 0.</ span > < span class ="p "> ,</ span > < span class ="mf "> 1.</ span > < span class ="p "> ,</ span > < span class ="n "> dt</ span > < span class ="p "> ],</ span > < span class ="p "> [</ span > < span class ="mf "> 0.</ span > < span class ="p "> ,</ span > < span class ="mf "> 0.</ span > < span class ="p "> ,</ span > < span class ="mf "> 1.</ span > < span class ="p "> ]])</ span >
285
- < span class ="k "> return</ span > < span class ="n "> a</ span >
282
+ < span class ="sd "> """</ span >
283
+ < span class ="sd "> Generate the transition matrix for constant acceleration motion.</ span >
284
+
285
+ < span class ="sd "> Args:</ span >
286
+ < span class ="sd "> dt (float): Timestep.</ span >
287
+
288
+ < span class ="sd "> Returns:</ span >
289
+ < span class ="sd "> numpy.ndarray: Transition matrix of shape ``(3, 3)``.</ span >
290
+
291
+ < span class ="sd "> """</ span >
292
+ < span class ="k "> return</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> array</ span > < span class ="p "> ([[</ span > < span class ="mf "> 1.</ span > < span class ="p "> ,</ span > < span class ="n "> dt</ span > < span class ="p "> ,</ span > < span class ="n "> dt</ span > < span class ="o "> *</ span > < span class ="n "> dt</ span > < span class ="o "> *</ span > < span class ="mf "> 0.5</ span > < span class ="p "> ],</ span > < span class ="p "> [</ span > < span class ="mf "> 0.</ span > < span class ="p "> ,</ span > < span class ="mf "> 1.</ span > < span class ="p "> ,</ span > < span class ="n "> dt</ span > < span class ="p "> ],</ span > < span class ="p "> [</ span > < span class ="mf "> 0.</ span > < span class ="p "> ,</ span > < span class ="mf "> 0.</ span > < span class ="p "> ,</ span > < span class ="mf "> 1.</ span > < span class ="p "> ]])</ span >
286
293
287
294
288
295
< div class ="viewcode-block " id ="KFTrackerConstantAcceleration "> < a class ="viewcode-back " href ="../../includeme/apidocuments.html#motrackers.kalman_tracker.KFTrackerConstantAcceleration "> [docs]</ a > < span class ="k "> class</ span > < span class ="nc "> KFTrackerConstantAcceleration</ span > < span class ="p "> (</ span > < span class ="n "> KalmanFilter</ span > < span class ="p "> ):</ span >
@@ -359,12 +366,13 @@ <h1>Source code for motrackers.kalman_tracker</h1><div class="highlight"><pre>
359
366
360
367
< div class ="viewcode-block " id ="KFTrackerSORT "> < a class ="viewcode-back " href ="../../includeme/apidocuments.html#motrackers.kalman_tracker.KFTrackerSORT "> [docs]</ a > < span class ="k "> class</ span > < span class ="nc "> KFTrackerSORT</ span > < span class ="p "> (</ span > < span class ="n "> KalmanFilter</ span > < span class ="p "> ):</ span >
361
368
< span class ="sd "> """</ span >
369
+ < span class ="sd "> Kalman filter for ``SORT``.</ span >
362
370
363
371
< span class ="sd "> Args:</ span >
364
- < span class ="sd "> bbox (numpy.ndarray): Bounding box coordinates as (xmid, ymid, area, aspect_ratio).</ span >
372
+ < span class ="sd "> bbox (numpy.ndarray): Bounding box coordinates as `` (xmid, ymid, area, aspect_ratio)`` .</ span >
365
373
< span class ="sd "> time_step (float or int): Time step.</ span >
366
374
< span class ="sd "> process_noise_scale (float): Scale (a.k.a covariance) of the process noise.</ span >
367
- < span class ="sd "> measurement_noise_scale (float): Scale (a.k.a covariance) of the measurement noise.</ span >
375
+ < span class ="sd "> measurement_noise_scale (float): Scale (a.k.a. covariance) of the measurement noise.</ span >
368
376
< span class ="sd "> """</ span >
369
377
< span class ="k "> def</ span > < span class ="fm "> __init__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> bbox</ span > < span class ="p "> ,</ span > < span class ="n "> process_noise_scale</ span > < span class ="o "> =</ span > < span class ="mf "> 1.0</ span > < span class ="p "> ,</ span > < span class ="n "> measurement_noise_scale</ span > < span class ="o "> =</ span > < span class ="mf "> 1.0</ span > < span class ="p "> ,</ span > < span class ="n "> time_step</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> ):</ span >
370
378
< span class ="k "> assert</ span > < span class ="n "> bbox</ span > < span class ="o "> .</ span > < span class ="n "> shape</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ]</ span > < span class ="o "> ==</ span > < span class ="mi "> 4</ span > < span class ="p "> ,</ span > < span class ="n "> bbox</ span > < span class ="o "> .</ span > < span class ="n "> shape</ span >
0 commit comments