]> rtime.felk.cvut.cz Git - eurobot/public.git/commitdiff
Six oranges works almost perfectly
authorMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 26 May 2010 19:57:02 +0000 (21:57 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 26 May 2010 19:57:02 +0000 (21:57 +0200)
src/robofsm/common-states.cc
src/robofsm/competition.cc
src/robofsm/strategy_six_oranges.cc

index aab454b67c5ef4cce57882a51d3a454cdffa6018..11291b57a58f02de9cf107f45d2328b9fd6dae04 100644 (file)
@@ -181,7 +181,7 @@ FSM_STATE(climb_the_slope)
                                                PLAYGROUND_HEIGHT_M - (ROBOT_WIDTH_M/2) +0.01,
                                                NO_TURN());
                                } else if (slope_approach_style_p->which_oranges == NEAR_PLAYGROUND_CENTER) {
-                                       FSM_TIMER(3000);
+                                       FSM_TIMER(3500);
                                        robot_trajectory_add_point_trans(
                                                x_coord(SLOPE_TO_RIM_M + SLOPE_LENGTH_M - ROBOT_AXIS_TO_BACK_M, slope_approach_style_p->which_side),
                                                1.85 - (PLAYGROUND_HEIGHT_M - (ROBOT_WIDTH_M/2) + 0.01 - 1.85));
@@ -199,7 +199,7 @@ FSM_STATE(climb_the_slope)
                        FSM_TRANSITION(sledge_down);
                        break;
                case EV_TIMER:
-                       act_vidle(VIDLE_LOAD_PREPARE, 5);
+                       act_vidle(VIDLE_LOAD_PREPARE, 10);
                        break;
                case EV_START:
                case EV_VIDLE_DONE:
index 1f00224d645a83391ae4d064a47d4e2ad297e8c2..0255eb3b39ebc0f0a5bc5958ccc63f2a7d23d54c 100644 (file)
@@ -44,7 +44,10 @@ int main()
        robot.fsm.motion.debug_states = 1;
        //robot.fsm.act.debug_states = 1;
 
-       robot.fsm.main.state = &fsm_state_main_start_opp_corn;
+       //robot.fsm.main.state = &fsm_state_main_start_opp_corn;
+       //robot.fsm.main.state = &fsm_state_main_start_opp_oranges;
+       robot.fsm.main.state = &fsm_state_main_start_six_oranges;
+
        //robot.fsm.main.transition_callback = trans_callback;
        //robot.fsm.motion.transition_callback = move_trans_callback;
 
index 7edbdf31b96ce42e849e76bf3c8784e8dc9ca2fc..5d489c4ed06112b87d586c4fda201a62b8f8587b 100644 (file)
@@ -63,17 +63,36 @@ FSM_STATE(unload_oranges)
 {
        switch (FSM_EVENT) {
        case EV_ENTRY:  SUBFSM_TRANSITION(to_cntainer_and_unld, NULL); break;
-       /* FIXME: do something more meaningfull the next time */
        case EV_RETURN: FSM_TRANSITION(pick_opp_oranges); break;
        default: break;
        }
 }
 
+FSM_STATE_DECL(pick_rest_of_opp_oranges);
 FSM_STATE(pick_opp_oranges)
 {
        switch (FSM_EVENT) {
        case EV_ENTRY:  SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(OPPONENTS, NEAR_PLAYGROUND_BOUNDARY)); break;
-       case EV_RETURN: FSM_TRANSITION(unload_oranges); break;
+       case EV_RETURN: FSM_TRANSITION(pick_rest_of_opp_oranges); break;
+       default: break;
+       }
+}
+
+FSM_STATE_DECL(unload_opp_oranges);
+FSM_STATE(pick_rest_of_opp_oranges)
+{
+       switch (FSM_EVENT) {
+       case EV_ENTRY:  SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(OPPONENTS, NEAR_PLAYGROUND_CENTER)); break;
+       case EV_RETURN: FSM_TRANSITION(unload_opp_oranges); break;
+       default: break;
+       }
+}
+
+FSM_STATE(unload_opp_oranges)
+{
+       switch (FSM_EVENT) {
+       case EV_ENTRY:  SUBFSM_TRANSITION(to_cntainer_and_unld, NULL); break;
+       case EV_RETURN: FSM_TRANSITION(opp_corns); break;
        default: break;
        }
 }