Skip to main content
Skip to Main Content
Skip to main content
항해

장 4: 대회 준비


제2과: 블록 경진대회 템플릿 활용하기

안녕하세요, VEX 강의실에 오신 것을 환영합니다. 제 이름은 로렌이고, 이번 수업에서는 블록 경진대회 템플릿 사용법을 알아보겠습니다. 지난 수업에서는 대회 템플릿에 대해 좀 더 자세히 알아보고 VEX 로봇 대회 경기 중에 왜 대회 템플릿을 사용해야 하는지에 대해 이야기했습니다. 사용하는 프로그래밍 언어(블록 기반 또는 텍스트 기반)에 따라 대회 템플릿의 버전이 다릅니다. 이 영상에서는 블록에 초점을 맞추고 있기 때문에 VEXcode V5의 블록 경진대회 템플릿에 대해 설명하겠습니다.

자, 본격적으로 시작하기 전에 먼저 재료에 대해 이야기해 보겠습니다. 저는 Arm and Claw의 몇 가지 기능을 보여드리기 위해 Advanced TrainingBot을 사용할 예정입니다. 이 대회용 템플릿을 실제로 보여드리기 위해 컨트롤러, 게임 오브젝트, 그리고 VEXcode V5를 사용하겠습니다. 이 영상을 제작하는 데에는 어떤 준비물도 필요하지 않습니다. 제가 여러분을 위해 몇 가지 시연을 보여드리겠습니다. 다시 말씀드리지만, 이 수업에는 아무것도 필요하지 않습니다.

이번 수업의 목적에 대해 이야기해 봅시다. 블록 경진대회 템플릿의 각 부분을 자세히 살펴보겠습니다. 구체적으로는 세 부분으로 나뉘는데, 자율 주행 이전 단계인 '시작 단계', 자율 주행 단계, 그리고 운전자 제어 단계입니다. 제가 여기 준비한 예제 코드에서 이러한 내용들을 설명하고, 실제로 로봇 컨트롤러를 사용하여 기능을 테스트하고 대회 템플릿이 어떻게 작동하는지 살펴보겠습니다.

그럼 이제 프로젝트 예시를 자세히 살펴보겠습니다.

[음악 시작]

좋습니다. 대회 템플릿을 보려면 파일, 예제 열기, 템플릿, 그리고 대회 템플릿 순으로 이동하겠습니다. 몇 가지 말씀드릴 게 있습니다. 첫째, 다시 한번 말씀드리지만, 이 세 가지 부분입니다. 제가 여기서 보여드릴 구체적인 예시를 살펴보기 전에 한 가지 말씀드리고 싶은 점은, 이러한 필드를 채우기 전에 먼저 해야 할 일은 장치 구성을 추가하는 것입니다. 그러니까 다시 말씀드리지만, 2모터 구동계를 사용하거나 팔이나 집게 모터 등을 사용하는 경우, 먼저 해당 모터들을 추가해야 왼쪽 부분에 블록이 제대로 배치됩니다. 그러면 해당 섹션을 다시 채울 수 있습니다.

대회 템플릿을 열자마자 기기 구성을 추가해야 합니다. 다음으로 말씀드리고 싶은 것은, 이 드라이버 제어 부분에서 무한 루프 블록이 있다는 점입니다. 그 코드가 있는 이유는 드라이버 컨트롤 부분에서 컨트롤러를 사용할 때 대부분 버튼이 눌렸는지 또는 조이스틱이 움직였는지 지속적으로 확인해야 하기 때문입니다. 그래서 기본적으로 forever 블록이 포함되어 있는 것입니다. 특정한 이유로 제거하고 싶다면 그렇게 할 수 있으며, 해당 스택을 사용하지 않고 장치 구성만 사용하는 경우에는 그대로 두어도 됩니다.

괜찮은. 제가 만든 예시를 통해 이 세 가지 항목 각각이 실제로 무엇을 의미하는지 살펴보겠습니다.

[음악 시작]

우선, 저희 공모전 템플릿은 크게 세 부분으로 구성되어 있다는 점을 말씀드리고 싶습니다. 첫 번째는 시작 시점 또는 자율 운영 이전 단계입니다. 두 번째는 자율 주행 시 또는 자율 주행 부분이고, 세 번째는 운전자 제어 시 또는 운전자 제어 부분입니다. 이 세 가지 이벤트 또는 모자 블록은 모두 이 경쟁 템플릿의 서로 다른 부분을 실행합니다.

각 항목에 대해 이야기해 봅시다. 자율 실행 이전 단계 또는 시작 시점 부분은 경쟁 템플릿 프로젝트가 실행되는 즉시 실행됩니다. 이는 초기화 설정을 할 때 가장 유용합니다.

이번 수업에 함께해 주셔서 감사합니다. 이 정보가 도움이 되고 유익했기를 바랍니다. 궁금한 점이 있으면 언제든지 문의해 주세요. 즐거운 코딩 되시고, VEX 로봇 프로젝트에 행운을 빕니다!

자율 주행 부분이 시작되기 전에 두뇌 화면에 무언가를 출력해야 하거나, 자이로스코프를 보정해야 하거나, 데이터를 출력해야 하는 경우(이 특정 예시에서는 로봇 팔과 집게를 사용하므로) 모터를 고정 모드로 설정할 것입니다. 즉, 팔을 위로 올리거나 집게발을 벌리면 모터가 그 특정 위치에 고정되어 중력에 의해 아래로 내려가지 않는다는 뜻입니다. 그래서 저는 제 모터들에 대한 자율 주행 이전 단계의 개념들을 정립하고 있는 중입니다. 이 구체적인 예시에서는 데모를 볼 때 어떤 모습인지 살펴보겠습니다.

음악 신호

자, 이제 그 부분을 알았으니, 이것이 바로 자율 주행 이전 단계인 "시작 시점"에 대한 설명입니다. 다음은 자율 주행 부분입니다. 경기 중 자율 주행 부분은 15초 동안 진행되며, 이 특정 코드 부분은 자율 주행 부분 동안 실행됩니다. 경쟁 템플릿이 실행되는 즉시, 자율 주행 이전 단계인 "시작 시점" 부분이 어떤 경우에도 시작될 것입니다. 그러면 15초간의 자율 주행이 시작됩니다. 우리는 경기장 제어 시스템과 그것이 모든 로봇의 시작과 정지 시점, 경기 중 특정 부분이 실행될 시점, 즉 특정 코드 라인이 실행될 시점을 어떻게 조절할지에 대해 이야기했습니다.

자, 제가 지금 보여드릴 구체적인 예시를 위해 설명드리자면, 우리 로봇은 집게발에 게임 오브젝트를 넣은 상태로 시작할 겁니다. 그러면 로봇 팔이 물체를 감싸고 공중으로 들어 올려진 다음 200mm 앞으로 전진하고 팔을 아래로 내려 게임 오브젝트를 떨어뜨립니다. 예를 들어, 이는 경기 초반에 득점하는 상황을 시뮬레이션할 수 있습니다. 자율 주행 구간 동안 이런 일이 일어날 겁니다. 다시 말해, 자율 주행 기능은 컨트롤러의 영향으로 로봇을 운전자가 제어할 수 없다는 것을 의미합니다. 이 부분에서는 모든 것이 자율적으로 작동합니다. 모든 것은 코드를 통해 이루어집니다.

여기 세 번째 부분을 보면 운전자 제어 기능이 있습니다. 자, 제가 한 가지 말씀드리고 싶은 것은, 장치 구성에서 구동계와 컨트롤러를 구성할 수 있다는 점입니다. 즉, 조이스틱에 서로 다른 구동계 구성을 할당할 수 있고, 각기 다른 버튼에 서로 다른 모터를 제어하도록 할당할 수도 있다는 뜻입니다. 하지만 컨트롤러의 버튼을 다 눌렀거나 조작하고 싶은 다른 요소가 있다고 가정해 보겠습니다. "운전자 제어 시" 이벤트 블록에 장치 구성에서 접근할 수 없는 특정 작업을 추가하거나, 구동계의 속도를 설정하는 등의 작업을 수행할 수 있습니다.

자, 여기 드라이버 제어 부분에 대한 제 구체적인 코드 예시를 다시 한번 보여드리겠습니다. 이 코드를 사용하면 컨트롤러의 버튼 하나로 클로를 제어할 수 있습니다. 그게 어떤 모습일지 한번 지켜보죠. 그러니까 다시 말해, 드라이버 제어 기능을 사용할 때 컨트롤러를 이용한 장치 구성과 드라이버 제어 기능을 동시에 사용할 수 있다는 겁니다. 아니면 둘 중 하나를 사용할 수도 있어요. 자율 주행 전 "시작 시", 자율 주행, 운전자 제어 등 세 가지 스택 중 어느 것도 사용하지 않는 경우 해당 필드를 비워둘 수 있습니다.

음악 신호

괜찮은. 자, 이제 모든 설명을 마쳤으니, 실제로 제 로봇에서 실행했을 때 어떤 모습인지 살펴보겠습니다. 괜찮은. 제 컨트롤러에서 한번 살펴볼까요? 프로그램 목록으로 이동하면 이미 내 컴퓨터에 다운로드한 대회 템플릿 프로젝트를 확인할 수 있습니다. 그리고 마우스 커서를 하나 위로 올리면 시간 제한 달리기 옵션이 나타납니다. 이것은 제가 앞서 말씀드린 현장 제어 시스템을 시뮬레이션하는 것입니다. 모든 것이 그 현장 제어 시스템에 의해 어떻게 제어되는지를 보여줄 것입니다. 그래서 대회 프로젝트가 실제로 시작되는 시점, 경기 중 자율 주행 부분, 그리고 운전자 제어 부분 모두 이 컨트롤러의 시간 측정 기능을 이용해 시뮬레이션할 수 있습니다.

감사 편지

이 과정을 함께 살펴보는 데 시간을 내주셔서 감사합니다. 이 시연이 도움이 되었기를 바랍니다.

마지막 메시지

궁금한 점이 있거나 추가 설명이 필요하시면 언제든지 연락 주세요. 즐거운 코딩 되시고, 로봇 프로젝트에 행운을 빌어요!

제가 그걸 선택하면 자율 주행 구간은 15초, 운전자 제어 구간은 1분 45초라고 표시될 겁니다. 그리고 이 버튼을 다시 누르면 실제로 작동하기 시작할 거예요. 제가 시작하면 경기에서처럼 3-2-1 카운트다운이 시작될 거예요. 그럼 이제 시작하겠습니다.

그러니까 제가 시작 버튼을 누르는 순간 자율 주행 부분이 실행되거나, 자율 주행 전 단계가 먼저 시작될 겁니다. 어떤 경우든 마찬가지죠. 그러면 곧바로 자율 주행 부분이 시작됩니다. 자율 주행 부분이 시작되는 순간 바로 보여드리겠습니다. 제가 컨트롤러로 로봇을 움직여도 로봇은 움직이지 않습니다. 자율 주행 구간에서는 컨트롤러로 로봇을 제어할 수 없기 때문입니다.

[음악 시작]

그럼 이제 그 구체적인 장면이 어떻게 펼쳐지는지 직접 확인해 보겠습니다. 자, 시작해 볼까요? 괜찮은. 자, 자율 주행 구간이 아직 몇 초 남았습니다. 보시다시피 제가 컨트롤러를 움직여도 아무 일도 일어나지 않는데, 자율 주행 구간에서는 컨트롤러로 로봇을 제어할 수 없기 때문입니다. 하지만 운전 제어 모드로 전환되는 순간, 비로소 로봇을 제대로 제어할 수 있게 됩니다.

자, 그럼 여기서 계속 진행해 보겠습니다. 우리 드라이버 제어 부분 프로젝트에서 말씀드렸듯이, 저는 이러한 여러 부분을 제어할 수 있습니다. 이제 1분 25초가 남았습니다. 이제 운전자 설정에 따라 작동 방식을 설명드리겠습니다. 이 부분은 구동계를 제어하고, 이 부분은 팔을 제어하며, 이 버튼은 집게를 제어합니다. 버튼 한 번만 누르면 물건을 잡을 수 있게 됩니다. 여기 있는 두 개의 버튼을 눌러 팔을 올리고 내릴 수 있습니다. 집게를 조작하는 버튼 하나. 닫힘, 열림.

이 기능은 장치 구성에서 선택할 수 있는 옵션이 아니기 때문에 직접 코드를 작성해야 했습니다. 바로 그 때문에 해당 스택에서 볼 수 있는 드라이버 제어 이벤트 블록을 사용한 것입니다. 운전 제어 부분의 남은 시간 동안 카운트다운이 계속될 것입니다. 하지만 보시다시피, 저는 그걸 멈추겠습니다. 드라이버 컨트롤 부분이 끝나면 모든 것이 꺼지고 경기가 종료됩니다.

템플릿의 세 가지 다른 부분을 볼 수 있습니다. 다시 한번 말씀드리지만, 자율 주행 모드 시작 시의 사전 자율 주행 섹션은 자율 주행 모드든 운전자 제어 모드든 상관없이 실행됩니다. 그런 다음 자율 주행 부분으로 진입합니다. 이런 현상이 발생하면 컨트롤러를 사용할 수 없습니다. 그 과정이 끝나면, 컨트롤러를 사용하여 로봇을 실제로 제어할 수 있는 드라이버 제어 부분으로 넘어가게 되는데, 이 과정은 1분 45초 동안 진행됩니다. 앞서 말씀드린 것처럼, 현장 제어 시스템을 사용하면 모든 로봇이 동시에 시작하고 멈춥니다.

[음악 시작]

괜찮은. 이 영상에서 다룬 내용을 간단히 정리해 볼까요? 블록 공모전 템플릿을 살펴보았습니다. 세 가지 다른 부분이 있습니다. 시작 시점은 자율 주행 이전 단계이며, 이는 어떤 상황에서도 계속 실행될 것입니다. 이는 변수 초기화, 자이로스코프 설정 및 보정, 두뇌 화면 출력, 모터 위치 설정(예: 고정) 또는 팔을 특정 위치로 올리는 등의 작업에 사용될 수 있습니다. 이 모든 과정은 경기 자율 플레이 부분이 시작되기 전에 완료됩니다.

그다음은 자율 주행 부분, 방금 보셨던 자율 주행 스택으로 넘어가는데, 이 부분에서는 로봇이 컨트롤러나 운전자와의 상호 작용 없이 15초 동안 완전히 코드로만 움직입니다. 해당 섹션이 완료되면 드라이버 제어 부분으로 넘어갑니다. 이 부분은 이전에 살펴본 장치 구성에서 특정 모터 등을 조이스틱 버튼 등에 할당하는 방식으로 제어할 수도 있고, 로봇에 대한 사용자 지정 코드를 작성할 수 있는 특정 스택을 통해서도 제어할 수 있습니다. 둘 중 하나만 사용하거나 둘 다 사용할 수 있습니다.

그리고 앞서 언급했듯이, 프로그램 전체에서 이 세 가지 섹션을 전혀 사용하지 않는다면 이벤트 블록의 스택을 비워두셔도 됩니다.

시청해 주셔서 감사합니다. 이 영상이 대회 템플릿을 더 잘 이해하는 데 도움이 되었으면 좋겠습니다.

다시 말씀드리지만, 이 템플릿을 사용하는 이유는 경기 중 모든 로봇이 동시에 시작하고 멈추도록 하기 위함입니다. 그 이유는 경기장에 로봇이 네 대 있을 예정이고, 모든 로봇이 동시에 출발하고 멈추도록 해야 하기 때문입니다.

이 모든 정보가 여러분이 대회 템플릿에 대해 배우고 VEX 로봇 대회 경기에 참가할 준비를 하는 데 도움이 되었기를 바랍니다. 너무 신나요.

축하합니다! 4장을 완료하셨네요. 다음 영상에서 뵙겠습니다.

Learning Objectives

Learning Objectives Section
  • VEXcode V5에서 블록 경쟁 템플릿의 주요 요소(시작 시점, 자율 주행 및 운전자 제어 섹션 포함)를 정의합니다.

Summary

Summary Section

이 영상은 VEX V5 교육 과정 소개 4장의 두 번째 영상입니다. 아직 첫 번째 영상을 시청하지 않으셨다면, 돌아가서 레슨 1: VEX 로봇 경진대회차전의 메커니즘을 시청하세요.

2강에서는 VEXcode V5의 블록 경진대회 템플릿의 세 가지 주요 요소 각각에 대해 실제 예시를 통해 살펴보겠습니다.

토론 및 질문이 있으시면, 공동 학습 및 탐구를 위한 전용 PD+ 커뮤니티 스레드에 참여하세요.

축하합니다! VEX V5 입문 교육 과정을 수료하셨습니다!