구동계#
소개#
구동계는 VR 로봇의 주행 및 회전을 제어합니다. 구동계를 통해 전진 또는 후진, 좌회전 또는 우회전, 방향 전환, 그리고 회전 추적이 가능합니다.
구동계를 코딩하는 방법은 여러 가지가 있습니다. 아래는 모든 구동계 코딩 방법의 목록입니다.
동작 — 로봇을 이동시키고 회전시키세요.
drive— 로봇을 무한히 전진 또는 후진으로 이동시킵니다.drive_for— 로봇을 특정 거리만큼 앞뒤로 이동시킵니다.turn— 로봇을 왼쪽 또는 오른쪽으로 계속 회전시킵니다.turn_for— 로봇을 특정 각도만큼 왼쪽 또는 오른쪽으로 회전시킵니다.turn_to_heading— 로봇을 -359도에서 359도 사이의 특정 방향으로 향하게 합니다.turn_to_rotation— 로봇을 특정 회전으로 회전시킵니다.stop— 로봇의 움직임을 멈춥니다.
뮤테이터 — 구동계 설정을 조정합니다.
set_heading— 로봇의 현재 방향을 새로운 방향으로 변경합니다.set_rotation— 로봇의 현재 회전을 새로운 회전으로 변경합니다.set_timeout— 로봇이 동작을 완료하려고 시도할 시간을 설정합니다.set_drive_velocity— 로봇에게 얼마나 빨리 운전해야 하는지 알려줍니다.set_turn_velocity— 로봇에게 회전 속도를 알려줍니다.
게터 - 구동계 상태를 확인합니다.
행위#
drive#
drive 로봇을 전진 또는 후진으로 무한히 이동시킵니다. 로봇은 방향 전환이나 정지와 같은 다른 동작이 주어질 때까지 계속 움직입니다.
Usage:
drivetrain.drive(direction)
매개변수 |
설명 |
|---|---|
|
로봇의 이동 방향: |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
drive_for#
drive_for 값이 이 특정 거리만큼 앞뒤로 이동합니다. 프로젝트는 로봇의 이동이 완료될 때까지 기다린 후 다음 코드를 실행합니다.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
매개변수 |
설명 |
|---|---|
|
로봇의 이동 방향: |
|
로봇이 주행한 거리입니다. 이 값은 |
|
선택 사항입니다. 거리 단위는 |
|
선택 사항입니다. |
def main():
# Drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
# VR threads — Do not delete
vr_thread(main)
turn#
turn 턴은 로봇을 왼쪽 또는 오른쪽으로 계속 회전시킵니다. 로봇은 주행이나 정지와 같은 다른 동작을 명령받을 때까지 계속 회전합니다.
Usage:
drivetrain.turn(direction)
매개변수 |
설명 |
|---|---|
|
로봇이 회전하는 방향: |
def main():
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
turn_for#
turn_for 로봇을 지정된 각도만큼 왼쪽 또는 오른쪽으로 회전시킵니다. 회전은 로봇의 현재 위치를 기준으로 합니다. 프로젝트는 로봇이 회전을 완료할 때까지 기다린 후 다음 코드를 실행합니다.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
매개변수 |
설명 |
|---|---|
|
로봇이 회전하는 방향: |
|
로봇이 회전하는 각도(도)입니다. |
|
선택 사항입니다. 회전 단위: |
|
선택 사항입니다. |
def main():
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_heading#
헤딩은 로봇이 향하는 방향을 도 단위로 나타낸 것입니다. turn_to_heading 은 로봇을 -359도에서 359도 사이의 특정 방향으로 회전시킵니다. 로봇은 목표 방향에 도달하기 위해 가장 짧은 경로로 회전합니다.
로봇의 초기 진행 방향은 0도입니다.
이 프로젝트는 로봇이 회전을 완료할 때까지 기다린 후 다음 코드 줄을 실행합니다.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
매개변수 |
설명 |
|---|---|
|
로봇이 향해야 할 방향을 도 단위로 지정합니다. 이 값은 |
|
선택 사항입니다. 회전 단위: |
|
선택 사항입니다. |
def main():
# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_rotation#
turn_to_rotation 로봇을 특정 회전 방향으로 회전시킵니다.
회전은 로봇이 회전한 정도를 도 단위로 측정한 값입니다. 프로젝트 시작 시 회전 값은 0도로 설정됩니다. 회전은 set_rotation 메서드를 사용하여 설정할 수도 있습니다.
회전 값은 절대값입니다. 즉, 회전 방향은 로봇의 현재 회전 각도에 따라 결정됩니다. 오른쪽으로 회전하면 회전 각도가 증가하고, 왼쪽으로 회전하면 회전 각도가 감소합니다.
예를 들어, 로봇이 0도에서 시작하여 720도 회전하면 오른쪽으로 두 번 회전합니다. 그런 다음 360도 회전하면 720도보다 360도가 작기 때문에 왼쪽으로 한 번 회전합니다.
이 프로젝트는 로봇이 회전을 완료할 때까지 기다린 후 다음 코드 줄을 실행합니다.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
매개변수 |
설명 |
|---|---|
|
로봇이 회전할 각도(도)입니다. 이 값은 |
|
선택 사항입니다. 회전 단위: |
|
선택 사항입니다. |
def main():
# Turn left, then spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
stop#
stop 로봇의 움직임을 멈춥니다.
Usage:
drivetrain.stop()
매개변수 |
설명 |
|---|---|
이 메서드에는 매개변수가 없습니다. |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
돌연변이체#
set_heading#
헤딩은 로봇이 바라보는 방향을 도 단위로 나타낸 것입니다. set_heading 은 로봇의 현재 헤딩 값을 새로운 헤딩 값으로 변경합니다.
예를 들어, 로봇이 오른쪽을 향하도록 회전한 상태에서 방향을 0도로 설정하면 오른쪽을 향한 위치가 새로운 0도가 됩니다. 그러면 로봇은 이 새로운 방향을 기준으로 다른 위치로 회전할 수 있습니다.
Usage:
drivetrain.set_heading(heading, units)
매개변수 |
설명 |
|---|---|
|
로봇의 진행 방향 값을 도 단위로 설정합니다. 이 값은 |
|
선택 사항입니다. 제목 단위: |
def main():
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_rotation#
회전은 로봇이 회전한 정도를 각도로 나타낸 것입니다. 프로젝트 시작 시 회전 값은 0도로 설정됩니다. set_rotation 명령어를 사용하면 로봇의 현재 회전 값을 새로운 값으로 변경할 수 있습니다.
예를 들어, 로봇이 오른쪽으로 두 바퀴를 완전히 돌았다면 회전 값은 720도가 됩니다. 회전 값을 0도로 설정하면 회전 값이 720도에서 0도로 초기화됩니다. 그러면 로봇은 이 새로운 값을 기준으로 회전할 수 있습니다.
Usage:
drivetrain.set_rotation(rotation, units)
매개변수 |
설명 |
|---|---|
|
로봇의 회전 값을 도 단위로 설정합니다. 이 값은 |
|
선택 사항입니다. 회전 단위: |
def main():
# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
set_timeout 은 로봇이 동작을 완료하려고 시도하는 시간을 설정합니다. 로봇이 해당 시간 내에 동작을 완료하지 못하면 시도를 중단하고 다음 코드 줄로 넘어갑니다. 이렇게 하면 로봇이 동작 중에 멈추는 것을 방지할 수 있습니다.
Usage:
drivetrain.set_timeout(value, units)
매개변수 |
설명 |
|---|---|
|
로봇이 동작을 완료하려고 시도할 수 있는 시간입니다. 이 값은 양수 |
|
선택 사항입니다. 시간 단위는 |
def main():
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
# VR threads — Do not delete
vr_thread(main)
set_drive_velocity#
set_drive_velocity 로봇이 얼마나 빠르게 주행해야 하는지를 알려줍니다. 백분율이 높을수록 로봇은 더 빠르게 주행하고, 백분율이 낮을수록 더 느리게 주행합니다.
모든 프로젝트는 로봇이 기본적으로 50% 속도로 주행하는 것으로 시작합니다.
참고: 속도가 높을수록 로봇의 주행 속도는 빨라지지만 정밀도는 떨어질 수 있습니다. 속도가 낮을수록 로봇의 주행 속도는 느려지지만 정밀도는 높아질 수 있습니다.
Usage:
drivetrain.set_drive_velocity(velocity, units)
매개변수 |
설명 |
|---|---|
|
주행 속도는 0%에서 100%까지입니다. 정수 |
|
선택 사항입니다. 속도 단위: |
def main():
# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
# VR threads — Do not delete
vr_thread(main)
set_turn_velocity#
set_turn_velocity 로봇이 회전하는 속도를 지정합니다. 백분율이 높을수록 로봇은 더 빠르게 회전하고, 백분율이 낮을수록 로봇은 더 느리게 회전합니다.
모든 프로젝트는 로봇이 기본적으로 50% 속도로 회전하는 것으로 시작합니다.
참고: 속도가 높을수록 로봇의 회전 속도는 빨라지지만 정밀도는 떨어질 수 있습니다. 속도가 낮을수록 로봇의 회전 속도는 느려지지만 정밀도는 높아질 수 있습니다.
Usage:
drivetrain.set_turn_velocity(velocity, units)
매개변수 |
설명 |
|---|---|
|
회전 속도는 0%에서 100%까지입니다. 이 값은 |
|
선택 사항입니다. 속도 단위: |
def main():
# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
# VR threads — Do not delete
vr_thread(main)
게터스#
heading#
헤딩은 로봇이 향하는 방향을 도 단위로 나타낸 것입니다. heading 로봇의 현재 헤딩 값을 0도에서 359.99도 사이의 값으로 반환합니다.
로봇의 초기 진행 방향은 0도입니다.
Usage:
drivetrain.heading(units)
매개변수 |
설명 |
|---|---|
|
선택 사항입니다. 제목 단위: |
def main():
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Heading: ")
brain.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotation#
회전은 로봇이 회전한 정도를 각도로 나타낸 값입니다. 프로젝트 시작 시 회전 값은 0도로 설정됩니다. rotation 입력하면 로봇의 현재 회전 값이 반환됩니다.
오른쪽으로 돌면 회전 각도가 증가하고, 왼쪽으로 돌면 회전 각도가 감소합니다. 예를 들어, 오른쪽으로 두 바퀴를 완전히 돌면 720도 회전하게 됩니다.
Usage:
drivetrain.rotation(units)
매개변수 |
설명 |
|---|---|
|
선택 사항입니다. 회전 단위: |
def main():
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Rotation: ")
brain.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_done#
is_done 로봇의 이동 완료 여부를 부울 값으로 반환합니다. 이 값은 로봇의 움직임에 따라 다른 동작의 타이밍을 제어하는 데 사용할 수 있습니다.
True— 로봇의 이동이 완료되었습니다.False— 로봇은 여전히 움직이고 있습니다.
이 방법은 wait 매개변수를 갖는 다음 드라이브트레인 방법과 함께 작동합니다: drive_for, turn_for, turn_to_heading, 및 turn_to_rotation.
Usage:
drivetrain.is_done()
매개변수 |
설명 |
|---|---|
이 메서드에는 매개변수가 없습니다. |
is_moving#
is_moving 로봇이 움직이고 있는지 여부를 부울 값으로 반환합니다. 이 값은 로봇의 움직임에 따라 다른 동작의 타이밍을 제어하는 데 사용할 수 있습니다.
True— 로봇이 움직이고 있습니다.False— 로봇이 움직이지 않습니다.
Usage:
drivetrain.is_moving()
매개변수 |
설명 |
|---|---|
이 메서드에는 매개변수가 없습니다. |