Skip to main content

수업 3: 다중 센서 입력

이전 수업에서는 거리 센서를 사용하여 VR 로봇이 물체를 감지했는지 여부를 확인하고, 감지했다면 해당 물체를 향해 앞으로 나아갔습니다. 그러나 VR 로봇이 놀이터 가장자리에 가까워서 멈출 수 있는지 판단하는 데에는 센서 값이 사용되지 않았습니다. VR 로봇이 놀이터 가장자리에 가까워졌을 때 멈추면 옆으로 이탈하는 것을 막을 수 있습니다.

이전 수업에서 로봇에 거리 센서를 사용하여 성을 감지한 다음, 이를 파괴하기 위해 주행하는 VEXcode VR 프로젝트가 왼쪽에 표시되어 있습니다. 오른쪽에는 진행 중인 프로젝트가 표시된 놀이터 창이 있는데, 여러 개의 성이 무너지고 VR 로봇이 놀이터 가장자리에서 떨어지려고 합니다.

현재 이 프로젝트는 앞으로 운전하고 방향을 바꾸는 동작을 영원히 반복합니다. 하지만 놀이터 주변의 빨간색 테두리를 확인할 조건은 없습니다. 따라서 VR 로봇은 앞으로 주행할 때 놀이터에서 떨어질 수 있습니다.

Dynamic Castle Crasher 놀이터에서 VR 로봇을 측면에서 본 모습. 성의 일부를 옆으로 밀어내고 가장자리에서 떨어지려는 모습.

VR 로봇이 놀이터 가장자리에 가까운지 여부를 판단하려면 또 다른 센서가 필요합니다. 앞으로 주행하고 방향을 바꾸는 동작은 빨간색 테두리가 감지될 때까지 반복하면 됩니다. 따라서 [Forever] 블록을 [Repeat until] 블록으로 바꾸어 붉은색 테두리를 감지하는 조건이 만족될 때까지 전진 주행과 회전 동작을 반복할 수 있다. 다운 아이 센서는 놀이터 주변의 빨간색 테두리를 감지하여 VR 로봇이 놀이터 가장자리에 가까이 있는지 확인하는 데 사용할 수 있습니다.

VEXcode VR 컬러 감지 블록은 Down Eye가 빨간색을 감지했다고 읽습니다.
  • 이전 수업의 Unit9Lesson2 프로젝트를 불러옵니다.
9단원 2과 프로젝트. 이 프로젝트는 시작 시 블록과 영원 시 블록으로 시작합니다. forever 블록 안에는 매개변수로 객체를 찾은 Front Distance를 갖는 If then 블록이 있습니다. If then 분기에는 거리 센서와 전진 블록을 사용하여 발견한 건물을 쓰러뜨리라는 주석이 있습니다. else 브랜치에는 거리 센서를 사용하여 건물을 찾고 오른쪽으로 돌라는 주석이 있습니다.
  • 프로젝트 이름을 Unit9Lesson3로 바꾸세요.
VEXcode VR 도구 모음 중앙에 있는 프로젝트 이름 상자는 빨간색 상자로 강조 표시되어 있으며, 플레이그라운드 선택 버튼 왼쪽에 있습니다. 프로젝트 이름은 단원 9, 수업 3입니다.
  • 다운 아이 센서를 지속적으로 검사하려면 블록이 필요합니다. VR 로봇은 다운 아이 센서가 빨간색을 감지할 때까지 이러한 행동을 반복해야 합니다. 먼저 [영구] 블록을 제거하세요.
프로젝트에서 Forever 블록을 제거하는 방법에 대한 개요입니다. 새로운 프로젝트는 Forever 루프 없이 When started 블록에서 If then else 블록으로 이동합니다.
  • [반복] 블록을 추가합니다.
If then else 블록 전체에 Repeat until 블록을 추가하는 방법에 대한 개요입니다. 새 프로젝트는 시작 시 블록으로 시작한 다음, 매개변수가 열려 있는 반복 블록으로 시작합니다. Repeat until 블록의 C 안에 If then else 블록이 있습니다.
  • [반복] 블록 안에 <Color sensing> 블록을 추가하고 매개변수를 'DownEye'가 '빨간색'을 감지하도록 설정합니다.
동일한 프로젝트에서 Down Eye Detects 빨간색을 Repeat until 블록의 매개변수로 설정했습니다.

이 프로젝트에서는 [대기] 블록 대신 [반복] 블록을 사용합니다. [Wait until] 블록은 조건이 충족될 때까지 프로젝트 흐름을 일시 중지하는 대기 블록이기 때문입니다. [Wait until] 블록을 사용하면 [If then else] 블록은 [Wait until]의 조건이 충족될 때까지 실행되지 않고 [If then else] 블록은 한 번만 실행됩니다.

Repeat until 루프 대신 Wait until 블록을 사용한 경우의 프로젝트 흐름 다이어그램입니다. 이 프로젝트는 조건이 참으로 보고될 때까지 대기 블록에서 대기한 다음, 조건이 참으로 보고된 후에야 If then else 블록으로 이동합니다.

[Repeat until] 블록을 사용하면 [If then else] 조건이 지속적으로 확인되고 실행됩니다.

Repeat Until 블록을 사용한 프로젝트 흐름 다이어그램으로, If then else 블록의 조건이 지속적으로 확인되고, 객체가 발견되었는지(True) 또는 발견되지 않았는지(False)에 따라 실행되는 것을 보여줍니다.
  • [반복] 블록을 사용하는 목적을 기록하는 주석을 추가합니다.
이전에 빌드한 것과 동일한 프로젝트인데, When started 블록과 Repeat until 블록 사이에 Comment 블록을 추가했습니다. 해당 코멘트에는 '빨간색 테두리가 감지될 때까지 건물을 찾으세요.'라고 적혀 있습니다.
  • Dynamic Castle Crasher Playground 을 열고 프로젝트를 실행합니다.
  • 이 프로젝트를 실행하면, VR 로봇은 감지된 물체를 향해 주행하고 그렇지 않으면 오른쪽으로 회전합니다. 하지만 다운 아이 센서가 빨간색 테두리를 찾고 있음에도 불구하고 VR 로봇은 빨간색을 감지하면 무엇을 해야 할지 알려주지 않아 계속 주행하다가 결국 놀이터에서 떨어지고 맙니다.

    프로젝트가 진행되는 동안 Dynamic Castle Crasher 놀이터 창문을 위에서 내려다본 모습. 여러 개의 성이 무너지고 VR 로봇이 성 조각을 쫓아 놀이터 오른쪽 상단 가장자리에서 벗어나는 모습이 담겨 있습니다.

[반복] 블록의 조건이 충족되면 프로젝트 흐름은 [반복] 블록에서 실행됩니다.

이 강의의 나머지 부분을 계속하려면 다음 버튼을 선택하세요.