3 subgraph asynchronous_state_machine {
8 competing [label=<competing>]
9 competing -> survey [style = dashed]
10 subgraph cluster_competing {
12 survey [peripheries=2]
13 approach_target [label=<approach_target>]
14 approach_target -> recognize_init [style = dashed]
15 subgraph cluster_approach_target {
16 label = "approach_target"
17 recognize_init [peripheries=2]
18 get_target_back [label=<get_target_back>]
19 get_target_load [label=<get_target_load>]
20 get_target_touch [label=<get_target_touch>]
21 get_target_turn [label=<get_target_turn>]
22 recognize [label=<recognize>]
23 recognize_init [label=<recognize_init>]
25 go_home [label=<go_home>]
26 move_around [label=<move_around>]
27 survey [label=<survey>]
30 wait_for_start [label=<wait_for_start>]
32 init -> wait_for_start [label = "evEntry"]
33 wait_for_start -> competing [label = "evStart"]
34 survey -> move_around [label = "evTimer"]
35 survey -> move_around [label = "evMotionError"]
36 survey -> approach_target [label = "evTargetDetected"]
37 approach_target -> go_home [label = "evReturn"]
38 approach_target -> move_around [label = "evReturn"]
39 approach_target -> approach_target [label = "evMotionError"]
40 approach_target -> move_around [label = "evMotionError"]
41 move_around -> survey [label = "evMotionDone"]
42 move_around -> survey [label = "evMotionError"]
43 go_home -> go_home [label = "evTimer"]
44 recognize_init -> recognize [label = "evRunSubFSM"]
45 recognize -> get_target_turn [label = "evCameraDone"]
46 get_target_turn -> get_target_load [label = "evMotionDone"]
47 get_target_turn -> get_target_touch [label = "evMotionDone"]
48 get_target_touch -> get_target_turn [label = "evMotionDone"]
49 get_target_load -> get_target_back [label = "evTimer"]