패키지 대시 챌린지 - C++

패키지 대시 챌린지
이 챌린지에서는 로봇이 패키지를 집어 최대한 빨리 적재 도크로 가져오도록 프로그래밍해야 합니다!
도전 규칙:
- 로봇은 시작 구역에서 도전을 시작해야 합니다.
- 패키지(알루미늄 캔)는 책, 클로봇의 집게발, 로딩 도크에만 접촉할 수 있습니다.
- 창고 바닥에 패키지가 떨어진 경우 필드를 재설정하고 다시 시작해야 합니다.
- 각 실행 시간은 로봇이 움직이는 즉시 시작됩니다.
- 마지막 패키지가 로딩 도크에 떨어지는 순간 시간은 멈춘다.
- 필드를 재설정할 때는 모든 것이 처음 시작했을 때의 정확한 위치로 돌아가야 합니다.
- 즐거운 시간 보내세요!
교사 팁
-
창고에 대한 배경 스토리나 목적을 만들어 참여도를 높이세요! 어떤 종류의 창고인가요? 창고에는 어떤 종류의 패키지가 있나요? 창고의 소유자는 누구입니까?
-
학생들이 캔을 더 효율적으로 운반할 수 있는 다양한 경로나 전략을 만들도록 합니다.
-
이 챌린지의 우승자를 결정하기 위해 완료 시간만 비교하는 것이 아니라(경쟁적인 방식으로 구성하려는 경우) 학생들이 다른 팀의 솔루션을 고려할 수 있도록 사용된 탐색 기술도 비교하세요.
교사 도구 상자
-
솔루션
학생을 평가하기 위한 프로그래밍 기준은 여기에서 찾을 수 있습니다.
다음은 이 과제에 대한 한 가지 가능한 해결책입니다. 해결책은 로봇의 시작 위치와 선택한 경로에 따라 달라질 수 있습니다. 모든 패키지를 옮기는 데에는 여러 가지 방법이 있습니다.
int main() {
// 로봇 구성 초기화. 제거하지 마세요!
vexcodeInit();
// Claw 모터를 안전하게 작동시키고 첫 번째 패키지를 집어 올립니다
ClawMotor.setTimeout(2, seconds);
Drivetrain.driveFor(forward, 900, mm);
Drivetrain.turnFor(right, 90, degrees);
ArmMotor.spinFor(forward, 315, degrees);
ClawMotor.spinFor(reverse, 180, degrees);
Drivetrain.driveFor(forward, 215, mm);
ClawMotor.spinFor(forward, 120, degrees);
// 첫 번째 패키지를 내려놓기 위해 로딩 도크로 이동합니다.
Drivetrain.driveFor(reverse, 110, mm);
Drivetrain.turnFor(right, 90, degrees);
Drivetrain.driveFor(forward, 920, mm);
Drivetrain.turnFor(left, 90, degrees);
Drivetrain.driveFor(전진, 2300, mm);
Drivetrain.turnFor(좌회전, 90, 도);
Drivetrain.driveFor(전진, 750, mm);
ArmMotor.spinFor(후진, 315, 도);
ClawMotor.spinFor(후진, 120, 도);
// 두 번째 패키지를 집어 올립니다.
Drivetrain.driveFor(후진, 200, mm);
Drivetrain.turnFor(좌회전, 170, 도);
Drivetrain.driveFor(전진, 900, mm);
Drivetrain.turnFor(우회전, 90, 도);
Drivetrain.driveFor(전진, 2300, mm);
ArmMotor.spinFor(전진, 315, 도);
ClawMotor.spinFor(전진, 120, 도);
// 두 번째 패키지를 내려놓기 위해 로딩 도크로 이동합니다.
Drivetrain.driveFor(forward, 900, mm);
Drivetrain.turnFor(right, 90, degrees);
Drivetrain.driveFor(forward, 960, mm);
ArmMotor.spinFor(reverse, 315, degrees);
ClawMotor.spinFor(reverse, 120, degrees);
// 세 번째 패키지를 픽업합니다
Drivetrain.driveFor(reverse, 150, mm);
Drivetrain.turnFor(left, 90, degrees);
ArmMotor.spinFor(forward, 315, degrees);
Drivetrain.driveFor(forward, 490, mm);
ClawMotor.spinFor(forward, 120, degrees);
// 세 번째 패키지를 내려놓기 위해 로딩 도크로 이동합니다.
Drivetrain.driveFor(reverse, 490, mm);
Drivetrain.turnFor(right, 90, degrees);
Drivetrain.driveFor(forward, 150, mm);
ArmMotor.spinFor(reverse, 315, degrees);
ClawMotor.spinFor(reverse, 120, degrees);
}