Skip to main content

3과: '31'번지로 운전하세요

이 수업에서 VR 로봇은 번 그리드 맵 놀이터에서 숫자 '31'까지 주행한 후 숫자 '1'로 돌아옵니다!

숫자 그리드 맵 놀이터의 위에서 내려다본 모습. 빨간색 상자로 숫자 31이 강조 표시되어 있습니다. VR 로봇은 숫자 1에서 시작하며, 숫자 31이 적힌 사각형은 그보다 세 칸 위에 있습니다.

VR 로봇이 숫자 그리드 맵 놀이터의 숫자 '31'로 이동하기 위해 Y축을 따라 이동합니다.

숫자 그리드 맵 놀이터의 위에서 내려다본 모습. 숫자 31이 검은색 상자로 강조 표시되어 있습니다. 선은 Y축을 따라 측정값을 나타내는데, 첫 번째 공간은 Y축에서 -900밀리미터이고, 다음 공간은 -700이며, 매번 200씩 계산됩니다. 숫자 31의 공간은 -300밀리미터의 Y 위치에 있습니다.

VR 로봇은 숫자 그리드 맵 놀이터에 있는 숫자 '31'의 위치로 이동합니다. 하지만 VR 로봇이 해당 번호로 이동하려면 먼저 VR 로봇에게 해당 번호의 위치가 어디인지 알려야 합니다. 숫자 '31'의 좌표는 (-900, -300)입니다.

숫자 그리드 맵 놀이터의 위에서 아래로 본 모습. 두 개의 축 표시기가 숫자 31 공간의 위치를 표시합니다. VR 로봇은 -900 X와 -900 Y에서 시작하고, 숫자 31 공간은 -900 X와 -300 Y에 있습니다.
  • [드라이브] 대기 중이 아닌 블록을 작업 공간으로 끌어다 놓습니다.

    새로운 VEXcode VR 블록 프로젝트는 When Started 블록으로 시작하여 Drive Forward 블록으로 이어집니다.
  • [운전] 블록 아래에 [대기] 블록을 붙입니다.

    VEXcode VR 블록 프로젝트의 연장선으로, 이제 Drive Forward 블록 다음에 Wait Until 블록이 추가되었습니다. 이제 전체 프로젝트는 When Started, Drive Forward, Wait Until로 구성됩니다. Wait Until 블록에는 빈 부울 매개변수가 있습니다.
  • <Greater than> Boolean 리포터 블록을 [대기] 블록으로 끌어다 놓습니다.

    VEXcode VR 블록 프로젝트의 연장선으로, 이제 Wait Until 블록에 Greater Than 블록이 삽입되었습니다. 이제 전체 프로젝트는 '시작 시, 전진'으로 시작되고, 그 뒤에 '50보다 큰 값' 블록이 있는 '기다릴 때까지' 블록이 이어지며, '빈칸은 50보다 큰 값'이라고 표시됩니다.
  • VR 로봇이 놀이터 아래쪽에서 올라오기 때문에 <Less than> 블록 대신 <Greater than> 블록이 사용됩니다. VR 로봇의 Y 값은 -900밀리미터(mm)에서 시작합니다. VR 로봇이 앞으로 나아갈수록 Y 값이 증가합니다.

    두 개의 축 표시기가 숫자 31의 위치를 표시한 숫자 그리드 맵 놀이터의 위에서 아래로 본 모습과 같습니다. VR 로봇은 -900 X와 -900 Y에서 시작하고, 숫자 31 공간은 -900 X와 -300 Y에 있습니다.
  • (로봇의 위치) 블록을 <Greater than> 블록으로 끌어다 놓습니다.

    VEXcode VR 블록 프로젝트의 연장선으로, 이제 로봇 위치 블록이 Greater Than 블록에 삽입되었습니다. 이제 전체 프로젝트는 시작 시, 전진하고 로봇의 X 위치(밀리미터)가 50보다 클 때까지 기다립니다.
  • (로봇 위치) 블록의 매개변수를 "Y"로 설정하고, <Greater than> 블록의 매개변수를 -300으로 설정합니다.

    VEXcode VR 블록 프로젝트의 연장선으로, 이제 로봇 블록의 축 위치가 X에서 Y로 변경되었고, 그보다 큰 블록의 두 번째 매개변수가 50에서 -300으로 변경되었습니다. 이제 전체 프로젝트는 시작 시, 전진하고 로봇의 Y 위치(밀리미터)가 -300보다 클 때까지 기다립니다.
  • [운전 중지] 블록을 끌어서 프로젝트에 추가합니다.

    VEXcode VR 블록 프로젝트의 연장선으로, 이제 Wait Until 블록 아래에 Stop Driving 블록이 추가되었습니다. 이제 전체 프로젝트는 시작 시, 전진하고 로봇의 Y 위치(밀리미터)가 -300보다 클 때까지 기다립니다. 마지막으로, 운전을 멈추세요.
  • 아직 열려 있지 않으면 Number Grid Map Playground 을 실행하고 프로젝트를 실행합니다.
  • 번 그리드 맵 놀이터에서 VR 로봇이 번호 '31'로 주행하는 모습을 지켜보세요.

    VR 로봇이 숫자 31 공간에 놓여 있는 숫자 그리드 맵 놀이터의 위에서 내려다본 모습.
  • 이 프로젝트에서 VR 로봇은 번 숫자 그리드 맵 놀이터의 숫자 '31'까지 주행합니다. VR 로봇이 숫자 '31'로 이동하면서 Y 값이 증가하므로 이 프로젝트에서는 <Greater than> 블록을 사용합니다.
  • VR 로봇은 해당 숫자가 있는 좌표의 Y 값보다 Y 값이 이상 이하가 되면 멈춥니다. 숫자 '31'의 Y 값은 -300이므로, Y 값이 -300보다 커지면 VR 로봇이 운전을 멈춥니다.
VEXcode VR Blocks 프로젝트의 논리 흐름을 시각화한 다이어그램입니다. 이 프로젝트는 When Started 블록으로 시작하여 앞으로 주행을 시작하고 로봇 센서의 Y 위치(밀리미터)가 -300보다 커질 때까지 명령을 유지합니다. 그 후 Stop Driving 블록이 Drive Forward 명령을 종료합니다.

스위치 블록 사용 

이 수업에서는 VEX코드 [대기까지] 블록을 부울 조건과 함께 사용하여 로봇이 Y축에서 -300보다 큰 위치에 도달할 때까지 대기한 후 다음 동작으로 넘어가도록 명령하는 방법을 배웠습니다.

아래 이미지는 동일한 동작에 대한 Python 명령을 담고 있는 Switch 블록 옆에 있는 VEXcode 블록을 보여줍니다. 

VEXcode VR Wait Until 블록과 해당 스위치 블록을 비교한 것입니다. VR 블록에는 '로봇의 Y 위치(밀리미터)가 -300보다 커질 때까지 기다리세요'라는 문구가 있습니다. switch 블록의 Python 코드는 'while not location.position(Y, MM) > -300: wait(5, MSEC)'를 읽습니다. wait 명령은 while not 아래에 들여쓰기되어 있습니다.Switch 블록 내에서while not location.position(Y, MM) > -300:는 로봇의 X축을 따라 위치가 -300보다 큰지 확인하는 첫 번째 Python 명령입니다.

두 번째로 들여쓰기된 명령인wait (5, MSEC),조건 루프의 실행을 5밀리초 동안 일시 중지합니다.

VEXcode VR에서는 wait 명령이 항상 조건 루프에 추가됩니다. wait 명령의 목적은 VEXcode VR 플랫폼의 웹 기반 특성으로 인해 VEXcode VR이 의도한 대로 프로젝트를 제대로 실행할 수 있도록 하는 것입니다. 조건 루프를 사용할 때는 wait 명령을 절대로 삭제해서는 안 됩니다. 삭제하면 프로젝트가 의도한 대로 실행되지 않을 수 있습니다. 

이 예에서 프로젝트는 로봇의 위치가 5MSEC마다 Y 값 -300보다 큰지 여부를 확인합니다. 이 코드 줄은 첫 번째 코드 줄 바로 아래에 들여쓰기되어 있는데, 그 이유는 이 명령이 조건(Y 좌표 값이 -300보다 큰 경우)이 충족될 때까지 반복되는 동작이기 때문입니다. 

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