From 80b3da91dac28a5895a8cb9f0477a7008365dd56 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 1 Apr 2010 23:57:20 +0200 Subject: digital/io: wipe-out old robot code, closes #112 --- digital/io/src/top.fsm | 211 +------------------------------------------------ 1 file changed, 2 insertions(+), 209 deletions(-) (limited to 'digital/io/src/top.fsm') diff --git a/digital/io/src/top.fsm b/digital/io/src/top.fsm index 02fb854c..8203dfdb 100644 --- a/digital/io/src/top.fsm +++ b/digital/io/src/top.fsm @@ -7,42 +7,6 @@ States: waiting for the beginning of the top FSM. WAIT_INIT_TO_FINISH waiting for the end of init. - GET_PUCK_FROM_THE_GROUND [timeout=1575] - get some pucks from the ground. - GET_PUCK_FROM_DISTRIBUTOR [timeout=2250] - get some pucks from the distributor. - STOP_TO_GO_TO_UNLOAD_AREA - stop the move FSM before starting a new one. - STOP_TO_GET_PUCK_FROM_DISTRIBUTOR - stop the move FSM before starting a new one. - GO_TO_UNLOAD_AREA - when going to unload area. - FUCK_UNLOAD_AREA - when going backward in position for unload. - UNLOAD_PUCKS [timeout=1125] - when unloading all pucks from the bot. - ELEVATOR_READY_TO_GO_AWAY_TO_RETRY_UNLOAD [timeout=1125] - wait for the elevator to be ready for a bot movement. - GO_AWAY_TO_RETRY_UNLOAD - when unload failed, go away from the unload area to try a new one. - TRY_AGAIN_TO_GO_AWAY_TO_RETRY_UNLOAD - try again to go away to retry unloading pucks. - FUCK_THE_DISTRIBUTOR - fuck the distributor. - WAIT_FOR_PUCKS [timeout=1575] - wait until no more pucks or already full. - GO_AWAY_FROM_UNLOAD_AREA - go away from the unload area to turn freely. - TRY_AGAIN_TO_GO_AWAY_FROM_UNLOAD_AREA - try again to go away from the unload area. - CLEAN_FRONT_OF_DISTRIBUTOR - clean the front of the distributor to have no problem to fuck it. - GO_AWAY_FROM_DISTRIBUTOR - to correctly leave a distributor, we need to do a linear move. - TRY_AGAIN_TO_GO_AWAY_FROM_DISTRIBUTOR - try again to go away from the distributor. - PREPARE_ELEVATOR [timeout=2250] - prepare the elevator for unload. Events: start @@ -63,183 +27,12 @@ Events: timeout in cycle count. asserv_last_cmd_ack last command sent to the asserv board has been acquitted. - bot_is_full_of_pucks - the bot has four pucks inside. - empty_distributor - the cylinder has tried to get some pucks but none has been seen. - elevator_order_done - the elevator has executed my order (go up, open door, close door). IDLE: start -> WAIT_INIT_TO_FINISH nothing to do. WAIT_INIT_TO_FINISH: - init_match_is_started -> GET_PUCK_FROM_THE_GROUND - the match start, try to get some puck from the ground. + init_match_is_started -> . + the match start, place something interresting here -GET_PUCK_FROM_THE_GROUND: - move_fsm_succeed: already_six_pucks_or_no_next_position_and_no_puck -> GET_PUCK_FROM_DISTRIBUTOR - close cylinder. - get the next distributor position and launch move FSM to go there. - move_fsm_succeed: already_six_pucks_or_no_next_position_and_some_puck -> GO_TO_UNLOAD_AREA - close cylinder. - get the next distributor position and launch move FSM to go there. - move_fsm_succeed: next_position_exists -> . - go to the next position using move FSM. - move_fsm_failed: some_pucks -> GO_TO_UNLOAD_AREA - close cylinder. - we have failed to do a move, unload pucks. - move_fsm_failed: no_puck -> GET_PUCK_FROM_DISTRIBUTOR - close cylinder. - get the next distributor position and launch move FSM to go there. - bot_is_full_of_pucks -> STOP_TO_GO_TO_UNLOAD_AREA - stop move FSM. - state_timeout: no_puck -> STOP_TO_GET_PUCK_FROM_DISTRIBUTOR - close cylinder. - too much time lost to get puck from the ground, stop move FSM. - state_timeout: some_pucks -> STOP_TO_GO_TO_UNLOAD_AREA - close cylinder. - too much time lost to get puck from the ground, stop move FSM. - -STOP_TO_GET_PUCK_FROM_DISTRIBUTOR: - move_fsm_stopped -> GET_PUCK_FROM_DISTRIBUTOR - get next distributor and go there. - -STOP_TO_GO_TO_UNLOAD_AREA: - move_fsm_stopped -> GO_TO_UNLOAD_AREA - compute an unload area. - ask move FSM to go there using backward move only. - move_fsm_succeed -> GO_TO_UNLOAD_AREA - do the same as bot_move_stopped. - bot_move_failed -> GO_TO_UNLOAD_AREA - do the same as bot_move_stopped. - -GO_TO_UNLOAD_AREA: - move_fsm_succeed -> PREPARE_ELEVATOR - prepare the elevator. -# It can be dangerous to loop here with no condition to cancel this loop. - move_fsm_failed -> . - compute a new unload area. - ask move FSM to go to the position using backward only. - -PREPARE_ELEVATOR: - elevator_order_done -> FUCK_UNLOAD_AREA - make the bot do a fuck the wall in backward until blocked. - state_timeout -> GO_TO_UNLOAD_AREA - compute a new unload area and retry. - -FUCK_UNLOAD_AREA: - bot_move_succeed -> UNLOAD_PUCKS - unload all the pucks from the elevator. - bot_move_failed: try_again -> GO_AWAY_TO_RETRY_UNLOAD - move backward from the unload area using linear move. - bot_move_failed: no_more_try_again -> UNLOAD_PUCKS - move backward from the unload area using linear move. - -GO_AWAY_TO_RETRY_UNLOAD: - bot_move_succeed -> GO_TO_UNLOAD_AREA - compute a new unload area. - ask move FSM to go there using backward move only. - bot_move_failed: niceness -> TRY_AGAIN_TO_GO_AWAY_TO_RETRY_UNLOAD - decrement niceness. - move forward using linear move. - bot_move_failed: no_more_niceness -> GO_TO_UNLOAD_AREA - do the same as move succeed. - -TRY_AGAIN_TO_GO_AWAY_TO_RETRY_UNLOAD: - bot_move_succeed -> GO_AWAY_TO_RETRY_UNLOAD - move backward from the unload area using linear move. - bot_move_failed -> GO_AWAY_TO_RETRY_UNLOAD - do the same as succeed. - -GET_PUCK_FROM_DISTRIBUTOR: - move_fsm_succeed -> CLEAN_FRONT_OF_DISTRIBUTOR - really go to the front of the distributor (it clean front area). - move_fsm_failed: no_puck_or_still_time -> . - get the next distributor position and launch move FSM to go there. - move_fsm_failed: some_pucks_and_no_more_time -> GO_TO_UNLOAD_AREA - compute an unload area. - ask move FSM to go there. - state_timeout -> . - get the next distributor position and launch move FSM to go there. - -CLEAN_FRONT_OF_DISTRIBUTOR: - move_fsm_succeed -> FUCK_THE_DISTRIBUTOR - we are in front of the distributor: fuck it. - move_fsm_failed -> GET_PUCK_FROM_DISTRIBUTOR - get a new distributor and go there. - -FUCK_THE_DISTRIBUTOR: - bot_move_succeed -> WAIT_FOR_PUCKS - let's cylinder FSM works until finished. - bot_move_failed: no_puck_or_still_time -> GET_PUCK_FROM_DISTRIBUTOR - get a new distributor and go there. - bot_move_failed: some_pucks_and_no_more_time -> GO_TO_UNLOAD_AREA - compute an unload area. - ask move FSM to go there. - -WAIT_FOR_PUCKS: - bot_is_full_of_pucks -> GO_AWAY_FROM_DISTRIBUTOR - remember unload area. - empty_distributor: no_puck_or_still_time -> GO_AWAY_FROM_DISTRIBUTOR - remember distributor. - empty_distributor: some_pucks_and_no_more_time -> GO_AWAY_FROM_DISTRIBUTOR - remember unload area. - state_timeout: no_puck_or_still_time -> GO_AWAY_FROM_DISTRIBUTOR - remember distributor. - state_timeout: some_pucks_and_no_more_time -> GO_AWAY_FROM_DISTRIBUTOR - remember unload area. - -GO_AWAY_FROM_DISTRIBUTOR: - bot_move_succeed: go_to_distributor -> GET_PUCK_FROM_DISTRIBUTOR - get a new distributor position and go there. - bot_move_succeed: go_to_unload -> GO_TO_UNLOAD_AREA - compute an unload area. - ask the move FSM to go there. - bot_move_failed: niceness -> TRY_AGAIN_TO_GO_AWAY_FROM_DISTRIBUTOR - decrement niceness. - move forward using linear move. - bot_move_failed: no_more_niceness_and_go_to_distributor -> GET_PUCK_FROM_DISTRIBUTOR - get a new distributor position and go there. - bot_move_failed: no_more_niceness_and_go_to_unload -> GO_TO_UNLOAD_AREA - compute an unload area. - ask the move FSM to go there. - -TRY_AGAIN_TO_GO_AWAY_FROM_DISTRIBUTOR: - bot_move_succeed -> GO_AWAY_FROM_DISTRIBUTOR - move backward using linear move. - bot_move_failed -> GO_AWAY_FROM_DISTRIBUTOR - do the same as succeed. - -UNLOAD_PUCKS: - elevator_order_done -> GO_AWAY_FROM_UNLOAD_AREA - linear move. - state_timeout -> ELEVATOR_READY_TO_GO_AWAY_TO_RETRY_UNLOAD - we have failed, ask the elevator to put itself in a state where bot movement - will not damage something. - -GO_AWAY_FROM_UNLOAD_AREA: - bot_move_succeed: more_than_six_pucks_or_no_next_position -> GET_PUCK_FROM_DISTRIBUTOR - get the next distributor position and launch move FSM to go there. - bot_move_succeed: next_position_for_pucks_on_ground_exists -> GET_PUCK_FROM_THE_GROUND - go to the next position using move FSM. - bot_move_failed: niceness -> TRY_AGAIN_TO_GO_AWAY_FROM_UNLOAD_AREA - decrement niceness. - move forward using linear move. - bot_move_failed: no_more_niceness_and_more_than_six_pucks_or_no_next_position -> GET_PUCK_FROM_DISTRIBUTOR - go to the next position using move FSM. - bot_move_failed: no_more_niceness_and_next_position_for_pucks_on_ground_exists -> GET_PUCK_FROM_THE_GROUND - go to the next position using move FSM. - -TRY_AGAIN_TO_GO_AWAY_FROM_UNLOAD_AREA: - bot_move_succeed -> GO_AWAY_FROM_UNLOAD_AREA - move backward using linear move. - bot_move_failed -> GO_AWAY_FROM_UNLOAD_AREA - do the same as succeed. - -ELEVATOR_READY_TO_GO_AWAY_TO_RETRY_UNLOAD: - elevator_order_done -> GO_AWAY_TO_RETRY_UNLOAD - move backward from the unload area using linear move. - state_timeout -> GO_AWAY_TO_RETRY_UNLOAD - do the same as elevator_ready. -- cgit v1.2.3