--- /dev/null
+digraph statecharts {
+ratio = 1.5;
+ subgraph FSMMotion {
+ MotionBase [peripheries=2]
+ MotionBase [label=<MotionBase>]
+ MotionBase -> wait_for_command [style = dashed]
+ subgraph cluster_MotionBase {
+ label = "MotionBase"
+ wait_for_command [peripheries=2]
+ lost [label=<lost>]
+ movement [label=<movement>]
+ wait_and_try_again [label=<wait_and_try_again>]
+ wait_for_command [label=<wait_for_command>]
+ }
+ }
+ subgraph asynchronous_state_machine {
+ MotionBase [peripheries=2]
+ }
+ wait_for_command -> movement [label = "evNewTarget"]
+ wait_for_command -> wait_and_try_again [label = "evNewTarget"]
+ movement -> lost [label = "evTrajectoryLost"]
+ movement -> wait_for_command [label = "evMoveStop"]
+ movement -> wait_and_try_again [label = "evObstacleSide"]
+ movement -> wait_and_try_again [label = "evObstacleBehind"]
+ movement -> wait_for_command [label = "evObstacle"]
+ movement -> wait_and_try_again [label = "evObstacle"]
+ movement -> wait_for_command [label = "evTrajectoryDone"]
+ lost -> movement [label = "evTimer"]
+ lost -> wait_and_try_again [label = "evTimer"]
+ lost -> wait_for_command [label = "evMoveStop"]
+ wait_and_try_again -> movement [label = "evTimer"]
+ wait_and_try_again -> wait_for_command [label = "evTimer"]
+ wait_and_try_again -> wait_for_command [label = "evTrajectoryDone"]
+ wait_and_try_again -> wait_for_command [label = "evMoveStop"]
+}