summaryrefslogtreecommitdiffhomepage
path: root/digital/io/src/getsamples.fsm
diff options
context:
space:
mode:
authorNicolas Haller2009-05-08 10:13:09 +0200
committerNicolas Haller2009-05-08 10:13:09 +0200
commit79456a7d1b2116fc8f50b82bd73b877cf8ef1bdf (patch)
tree985d7dff52f7f11943cb194b006a1653882f871e /digital/io/src/getsamples.fsm
parentc5ce79b4c6c8671e0e6062706695fc05439252f5 (diff)
* digital/io/src:
- removed old FSM (gutter and getsamples)
Diffstat (limited to 'digital/io/src/getsamples.fsm')
-rw-r--r--digital/io/src/getsamples.fsm104
1 files changed, 0 insertions, 104 deletions
diff --git a/digital/io/src/getsamples.fsm b/digital/io/src/getsamples.fsm
deleted file mode 100644
index 6b10eec1..00000000
--- a/digital/io/src/getsamples.fsm
+++ /dev/null
@@ -1,104 +0,0 @@
-# Get samples FSM
-# A general remark on this FSM: it is not its responsibility to put the bot in
-# front of the distributor, it the responsibility of the top FSM using the
-# move FSM.
-# For example, the top FSM will order the bot to move in front of the
-# distributor using the move FSM. Then, when it is arrived, it will the get
-# sample FSM that will ensure we well placed (in term of angle for example).
-get_samples
- Get samples from the distributor
-
-States:
- IDLE
- waiting for the beginning of the get samples FSM
- FACE_DISTRIBUTOR
- face the distributor
- OPEN_INPUT_HOLE
- move the arm to let the samples enter into the bot by the input hole
- APPROACH_DISTRIBUTOR
- make the bot move forward in order to be in contact with the distributor
- TAKE_SAMPLES
- take one or more samples
- MOVE_AWAY_FROM_DISTRIBUTOR
- move the bot away from the distributor by going backward
- CLOSE_INPUT_HOLE
- put the arm back in front of the input hole to prevent sample to enter
- MOVE_BACKWARD_FROM_DISTRIBUTOR
- move a little bit backward from the distributor
- WAIT_AND_TRY_AGAIN
- wait and try again
-
-Events:
- start
- initialize the FSM
-# For the moment, this event is currently not managed.
-# TODO: manage it
- bot_move_failed
- the bot movement failed (blocked by something for example)
- bot_move_succeed
- the bot has finished to moved and arrived at the desired position
- arm_move_succeed
- the arm has reached the desired position
- arm_pass_noted_position
- the arm has just passed the 'noted' position
- wait_finished
- we have wait the desired time
-
-IDLE:
- start -> FACE_DISTRIBUTOR
- do a goto angle to make the bot facing the distributor
-
-FACE_DISTRIBUTOR:
- bot_move_succeed -> OPEN_INPUT_HOLE
- move the arm to open the input hole
-
-OPEN_INPUT_HOLE:
- arm_move_succeed -> APPROACH_DISTRIBUTOR
- start approaching the distributor now
-
-APPROACH_DISTRIBUTOR:
- bot_move_succeed -> MOVE_BACKWARD_FROM_DISTRIBUTOR
- move a little bit backward from the distributor
- bot_move_failed -> .
- try to move again
-
-MOVE_BACKWARD_FROM_DISTRIBUTOR:
- bot_move_succeed -> TAKE_SAMPLES
- start taking some samples
- setup a timeout
-
-TAKE_SAMPLES:
- arm_pass_noted_position: more -> .
- prepare the classification of the taken sample
- take a new one
- reset the timeout
- arm_pass_noted_position: no_more -> MOVE_AWAY_FROM_DISTRIBUTOR
- store current position
- go backward
- wait_finished -> MOVE_AWAY_FROM_DISTRIBUTOR
- store current position
- timed out, give up
- go backward
-
-MOVE_AWAY_FROM_DISTRIBUTOR:
- bot_move_succeed -> CLOSE_INPUT_HOLE
- close input hole
- setup a close timeout
- bot_move_failed -> WAIT_AND_TRY_AGAIN
- ask to be wake up in a certain time
- arm_pass_noted_position -> .
- prepare the classification of the taken sample
-
-CLOSE_INPUT_HOLE:
- arm_move_succeed -> IDLE
- tell the top FSM we have finished
- wait_finished -> IDLE
- timed out, give up
- tell the top FSM we have finished
- arm_pass_noted_position -> .
- prepare the classification of the taken sample
-
-WAIT_AND_TRY_AGAIN:
- wait_finished -> MOVE_AWAY_FROM_DISTRIBUTOR
- compute remaining distance (protection agains 0 & 300)
- try to move away again