패키지 대시 챌린지 - 파이썬
패키지 대시 챌린지
이 챌린지에서는 로봇이 패키지를 집어 최대한 빨리 적재 도크로 가져오도록 프로그래밍해야 합니다!
도전 규칙:
- 로봇은 시작 구역에서 도전을 시작해야 합니다.
- 패키지(알루미늄 캔)는 책, 클로봇의 집게발, 로딩 도크에만 접촉할 수 있습니다.
- 창고 바닥에 패키지가 떨어진 경우 필드를 재설정하고 다시 시작해야 합니다.
- 각 실행 시간은 로봇이 움직이는 즉시 시작됩니다.
- 마지막 패키지가 로딩 도크에 떨어지는 순간 시간은 멈춘다.
- 필드를 재설정할 때는 모든 것이 처음 시작했을 때의 정확한 위치로 돌아가야 합니다.
- 즐거운 시간 보내세요!
교사 팁
- 창고에 대한 배경 스토리나 목적을 만들어 참여도를 높이세요! 어떤 종류의 창고인가요? 창고에는 어떤 종류의 패키지가 있나요? 창고의 주인은 누구입니까?
- 학생들이 캔을 더 효율적으로 운반할 수 있는 다양한 경로나 전략을 만들도록 합니다.
- 이 챌린지의 우승자를 결정하기 위해 완료 시간만 비교하는 것이 아니라(경쟁적인 방식으로 구성하려는 경우) 학생들이 다른 팀의 솔루션을 고려할 수 있도록 사용된 탐색 기술도 비교하세요.
교사 도구 상자
-
솔루션
학생을 평가하기 위한 프로그래밍 평가 기준은 에서 확인할 수 있습니다.
이 문제에 대한 가능한 해결책 중 하나는 다음과 같습니다. 해결책은 로봇의 시작 위치와 선택한 경로에 따라 달라질 수 있습니다. 모든 패키지를 옮기는 데에는 여러 가지 경로가 있습니다.
# 프로젝트 코드
시작 # Claw 모터를 안전하게 실행하고 첫 번째 패키지를 픽업합니다
claw_motor.set_timeout(2, seconds)
drivetrain.drive_for(FORWARD, 900, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 315, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.drive_for(FORWARD, 215, MM)
claw_motor.spin_for(FORWARD, 120, DEGREES)
# 첫 번째 패키지를 내려놓기 위해 로딩 도크로 이동합니다
drivetrain.drive_for(REVERSE, 110, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 920, MM)
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 2300, MM)
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 750, MM)
arm_motor.spin_for(REVERSE, 315, DEGREES)
claw_motor.spin_for(REVERSE, 120, DEGREES)
# 두 번째 패키지를 집어 올리세요
drivetrain.drive_for(REVERSE, 200, MM)
drivetrain.turn_for(LEFT, 170, DEGREES)
drivetrain.drive_for(FORWARD, 900, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 2300, MM)
arm_motor.spin_for(FORWARD, 315, DEGREES)
claw_motor.spin_for(FORWARD, 120, DEGREES)
# 두 번째 패키지를 내려놓기 위해 로딩 도크로 이동합니다
drivetrain.drive_for(FORWARD, 900, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 960, MM)
arm_motor.spin_for(REVERSE, 315, DEGREES)
claw_motor.spin_for(REVERSE, 120, DEGREES)
# 세 번째 패키지를 픽업합니다
drivetrain.drive_for(REVERSE, 150, MM)
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 490, MM)
arm_motor.spin_for(FORWARD, 315, DEGREES)
claw_motor.spin_for(FORWARD, 120, DEGREES)
# 세 번째 패키지를 내려놓기 위해 로딩 도크로 운전하세요
drivetrain.drive_for(REVERSE, 490, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 150, MM)
arm_motor.spin_for(REVERSE, 315, DEGREES)
claw_motor.spin_for(REVERSE, 120도)