forked from nasa/astrobee
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchoreographer_fsm.dot
144 lines (128 loc) · 5.62 KB
/
choreographer_fsm.dot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# dot -Tpdf choreographer_fsm.dot -o choreographer_fsm.pdf
digraph G {
graph [label="CHOREOGRAPHER\n", labelloc=t, fontsize=50];
size="11.7,8.3!";
node [shape=box, width=2.5, fontsize=12, fontname="helvetica"];
edge [arrowsize=2, weight=2., fontsize=12, fontname="helvetica"];
fontname = "helvetica";
subgraph cluster {
style=invis;
node [shape=box, style=filled, fillcolor=orange, color=black];
IDLING;
node [shape=box, style=filled, fillcolor=lightpink, color=black];
STOPPING;
node [shape=box, style=filled, fillcolor=aquamarine, color=black];
PREPPING;
}
node [shape=diamond, style=filled, fillcolor=lightblue, color=black];
INITIALIZING;
node [shape=box, style=filled, fillcolor=lightblue, color=black];
STOPPED [label="STOPPED | IDLE"];
node [shape=box, style=filled, fillcolor=gold, color=black];
BOOTSTRAPPING;
PLANNING;
VALIDATING;
PREPARING;
CONTROLLING;
REPLANNING;
REVALIDATING;
HALTING;
node [shape=ellipse, style=filled, fontcolor=white, fillcolor=black, color=white];
aligned_with_all [label="Are we tolerant to all poses?"];
within_tolerance [label="Are we at the first pose?"];
enable_bootstrapping [label="enable_bootstrapping"];
enable_replanning [label="enable_replanning"];
//enough_time [label="Is there enough time?"];
enable_validation [label="enable_validation"];
enable_revalidation [label="enable_validation"];
replan_N_times [label="replan_N_times"];
# Actions
INITIALIZING -> IDLING
[label="[0]\nREADY\nControl(IDLE)", color=blue];
IDLING -> STOPPED
[label="[1]\nCONTROL_SUCCESS\n-\nCONTROL_FAILED\nFault(CANNOT_STOP)", color=blue];
STOPPED -> within_tolerance
[label="[2]\nGOAL_EXEC", color=black];
within_tolerance -> enable_validation;
within_tolerance -> enable_bootstrapping [style=dashed];
enable_bootstrapping -> BOOTSTRAPPING
[label="Plan(pose1 ... poseN)", color=black];
enable_bootstrapping -> STOPPED
[label="Result(BOOTSTRAPPING_NOT_ALLOWED)", color=red, style=dashed];
BOOTSTRAPPING -> enable_validation
[label="[3]\nPLAN_SUCCESS"];
BOOTSTRAPPING -> STOPPED
[label="[4]\nPLAN_FAILED\nReturn(PLAN_FAILED)\n-\nGOAL_CANCEL\nResult(CANCELLED)", color=red];
STOPPED -> aligned_with_all
[label="[5]\nGOAL_MOVE", color=black];
aligned_with_all -> PLANNING
[label="Plan(segment[0])", color=black, style=dashed];
aligned_with_all -> STOPPED
[label="Result(ALEADY_THERE)", color=darkgreen];
PLANNING -> enable_validation
[label="[6]\nPLAN_SUCCESS", color=black];
PLANNING -> STOPPED
[label="[7]\nPLAN_FAILED\nReturn(PLAN_FAILED)\n-\nGOAL_CANCEL\nResult(CANCELLED)", color=red];
VALIDATING -> PREPARING
[label="[8]\nVALIDATE_SUCCESS\nSpeed(flight_mode)", color=black];
PREPARING -> CONTROLLING
[label="[23]\nPMC_READY\nControl(segment)", color=black];
PREPARING -> STOPPED
[label="[24]\nPMC_TIMEOUT\nResult(PMC_FAILED)\n-\nGOAL_CANCEL\nResult(CANCELLED)\n***\nControl(STOP)", color=red];
VALIDATING -> STOPPED
[label="[9]\nVALIDATE_FAILED\nReturn(VALIDATE_FAILED)\n-\nGOAL_CANCEL\nResult(CANCELLED)", color=red];
REPLANNING -> enable_revalidation
[label="[10]\nPLAN_SUCCESS", color=black];
REVALIDATING -> CONTROLLING
[label="[11]\nVALIDATE_SUCCESS\nControl(segment)", color=black];
REVALIDATING -> STOPPED
[label="[12]\nVALIDATE_FAILED\nResult(REVALIDATE_FAILED)\n-\nGOAL_CANCEL\nResult(CANCELLED)\n***\n\nControl(STOP)", color=red];
CONTROLLING -> STOPPED
[label="[13]\nCONTROL_SUCCESS\nResult(SUCCESS)", color=darkgreen];
REPLANNING -> STOPPED
[label="[14]\nGOAL_CANCEL\nResult(CANCELLED)\n***\n\nControl(STOP)", color=red];
REPLANNING -> replan_N_times
[label="[14]\nPLAN_FAILED", color=black];
replan_N_times -> REPLANNING
[label="Plan(states_)",color=black];
replan_N_times -> STOPPED
[label="replanned N times\nResult(REPLAN_FAILED)"]
CONTROLLING -> STOPPED
[label="[15]\nCONTROL_FAILED\nResult(CONTROL_FAILED)\n-\nGOAL_CANCEL\nResult(CANCELLED)\n***\nControl(STOP)", color=red];
enable_validation -> VALIDATING
[label="Validate(Segment)"];
enable_validation -> PREPARING
[label="Speed(flight_mode)", style=dashed];
CONTROLLING -> enable_replanning
[label="[16]\nOBSTACLE_DETECTED", color=black];
enable_replanning -> HALTING
[label="Control(STOP)", color=black];
enable_replanning -> STOPPED
[label="Result(OBSTACLE_DETECTED)\nControl(STOP)", color=red];
HALTING -> REPLANNING
[label="[28]\nCONTROL_SUCCESS\nPlan(states_)", color=black];
HALTING -> STOPPED
[label="[29]\nGOAL_CANCEL\nResult(CANCELLED)\nResult(CONTROL_FAILED)", color=red]
enable_revalidation -> REVALIDATING
[label="Validate(segment)"];
enable_revalidation -> CONTROLLING
[label="\nControl(segment)",style=dashed];
STOPPED -> STOPPING
[label="[17]\nGOAL_STOP\nSpeed(flight_mode)\nControl(STOP)", color=black];
STOPPING -> STOPPED
[label="[18]\nCONTROL_SUCCESS\nResult(SUCCESS)", color=darkgreen];
STOPPING -> STOPPED
[label="[19]\nCONTROL_FAILED\nResult(CONTROL_FAILED)\n-\nGOAL_CANCEL\nResult(CANCELLED)", color=red];
STOPPED -> IDLING
[label="[20]\nGOAL_IDLE\nSpeed(flight_mode)\nControl(IDLE)", color=black];
IDLING -> STOPPED
[label="[21]\nCONTROL_SUCCESS\nResult(SUCCESS)", color=darkgreen];
IDLING -> STOPPED
[label="[22]\nCONTROL_FAILED\nResult(CONTROL_FAILED)\n-\nGOAL_CANCEL\nResult(CANCELLED)", color=red];
STOPPED -> PREPPING
[label="[25]\nGOAL_PREP\nSpeed(flight_mode)", color=black];
PREPPING -> STOPPED
[label="[26]\nPMC_READY\nResult(SUCCESS)", color=darkgreen];
PREPPING -> STOPPED
[label="[27]\nPMC_TIMEOUT\nResult(PMC_TIMEOUT)\n-\nGOAL_CANCEL\nResult(CANCELLED)", color=red];
}