Beispiel #1
0
State_t Striker::DoStateGameControllerReady()
{
	XYLocation_s positionLocation;

	if (MyRobot::GetPlayerID() == ID_STRIKER1)
	{
		if (m_communication->GetkickOffTeam() == m_communication->teamId)
		{
			positionLocation.x = OFFENSIVE_POSITION_STRIKER1_X;
			positionLocation.y = OFFENSIVE_POSITION_STRIKER1_Y;
		}
		else
		{
			positionLocation.x = DEFENSIVE_POSITION_STRIKER1_X;
			positionLocation.y = DEFENSIVE_POSITION_STRIKER1_Y;
		}
	}
	else if (MyRobot::GetPlayerID() == ID_STRIKER2)
	{
		if (m_communication->GetkickOffTeam() == m_communication->teamId)
		{
			positionLocation.x = OFFENSIVE_POSITION_STRIKER2_X;
			positionLocation.y = OFFENSIVE_POSITION_STRIKER2_Y;
		}
		else
		{
			positionLocation.x = DEFENSIVE_POSITION_STRIKER2_X;
			positionLocation.y = DEFENSIVE_POSITION_STRIKER2_Y;
		}
	}
	else
	{
		throw "UNKNOWN_ROBOT_ID";
	}

	m_vision->SetHeadTrackingStatus(GOAL_TRACKING);
	m_goTo->Stop();

	while(exitProgram == false)
	{
		m_goTo->QuickAndDirty(positionLocation.x,positionLocation.y ,0);

		if (!IsStateReady())
		{
			m_vision->SetHeadTrackingStatus(BALL_TRACKING);
			m_goTo->Stop();
			return STATE_HANDLE_GAME_CONTROLLER_STATES;
		}

		usleep(100 *1000);
	}
	return STATE_HANDLE_GAME_CONTROLLER_STATES; // TODO Fix this. need to be in a while.
												// TODO add ready points with an id for each striker, instead of these calculations
}
Beispiel #2
0
bool
SmartTaskAdvance::CheckReadyToAdvance(const TaskPoint &tp,
                                      const AircraftState &aircraft,
                                      const bool x_enter, const bool x_exit)
{
  const bool state_ready = IsStateReady(tp, aircraft, x_enter, x_exit);

  if (armed)
    request_armed = false;

  switch (tp.GetType()) {
  case TaskPointType::UNORDERED:
    gcc_unreachable();

  case TaskPointType::START: {
    const StartPoint &sp = (const StartPoint &)tp;
    if (sp.DoesRequireArm()) {
      if (armed) {
        state = TaskAdvance::START_ARMED;
      } else {
        state = TaskAdvance::START_DISARMED;
        if (sp.IsInSector(aircraft))
          request_armed = true;
      }
      return armed && state_ready;
    } else {
      state = TaskAdvance::AUTO;
      return state_ready;
    }
  }

  case TaskPointType::AAT:
    if (armed) {
      state = TaskAdvance::TURN_ARMED;
    } else {
      state = TaskAdvance::TURN_DISARMED;
      if (state_ready)
        request_armed = true;
    }
    return armed && state_ready;

  case TaskPointType::AST: {
    state = TaskAdvance::AUTO;
    return state_ready;
  }

  case TaskPointType::FINISH:
    return false;
  }

  gcc_unreachable();
}
Beispiel #3
0
State_t Goalkeeper::DoStateGameControllerReady() {
	XYLocation_s positionLocation;

	positionLocation.x = 0;
	positionLocation.y = GOALKEEPER_POSITION_Y;	//a little ahead of the goal line
	m_vision->SetHeadTrackingStatus(GOAL_TRACKING);

	while (exitProgram == false) {
		m_goTo->QuickAndDirty(positionLocation.x, positionLocation.y, 0);

		if (!IsStateReady()) {
			m_vision->SetHeadTrackingStatus(BALL_TRACKING);
			m_goTo->Stop();
			return STATE_HANDLE_GAME_CONTROLLER_STATES;
		}

		usleep(100 * 1000);
	}

	return STATE_HANDLE_GAME_CONTROLLER_STATES;
}