モーション#

導入#

VEX AIRドローンは4つのプロペラを搭載しており、あらゆる方向への移動と独立した回転が可能です。モーションコントロール機能により、移動、旋回、速度調整、位置追跡などの操作が可能です。

4つのプロペラを持つドローンを囲む、0~360度の円形コンパスダイヤル。ドローンの前面はコンパスダイヤルの0度を向いています。

以下に、利用可能なメソッドの一覧を示します。

アクション

  • take_off – ドローンを指定された高さまで持ち上げます。

  • land – ドローンを着陸させます。

  • hover - ドローンをその位置に保持します。

  • climb – ドローンを指定された垂直方向に移動させます。

  • climb_for – ドローンを指定された垂直方向に指定された距離だけ移動させます。

  • climb_to – ドローンを指定された高度まで移動させます。

  • move_at – ドローンを指定された方向と速度で移動させます。

  • move_for – ドローンを指定された方向で指定された距離だけ移動させます。

  • move_to – ドローンを同じ方位を維持しながら指定された位置に移動します。

  • turn – ドローンを左または右に旋回させます。

  • turn_for – ドローンを指定された角度だけ回転させます。

  • turn_to – ドローンを特定の方向に向けて旋回させます。

  • move_with_vectors – ベクトルベースの x、y、z、および回転値を使用してドローンを移動します。

ミューテーター

ゲッターズ

  • get_max_z_height – ドローンが到達できる最大高度を返します。

  • get_flight_state – ドローンの現在の状態を返します。

  • get_x_position – ドローンの x 座標を返します。

  • get_y_position – ドローンの y 座標を返します。

  • get_z_position – ドローンのz座標を返します。

  • get_safe_mode – ドローンのプロペラロック状態を返します。

  • is_climb_active – ドローンが現在上昇中かどうかを返します。

  • is_move_active – ドローンが現在移動中かどうかを返します。

  • is_turn_active – ドローンが現在旋回しているかどうかを返します。

  • is_hovering - ドローンが現在ホバリングしているかどうかを返します。

  • is_taking_off – ドローンが現在離陸中かどうかを返します。

  • is_landing – ドローンが現在着陸中かどうかを返します。

  • is_landed - ドローンが現在着陸しているかどうかを返します。

行動#

take_off#

take_off はプロペラを始動させ、ドローンを空中に持ち上げます。この操作は、他の動作を行う前に必ず実行する必要があります。

使用法:

drone.take_off(climb_to, units, wait)

パラメータ

説明

climb_to

ドローンが飛行するZ座標(高度)。

units

使用する単位:

  • CM - センチメートル
  • MM - ミリメートル
  • INCHES

wait

オプション wait=True (デフォルト) は、ロボットの移動が完了するまでプロジェクトを待機させ、次のコード行を実行します。2 wait=False は、次のコード行をすぐに実行します。

# Fly for 1 second
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()

land#

land はドローンを地上に降ろします。プロジェクトが停止されるまでプロペラは回転し続けます。

使用法:

drone.land(wait)

パラメータ

説明

wait

オプション wait=True (デフォルト) は、ロボットの移動が完了するまでプロジェクトを待機させ、次のコード行を実行します。2 wait=False は、次のコード行をすぐに実行します。

# Land after 1 second
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()

hover#

hover ドローンはあらゆる方向に移動を停止し、空中の現在の位置を維持します。

Usage:
drone.hover()

パラメータ

説明

このメソッドにはパラメータがありません。

# Hold current position for 3 seconds after moving forward
drone.take_off(climb_to=500)
drone.move_at(direction=0, velocity=50)
wait(1, SECONDS)
drone.hover()
wait(3, SECONDS)
drone.land()

climb#

climb ドローンを指定された垂直方向に移動します。

Usage: drone.climb(direction, velocity)

パラメータ

説明

direction

ドローンが飛行する方向: UP または DOWN。

velocity

ドローンが上昇する速度をパーセントで表したもの。

# Climb upwards for 2 seconds
drone.take_off(climb_to=500)
wait(2, SECONDS)
drone.climb(direction=UP)
wait(2, SECONDS)
drone.land()

climb_for#

climb_for は、ドローンを指定された垂直方向に特定の距離だけ移動させます。

使用法:

drone.climb_for(direction, distance, units, velocity, wait)

パラメータ

説明

direction

ドローンが飛行する方向: UP または DOWN。

distance

ドローンが飛行できる距離。

units

オプション。距離を表す単位:

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES

velocity

オプション。ドローンが上昇する速度をパーセントで指定します。速度を指定しない場合、デフォルトの速度は50%です。

wait

オプション wait=True (デフォルト) は、ロボットの移動が完了するまでプロジェクトを待機させ、次のコード行を実行します。2 wait=False は、次のコード行をすぐに実行します。

# Lower drone before landing
drone.take_off(climb_to=700)
wait(2, SECONDS)
drone.climb_for(direction=DOWN, distance=300)
wait(2, SECONDS)
drone.land()

climb_to#

climb_to はドローンを特定のz位置に移動します。

使用法:

drone.climb_to(z, units, velocity, wait)

パラメータ

説明

z

ドローンが上昇するz座標(整数または小数)。

units

オプション。距離を表す単位:

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES

velocity

オプション。ドローンが上昇する速度をパーセントで表したもの。

wait

オプション wait=True (デフォルト) は、ロボットの移動が完了するまでプロジェクトを待機させ、次のコード行を実行します。2 wait=False は、次のコード行をすぐに実行します。

# Reach 500 mm after takeoff
drone.take_off(climb_to=300)
wait(1, SECONDS)
drone.climb_to(z=500)
wait(1, SECONDS)
drone.land()

move_at#

move_at は、ドローンを指定された角度と速度で移動させます。

使用法:

drone.move_at(angle, velocity)

パラメータ

説明

angle

ドローンが移動する角度を、整数または小数で表したもので、0度から359度の範囲で指定します。

velocity

ドローンが移動する速度をパーセントで表したもの。

# Move left for 2 seconds
drone.take_off(climb_to=500)
drone.move_at(angle=270)
wait(2, SECONDS)
drone.land()

move_for#

move_for は、現在の set_move_velocity を使用して、ドローンを特定方向に特定の距離だけ移動させます。

使用法:

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

パラメータ

説明

angle

ドローンが移動する角度を整数または小数 (float) で表し、0 度から 359 度の範囲で指定します。

distance

ドローンが移動する距離を、整数または小数で指定します。

units

オプション。距離を表す単位:

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES

velocity

オプション。ドローンの移動速度をパーセントで表したもの。

wait

オプション wait=True (デフォルト) は、ロボットの移動が完了するまでプロジェクトを待機させ、次のコード行を実行します。2 wait=False は、次のコード行をすぐに実行します。

# Move forward for 200 mm
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.move_for(direction=0, distance=200, velocity=50, units=MM)
wait(1, SECONDS)
drone.land()

move_to#

move_to は、ドローンを同じ方位を維持したまま、指定された空中位置まで移動させます。

使用法:

drone.move_to(x, y, z, units, move_velocity, climb_velocity, wait)

パラメータ

説明

x

ドローンが移動する先のx座標。

y

ドローンが移動する座標。

z

ドローンが移動する先のz座標。

units

オプション。距離を表す単位:

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES

move_velocity

オプション。ドローンの移動速度をパーセントで表したもの。

climb_velocity

オプション。ドローンが上昇する速度をパーセントで表したもの。

wait

オプション wait=True (デフォルト) は、ロボットの移動が完了するまでプロジェクトを待機させ、次のコード行を実行します。2 wait=False は、次のコード行をすぐに実行します。

# Move diagonally to (300, 300, 800)
drone.take_off(climb_to=300)
wait(2, SECONDS)
drone.move_to(x=300, y=300, z=800)
wait(2, SECONDS)
drone.land()

turn#

turn は、現在の set_turn_velocity を使用してドローンを特定の方向に旋回させます。

使用法:

drone.turn(direction, velocity)

パラメータ

説明

direction

ドローンが旋回する方向: LEFT または RIGHT。

velocity

オプション。ドローンが旋回する速度をパーセントで表したもの。

# Turn to the right for 2 seconds
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.turn(RIGHT, 50)
wait(2, SECONDS)
drone.land()

turn_for#

turn_for は、現在の set_turn_velocity を使用して、ドローンを現在の向きに対して指定された方向に設定された距離だけ回転させます。

使用法:

drone.turn_for(direction, angle, velocity, wait)

パラメータ

説明

direction

ドローンが旋回する方向: LEFT または RIGHT。

angle

ドローンが旋回する角度を整数または小数 (float) で表したもので、0 度から 359 度までの範囲です。

velocity

オプション。ドローンが旋回する速度をパーセントで表したもの。

wait

オプション wait=True (デフォルト) は、ロボットの移動が完了するまでプロジェクトを待機させ、次のコード行を実行します。2 wait=False は、次のコード行をすぐに実行します。

# Turn around, then land
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.turn_for(RIGHT, 180)
wait(1, SECONDS)
drone.land()

turn_to#

turn_to は、現在の set_turn_velocity を使用してドローンを特定の方向に向けて旋回させます。

使用法:

drone.turn_to(heading, velocity, wait)

パラメータ

説明

heading

ドローンが向きを変える方向(0度から360度まで)。

velocity

オプション。ドローンが旋回する速度をパーセントで表したもの。

wait

オプション wait=True (デフォルト) は、ロボットの移動が完了するまでプロジェクトを待機させ、次のコード行を実行します。2 wait=False は、次のコード行をすぐに実行します。

# Turn to face each of the cardinal headings
drone.take_off(climb_to=500)
drone.turn_to(heading=90, velocity=50)
wait(3, SECONDS)
drone.turn_to(heading=180, velocity=50)
wait(3, SECONDS)
drone.turn_to(heading=270, velocity=50)
wait(3, SECONDS)
drone.turn_to(heading=0, velocity=50)
wait(3, SECONDS)
drone.land()

move_with_vectors#

move_with_vectors は、ベクトルベースのモーションを使用してドローンを移動させ、x軸(水平方向)とy軸(垂直方向)に沿った動きを組み合わせながら、ドローンを回転させます。

注: このメソッドは移動速度と旋回速度の値を直接設定するため、set_move_velocity や set_turn_velocity は使用しません。

使用法:

drone.move_with_vectors(forward, rightward, upward, rotation)

パラメータ

説明

forward

ドローンのY軸方向の速度(前進および後退)。-100から100までの値をパーセントで指定します。負の値は後退、正の値は前進を表します。

rightward

ドローンのX軸方向(左右方向)の速度。-100から100までの値をパーセントで指定します。負の値は左方向、正の値は右方向への移動を表します。

upward

ドローンのZ軸方向の速度(上下方向の動き)。値の範囲は-100~100(パーセント)で、負の値は下降、正の値は上昇を表します。

rotation

ドローンの回転速度。値の範囲は-100から100までで、パーセントで指定します。負の値は反時計回り、正の値は時計回りに回転します。

# Move with controller
drone.take_off(climb_to=500)
while True:
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

変異誘発者#

set_steering_mode#

set_steering_mode は、ドローンを操縦する際に使用する視点を設定します。

使用法:

drone.set_steering_mode(style)

パラメータ

説明

style

ドローンの操縦に使用する視点を設定します。0 HEADLESS は プロジェクト開始時の向きを基準にドローンが移動することを意味します。2 STANDARD デフォルトで使用され、ドローンが向いている方向を基準にドローンが移動します。

# Steer based on the drone's starting orientation
# until button 7 is pressed
drone.take_off(climb_to=500)
drone.set_steering_mode(HEADLESS)
while not controller.button7.pressing():
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)
drone.land()

set_movement_mode#

set_movement_mode はドローンの移動スタイルを設定します。

この操作方法は、コントローラーを使ってドローンを操縦する際に使用されます。

使用法:

drone.set_movement_mode(style)

パラメータ

説明

style

ドローンの操縦に使用する速度を設定します。

  • BALANCED – ドローンは中程度の基本速度で移動します。
  • PERFORMANCE – ドローンはより速い基本速度で移動します。
  • PRECISION (デフォルト) – ドローンはより遅い基本速度で移動します。

# Control the drone with the balanced movement style
drone.take_off(climb_to=500)
drone.set_movement_mode(BALANCED)
while not controller.button5.pressing():
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)
drone.land()

set_climb_velocity#

set_climb_velocity は、デフォルトの登攀速度をパーセンテージで設定します。これは、登攀に関連する後続のすべてのメソッドに影響します。デフォルトの登攀速度は 50% です。

使用法:

drone.set_climb_velocity(velocity)

パラメータ

説明

velocity

ドローンが上昇する速度をパーセントで表したもの。

# Raise the drone quickly before landing
drone.take_off(climb_to=300)
wait(1, SECONDS)
drone.set_climb_velocity(100)
drone.climb_for(direction=UP, distance=500)
wait(1, SECONDS)
drone.land()

set_move_velocity#

set_move_velocity は、デフォルトの移動速度をパーセンテージで設定します。これは、移動に関連する後続のすべてのメソッドに影響します。デフォルトの移動速度は 50% です。

使用法:

drone.set_move_velocity(velocity)

パラメータ

説明

velocity

ドローンが移動する速度をパーセントで表したもの。

# Move forward quickly, then reverse slowly
drone.take_off(climb_to=500)
drone.set_move_velocity(100)
drone.move_for(direction=0, distance=500)
wait(3, SECONDS)
drone.set_move_velocity(20)
drone.move_for(direction=180, distance=500)
wait(5, SECONDS)
drone.land()

set_turn_velocity#

set_turn_velocity は、デフォルトの旋回速度をパーセンテージで設定します。これは、旋回に関連する後続のすべてのメソッドに影響します。デフォルトの旋回速度は 50% です。

使用法:

drone.set_turn_velocity(velocity)

パラメータ

説明

velocity

ドローンが旋回する速度をパーセントで表したもの。

# Turn clockwise quickly, then counterclockwise slowly
drone.take_off(climb_to=500)
drone.set_turn_velocity(100)
drone.turn_for(RIGHT, 360)
wait(3, SECONDS)
drone.set_turn_velocity(20)
drone.turn_for(LEFT, 360)
wait(5, SECONDS)
drone.land()

set_max_z_height#

set_max_z_height は、ドローンが飛行できる高度の上限を設定します。

使用法:

drone.set_max_z_height(z_height, units)

パラメータ

説明

z_height

ドローンが上空を飛行しない最大z軸値(整数または小数)。範囲は1000~5000mm、または40~196インチ。

units

オプション。距離の単位は次のとおりです

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES
# Fly with controller under 1000 mm
drone.set_max_z_height(1000, MM)
drone.take_off(climb_to=500)
while not controller.button7.pressing():
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
drone.land()

set_xyz_position#

set_xyz_position ドローンの現在の x、y、または z 座標を指定された値に設定します。

使用法:

drone.set_xyz_position(x, y, z, units)

注: すべてのパラメータはオプションですが、少なくとも1つ (x y、または z) を指定する必要があります。

パラメータ

説明

x

オプション。ドローンに設定する x 座標を units で、小数 (float) または整数として指定します。

y

オプション。ドローンに設定するy座標を、 units 単位で、小数(float)または整数で指定します。

z

オプション。ドローンに設定するz座標を、 units 単位で、小数(float)または整数で指定します。

units

オプション。距離を表す単位:

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES
# Set a new z position, then fly to z position -300
drone.take_off(climb_to=800)
drone.set_xyz_position(z=0)
wait(1, SECONDS)
drone.climb(DOWN, 50)
while not drone.get_z_position() < -300:
    wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()

ゲッター#

get_max_z_height#

get_max_z_height 、ドローンが到達できる最大高度を整数として返します。

使用法:

drone.get_max_z_height(units)

パラメータ

説明

units

オプション。測定単位:

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES
# Display the new z height limit
controller.screen.print(drone.get_max_z_height(MM))
controller.screen.next_row()
drone.take_off(climb_to=500)
drone.set_max_z_height(1000)
controller.screen.print(drone.get_max_z_height(MM))
wait(1, SECONDS)
drone.land()

get_flight_state#

get_flight_state ドローンの現在の飛行状態を DroneFlightStateType として返します。

  • MOTOR_OFF - 他の飛行状態はどれも真ではありません。

  • CALIBRATION - ドローンがセンサーのキャリブレーションを行っています。

  • MOTOR_START - ドローンがモーターを始動しています。

  • FLIGHT_READY - ドローンは飛行準備完了です。

  • FLIGHT - ドローンが飛行中です。

Usage:
drone.get_flight_state()

パラメータ

説明

このメソッドにはパラメータがありません。

# Report the flight status as the drone takes off
controller.screen.print("Preparing for flight!")
controller.screen.next_row()
drone.take_off(climb_to=800, wait=False)
while not drone.get_flight_state() == MOTOR_START:
    wait(5, MSEC)
controller.screen.print("Motors starting...")
controller.screen.next_row()
while not drone.get_flight_state() == FLIGHT:
    wait(5, MSEC)
controller.screen.print("Take off!")

get_x_position#

get_x_position は、ドローンの x 座標を小数 (float) として返します。

Usage:
drone.get_x_position(units)

パラメータ

説明

units

オプション。位置を表す単位:

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES
# Move to (200, 0, 500)
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.move_at(direction=90, velocity=50)
while not drone.get_x_position() > 200:
    wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()

get_y_position#

get_y_position は、ドローンの y 座標を小数 (float) として返します。

使用法:

drone.get_y_position(units)

パラメータ

説明

units

オプション。位置を表す単位:

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES
# Move to (0, 200, 500)
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.move_at(direction=0, velocity=50)
while not drone.get_y_position() > 200:
    wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()

get_z_position#

get_y_position はドローンの z 座標を小数 (float) として返します。

使用法:

drone.get_z_position(units)

パラメータ

説明

units

オプション。位置を表す単位:

  • CM – センチメートル
  • MM (デフォルト) – ミリメートル
  • INCHES
# Move to (0, 0, 800)
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.climb(UP, 50)
while not drone.get_z_position() > 800:
    wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()

get_safe_mode#

get_safe_mode は、ドローンでプロペラロックが有効になっているかどうかを示すブール値 Boolean

  • True – プロペラロックが有効です。

  • False – プロペラロックが有効になっていません。

使用法:

drone.get_safe_mode()

パラメータ

説明

このメソッドにはパラメータがありません。

# Change the sound by enabling the Propeller Lock
while True:
    if drone.get_safe_mode():
        controller.sound.play(FAULT)
        while controller.sound.is_active():
            wait(50, MSEC)
    else:
        controller.sound.play(SUCCESS)
        while controller.sound.is_active():
            wait(50, MSEC)
    wait(5, MSEC)

is_climb_active#

is_climb_active ドローンが上昇中かどうかを示すブール値を返します。 Boolean

  • True – ドローンは現在上昇中です。

  • False – ドローンは上昇していません。

使用法:

drone.is_climb_active()

パラメータ

説明

このメソッドにはパラメータがありません。

# After the drone starts to climb, play a sound and land
drone.take_off(climb_to=500)
drone.climb(UP, 50)
wait(3, SECONDS)
if drone.is_climb_active():
    controller.sound.play(SUCCESS)
    drone.land()

is_move_active#

is_move_active ドローンが現在移動方法を使用しているかどうかを示す Boolean

  • True – ドローンは現在移動方法を使用しています。

  • False – ドローンは現在移動方法を使用していません。

使用法:

drone.is_move_active()

パラメータ

説明

このメソッドにはパラメータがありません。

# After the drone starts to move, play a sound and land
drone.take_off(climb_to=500)
drone.move_at(direction=0, velocity=50)
wait(2, SECONDS)
if drone.is_move_active():
    controller.sound.play(SUCCESS)
    drone.land()

is_turn_active#

is_turn_active ドローンが旋回しているかどうかを示すブール値を返します。 Boolean

  • True – ドローンは現在旋回中です。

  • False – ドローンが旋回していません。

使用法:

drone.is_turn_active()

パラメータ

説明

このメソッドにはパラメータがありません。

# After the drone starts to turn, play a sound and land
drone.take_off(climb_to=500)
drone.turn(RIGHT)
wait(2, SECONDS)
if drone.is_turn_active():
    controller.sound.play(LOOPING)
    while controller.sound.is_active():
        wait(50, MSEC)
    drone.land()

is_hovering#

is_hovering ドローンがその位置を維持している(ホバリングしている)かどうかを示す Boolean を返します。

  • True – ドローンは現在その位置を維持しています(ホバリング)。

  • False – ドローンは現在位置を変更中です。

使用法:

drone.is_hovering()

パラメータ

説明

このメソッドにはパラメータがありません。

# Play a sound after the drone has finished taking off
drone.take_off(climb_to=700)
while not drone.is_hovering():
    wait(5, MSEC)
controller.sound.play(PAUSE)
wait(2, SECONDS)
drone.land()

is_taking_off#

is_taking_off は、ドローンが離陸中かどうかを示す Boolean を返します。

  • True – ドローンは現在離陸中です。

  • False – ドローンは離陸処理中ではありません。

使用法:

drone.is_taking_off()

パラメータ

説明

このメソッドにはパラメータがありません。

# Play sounds while the drone is taking off
drone.take_off(700, wait=False)
wait(1, SECONDS)
while drone.is_taking_off():
    controller.sound.play(LOOPING)
    wait(5, MSEC)

is_landing#

is_landing は、ドローンが着陸処理中かどうかを示すブール値 Boolean

  • True – ドローンは現在着陸中です。

  • False – ドローンは着陸処理中ではありません。

使用法:

drone.is_landing()

パラメータ

説明

このメソッドにはパラメータがありません。

# Play sounds while the drone is landing
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land(wait=False)
wait(1, SECONDS)
while drone.is_landing():
    controller.sound.play(LOOPING)
    wait(5, MSEC)

is_landed#

is_landed ドローンが現在着陸しているかどうかを示すブール値を返します。 Boolean

  • True – ドローンが着陸しました。

  • False – ドローンは着陸していません。

使用法:

drone.is_landed()

パラメータ

説明

このメソッドにはパラメータがありません。

# Celebrate a successful landing
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
wait(1, SECONDS)
if drone.is_landed():
    controller.sound.play(SUCCESS)