#Move FSM. move States: IDLE DESIRED_POSITION BACKWARD GO_AWAY STOP_WAIT Events: start bot_move_succeed bot_move_failed bot_move_obstacle wait_finished IDLE: start -> DESIRED_POSITION Save the destination position and put obstacles number to 0. DESIRED_POSITION: bot_move_succeed-> IDLE Destination position reached by the bot. Set the flag of the top event to inform it. bot_move_failed-> BACKWARD Store the current position, initialise the path system i.e. provide the position of the obstacle and request the path system the next position. bot_move_obstacle-> STOP_WAIT Stop the bot. BACKWARD: bot_move_succeed-> GO_AWAY Launch the pathfinder and go to the next position. STOP_WAIT: wait_finished-> GO_AWAY Launch the pathfinder and go to the next position. GO_AWAY: bot_move_obstacle -> STOP_WAIT Go to the stop wait event. bot_move_succeed: position_desired -> IDLE The position desired provided on the FSM call had been reached. bot_move_succeed: position_intermediary -> GO_AWAY Request the next step to reached to the path finder. bot_move_failed -> BACKWARD Store the current position, and go backward.