Inputs data: |
SSB: Set of N objects Segmented Bounded Boxes |
SSB = |
KBB: Set of M objects EKF Bounded Boxes |
KBB = |
AT: Set of M Appearance Templates |
AT = |
Algorithm |
Defining Events for each Workstation: |
For each ϵ SSB, test E1, E2, and E3 in order |
E1 : |
if .not_matched (one in ) |
Then |
Trigger R1 |
go to OUT1 |
E2: |
if .not_matched (any KBB) AND |
.matched (one in ) |
Then |
Trigger R2 |
go to OUT1 |
E3: |
if size () ≪ matched size () AND |
.not_matched (one in ) |
Then |
Trigger R3 |
go to OUT1 |
OUT1: Next |
For each ϵ KBB, test E4, E5, and E6 in order |
E4: |
if .Outside (FOV) AND |
.not_matched (any SBB) |
Then |
Trigger R4 |
go to OUT2 |
E5: |
if size () < matched size () AND |
.intersected_with (any ) |
Then |
Trigger R5 |
go to OUT2 |
E6: |
if .matched () |
Then |
Trigger R6 |
go to OUT2 |
OUT2: Next |
Events Responses: |
Responses are done over: |
SRM (Server Response Module) and WRM (Workstation |
Response Module) |
R1: |
new WRM.register () |
WRM.create_object_template () |
WRM.send_to_SRM () |
SRM.associate ( ) get |
SRM.create_and_send_to_each_WRM ( ) |
R2: |
new WRM.register () |
WRM.send_to_SRM () |
SRM.associate () get |
SRM.create_and_send_to_each_WRM ( ) |
R3: |
For all |
if not .matched_any_of () AND .near () |
Then |
= WRM.get_object_of () |
if .number_of_containted_objects == 1 |
Then |
WRM.trigger_new_response () |
WRM.build_history_of () |
Else if .number_of_contained_objects > 1 |
Then |
.associate_to_objects_in () |
Next |
WRM.trigger_stable_response () |
R4: |
WRM.stop_tracking () |
R5: |
WRM.register_group () = + |
WRM.announce_to_SRM () |
SRM.associate () get |
SRM.create_and_send_to_each_WRM ( ) |
if WRM.search(,) = = True |
Then |
WRM.split () |
Else |
WRM.give_EKF_position () |
R6: |
WRM.track (); WRM.update_EKF (); WRM.update_template () |
WRM.send_to_SRM () |
SRM.associate () get |
SRM.create_and_send_to_each_WRM ( |