운동#

소개#

VEX AIM 코딩 로봇은 홀로노믹 구동계를 사용하여 전진, 후진, 좌회전, 우회전 또는 각도 방향으로 이동할 수 있으며, 독립적으로 회전할 수도 있습니다. 모션 제어 방식은 로봇의 이동 및 회전 방식, 이동 속도, 그리고 x축 및 y축 위치 추적 방식을 제어합니다.

짙은 회색 디스플레이와 남색 화면을 둘러싼 0도에서 315도까지의 원형 나침반 다이얼. 로봇의 앞면은 나침반 다이얼의 0도를 향하고 있습니다.

다음은 사용 가능한 방법 목록입니다.

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

  • move_at — 로봇을 특정 각도로 영원히 이동시킵니다.

  • move_for — 로봇을 특정 각도로 특정 거리만큼 이동시킵니다.

  • move_with_vectors — 벡터 기반 x, y 및 회전 값을 사용하여 로봇을 이동합니다.

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

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

  • turn_to — 로봇을 특정 방향으로 향하게 합니다.

  • stop_all_movement — 로봇의 모든 움직임을 중지합니다.

뮤테이터 — 로봇의 이동 값을 설정합니다.

  • set_move_velocity — 로봇에게 얼마나 빨리 움직여야 하는지 알려줍니다.

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

  • set_xy_position — 로봇의 현재 x 및 y 위치를 새 값으로 변경합니다.

게터 — 로봇의 상태와 위치를 반환합니다.

  • get_x_position — 로봇의 현재 x 좌표를 반환합니다.

  • get_y_position — 로봇의 현재 y 좌표를 반환합니다.

  • is_move_active — 로봇이 움직이는지 여부를 반환합니다.

  • is_turn_active — 로봇이 회전하는지 여부를 반환합니다.

  • is_stopped — 로봇이 움직이지도 않고 회전하지도 않는지 여부를 반환합니다.

행위#

move_at#

move_at 로봇을 특정 각도로 계속 이동시킵니다. 각도는 로봇의 현재 위치를 기준으로 합니다. 로봇은 다른 각도로 이동하거나, 회전하거나, 정지하는 등의 추가 동작이 주어질 때까지 계속 이동합니다.

용법:

robot.move_at(angle, velocity, units)

매개변수

설명

angle

로봇이 움직이는 각도(도 단위). 이 값은 -360에서 360 사이의 정수 또는 소수일 수 있습니다.

velocity

선택 사항입니다. 이동 속도는 0%에서 100%까지 PERCENT사용 시) 또는 0에서 200mm/초까지 MMPS사용 시) 지정할 수 있습니다. 정수 또는 소수(부동 소수) 값을 사용할 수 있습니다. 속도를 지정하지 않으면 로봇은 현재 이동 속도로 이동합니다.

units

선택 사항입니다. 속도 단위: PERCENT (기본값) 또는 MMPS (밀리미터/초).

# Move right, then move forward and stop.
robot.move_at(90)
wait(1,SECONDS)
robot.move_at(0)
wait(1,SECONDS)
robot.stop_all_movement()

# Move right slowly, move in reverse quickly and stop.
robot.move_at(90, 25)
wait(2, SECONDS)
robot.move_at(180, 100, PERCENT)
wait(1, SECONDS)
robot.stop_all_movement()

# Move diagonally to the right and stop.
robot.move_at(45.33)
wait(1,SECONDS)
robot.stop_all_movement()

move_for#

move_for 로봇을 특정 각도로 특정 거리만큼 이동시킵니다. 각도는 로봇의 현재 위치를 기준으로 합니다. 프로젝트는 로봇의 이동이 완료될 때까지 기다린 후 다음 코드를 실행합니다.

용법:

robot.move_for(distance, angle, velocity, units, wait)

매개변수

설명

distance

로봇의 이동 거리(밀리미터, mm). 정수 또는 소수(float)일 수 있습니다.

angle

로봇이 움직이는 각도(도 단위). 이 값은 -360에서 360 사이의 정수 또는 소수일 수 있습니다.

velocity

선택 사항입니다. 이동 속도는 0%에서 100%까지 PERCENT사용 시) 또는 0에서 200mm/초까지 MMPS사용 시) 지정할 수 있습니다. 정수 또는 소수(부동 소수) 값을 사용할 수 있습니다. 속도를 지정하지 않으면 로봇은 현재 이동 속도로 이동합니다.

units

선택 사항입니다. 속도 단위: PERCENT (기본값) 또는 MMPS (밀리미터/초).

wait

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

# Move right, then move forward.
robot.move_for(50, 90)
robot.move_for(100, 0)

# Move in reverse slowly, then move forward quickly.
robot.move_for(100, 180, 25)
robot.move_for(100, 0, 100, PERCENT)

# Drive forward and blink all LEDs red.
robot.move_for(100, 0, wait=False)
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLACK)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLACK)

move_with_vectors#

벡터는 물체의 이동 속도와 방향을 나타내는 방법입니다. move_with_vectors 사용하면 로봇은 벡터 기반 움직임을 사용하여 이동합니다. 로봇은 전진, 우회전, 회전 속도 값을 조합하여 부드러운 움직임을 만들어냅니다. 로봇은 다른 각도로 이동하거나, 회전하거나, 정지하는 등의 추가 동작이 주어질 때까지 이 벡터를 사용하여 계속 이동합니다.

참고: 이 방법은 이동 및 회전 속도 값을 직접 설정하므로 set_move_velocity 또는 set_turn_velocity를 사용하지 않습니다.

용법:

robot.move_with_vectors(forward, rightward, rotation)

매개변수

설명

forward

로봇의 y축 방향 속도는 -100%에서 100%까지의 범위를 갖습니다. 음수 값은 로봇을 뒤로 이동시키고, 양수 값은 앞으로 이동시킵니다.

rightward

로봇의 x축 방향 속도는 -100%에서 100%까지의 범위를 갖습니다. 음수 값은 로봇을 왼쪽으로 이동시키고, 양수 값은 오른쪽으로 이동시킵니다.

rotation

로봇의 회전 속도는 -100%에서 100%까지의 범위를 갖습니다. 음수 값은 로봇을 시계 반대 방향으로 회전시키고, 양수 값은 시계 방향으로 회전시킵니다.

# Move at 15°
robot.move_with_vectors(48.3, 12.95, 0)
wait(2, SECONDS)
robot.stop_all_movement()

# Move at 45° while turning counterclockwise.
robot.move_with_vectors(50, 50, -30)
wait(2, SECONDS)
robot.stop_all_movement()

# Scaling movement using the controller joystick
while True:
    # Move forward (and backwards) slower than axis1 input
    forward   = controller.axis1.position() * 0.7
    
    # Move right (and left) faster than axis2 input
    rightward = controller.axis2.position() * 1.5    

    robot.move_with_vectors(forward, rightward, 0)

    wait(5, MSEC)

turn#

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

용법:

robot.turn(direction, velocity, units)

매개변수

설명

direction

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

velocity

Optional. The velocity to turn with from 0% to 100% when using PERCENT, or from 0 to 150 degrees per second when using DPS. This can be an integer or decimal (float). If no velocity is provided, the robot turns at the current turn velocity.

units

선택 사항입니다. 속도 단위: DPS (초당 도, 기본값) 또는 PERCENT.

# Turn left, then stop.
robot.turn(LEFT)
wait(1, SECONDS)
robot.stop_all_movement()

# Turn left quickly, turn right slowly, then stop.
robot.turn(LEFT, 80)
wait(2, SECONDS)
robot.turn(RIGHT, 20, PERCENT)
wait(3, SECONDS)
robot.stop_all_movement()

turn_for#

turn_for 로봇을 지정된 각도만큼 왼쪽 또는 오른쪽으로 회전시킵니다. 회전은 로봇이 현재 바라보고 있는 방향을 기준으로 합니다. 프로젝트는 로봇이 회전을 완료할 때까지 기다린 후 다음 코드를 실행합니다.

용법:

robot.turn_for(direction, angle, velocity, units, wait)

매개변수

설명

direction

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

angle

로봇이 회전하는 각도(도)는 -360도에서 360도 사이의 값을 가집니다. 정수 또는 소수(부동 소수)로 입력할 수 있습니다.

velocity

Optional. The velocity to turn with from 0% to 100% when using PERCENT, or from 0 to 150 degrees per second when using DPS. This can be an integer or decimal (float). If no velocity is provided, the robot turns at the current turn velocity.

units

선택 사항입니다. 속도 단위: DPS (초당 도, 기본값) 또는 PERCENT.

wait

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

# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)

# Turn left quickly, then turn right slowly.
robot.turn_for(LEFT, 90, 100)
robot.turn_for(RIGHT, 180, 15, PERCENT)

# Turn right and blink all LEDs blue.
robot.turn_for(RIGHT, 180, wait=False)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)

turn_to#

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

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

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

용법:

robot.turn_to(heading, velocity, units, wait)

매개변수

설명

heading

로봇이 향해야 할 방향은 -360도에서 360도 사이입니다.

velocity

Optional. The velocity to turn with from 0% to 100% when using PERCENT, or from 0 to 150 degrees per second when using DPS. This can be an integer or decimal (float). If no velocity is provided, the robot turns at the current turn velocity.

units

선택 사항입니다. 속도 단위: DPS (초당 도, 기본값) 또는 PERCENT.

wait

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

# Turn to face each cardinal directions.
robot.turn_to(90)
wait(2, SECONDS)
robot.turn_to(180)
wait(2, SECONDS)
robot.turn_to(270)
wait(2, SECONDS)
robot.turn_to(0)

# Turn to face backward slowly, then face forward quickly.
robot.turn_to(180, 25)
wait(1, SECONDS)
robot.turn_to(0, 90, PERCENT)

# Turn around quickly and blink all LEDs green.
robot.turn_to(180, 100, wait=False)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)

stop_all_movement#

stop_all_movement 로봇의 모든 움직임을 멈춥니다.

용법:

robot.stop_all_movement()

매개변수

설명

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

# Turn right, then stop moving
robot.turn(RIGHT)
wait(1, SECONDS)
robot.stop_all_movement()

돌연변이체#

set_move_velocity#

set_move_velocity 로봇이 얼마나 빠르게 움직여야 하는지를 알려줍니다. 백분율이 높을수록 로봇은 더 빠르게 움직이고, 백분율이 낮을수록 로봇은 더 느리게 움직입니다.

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

이동 속도 100%는 초당 200밀리미터에 해당합니다.

용법:

robot.set_move_velocity(velocity, units)

매개변수

설명

velocity

0%에서 100%까지 이동할 때 PERCENT사용 시) 또는 0에서 200mm/초까지 이동할 때 MMPS사용 시)의 이동 속도입니다. 정수 또는 소수(부동 소수)일 수 있습니다.

units

선택 사항입니다. 속도 단위: PERCENT (기본값) 또는 MMPS (밀리미터/초).

# Move forward at the default velocity,
robot.set_move_velocity(50)
robot.move_for(100, 0)
wait(1, SECONDS)
# Move slower than the default velocity
robot.set_move_velocity(20)
robot.move_for(100, 0)
wait(1, SECONDS)
# Move faster than the default velocity
robot.set_move_velocity(100)
robot.move_for(100, 0)

set_turn_velocity#

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

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

용법:

robot.set_turn_velocity(velocity, units)

매개변수

설명

velocity

0%에서 100%까지 회전하는 속도( PERCENT사용 시) 또는 0에서 150도/초까지 회전하는 속도( DPS사용 시)입니다. 이 값은 정수 또는 소수(부동 소수)일 수 있습니다.

units

선택 사항입니다. 속도 단위: DPS (초당 도, 기본값) 또는 PERCENT.

# Turn around at default velocity
robot.set_turn_velocity(50)
robot.turn_for(RIGHT, 180)
wait(1, SECONDS)
# Turn around slower than the default velocity
robot.set_turn_velocity(20)
robot.turn_for(RIGHT, 180)
wait(1, SECONDS)
# Turn around faster than the default velocity
robot.set_turn_velocity(100)
robot.turn_for(RIGHT, 180)

set_xy_position#

set_xy_position 은 로봇의 현재 x 및 y 위치를 새로운 값으로 변경합니다.

예를 들어, 로봇이 시작 지점에서 벗어났을 경우, x축과 y축을 0으로 설정하면 로봇의 현재 위치가 새로운 기준점(0, 0)이 됩니다. 그러면 로봇은 이 새로운 값을 기준으로 향후 위치를 추적할 수 있습니다.

용법:

robot.set_xy_position(x, y)

매개변수

설명

x

로봇의 x축 위치 값을 mm 단위로 설정합니다. 정수 또는 소수(float) 값을 사용할 수 있습니다.

y

로봇의 y축 위치 값을 mm 단위로 설정합니다. 정수 또는 소수(float) 값을 사용할 수 있습니다.

# Set the robot's current position
# Move forward and print the new coordinate
robot.set_xy_position(100, 50)
robot.move_for(150, 0)
robot.screen.print("X:", robot.get_x_position())
robot.screen.next_row()
robot.screen.print("Y:", robot.get_y_position())

게터스#

get_x_position#

get_x_position 로봇의 현재 x 좌표를 밀리미터 단위로 반환합니다.

프로젝트 시작 시 로봇의 x 위치는 0으로 설정됩니다. 로봇이 왼쪽이나 오른쪽으로 이동함에 따라 x 위치가 변경되며 set_xy_position 메서드를 사용하여 설정할 수 있습니다.

용법:

robot.get_x_position()

매개변수

설명

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

# Print the start and end x-value 
# of the robot's position after moving
robot.screen.print("Start X:", robot.get_x_position())
robot.move_for(200, 90)
robot.screen.next_row()
robot.screen.print("End X:", robot.get_x_position())

get_y_position#

get_y_position 은 로봇의 현재 y 좌표를 밀리미터 단위로 반환합니다.

프로젝트 시작 시 로봇의 y 위치는 0으로 설정됩니다. y 위치는 로봇이 전진 또는 후진할 때 변경되며 set_xy_position 메서드를 사용하여 설정할 수 있습니다.

용법:

robot.get_y_position()

매개변수

설명

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

# Print the start and end y-value 
# of the robot's position after moving
robot.screen.print("Start Y:", robot.get_y_position())
robot.move_for(200, 0)
robot.screen.next_row()
robot.screen.print("End Y:", robot.get_y_position())

is_move_active#

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

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

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

이 방법은 move_for와 같이 wait 매개변수를 갖는 모션 메서드와 함께 작동합니다.

용법:

robot.is_move_active()

매개변수

설명

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

# Blink all the LEDs when the robot is moving.
robot.move_for(200, 0, wait=False)

while robot.is_move_active():
    robot.led.on(ALL_LEDS, ORANGE)
    wait(0.5, SECONDS)
    robot.led.on(ALL_LEDS, CYAN)
    wait(0.5, SECONDS)

robot.led.off(ALL_LEDS)

is_turn_active#

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

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

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

이 방법은 turn_for 및 turn_to과 같이 wait 매개변수를 갖는 모션 메서드와 함께 작동합니다.

용법:

robot.is_turn_active()

매개변수

설명

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

# Blink all the LEDs while the robot is turning
robot.turn_for(RIGHT, 180, wait=False) 

while robot.is_turn_active():
    robot.led.on(ALL_LEDS, GREEN)
    wait(0.5, SECONDS)
    robot.led.on(ALL_LEDS, CYAN)
    wait(0.5, SECONDS)

robot.led.off(ALL_LEDS)

is_stopped#

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

  • True — 로봇이 움직이거나 회전하지 않습니다.

  • False — 로봇이 움직이거나 회전하고 있습니다.

용법:

robot.is_stopped()

매개변수

설명

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

# Blink all the LEDs while the robot is moving or turning

def light_show():
    # Flash LEDs while the robot is moving or turning
    while not robot.is_stopped():
        robot.led.on(ALL_LEDS, GREEN)
        wait(.5, SECONDS)
        robot.led.on(ALL_LEDS, PURPLE)
        wait(.5, SECONDS)

    robot.led.off(ALL_LEDS)

robot.move_for(200, 0, wait=False)
light_show()

robot.turn_for(RIGHT, 180, wait=False)
light_show()