Skip to main content

2과: 5번지까지 운전하세요

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

숫자 그리드 맵 놀이터의 위에서 아래로 본 이미지입니다. VR 로봇은 숫자 1의 왼쪽 하단 모서리에서 볼 수 있습니다. 숫자 5의 아랫줄 중앙에 콜아웃이 보입니다.

VR 로봇이 X축을 따라 이동하며 X 값이 증가하면서 숫자 그리드 맵 놀이터의 숫자 '5'로 이동합니다.

놀이터 중앙에 x축이 겹쳐진 숫자형 그리드 맵 놀이터입니다. 각 사각형의 중심은 X축 값으로 표시되며, 왼쪽은 -900에서 시작하여 각 사각형마다 200씩 증가하여 오른쪽은 900이 됩니다. VR 로봇은 왼쪽 하단 모서리에 있는 숫자 1과 숫자 5를 가리키는 화살표와 함께 표시됩니다.

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

이전의 숫자 그리드 맵 놀이터의 왼쪽 하단 모서리에 x축과 y축이 겹쳐져 있습니다. x축의 -100에서 숫자 5로, y축의 -900에서 숫자 5로 화살표가 표시됩니다. VR 로봇은 여전히 1위에 있고, 좌표는 로봇 아래 -900입니다.

  • 시작하려면 VR 로봇이 숫자 '5'를 마주보고 있어야 합니다. 드래그하거나 turn_for 명령을 입력하세요.
# "main"
에 프로젝트 코드 추가 def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)
  • turn_for명령 아래로 while 루프를 끌어옵니다. 프로젝트는 다음과 같아야 합니다.
# "main"에 프로젝트 코드 추가
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while condition:
        wait(5, MSEC)
  • 거리 센서 장치와 마찬가지로 이 프로젝트에서는 비교 연산자와 함께 위치 센서 위치 조건을 사용하여 숫자 그리드 맵 플레이그라운드탐색합니다. while 루프의 조건을 X축의 위치 명령으로 밀리미터(mm) 단위로 -100 미만으로 설정합니다. 프로젝트는 다음과 같아야 합니다.
# "main"에 프로젝트 코드 추가
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        wait(5, MSEC)
  • while 루프 안에 대기하지 않는 drive 명령을 끌거나 입력하세요. 프로젝트는 다음과 같아야 합니다.
# "main"에 프로젝트 코드 추가
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
  • VR 로봇이 놀이터의 왼쪽에서 오른쪽으로 주행하기 때문에 '보다 큼' 연산자 대신 '보다 작음' 연산자가 사용된다는 점에 유의하세요. VR 로봇은 -900밀리미터(mm)의 X값에서 시작합니다. VR 로봇이 앞으로 나아갈수록 X 값이 증가하므로 X 값이 -100보다 작은 동안 로봇은 계속 앞으로 나아갑니다.

이전의 숫자 그리드 맵 놀이터의 왼쪽 하단 모서리에 x축과 y축이 겹쳐져 있습니다. x축의 -100에서 숫자 5로, y축의 -900에서 숫자 5로 화살표가 표시됩니다. VR 로봇은 여전히 1위에 있고, 좌표는 로봇 아래 -900입니다.

귀하의 정보를 위해

VR 로봇이 X축이나 Y축을 따라 이동하길 원하는 방향에 따라 프로젝트에서 사용할 비교 연산자를 선택해야 합니다. VR 로봇이 더 큰 값을 향해 이동할 때,while 루프와 함께 '보다 작음(<)' 연산자가 사용됩니다. VR 로봇이 더 작은 값을 향해 이동할 때,while 루프와 함께 '보다 큼(>)' 연산자가 사용됩니다.

이는 놀이터를 볼 때 좌우로 움직이는 것과 일치합니다. VR 로봇이 왼쪽에서 오른쪽으로 또는 아래에서 위로 움직이는 경우(더 큰 값), 목표 값보다 에서 이 작은 위치에서는 '작음' 연산자를 사용하여 구동합니다. 

숫자 그리드 맵 놀이터의 두 가지 위에서 본 모습. 첫 번째 그림에서는 VR 로봇이 숫자 51에 표시되어 있으며, 화살표는 로봇이 오른쪽으로 이동하여 숫자 60이 될 것임을 나타냅니다. 위의 텍스트는 '위치가 작은 동안 구동'이라고 되어 있습니다. 두 번째 그림에서는 VR 로봇이 숫자 6에 표시되어 있으며, 화살표는 로봇이 숫자 96까지 이동할 것임을 나타냅니다. 위의 텍스트는 '위치가 작은 동안 구동'이라고 되어 있습니다.

VR 로봇이 오른쪽에서 왼쪽으로 또는 위에서 아래로 움직이는 경우(값이 작을수록), 목표 값보다 또는 큰 위치가 되는 동안 '보다 큼' 연산자를 사용하여 구동합니다.

숫자 그리드 맵 놀이터의 두 가지 위에서 본 모습. 첫 번째 그림에서는 VR 로봇이 숫자 60에 표시되어 있으며, 화살표는 로봇이 왼쪽으로 숫자 51로 이동할 것임을 나타냅니다. 위의 텍스트는 '위치가 다음보다 큰 동안 구동합니다'라고 되어 있습니다. 두 번째 그림에서는 VR 로봇이 숫자 96에 표시되어 있으며, 화살표는 로봇이 숫자 6으로 이동할 것임을 나타냅니다. 위의 텍스트는 '위치가 다음보다 큰 동안 구동합니다'라고 되어 있습니다.

비교 연산자를 사용하면 VR 로봇은 위치 센서에서 보고된 값이 임계값보다 크거나(>) 작을 때(<) 이동합니다. 이 예에서 VR 로봇은 X축에서 양의 500밀리미터(mm)로 이동합니다. VR 로봇은 X축의 위치 이 0에서 양의 499 사이인 동안 운전됩니다. 위치 센서가위치 이 501 이상이라고 보고하면 VR 로봇은 운전을 멈춥니다. 

# "main"에 프로젝트 코드 추가
def main():
    monitor_sensor(location.position)
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < 500:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

위치 센서에서 보고된 값이 정확히 밀리미터(mm)인이 아니라는 점에 유의하세요. 거리 센서와 마찬가지로 비교 연산자는 VR 로봇이 프로젝트를 반복하고 값을 보고하는 데 시간이 걸리기 때문에 사용됩니다.

  • while 루프 밖으로 stop 명령을 끌거나 입력하세요. 프로젝트는 다음과 같아야 합니다.
# "main"에 프로젝트 코드 추가
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()
  • 놀이터 창이 아직 열려 있지 않으면 엽니다. 숫자 그리드 맵 놀이터이 열리고 프로젝트를 실행하세요.
  • 번호 그리드 맵 놀이터에서 VR 로봇이 숫자 '5'를 향해 주행하는 모습을 지켜보세요.

숫자 그리드 맵 놀이터의 위에서 아래로 본 이미지입니다. VR 로봇은 숫자 5의 아래쪽에서 볼 수 있습니다.

  • 이 프로젝트에서 VR 로봇은 숫자 그리드 맵 놀이터의 숫자 '5'를 향해 주행합니다. while 루프는 X 값이 해당 숫자가 있는 좌표의 X 값보다 에서 작은 동안 VR 로봇이 계속 전진하도록 사용됩니다.
  • X 값이 -100보다 커지면 프로젝트는 루프 외부의 다음 명령인 stop 명령으로 이동합니다. 숫자 '5'의 X 값은 -100이므로, X 값이 -100보다 커지면 VR 로봇이 운전을 멈춥니다.

방금 실행된 파이썬 프로젝트의 흐름입니다. 화살표는 로봇이 오른쪽 90도 회전이 완료되면 while 루프로 이동한다는 것을 나타냅니다. while 루프 옆에는 'x 값이 -100보다 작으면 True를 반환하고 VR 로봇이 전진합니다.'라는 텍스트가 있는 순환 화살표가 있습니다. 그 아래에는 'x 값이 -100보다 크면 False를 반환합니다'라는 텍스트가 있는 빨간색 화살표가 있습니다. VR 로봇이 운전을 멈췄습니다.'

귀하의 정보를 위해

위치 센서에서 보고하는 값은 정확히이 아니라~100밀리미터(mm)일 수 있습니다. 거리 센서와 마찬가지로 비교 연산자는 VR 로봇이 프로젝트를 반복하고 값을 보고하는 데 시간이 걸리기 때문에 사용됩니다.

놀이터 창의 대시보드를 확대하여 위치 센서의 보고된 x 값이 -90밀리미터임을 보여줍니다.

VEXcode VR Python에서는 프로젝트에서보다 크거나과 같음(>=) 또는 보다 작거나과 같음(<=) 비교 연산자를 사용하여 움직임의 정확도를 높일 수 있습니다.

# "main"에 프로젝트 코드 추가
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) <= -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

VR 로봇의 속도와 프로젝트가 루프를 반복하는 속도에 따라 연산자에<= 또는 >=와 같은 값이 추가되면 VR 로봇이 임계값에 더 가깝게 멈출 수 있음을 알 수 있습니다.

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