モーション#
導入#
VEX AIMコーディングロボットは、全方位駆動方式を採用しており、前進、後退、左折、右折、斜め方向への移動に加え、独立して旋回することも可能です。動作方式によって、ロボットの移動方法や旋回方法、移動速度、そしてx座標とy座標の追跡方法が制御されます。

利用可能なメソッドの一覧は以下のとおりです。
動作 — ロボットを移動および旋回させる。
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)
パラメータ |
説明 |
|---|---|
|
ロボットが移動する角度(度数)。整数または-360から360までの小数を指定できます。 |
|
オプション。0 |
|
オプション。速度の単位: |
# 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)
パラメータ |
説明 |
|---|---|
|
ロボットが移動する距離(ミリメートル単位)。整数または小数(浮動小数点数)を指定できます。 |
|
ロボットが移動する角度(度数)。整数または-360から360までの小数を指定できます。 |
|
オプション。0 |
|
オプション。速度の単位: |
|
オプション |
# 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)
パラメータ |
説明 |
|---|---|
|
ロボットのy軸方向の速度は、-100%から100%までの範囲で表されます。負の値はロボットを後退させ、正の値はロボットを前進させます。 |
|
ロボットのx軸方向の速度は、-100%から100%までの範囲で表されます。負の値はロボットを左に移動させ、正の値は右に移動します。 |
|
ロボットの旋回速度は、-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)
パラメータ |
説明 |
|---|---|
|
ロボットが回転する方向: |
|
オプション。0 |
|
オプション。速度の単位: |
# 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)
パラメータ |
説明 |
|---|---|
|
ロボットが回転する方向: |
|
ロボットが回転する角度(度数)。範囲は-360度から360度です。整数または小数(浮動小数点数)を指定できます。 |
|
オプション。0 |
|
オプション。速度の単位: |
|
オプション |
# 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#
方位とは、ロボットが向いている方向のことで、度数で表されます。0 turn_to ロボットを特定の方位に向けます。ロボットは、目標の方位に到達するために最短の方向へ旋回します。
ロボットの初期進行方向は0度です。
プロジェクトは、ロボットの旋回が完了するまで待機し、その後次のコードが実行されます。
使用法:
robot.turn_to(heading, velocity, units, wait)
パラメータ |
説明 |
|---|---|
|
ロボットが向くべき方向(-360度から360度まで)。 |
|
オプション。0 |
|
オプション。速度の単位: |
|
オプション |
# 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)
パラメータ |
説明 |
|---|---|
|
|
|
オプション。速度の単位: |
# 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)
パラメータ |
説明 |
|---|---|
|
|
|
オプション。速度の単位: |
# 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座標を0、y座標を0に設定することで、ロボットの現在位置が新たな座標(0, 0)となります。そして、ロボットはその新しい値に基づいて将来の位置を追跡することができます。
使用法:
robot.set_xy_position(x, y)
パラメータ |
説明 |
|---|---|
|
ロボットに設定するX座標の値(mm単位)。整数または小数(浮動小数点数)を指定できます。 |
|
ロボットに設定するy座標の値(mm単位)。整数または小数(浮動小数点数)を指定できます。 |
# 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()