case EV_MOTION_DONE:
FSM_TIMER(1000);
break;
- case EV_START:
- case EV_RETURN:
- case EV_JAWS_DONE:
- case EV_SWITCH_STRATEGY:
- DBG_PRINT_EVENT("unhandled event!");
- break;
case EV_MOTION_ERROR:
FSM_TRANSITION(move_around);
break;
x_target = detected_target[target_cntr].x;
y_tatget = detected_target[target_cntr].y;
target_cntr++;
+
+ printf("target %d / %d\n", target_cntr, max_target);
get_approach_point(x_target, y_tatget, &x_approach, &y_approach, &phi_approach);
robot_goto_notrans(x_approach, y_approach, ARRIVE_FROM(phi_approach, 0.2), &tcSlow);
}
break;
case EV_MOTION_ERROR:
- DBG_PRINT_EVENT("ERROR approaching");
+ DBG_PRINT_EVENT("can not approach target");
if (target_cntr < max_target) {
FSM_TRANSITION(approach_target);
} else {
FSM_TRANSITION(move_around);
}
break;
- case EV_TIMER:
- case EV_START:
- case EV_JAWS_DONE:
- case EV_SWITCH_STRATEGY:
- DBG_PRINT_EVENT("unhandled event");
- break;
case EV_EXIT:
target_cntr = 0;
break;
FSM_STATE(move_around)
{
- double goalx, goaly, phi;
- static int survey_cnt = 0;
+ double goalx, goaly;
switch (FSM_EVENT) {
case EV_ENTRY:
-
do {
goalx = ((rand()%PLAYGROUND_HEIGHT_MM)/1000.0);
- goaly = ((rand()%PLAYGROUND_WIDTH_MM)/1000.0);
+ goaly += ((rand()%PLAYGROUND_WIDTH_MM)/1000.0);
} while (!ShmapIsFreePoint(goalx, goaly) && close_goal(goalx, goaly));
- robot_goto_notrans(goalx, goaly, NO_TURN(), &tcFast);
+ robot_goto_notrans(goalx, goaly, NO_TURN(), &tcSlow);
DBG_PRINT_EVENT("new survey point");
- survey_cnt++;
break;
case EV_MOTION_ERROR:
- DBG_PRINT_EVENT("ERROR: can not access survey point");
+ DBG_PRINT_EVENT("can not access survey point");
case EV_MOTION_DONE:
FSM_TRANSITION(survey);
break;
case EV_TIMER:
break;
- case EV_RETURN:
- break;
- case EV_START:
- /* do nothing */
- break;
case EV_EXIT:
- //ShmapFree();
- break;
- default:
break;
}
}
DBG_PRINT_EVENT("ERROR: home position is not reachable!");
FSM_TIMER(1000);
break;
- case EV_MOTION_DONE:
- break;
case EV_TIMER:
FSM_TRANSITION(go_home);
break;
- case EV_START:
- /* do nothing */
- break;
+ case EV_MOTION_DONE:
case EV_EXIT:
- break;
- default:
DBG_PRINT_EVENT("Mission completed!");
robot_exit();
break;