구동계#

소개#

VEX IQ(2세대) 로봇은 구동계를 사용하여 움직이고 회전합니다. 구동계는 로봇을 움직이기 위해 함께 작동하는 모터와 바퀴로 구성됩니다.

구성된 구동계는 연결된 자이로 센서, 브레인의 내장 관성 센서 또는 센서 없이 작동할 수 있습니다. 센서를 사용하는 경우, 구동계는 센서를 이용하여 로봇이 정확하게 움직이고 회전할 수 있도록 합니다. 각 프로젝트 시작 시 구동계는 센서를 자동으로 보정합니다. 보정하는 동안 로봇이 올바르게 움직이고 회전할 수 있도록 약 2초 동안 로봇을 정지 상태로 유지하십시오.

이 페이지에서는 구동계 이름으로 drivetrain 예시로 사용합니다. 필요에 따라 구성된 이름으로 교체하십시오.

구동계를 코딩하는 방법은 여러 가지가 있습니다. 아래는 모든 구동계 코딩 방법의 목록입니다.

동작 — 로봇을 이동시키고 회전시키세요.

  • drive — 로봇을 무한히 전진 또는 후진으로 이동시킵니다.

  • drive_for — 로봇을 특정 거리만큼 앞뒤로 이동시킵니다.

  • turn — 로봇을 왼쪽 또는 오른쪽으로 계속 회전시킵니다.

  • turn_for — 로봇을 특정 각도만큼 왼쪽 또는 오른쪽으로 회전시킵니다.

  • turn_to_heading — 로봇을 -359도에서 359도 사이의 특정 방향으로 회전시킵니다. 로봇은 목표 방향에 도달하기 위해 가장 짧은 방향으로 회전합니다.

  • turn_to_rotation — 로봇을 특정 회전으로 회전시킵니다.

  • stop — 로봇의 움직임을 멈춥니다.

  • calibrate_drivetrain — 드라이브트레인으로 구성된 센서를 보정합니다.

뮤테이터 — 구동계 설정을 조정합니다.

  • set_drive_velocity — 로봇에게 얼마나 빨리 운전해야 하는지 알려줍니다.

  • set_turn_velocity — 로봇에게 회전 속도를 알려줍니다.

  • set_stopping — 로봇이 어떻게 움직임을 멈출지 알려줍니다. 브레이크, 관성 주행 또는 정지.

  • set_timeout — 로봇이 동작을 완료하려고 시도할 시간을 설정합니다.

  • set_heading — 로봇의 현재 방향을 새로운 방향으로 변경합니다.

  • set_rotation — 로봇의 현재 회전을 새로운 회전으로 변경합니다.

  • set_turn_threshold — 회전이 완료되기 전에 로봇이 목표 각도에 얼마나 가까워져야 하는지 알려줍니다.

  • set_turn_constant — 로봇이 회전을 얼마나 강하게 수정하는지 변경합니다.

게터 — 이동 상태를 확인합니다.

  • heading — 로봇의 현재 헤딩을 0~359도에서 반환합니다.

  • rotation — 로봇의 현재 회전을 반환합니다.

  • velocity — 로봇이 얼마나 빠르게 주행하는지 반환합니다.

  • current — 구동계가 사용하는 전기 전류량을 반환합니다.

  • is_moving — 로봇이 움직이는지 여부를 부울 값으로 반환합니다.

  • is_done — 로봇이 이동을 완료했는지 여부를 부울 값으로 반환합니다.

  • is_turning — 로봇이 회전하는지 여부를 부울 값으로 반환합니다.

  • power — 구동계가 에너지를 얼마나 빨리 사용하는지 반환합니다.

  • torque — 구동계가 사용하는 토크의 양을 반환합니다.

  • efficiency — 구동계가 전력을 얼마나 효율적으로 사용하는지 반환합니다.

  • temperature — 구동계의 온도를 반환합니다.

제작자 - 구동계를 수동으로 생성하고 구성합니다.

  • DriveTrain — 자이로 센서나 관성 센서 없이 구동계를 생성합니다.

  • SmartDrive — 자이로 센서 또는 관성 센서를 사용하여 구동계를 생성합니다.

행위#

drive#

drive 로봇을 전진 또는 후진으로 무한히 이동시킵니다. 로봇은 방향 전환이나 정지와 같은 다른 동작이 주어질 때까지 계속 움직입니다.

Usage:
drivetrain.drive(direction, velocity, units)

매개변수

설명

direction

로봇의 이동 방향: FORWARD 또는 REVERSE.

velocity

선택 사항입니다. PERCENT사용할 경우 0%~100%, RPM사용할 경우 0~120 rpm, 또는 VelocityUnits.DPS사용할 경우 0~720도/초의 속도로 주행할 수 있습니다. 이 값은 정수 integer 또는 소수(float)일 수 있습니다. 속도가 제공되지 않으면 로봇은 현재 주행 속도로 주행합니다.

units

선택 사항입니다. 속도 단위는 다음과 같습니다. PERCENT (기본값), RPM (분당 회전수), 또는 VelocityUnits.DPS (초당 각도)입니다.

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive slowly in reverse then stop
drivetrain.drive(REVERSE, 20, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

drive_for#

drive_for 값이 이 특정 거리만큼 앞뒤로 이동합니다. 프로젝트는 로봇의 이동이 완료될 때까지 기다린 후 다음 코드를 실행합니다.

Usage:
drivetrain.drive_for(direction, distance, units, velocity, units_v, wait)

매개변수

설명

direction

로봇의 이동 방향: FORWARD 또는 REVERSE.

distance

로봇이 주행한 거리입니다. 이 값은 integer (소수점 이하 1개),float )일 수 있습니다.

units

Optional. The distance unit: INCHES (default), MM (millimeters), or DistanceUnits.CM (centimeters).

velocity

선택 사항입니다. PERCENT사용할 경우 0%~100%, RPM사용할 경우 0~120 rpm, 또는 VelocityUnits.DPS사용할 경우 0~720도/초의 속도로 주행할 수 있습니다. 이 값은 정수 integer 또는 소수(float)일 수 있습니다. 속도가 제공되지 않으면 로봇은 현재 주행 속도로 주행합니다.

units_v

선택 사항입니다. 속도 단위는 RPM (분당 회전수, 기본값), PERCENT또는 VelocityUnits.DPS (초당 각도)입니다.

wait

선택 사항입니다. wait=True (기본값)은 로봇의 움직임이 완료될 때까지 다음 코드 줄이 실행되지 않도록 합니다. wait=False 은 다음 코드 줄이 즉시 실행되도록 합니다.

# Drive forward and backward
drivetrain.drive_for(FORWARD, 10)
drivetrain.drive_for(REVERSE, 10)

# Quickly drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM, 100, PERCENT)
drivetrain.drive_for(REVERSE, 200, MM, 100, PERCENT)

turn#

turn 턴은 로봇을 왼쪽 또는 오른쪽으로 계속 회전시킵니다. 로봇은 주행이나 정지와 같은 다른 동작을 명령받을 때까지 계속 회전합니다.

Usage:
drivetrain.turn(direction, velocity, units)

매개변수

설명

direction

로봇이 회전하는 방향: LEFT 또는 RIGHT.

velocity

선택 사항입니다. 회전 속도는 0%에서 100%까지 PERCENT사용 시), 0에서 120 rpm까지 RPM사용 시), 또는 0에서 720도/초까지 VelocityUnits.DPS사용 시)입니다. 이 값은 정수( integer 또는 소수(float)일 수 있습니다. 속도가 제공되지 않으면 로봇은 현재 회전 속도로 회전합니다.

units

선택 사항입니다. 속도 단위는 RPM (분당 회전수, 기본값), PERCENT또는 VelocityUnits.DPS (초당 각도)입니다.

# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()

# Quickly turn right and left, then stop
drivetrain.turn(RIGHT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.turn(LEFT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

turn_for#

turn_for 로봇을 지정된 각도(회전 수)만큼 왼쪽 또는 오른쪽으로 회전시킵니다. 회전은 로봇의 현재 위치를 기준으로 합니다. 프로젝트는 로봇이 회전을 완료할 때까지 기다린 후 다음 코드를 실행합니다.

Usage:
drivetrain.turn_for(direction, angle, units, velocity, units_v, wait)

매개변수

설명

direction

로봇이 회전하는 방향: LEFT 또는 RIGHT.

angle

로봇이 회전하는 각도입니다. 이 값은 integer (소수점 이하float )일 수 있습니다.

units

선택 사항입니다. 회전 단위: DEGREES 회(기본값) 또는 TURNS회. 1회 회전은 360도입니다.

velocity

선택 사항입니다. 회전 속도는 0%에서 100%까지 PERCENT사용 시), 0에서 120 rpm까지 RPM사용 시), 또는 0에서 720도/초까지 VelocityUnits.DPS사용 시)입니다. 이 값은 정수( integer 또는 소수(float)일 수 있습니다. 속도가 제공되지 않으면 로봇은 현재 회전 속도로 회전합니다.

units_v

선택 사항입니다. 속도 단위는 RPM (분당 회전수, 기본값), PERCENT또는 VelocityUnits.DPS (초당 각도)입니다.

wait

선택 사항입니다. wait=True (기본값)은 로봇이 회전을 완료할 때까지 다음 코드 줄이 실행되지 않도록 합니다. wait=False 은 다음 코드 줄이 즉시 실행되도록 합니다.

# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)

# Quickly turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES, 100, PERCENT)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES, 100, PERCENT)

turn_to_heading#

헤딩은 로봇이 향하는 방향을 도 단위로 나타낸 것입니다. turn_to_heading 은 로봇을 -359도에서 359도 사이의 특정 방향으로 회전시킵니다. 로봇은 목표 방향에 도달하기 위해 가장 짧은 경로로 회전합니다.

로봇의 초기 진행 방향은 0도입니다.

이 프로젝트는 로봇이 회전을 완료할 때까지 기다린 후 다음 코드 줄을 실행합니다.

Usage:
drivetrain.turn_to_heading(angle, units, velocity, units_v, wait)

매개변수

설명

angle

로봇이 향해야 할 방향을 도 단위로 지정합니다. 이 값은 integer 또는 -359에서 359 사이의 소수(float)일 수 있습니다.

units

선택 사항입니다. 제목 단위: DEGREES 도(기본값).

velocity

선택 사항입니다. 회전 속도는 0%에서 100%까지 PERCENT사용 시), 0에서 120 rpm까지 RPM사용 시), 또는 0에서 720도/초까지 VelocityUnits.DPS사용 시)입니다. 이 값은 정수( integer 또는 소수(float)일 수 있습니다. 속도가 제공되지 않으면 로봇은 현재 회전 속도로 회전합니다.

units_v

선택 사항입니다. 속도 단위는 다음과 같습니다. PERCENT (기본값), RPM (분당 회전수), 또는 VelocityUnits.DPS (초당 각도)입니다.

wait

선택 사항입니다. wait=True (기본값)은 로봇이 회전을 완료할 때까지 다음 코드 줄이 실행되지 않도록 합니다. wait=False 은 다음 코드 줄이 즉시 실행되도록 합니다.

# 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)

# Turn twice slowly
drivetrain.turn_to_heading(90, DEGREES, 20, PERCENT)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES, 20, PERCENT)

turn_to_rotation#

turn_to_rotation 로봇을 특정 회전 방향으로 회전시킵니다.

회전은 로봇이 회전한 정도를 도 또는 회전으로 측정한 값입니다. 프로젝트 시작 시 회전 값은 0도로 설정됩니다. 회전은 set_rotation 메서드를 사용하여 설정할 수도 있습니다.

회전 값은 절대값입니다. 즉, 회전 방향은 로봇의 현재 회전 각도에 따라 결정됩니다. 오른쪽으로 회전하면 회전 각도가 증가하고, 왼쪽으로 회전하면 회전 각도가 감소합니다.

예를 들어, 로봇이 0도에서 시작하여 720도 회전하면 오른쪽으로 두 번 회전합니다. 그런 다음 360도 회전하면 720도보다 360도가 작기 때문에 왼쪽으로 한 번 회전합니다.

이 프로젝트는 로봇이 회전을 완료할 때까지 기다린 후 다음 코드 줄을 실행합니다.

Usage:
drivetrain.turn_to_rotation(angle, units, velocity, units_v, wait)

매개변수

설명

angle

로봇이 회전할 각도(도 또는 회전 수)입니다. 이 값은 integer (소수점 이하float )일 수 있습니다.

units

선택 사항입니다. 회전 단위는 DEGREES 회(기본값) 또는 TURNS회입니다. 1회전은 360도입니다.

velocity

선택 사항입니다. 회전 속도는 0%에서 100%까지 PERCENT사용 시), 0에서 120 rpm까지 RPM사용 시), 또는 0에서 720도/초까지 VelocityUnits.DPS사용 시)입니다. 이 값은 정수( integer 또는 소수(float)일 수 있습니다. 속도가 제공되지 않으면 로봇은 현재 회전 속도로 회전합니다.

units_v

선택 사항입니다. 속도 단위는 다음과 같습니다. PERCENT (기본값), RPM (분당 회전수), 또는 VelocityUnits.DPS (초당 각도)입니다.

wait

선택 사항입니다. wait=True (기본값)은 로봇이 회전을 완료할 때까지 다음 코드 줄이 실행되지 않도록 합니다. wait=False 은 다음 코드 줄이 즉시 실행되도록 합니다.

# 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)

# Turn left then slowly spin in a
# circle clockwise
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES, 20, PERCENT)

stop#

stop 로봇의 움직임을 멈춥니다.

Usage:
drivetrain.stop(mode)

매개변수

설명

mode

선택 사항입니다. 로봇의 정지 방법: BRAKE (기본값), COAST, 또는 HOLD

  • BRAKE — 즉시 정지합니다.
  • COAST — 감속하여 정지합니다.
  • HOLD — 즉시 정지하고 바퀴 위치를 유지합니다.

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop(COAST)

calibrate_drivetrain#

calibrate_drivetrain 구동계에 구성된 자이로 센서 또는 관성 센서를 보정하는 내장 함수입니다.

보정은 센서가 움직임을 정확하게 측정하는 데 도움이 됩니다. 보정하는 동안 로봇을 약 2초 동안 움직이지 않도록 고정하십시오. 보정 중에 로봇이 움직이면 센서가 움직임을 정확하게 측정하지 못할 수 있습니다.

프로젝트는 보정 작업이 완료될 때까지 기다린 후 다음 코드 줄을 실행합니다.

참고: 이 함수는 VS Code 내에서 사용할 수 없습니다.

Usage:
calibrate_drivetrain()

매개변수

설명

이 함수에는 매개변수가 없습니다.

돌연변이체#

set_drive_velocity#

set_drive_velocity 로봇이 얼마나 빠르게 주행해야 하는지를 알려줍니다. 백분율이 높을수록 로봇은 더 빠르게 주행하고, 백분율이 낮을수록 더 느리게 주행합니다.

모든 프로젝트는 로봇이 기본적으로 50% 속도로 주행하는 것으로 시작합니다.

참고: 속도가 높을수록 로봇의 주행 속도는 빨라지지만 정밀도는 떨어질 수 있습니다. 속도가 낮을수록 로봇의 주행 속도는 느려지지만 정밀도는 높아질 수 있습니다.

Usage:
drivetrain.set_drive_velocity(velocity, units)

매개변수

설명

velocity

The velocity to drive with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float).

units

선택 사항입니다. 속도 단위는 다음과 같습니다. PERCENT (기본값), RPM (분당 회전수), 또는 VelocityUnits.DPS (초당 각도)입니다.

# 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)

set_turn_velocity#

set_turn_velocity 로봇이 회전하는 속도를 지정합니다. 백분율이 높을수록 로봇은 더 빠르게 회전하고, 백분율이 낮을수록 로봇은 더 느리게 회전합니다.

모든 프로젝트는 로봇이 기본적으로 50% 속도로 회전하는 것으로 시작합니다.

참고: 속도가 높을수록 로봇의 회전 속도는 빨라지지만 정밀도는 떨어질 수 있습니다. 속도가 낮을수록 로봇의 회전 속도는 느려지지만 정밀도는 높아질 수 있습니다.

Usage:
drivetrain.set_turn_velocity(velocity, units)

매개변수

설명

velocity

The velocity to turn with from 0% to 100% when using PERCENT, from 0 to 120 rpm when using RPM, or from 0 to 720 degrees per second when using VelocityUnits.DPS. This can be an integer or decimal (float).

units

선택 사항입니다. 속도 단위는 다음과 같습니다. PERCENT (기본값), RPM (분당 회전수), 또는 VelocityUnits.DPS (초당 각도)입니다.

# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 360)

set_stopping#

set_stopping 로봇이 정지하는 방식을 설정합니다. 브레이크, 관성 주행 또는 정지 중에서 선택할 수 있습니다.

Usage:
drivetrain.set_stopping(mode)

매개변수

설명

mode

로봇 정지 방법:

  • BRAKE — 즉시 정지합니다.
  • COAST — 속도를 줄여 정지합니다.
  • HOLD — 즉시 정지하고 바퀴 위치를 유지합니다.

이 방법을 사용하지 않으면 로봇은 정지할 때 BRAKE 사용합니다.

set_timeout#

set_timeout 은 로봇이 동작을 완료하려고 시도하는 시간을 설정합니다. 로봇이 해당 시간 내에 동작을 완료하지 못하면 시도를 중단하고 다음 코드 줄로 넘어갑니다. 이렇게 하면 로봇이 동작 중에 멈추는 것을 방지할 수 있습니다.

Usage:
drivetrain.set_timeout(value, units)

매개변수

설명

value

로봇이 동작을 완료하려고 시도할 수 있는 시간입니다. 이 값은 양수 integer ,float ) 또는 소수(실수)일 수 있습니다.

units

선택 사항입니다. 시간 단위: MSEC (밀리초, 기본값) 또는 SECONDS.

# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)

set_heading#

헤딩은 로봇이 바라보는 방향을 도 단위로 나타낸 것입니다. set_heading 은 로봇의 현재 헤딩 값을 새로운 헤딩 값으로 변경합니다.

예를 들어, 로봇이 오른쪽을 향하도록 회전한 상태에서 방향을 0도로 설정하면 오른쪽을 향한 위치가 새로운 0도가 됩니다. 그러면 로봇은 이 새로운 방향을 기준으로 다른 위치로 회전할 수 있습니다.

Usage:
drivetrain.set_heading(heading, units)

매개변수

설명

heading

로봇의 진행 방향 값(도 또는 회전 수)입니다. 이 값은 integer (소수점 이하 자릿수),float 소수점 이하 자릿수)일 수 있습니다.

units

선택 사항입니다. 방향 단위는 DEGREES 회전(기본값) 또는 TURNS회전입니다. 1회전은 360도와 같습니다.

# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)

set_rotation#

회전은 로봇이 회전한 정도를 나타내며, 각도 또는 회전 수로 측정됩니다. 프로젝트 시작 시 회전 값은 0도로 설정됩니다. set_rotation 명령어를 사용하면 로봇의 현재 회전 값이 새로운 값으로 변경됩니다.

예를 들어, 로봇이 오른쪽으로 두 바퀴를 완전히 돌았다면 회전 값은 720도가 됩니다. 회전 값을 0도로 설정하면 회전 값이 720도에서 0도로 초기화됩니다. 그러면 로봇은 이 새로운 값을 기준으로 회전할 수 있습니다.

Usage:
drivetrain.set_rotation(rotation, units)

매개변수

설명

rotation

로봇의 회전 값을 도 또는 회전 수로 설정합니다. 이 값은 integer (소수점 이하float )일 수 있습니다.

units

선택 사항입니다. 회전 단위는 DEGREES 회(기본값) 또는 TURNS회입니다. 1회전은 360도입니다.

# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)

set_turn_threshold#

set_turn_threshold 로봇이 회전을 완료하기 전에 목표 각도에 얼마나 가까워져야 하는지를 설정합니다.

임계값을 작게 하면 회전이 더 정밀해지지만 로봇이 회전을 완료하는 데 시간이 더 오래 걸릴 수 있습니다. 임계값을 크게 하면 회전이 더 빨리 완료되지만 정밀도가 떨어질 수 있습니다.

Usage:
drivetrain.set_turn_threshold(value)

매개변수

설명

value

회전 임계값(도 단위). integer (소수점 이하float) 값을 입력할 수 있습니다. 기본 회전 임계값은 1도입니다.

# Set the turn threshold to 5 degrees
drivetrain.set_turn_threshold(5)

set_turn_constant#

set_turn_constant 로봇의 회전 보정 강도를 변경합니다.

값이 높을수록 로봇은 회전을 더 강하게 보정하고, 값이 낮을수록 로봇은 회전을 더 부드럽게 보정합니다. 기본값은 1.0입니다.

Usage:
drivetrain.set_turn_constant(value)

매개변수

설명

value

회전 상수입니다. 이 값은 0.1에서 4.0 사이의 십진수(float) 값일 수 있습니다. 기본값은 1.0입니다.

# Increase the turn constant to 2.0
drivetrain.set_turn_constant(2.0)

게터스#

heading#

헤딩은 로봇이 향하는 방향을 도 단위로 나타낸 것입니다. 헤딩 heading 입력하면 로봇의 현재 헤딩 값이 0도에서 359도 사이의 값으로 반환됩니다.

로봇의 초기 진행 방향은 0도입니다.

Usage:
drivetrain.heading(units)

매개변수

설명

units

선택 사항입니다. 복귀 방향을 나타내는 단위는 DEGREES (기본값) 또는 TURNS입니다. 1회전은 360도와 같습니다.

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading())

rotation#

회전은 로봇이 회전한 정도를 나타내며, 각도 또는 회전수로 측정됩니다. 프로젝트 시작 시 회전 값은 0도로 설정됩니다. rotation 입력하면 로봇의 현재 회전 값이 반환됩니다.

오른쪽으로 돌면 회전 각도가 증가하고, 왼쪽으로 돌면 회전 각도가 감소합니다. 예를 들어, 오른쪽으로 두 바퀴를 완전히 돌면 720도 회전하게 됩니다.

Usage:
drivetrain.rotation(units)

매개변수

설명

units

선택 사항입니다. 회전 반환 단위는 DEGREES 또는 TURNS입니다. 1회전은 360도입니다.

# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation())

velocity#

velocity 로봇의 주행 속도를 반환합니다.

It can return velocity as a percentage from -100% to 100%, in RPM from -127 rpm to 127 rpm, or in VelocityUnits.DPS (degrees per second). A positive value means the robot is driving forward. A negative value means the robot is driving in reverse.

Usage:
drivetrain.velocity(units)

매개변수

설명

units

선택 사항입니다. 속도를 반환할 단위는 다음과 같습니다. PERCENT (기본값), RPM (분당 회전수), 또는 VelocityUnits.DPS (초당 도).

current#

current 구동계가 사용하는 전류량을 암페어(A) 단위로 반환합니다. 전류는 구동계를 통해 흐르는 전기의 양입니다.

전류 값이 높다는 것은 구동계가 더 많은 전류를 사용하고 있다는 의미입니다. 이는 로봇이 물체를 밀거나 갇힌 상태에서 움직이려고 할 때 발생할 수 있습니다.

이는 동작 중에 구동계가 제대로 작동하지 못하는지 확인하는 데 사용할 수 있습니다. 전류가 높은 상태로 유지되면 구동계가 과열되거나 전력 효율이 떨어질 수 있습니다.

Usage:
drivetrain.current(units)

매개변수

설명

units

선택 사항입니다. 반환되는 전류의 단위는 다음과 같습니다. CurrentUnits.AMP (암페어, 기본값).

is_moving#

is_moving 로봇이 움직이고 있는지 여부를 부울 값으로 반환합니다. 이 값은 로봇의 움직임에 따라 다른 동작의 타이밍을 제어하는 ​​데 사용할 수 있습니다.

  • True — 로봇이 움직이고 있습니다.

  • False — 로봇이 움직이지 않습니다.

이 방법은 wait 매개변수를 갖는 다음 드라이브트레인 방법과 함께 작동합니다: drive_for, turn_for, turn_to_heading, 및 turn_to_rotation.

Usage:
drivetrain.is_moving()

매개변수

설명

이 메서드에는 매개변수가 없습니다.

is_done#

is_done 로봇의 이동 완료 여부를 부울 값으로 반환합니다. 이 값은 로봇의 움직임에 따라 다른 동작의 타이밍을 제어하는 ​​데 사용할 수 있습니다.

  • True — 로봇의 이동이 완료되었습니다.

  • False — 로봇은 여전히 ​​움직이고 있습니다.

이 방법은 wait 매개변수를 갖는 다음 드라이브트레인 방법과 함께 작동합니다: drive_for, turn_for, turn_to_heading, 및 turn_to_rotation.

Usage:
drivetrain.is_done()

매개변수

설명

이 메서드에는 매개변수가 없습니다.

is_turning#

is_turning 부울 값으로 반환합니다. 이 값은 로봇의 움직임에 따라 다른 동작의 타이밍을 제어하는 ​​데 사용할 수 있습니다.

  • True — 로봇이 회전하고 있습니다.

  • False — 로봇이 회전하지 않습니다.

이 방법은 wait 매개변수를 갖는 다음 드라이브트레인 방법과 함께 작동합니다: turn_for, turn_to_heading, 및 turn_to_rotation.

Usage:
drivetrain.is_turning()

매개변수

설명

이 메서드에는 매개변수가 없습니다.

power#

power 구동계가 사용하는 전력량을 와트 단위로 반환합니다. 전력은 구동계가 에너지를 얼마나 빠르게 사용하는지를 보여줍니다.

출력값이 높다는 것은 구동계가 에너지를 더 빠르게 소모한다는 의미입니다. 이는 로봇이 물체를 밀거나 갇힌 상태에서 움직이려고 할 때 발생할 수 있습니다.

이 기능은 움직임을 비교하거나 구동계가 제대로 작동하지 않는지 확인하는 데 사용할 수 있습니다. 출력이 높은 상태로 유지되면 구동계가 과열되거나 에너지 효율이 떨어질 수 있습니다.

Usage:
drivetrain.power()

매개변수

설명

이 메서드에는 매개변수가 없습니다.

torque#

토크는 바퀴가 회전하는 동안 구동계가 얼마나 세게 밀거나 당길 수 있는지를 보여줍니다.

torque 구동계가 사용하는 토크량을 뉴턴미터(Nm) 또는 인치파운드(InLb) 단위로 반환합니다.

토크 값이 높다는 것은 구동계가 더 강하게 밀거나 당긴다는 것을 의미합니다. 이는 로봇이 물체를 밀거나, 움직이지 못하는 상황에서 움직이려고 할 때 발생할 수 있습니다.

이는 구동계가 제대로 작동하는지 확인하거나, 각 동작에 필요한 추진력을 비교하는 데 사용할 수 있습니다.

Usage:
drivetrain.torque(units)

매개변수

설명

units

선택 사항입니다. 토크 값 반환할 단위는 다음과 같습니다. TorqueUnits.NM(뉴턴 미터, 기본값) 또는 TorqueUnits.INLB( 파운드).

efficiency#

efficiency 구동계가 동력을 얼마나 효율적으로 사용하는지를 0%에서 100% 사이의 백분율로 나타냅니다.

효율은 구동계의 동력 중 얼마나 많은 부분이 움직임에 사용되는지를 나타냅니다. 효율 값이 높을수록 구동계의 동력이 더 많이 움직이고 있다는 의미입니다. 반대로 로봇이 멈춰 있거나 물체에 부딪혔을 때처럼 구동계가 힘겹게 작동하지만 움직임이 미미할 경우 효율 값이 낮아질 수 있습니다.

이는 움직임을 비교하거나 구동계가 동력을 움직임에 사용하지 않고 낭비하는지 여부를 확인하는 데 사용할 수 있습니다.

Usage:
drivetrain.efficiency()

매개변수

설명

이 메서드에는 매개변수가 없습니다.

temperature#

temperature 선택한 온도 단위로 구동계의 평균 온도를 반환합니다.

온도는 구동계 모터의 온도를 나타냅니다. 온도가 높을수록 모터가 작동 중에 뜨거워지고 있다는 의미입니다. 모터는 최적의 성능을 유지하려면 55°C 이하로 유지되어야 합니다.

모터가 과열되면 자체 보호를 위해 최대 전류를 낮춥니다. 70°C에 도달하면 모터는 식을 때까지 작동을 멈춥니다.

이는 반복적인 움직임, 장시간 주행 또는 물체를 밀어낼 때 구동계가 과열되는지 여부를 확인하는 데 사용할 수 있습니다.

Usage:
drivetrain.temperature(units)

매개변수

설명

units

선택 사항입니다. 온도를 반환할 단위는 다음과 같습니다. TemperatureUnits.CELSIUS (기본값) 또는 TemperatureUnits.FAHRENHEIT.

건설업자#

생성자는 코드에서 DriveTrain DriveTrain SmartDrive SmartDrive 생성하는 데 사용됩니다. 이는 장치 창을 사용하지 않고 구동계를 구성할 때 유용합니다.

구동계를 생성하기 전에 최소 2개의 Motor 또는 MotorGroup 객체가 생성되어야 합니다.

DriveTrain#

DriveTrain 자이로 센서 또는 관성 센서 없이 구동계를 생성합니다.

Usage:
DriveTrain(lm, rm, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

매개변수

설명

lm

왼쪽 운동 또는 운동 그룹.

rm

오른쪽 모터 또는 모터 그룹.

wheelTravel

선택 사항입니다. 구동계 휠의 둘레입니다. 기본값은 300mm입니다.

trackWidth

선택 사항입니다. 좌우 바퀴 사이의 너비입니다. 기본값은 320mm입니다.

wheelBase

선택 사항입니다. 앞바퀴와 뒷바퀴 사이의 거리입니다. 기본값은 320mm입니다.

units

선택 사항입니다. wheelTravel, trackWidth, wheelBase의 단위는 다음과 같습니다. MM (밀리미터, 기본값), INCHES또는 DistanceUnits.CM (센티미터).

externalGearRatio

선택 사항입니다. 기어를 사용하는 경우 주행 거리를 조정하는 데 사용되는 기어비입니다. integer 소수점 이하 자릿수),float소수점 이하 자릿수) 중 하나를 입력할 수 있습니다. 기본값은 1.0입니다.

# Create left and right drive motor objects
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT2, 1.0, True)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

# Create two motor group objects for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT3, 1.0, True)
right_motor_b = Motor(Ports.PORT4, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

SmartDrive#

SmartDrive 자이로 센서 또는 관성 센서를 사용하여 구동계를 생성합니다.

Usage:
SmartDrive(lm, rm, g, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

매개변수

설명

lm

왼쪽 운동 또는 운동 그룹.

rm

오른쪽 모터 또는 모터 그룹.

g

구동계에 사용되는 자이로 센서 또는 관성 센서.

wheelTravel

선택 사항입니다. 구동계 휠의 둘레입니다. 기본값은 300mm입니다.

trackWidth

선택 사항입니다. 좌우 바퀴 사이의 너비입니다. 기본값은 320mm입니다.

wheelBase

선택 사항입니다. 앞바퀴와 뒷바퀴 사이의 거리입니다. 기본값은 320mm입니다.

units

선택 사항입니다. wheelTravel, trackWidth, wheelBase의 단위는 다음과 같습니다. MM (밀리미터, 기본값), INCHES또는 DistanceUnits.CM (센티미터).

externalGearRatio

선택 사항입니다. 기어를 사용하는 경우 주행 거리를 조정하는 데 사용되는 기어비입니다. integer 소수점 이하 자릿수),float소수점 이하 자릿수) 중 하나를 입력할 수 있습니다. 기본값은 1.0입니다.

# Create the Inertial Sensor
brain_inertial = Inertial()

# Make left and right drive motors
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

# Create a SmartDrive object with wheelTravel 200
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

여러 개의 모터를 사용하여 스마트 구동계를 만들려면, 모터들을 모터 그룹으로 묶기 전에 각 모터를 개별적으로 생성해야 합니다.

# Create the Inertial Sensor
brain_inertial = Inertial()

# Create two motor groups for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT5, 1.0, True)
right_motor_b = Motor(Ports.PORT6, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

# Create a SmartDrive object with wheelTravel 200 mm
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)