운동#

소개#

모터는 로봇의 부품이 움직이는 방식을 제어합니다. 모터를 사용하여 팔을 올리거나, 집게를 돌리거나, 바퀴를 회전시키거나, 빌드의 다른 부분을 움직일 수 있습니다. 두 개의 모터는 구동계로 함께 작동하여 로봇 전체를 움직이고 회전시킬 수 있습니다.

각 모터는 장치 창에서 구성됩니다. 빌드에 따라 모터 이름이 변경될 수 있습니다. 예를 들어, Competition Advanced 2.0 빌드에서는 모터 이름이 arm_motor입니다. 사용자 지정 로봇은 다른 모터 이름을 사용할 수 있습니다.

기본적으로 FORWARD 모터를 시계 반대 방향으로 회전시키고, REVERSE 모터를 시계 방향으로 회전시킵니다. 장치 창에서 모터의 회전 방향을 반대로 설정하면 회전 방향이 반대로 바뀝니다.

VEX GO 모터는 더하기 기호로 전진 방향을 나타내고, 화살표는 왼쪽(반시계 방향)으로 회전함을 나타냅니다. VEX GO 모터가 마이너스 기호와 화살표로 반대 방향으로 회전하는 것을 보여주는 그림입니다. 화살표는 오른쪽, 즉 시계 방향으로 회전함을 나타냅니다.

모터를 코딩하는 방법은 여러 가지가 있습니다. 아래는 모든 Motion 메서드 목록입니다.

작동 — 모터를 정지시키고 회전시키세요.

  • spin — 모터를 영원히 정방향 또는 역방향으로 회전시킵니다.

  • spin_for — 특정 거리만큼 모터를 회전시킵니다.

  • spin_to_position — 모터를 특정 위치로 회전시킵니다.

  • stop — 모터의 회전을 멈춥니다.

뮤테이터 — 모터 설정을 조정합니다.

  • set_velocity — 모터에게 얼마나 빠르게 회전해야 하는지 알려줍니다.

  • set_max_torque — 모터가 회전하는 동안 밀어낼 수 있는 최대 힘을 ​​설정합니다.

  • set_position — 모터의 현재 위치를 새 값으로 변경합니다.

  • set_stopping — 모터가 정지하는 방법(브레이크, 관성, 유지)을 설정합니다.

  • set_timeout — 모터가 동작을 완료하려고 시도하는 시간을 설정합니다.

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

  • get_position — 모터의 현재 위치를 반환합니다.

  • get_velocity — 모터가 회전하는 속도를 -100%에서 100%까지의 백분율로 반환합니다.

  • get_current — 모터가 배터리에서 사용하는 전력량을 0%~100%의 백분율로 반환합니다.

  • is_stopped — 모터가 움직임을 마쳤는지 여부를 부울 값으로 반환합니다.

  • is_moving — 모터가 회전하는지 여부를 부울 값으로 반환합니다.

행위#

spin#

spin 스핀은 모터를 정방향 또는 역방향으로 무한히 회전시킵니다. 모터는 회전 방향을 바꾸거나 멈추는 등의 다른 동작이 주어질 때까지 계속 회전합니다.

Usage:
arm_motor.spin(direction)

매개변수

설명

direction

모터 회전 방향: FORWARD 또는 REVERSE.

# Build Used: Competition Advanced 2.0
def main():
    # Raise the ArmMotor, then stop
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

spin_for#

spin_for 모터를 특정 거리만큼 회전시킵니다. 회전 거리는 모터의 현재 위치를 기준으로 합니다. 프로젝트는 모터 회전이 완료될 때까지 기다린 후 다음 코드를 실행합니다.

Usage:
arm_motor.spin_for(direction, angle, units, wait)

매개변수

설명

direction

모터 회전 방향: FORWARD 또는 REVERSE.

angle

모터가 회전하는 거리. DEGREES 정수 사용. TURNS 정수 또는 소수 사용 가능.

units

선택 사항입니다. 거리 단위: DEGREES 회(기본값) 또는 TURNS 회.

wait

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

# Build Used: Competition Advanced 2.0
def main():
    # Raise and lower the ArmMotor
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    arm_motor.spin_for(FORWARD, 180, DEGREES)

# Start threads — Do not delete
start_thread(main)

spin_to_position#

spin_to_position 모터를 특정 위치로 회전시킵니다.

모터의 위치는 회전한 정도를 DEGREES 회전 또는 TURNS으로 측정합니다. 1회전은 360도와 같습니다. 프로젝트 시작 시 모터 위치는 0도로 설정됩니다. 모터 위치는 set_position 메서드를 사용하여 설정할 수도 있습니다.

위치 값은 절대값입니다. 즉, 회전 방향은 모터의 현재 위치에 따라 달라집니다.

예를 들어, 모터가 0도에서 시작하여 720도까지 회전하면 정방향으로 두 바퀴 회전합니다. 그런 다음 360도까지 회전하면 720도보다 360도가 작으므로 역방향으로 한 바퀴 회전합니다.

Usage:
arm_motor.spin_to_position(angle, units, wait)

매개변수

설명

angle

모터가 회전할 위치 값입니다. DEGREES 정수 사용. TURNS 정수 또는 소수 사용 가능.

units

선택 사항입니다. 위치 단위: DEGREES (기본값) 또는 TURNS.

wait

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

# Build Used: Competition Advanced 2.0
def main():
    # Return ArmMotor to 0 degrees after raising
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    arm_motor.spin_to_position(0, DEGREES)

# Start threads — Do not delete
start_thread(main)

stop#

stop 모터의 회전을 멈춥니다.

Usage:
arm_motor.stop()

매개변수

설명

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

# Build Used: Competition Advanced 2.0
def main():
    # Raise the ArmMotor
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

돌연변이체#

set_velocity#

set_velocity 모터의 회전 속도를 지정합니다. 백분율이 높을수록 모터 회전 속도가 빨라지고, 백분율이 낮을수록 모터 회전 속도가 느려집니다.

모든 프로젝트는 기본적으로 각 모터가 50% 속도로 회전하는 상태에서 시작됩니다.

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

Usage:
arm_motor.set_velocity(velocity)

매개변수

설명

velocity

회전 속도는 0%에서 100%까지입니다. 정수 integer 또는 10진수(실수float )일 수 있습니다.

# Build Used: Competition Advanced 2.0
def main():
    # Move the ArmMotor at different velocities
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    # Move slow
    arm_motor.set_velocity(20)
    arm_motor.spin_for(FORWARD, 180, DEGREES)
    wait(1, SECONDS)
    # Move fast
    arm_motor.set_velocity(100)
    arm_motor.spin_for(REVERSE, 180, DEGREES)

# Start threads — Do not delete
start_thread(main)

set_max_torque#

토크는 회전력입니다. 모터가 회전할 때 밀거나 당길 수 있는 힘을 나타냅니다.

set_max_torque 모터가 사용할 수 있는 최대 토크를 설정합니다.

높은 백분율은 모터가 무거운 물체를 들어 올릴 때처럼 더 강하게 밀어낼 수 있도록 합니다. 낮은 백분율은 모터가 밀어낼 수 있는 힘을 제한합니다. 이는 모터가 멈추거나 움직일 수 있는 한계에 도달했을 때 로봇을 보호하는 데 도움이 될 수 있습니다.

모든 프로젝트는 기본적으로 각 모터의 토크가 50%로 설정된 상태에서 시작됩니다.

Usage:
arm_motor.set_max_torque(value)

매개변수

설명

value

모터가 사용할 수 있는 최대 토크는 0%에서 100%까지입니다. 이 값은 integer (소수점 이하 자릿수),float 소수점 이하 자릿수)일 수 있습니다.

# Build Used: Competition Advanced 2.0
def main():
    # Move the ArmMotor at different torques
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    # Move with less torque
    arm_motor.set_max_torque(20)
    arm_motor.spin_for(FORWARD, 180, DEGREES)
    wait(1, SECONDS)
    # Move with maximum torque
    arm_motor.set_max_torque(100)
    arm_motor.spin_for(REVERSE, 180, DEGREES)

# Start threads — Do not delete
start_thread(main)

set_position#

모터의 위치는 회전한 정도를 나타내며, DEGREES 회전 또는 TURNS으로 측정됩니다. 1회전은 360도입니다. set_position set_position 모터의 현재 위치를 새로운 값으로 변경합니다.

예를 들어 모터가 180도 회전한 경우, 위치를 0도로 설정하면 해당 위치가 180도에서 0도로 재설정됩니다. 그러면 모터는 새로운 값에 따라 회전할 수 있습니다.

Usage:
arm_motor.set_position(position, units)

매개변수

설명

position

모터에 설정할 위치 값입니다. DEGREES 정수 사용. TURNS 정수 또는 소수 사용 가능.

units

선택 사항입니다. 위치 단위: DEGREES (기본값) 또는 TURNS.

# Build Used: Competition Advanced 2.0
def main():
    # Return ArmMotor to 0 degrees after raising
    arm_motor.set_position(0, DEGREES)
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    arm_motor.spin_to_position(0, DEGREES)

# Start threads — Do not delete
start_thread(main)

set_stopping#

set_stopping 모터가 정지하는 방식을 설정합니다. 브레이크, 관성 주행 또는 정지 상태를 유지할 수 있습니다.

Usage:
arm_motor.set_stopping(mode)

매개변수

설명

mode

모터 정지 방법:

  • BRAKE — 즉시 정지합니다.
  • COAST — 서서히 정지합니다.
  • HOLD — 즉시 정지하고 모터 위치를 유지합니다.

예를 들어, Competition Advanced 2.0 빌드를 사용하고 arm_motor HOLD으로 설정하면, 다음 팔 움직임이 발생할 때까지 모터가 팔을 현재 위치에 고정합니다. 즉, 팔이 올라간 상태에서 모터가 멈추면 모터는 중력에 저항하여 팔을 공중에 유지하게 됩니다.

이 방법을 사용하지 않으면 모터는 정지할 때 BRAKE 사용합니다.

# Build Used: Competition Advanced 2.0
def main():
    # Move the ArmMotor, then coast to a stop
    arm_motor.set_velocity(20)
    arm_motor.set_stopping(COAST)
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

set_timeout#

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

Usage:
arm_motor.set_timeout(value, units)

매개변수

설명

value

모터가 동작을 완료하려고 시도할 수 있는 시간입니다. 이 값은 양수 integer , 2, 3) 정수 또는 소수(float )일 수 있습니다.

units

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

# Build Used: Competition Advanced 2.0
def main():
    # Move ArmMotor as far as possible for 1 second before resetting
    arm_motor.set_position(0, DEGREES)
    arm_motor.set_timeout(1, SECONDS)
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    arm_motor.spin_to_position(0, DEGREES)

# Start threads — Do not delete
start_thread(main)

게터스#

get_position#

모터의 위치는 회전한 정도를 나타내며, DEGREES 회전 또는 TURNS으로 측정됩니다. 1회전은 360도와 같습니다. get_position get_position 모터의 현재 위치를 반환합니다.

프로젝트 시작 시 모터 위치는 0도로 설정됩니다. 모터가 한 바퀴 정방향으로 회전하면 위치는 360도, 즉 1회전이 됩니다. 모터가 반대 방향으로 회전하면 위치는 음수가 됩니다.

Usage:
arm_motor.get_position(units)

매개변수

설명

units

선택 사항입니다. 모터 위치를 반환하는 단위는 DEGREES 회(기본값) 또는 TURNS.

# Build Used: Competition Advanced 2.0
def main():
    # Display how far the ArmMotor moves after one second
    arm_motor.set_position(0, DEGREES)
    console.print("Start: ")
    console.print(arm_motor.get_position(DEGREES))
    console.new_line()
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()
    console.print("After: ")
    console.print(arm_motor.get_position(DEGREES))

# Start threads — Do not delete
start_thread(main)

get_velocity#

get_velocity get_velocity 모터의 회전 속도를 -100%에서 100% 사이의 백분율로 반환합니다.

양수 값은 모터가 정방향으로 회전하고 있음을 의미합니다. 음수 값은 모터가 역방향으로 회전하고 있음을 의미합니다.

Usage:
arm_motor.get_velocity()

매개변수

설명

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

# Build Used: Competition Advanced 2.0
def main():
    # Display the ArmMotor's velocity when it moves
    console.print("Resting: ")
    console.print(arm_motor.get_velocity())
    console.new_line()
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    console.print("Moving: ")
    console.print(arm_motor.get_velocity())
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

get_current#

get_current 모터가 배터리에서 사용하는 전력량을 0%에서 100% 사이의 백분율로 반환합니다.

전류 값이 높다는 것은 모터가 더 많은 전력을 사용하고 있다는 의미입니다. 이는 모터가 무거운 물체를 들어 올리거나, 물체를 밀거나, 또는 멈춰 섰을 때 움직이려고 할 때 발생할 수 있습니다.

Usage:
arm_motor.get_current()

매개변수

설명

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

# Build Used: Competition Advanced 2.0
def main():
    # Display the motor's current when it moves
    console.print("Resting: ")
    console.print(arm_motor.get_current())
    console.new_line()
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    console.print("Moving: ")
    console.print(arm_motor.get_current())
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

is_stopped#

is_stopped 나타내는 부울 값입니다. 이 값은 모터의 움직임에 따라 다른 동작의 타이밍을 제어하는 ​​데 사용할 수 있습니다.

  • True — 모터가 회전을 멈췄습니다.

  • False — 모터가 여전히 움직이고 있습니다.

이 방법은 wait 매개변수를 갖는 다음 모션 방법과 함께 작동합니다: spin_for 및 spin_to_position.

Usage:
arm_motor.is_stopped()

매개변수

설명

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

# Build Used: Competition Advanced 2.0
def main():
    # Turn the Eye Sensor's light on while ArmMotor is moving
    arm_motor.spin_for(REVERSE, 180, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while True:
        if arm_motor.is_stopped():
            eye.set_light(OFF)
        else:
            eye.set_light(ON)

# Start threads — Do not delete
start_thread(main)

is_moving#

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

  • True — 모터가 회전하고 있습니다.

  • False — 모터가 회전하지 않습니다.

이 방법은 wait 매개변수를 갖는 다음 모션 방법과 함께 작동합니다: spin_for 및 spin_to_position.

Usage:
arm_motor.is_moving()

매개변수

설명

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

# Build Used: Competition Advanced 2.0
def main():
    # Turn the Eye Sensor's light on while ArmMotor is moving
    arm_motor.spin_for(REVERSE, 180, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while True:
        if arm_motor.is_moving():
            eye.set_light(ON)
        else:
            eye.set_light(OFF)

# Start threads — Do not delete
start_thread(main)