Skip to main content

수업 3: 센서와 전자석을 사용하여 목표에 디스크 배치

프로젝트에 거리 센서 추가

2과에서는 VR 로봇이 디스크에서 떨어지기 위해 시작 지점으로 후진 주행했습니다. 이를 위해 사용자는 VR 로봇이 이동해야 하는 정확한 거리를 계산해야 했습니다. 항상 가능한 것은 아닙니다. 대신 VR 로봇은 보고된 센서 값을 사용하여 일관된 정밀도로 디스크를 집어 올리고 떨어뜨릴 수 있습니다. 

이 수업에서는 거리 센서를 사용하여 VR 로봇이 목표로 돌아갈 때 주행을 멈춰야 하는 위치를 결정합니다. 이 센서는get_distance 명령을 사용하여 VR 로봇의 전면에서 가장 가까운 물체까지의 거리를 보고합니다. 거리 센서를 사용하여 VR 로봇을 목표 지점으로 되돌리려면 다음 작업이 필요합니다. 

  • VR 로봇은 거리 센서가 목표를 향하도록 180도 회전해야 합니다. turn_to_heading 명령을 사용하면 VR 로봇이 올바른 방향으로 회전하도록 할 수 있습니다.
  • VR 로봇은 놀이터 뒷벽에 있는 거리 센서를 사용하여 디스크를 떨어뜨릴 위치를 결정합니다. 
  • VR 로봇이 목표를 향해 달려갑니다. 
디스크 무버 놀이터에서 첫 번째 파란색 디스크가 있는 위치에 있는 VR 로봇의 사시도. 디스크가 전자석에 부착되어 있습니다. 파란색 목표는 로봇 뒤에 있습니다.

귀하의 정보를 위해

turn_to_heading 명령은 자이로 센서를 사용하여 VR 로봇을 특정 방향으로 돌립니다. VR 로봇의 회전 방향(좌우)은 자이로 센서의 현재 방향에 따라 결정됩니다. VEXcode VR Python 명령어로 제목을 바꾸고, 구동계를 읽고, 밑줄을 밑줄 제목으로 바꾸고, 90과 괄호 안에 각도를 넣습니다.

turn_to_heading명령은 VR 로봇의 위치와 관계없이 VR 로봇을 특정 방향으로 안내하는 데 사용됩니다. 디스크를 집어 올리거나 떨어뜨릴 때 VR 로봇이 진로에서 벗어날 수 있습니다. turn_to_heading 명령을 사용하면 VR 로봇이 이전 방향을 기준으로 한 위치가 아닌 절대 위치로 회전하게 됩니다.

원의 중앙에 있는 VR 로봇의 위에서 내려다본 모습으로 로봇의 방향을 보여줍니다. 로봇의 전면과 맞춰 12시 위치는 0도입니다. 방위는 원을 따라 시계 방향으로 돌며, 3시 방향에서는 90도, 6시 방향에서는 180도, 9시 방향에서는 270도가 됩니다.

프로젝트 계속 구축 

  • Unit8Lesson3프로젝트 작업을 계속하세요.
  • 세 번째 주석 뒤에 turn_to_heading 명령을 추가합니다. 매개변수를 180도로 설정하면 프로젝트가 다음과 같이 표시됩니다. 

    def main():
        #1. down_eye.near_object()가 아닌 첫 번째 디스크
        으로 이동합니다.
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()
    
        # 2. 첫 번째 디스크
        magnet.energize(BOOST)
    
        # 3을 집어 올리세요. 목표를 향해 주행
        drivetrain.turn_to_heading(180, DEGREES)
    
        # 4. 목표에 디스크를 떨어뜨립니다.
  • 이제 VR 로봇이 목표를 향해 방향을 잡았으므로, VR 로봇은 목표 지점으로 다시 돌아와야 합니다. turn_to_heading 명령 아래에while 루프를 추가하면 프로젝트의 세 번째 섹션이 다음과 같이 표시됩니다. 

    	#3. 목표까지 주행
        drivetrain.turn_to_heading(180, DEGREES)
        while condition:
            wait(5, MSEC)
  • VR 로봇은 목표 지점으로 돌아가기 위해 거리 센서의 데이터를 사용하여 VR 로봇이 목표 지점 안에 있는지 확인합니다. 이전 수업에서 설명한 대로, Disk Mover Playground 의 각 격자 사각형의 크기는 200밀리미터(mm) x 200밀리미터(mm)입니다.놀이터 왼쪽 하단 모서리를 가까이서 본 모습입니다. 놀이터 바닥에 있는 10x10 격자의 각 사각형의 크기는 200mm x 200mm입니다.
  • 이러한 측정값을 사용하면 골의 중심이 놀이터 벽으로부터 약 200밀리미터(mm) 떨어져 있음을 알 수 있습니다.

    Disk Mover Playground의 왼쪽 하단 모서리를 가까이서 본 모습. VR 로봇은 전자석에 파란색 디스크를 부착하고 파란색 목표를 바라보고 있습니다. 운동장 뒷벽에서 파란색 골대 중앙까지의 거리는 200밀리미터로 표시됩니다.
  • VR 로봇은 주행해야 하며거리 센서는 VR 로봇이 놀이터 벽으로부터 200밀리미터(mm) 이상 떨어져 있다고 보고합니다. while 루프의 조건을 밀리미터(mm) 매개변수와 함께 get_distance 명령으로 설정합니다. 그런 다음 비교 연산자를 (>) 200보다 큰 수에 추가합니다. 이제 프로젝트의 세 번째 섹션은 다음과 같습니다. 

    	#3. 목표까지 주행
        drivetrain.turn_to_heading(180, DEGREES)
        while front_distance.get_distance(MM) > 200:
            wait(5, MSEC)
  • while 루프에 drive명령을 추가하면 프로젝트의 세 번째 섹션은 다음과 같습니다. 이렇게 하면 거리 센서가 200밀리미터(mm) 이상의 거리를 보고하는 동안 VR 로봇이 전진하도록 지시합니다.

    	#3. 목표 지점까지 주행
        drivetrain.turn_to_heading(180, DEGREES)
        while front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
  • VR 로봇이 목표 지점(벽으로부터 200mm)에 도달하면, VR 로봇은 주행을 멈춰야 합니다. while 루프 외부에 stop명령을 추가하면 프로젝트의 세 번째 섹션이 다음과 같이 보입니다.

    	#3. 목표 지점까지 주행
        drivetrain.turn_to_heading(180, DEGREES)
        while front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()
  • 이제 VR 로봇이 목표 지점에 멈췄으므로 디스크를 떨어뜨릴 수 있습니다. 네 번째 주석 아래에 energize 명령을 추가하고 매개변수를 'DROP'으로 설정합니다. 이제 프로젝트의 네 번째 섹션은 다음과 같습니다.

    	#4. 목표
        magnet.energize(DROP)에 디스크를 떨어뜨립니다.
  • VR 로봇은 디스크에 부딪히거나 넘어지는 것을 피하기 위해 짧은 거리를 후진으로 주행해야 합니다. 디스크와 충돌하면 VR 로봇이 진로에서 벗어날 가능성이 있습니다. 그러면 VR 로봇은 다시 디스크를 향하도록 방향을 바꿔야 합니다. 표시된 대로 마지막 활성화 명령 뒤에 다음 명령을 추가하여 VR 로봇이 100밀리미터(mm) 동안 후진 주행하고 0도 방향으로 다시 회전하도록 지시합니다. 프로젝트에서 명령이 올바르게 들여쓰기되었는지 확인하세요.

    	#4. 목표 지점에 디스크를 떨어뜨립니다.
        magnet.energize(DROP)
    
    	drivetrain.drive_for(REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGREES)
  • 아직 열려 있지 않으면 Disk Mover Playground 을 열고 프로젝트를 실행합니다.
  • VR 로봇은 전진하여 첫 번째 디스크를 집어 올린 다음 180도 방향으로 방향을 돌려 목표를 향합니다. 그러면 VR 로봇은 거리 센서에서 얻은 값을 사용하여 언제 주행을 멈추고 디스크를 떨어뜨릴지 결정합니다.

    디스크 무버 놀이터의 파란색 골대를 측면에서 본 모습. 골대에 첫 번째 파란색 디스크가 떨어지고, VR 로봇이 돌아서 골대 앞쪽에 위치하여 다음 디스크를 수집할 준비를 하고 있습니다.

목표에서 첫 번째 디스크를 삭제하기 위한 프로젝트 흐름

이 프로젝트의 이 부분에서는 while 루프가 거리 센서와 어떻게 작동하는지 주목하세요.

  • VR 로봇은 로 앞으로 주행하는센서는 벽으로부터 200mm 이상 떨어져 있습니다.
  • 거리 센서가 놀이터 벽과의 거리가 200밀리미터(mm) 이내임을 감지하면 프로젝트는 while루프 밖으로 다음 명령으로 이동하고 VR 로봇은 주행을 멈춥니다.
  • 이 프로젝트는에 하여 디스크를 목표 지점에 떨어뜨리는 방식으로 계속 진행됩니다.
  • 그러면 VR 로봇이 후진하여 180도 회전하여 다음 디스크를 마주할 준비를 합니다.

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