Skip to main content

경쟁 연결: 전환점 - 파이썬

터닝 포인트 VEX 로봇 경쟁 경기장에는 경기 시작 위치에 게임 요소와 득점 구역이 마련되어 있습니다. 뒷벽에는 그물이 있고, 그물 앞에는 뒤집을 수 있는 깃발이 여러 개 꽂혀 있습니다.
VRC 2018-2019 터닝 포인트 필드

로봇 기능

2018~2019년 VEX 로봇 경연대회 게임 Turning Point에서는 플레이어가 다른 게임 요소 사이에서 플래그를 전환해야 했습니다. 깃발은 총 9개였습니다. 로봇이 움직일 수 있는 아래쪽 깃발 3개와 경쟁용 공놀이 조각으로 치면 움직일 수 있는 위쪽 깃발 6개였습니다. 경쟁팀은 공 발사기를 이용해 더 높은 깃발을 맞추는 방법을 생각해내야 했습니다. 상상해 보세요. 로봇이 공놀이 조각을 이용해 깃발을 치도록 프로그래밍하는 것이 항상 정확하지는 않을 수도 있습니다. 로봇이 자율 주행 중에 잘못된 방향으로 한 번만 돌면 계산이 틀어져 플래그가 하나도 맞지 않을 가능성이 있습니다. 마찬가지로, 운전 기술 챌린지의 경우, 팀이 공을 제대로 던질 수 있을 만큼 로봇을 수동으로 정렬하는 것이 어려울 수 있습니다. 따라서 숙련된 팀은 비전 센서를 사용하여 로봇을 프로그래밍하여 깃발을 감지한 다음 로봇을 올바르게 정렬하여 정확한 사격을 할 수 있도록 합니다.

학습 확장 아이콘 학습을 확장하세요

이 활동을 확장하려면 학생들에게 로봇이 이 경쟁 게임에 사용할 수 있는 감지된 노란색 물체를 향해 이동하는 프로젝트를 설계하고 구성해 보라고 하세요!
학생들에게 다음을 하도록 하세요.

  • Clawbot(구동계, 2모터, 자이로 없음) 템플릿 예제 프로젝트를 엽니다.

    VEXcode V5 예제 프로젝트 선택에서 상단의 템플릿 필터가 선택되어 있고, Clawbot Drivetrain 2 모터에 자이로가 없는 프로젝트 아이콘이 빨간색 상자로 강조 표시되어 있습니다.

  • 비전 센서를 프로그래밍할 때 Detecting Objects (Vision) 예제 프로젝트를 참고 자료로 사용하세요. 비전 센서를 프로그래밍할 때 Detecting Objects (Vision) 예제 프로젝트를 참고 자료로 사용하세요. (Google Doc / .v5python).
  • Clawbot(구동계, 2모터, 자이로 없음) 구성에 비전 센서를 추가한 다음 비전 센서가 빨간색과 파란색 물체를 감지하도록 구성합니다. 자세한 내용은 비전 센서 구성 문서을 참조하세요.

    VEXcode V5 장치 창이 열리고 장치를 추가하는 옵션이 표시됩니다. 창에는 장치 선택이라는 문구가 표시되고, 비전 옵션은 빨간색 상자로 강조 표시됩니다. 다른 옵션으로는 컨트롤러, 구동계, 모터, 3선 등이 있습니다.

  • 감지된 물체를 향해 클로봇을 이동하도록 프로그래밍합니다. 클로봇은 마치 깃발을 흔들듯이 팔을 들어올리도록 프로그래밍할 수도 있습니다!
  • 프로젝트를 다운로드하고 실행하여 Vision Sensor가 VRC Turning Point 게임의 노란색 공과 같은 노란색 물체를 감지할 수 있는지 관찰합니다. 비전 센서가 물체를 감지할 수 있다면, 로봇은 감지된 물체에 따라 움직일까요? 프로젝트를 다운로드하고 실행하는 데 도움이 필요이 문서를 참조하세요.
  • 시간이 허락한다면 Turning Point 경기장과 비슷한 게임 경기장을 마련해 보세요. 비전 센서를 사용해 로봇이 움직여 점수를 획득하는 연습을 해보세요!

아래에서 샘플 솔루션을 확인하세요.

# 라이브러리 가져오기
from vex import *

# 프로젝트 코드 시작

check_yellow = Event()

def check_yellow_callback():
    brain.screen.set_font(FontType.MONO40)
    brain.screen.clear_row(3)
    brain.screen.set_cursor(3, 1)
    vision_5_objects = vision_5.take_snapshot(vision_5__YELLOWBOX)

    if (vision_5_objects):
        arm_motor.spin_for(FORWARD, 300, DEGREES)
        claw_motor.spin_for(FORWARD, 100, DEGREES)
        drivetrain.drive_for(FORWARD, 12, INCHES)
        arm_motor.spin_for(REVERSE, 300, DEGREES)
        claw_motor.spin_for(REVERSE, 100, DEGREES)
    
    else:
        brain.screen.print("노란색 물체 없음")

# 시스템 이벤트 핸들러
check_yellow(check_yellow_callback)

# 이벤트 핸들러가 사용 가능한지 확인하기 위한 짧은 지연
wait(15, MSEC)

# 새로운 센서 데이터를 확인하기 위해 지속적으로 실행
while True:
    check_blue.broadcast_and_wait()
    wait(105, MSEC)