비전 데이터 챌린지 - 파이썬
교사 도구 상자
-
비전 데이터 챌린지의 목적
비전 데이터 챌린지의 목적은 학생들이 비전 센서의 스냅샷에서 수집된 데이터와 중앙 X 및 Y 값이 계산되는 방식을 이해하도록 하는 것입니다. 학생들은 또한 해당 데이터가 어떻게 해석될 수 있는지(예: 중앙 X 값을 사용하여 로봇의 중심점에 대한 개체의 상대적 위치를 결정할 수 있음)와 구성할 때 개체에 이름을 지정하는 모범 사례를 이해한 상태로 이 실습을 마쳐야 합니다.

질문에 답하고 엔지니어링 노트에 누락된 데이터를 작성하여 비전 데이터 챌린지를 완료하십시오.
- 다음 중 위의 스냅샷을 찍는 데 사용된 지침은 무엇인가요?
-
vision_5.take_snapshot (REDBOX) -
vision_5.take_snapshot (YELLOWBOX)
-
-
다음 값을 입력하십시오.

- YELLOWBOX는 로봇의 중심점 왼쪽 또는 오른쪽에 있습니까?
- YELLOWBOX가 로봇의 중심점 위 또는 아래에 있습니까?
- YELLOWBOX는아닌입니다. 각 색상 특징을 쉽게 인식하고 싶다면 이 객체에 줄 수 있는 가장 좋은 이름입니다. 다음 중 어떤 이름이 더 좋을까요? 그 이유는 무엇인가요?
- 옐로우기어
- YELLOWCUBE
교사 도구 상자
-
답변
학생들의 답변은 학급 전체에서 논의할 수 있으며, 공학 노트를 검토하여 활동을 성공적으로 완료했는지 확인할 수도 있습니다.
-
vision_5.스냅샷 찍기(노란색 상자) 
- YELLOWBOX는 로봇 중심점보다 약간 왼쪽에 있지만 16.5픽셀(중심 157.5 - 141)만큼만 차이가 납니다.
- YELLOWBOX는 로봇의 중심점보다 약간 낮지만 5.5픽셀(111 - 중심 105.5)만큼만 차이가 납니다.
-
에이. 옐로우기어
이 이름이 더 나은데, 이는 물체의 색상뿐만 아니라 물체의 유형도 설명하기 때문입니다. 그것은바퀴이지 상자나 정육면체아닙니다.
학습 확장
프로젝트 내 감지 지침
이제 비전 센서에서 보고된 데이터 중 일부를 더 잘 이해했으므로 학생들은 프로젝트 내에서 이러한 감지 지침을 사용하고 싶어할 수도 있습니다. 그렇게 함으로써 그들이 스스로 탐험하도록 허용하세요.
def check_red_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(REDBOX)
if (vision_5_objects):
brain.screen.print("빨간색 물체 발견")
brain.screen.next_row()
brain.screen.print("감지된 물체 수:", len(vision_5_objects))
brain.screen.next_row()
brain.screen.print("중앙 X:", vision_5.largest_object().centerX)
brain.screen.next_row()
brain.screen.print("중앙 Y:", vision_5.largest_object().centerY)
brain.screen.next_row()
brain.screen.print("너비:", vision_5.largest_object().width)
brain.screen.next_row()
brain.screen.print("높이:", vision_5.largest_object().height)
brain.screen.next_row()
else:
brain.screen.print("빨간색 개체 없음")더 높은 단계의 학생은 프로젝트 내에서 이러한 지침을 사용하여 결정을 내릴 수 있습니다.
while True:
drivetrain.drive(FORWARD)
vision_5_objects = vision_5.take_snapshot(REDBOX)
if (vision_5_objects) and (vision_5.largest_object().centerX < 157.5):
drivetrain.turn_for(LEFT, 90, DEGREES)
else:
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(5, MSEC)