モーター#

導入#

モーターとモーターグループは Motor は、構成済みの IQ スマートモーター 1 つを制御し、 MotorGroup は、構成済みの複数の IQ スマートモーターをまとめて制御し、それらが連動して動くようにします。モーターとモーターグループは、アームを上げたり、爪を回転させたり、車輪を回転させたり、組み立てられた他の部分を動かしたりするために使用できます。2 つのモーターは、ロボット全体を移動および回転させるための ドライブトレイン として連携して動作できます。

各モーターまたはモーターグループは、「デバイス」ウィンドウで設定します。ビルドによっては、モーター名とモーターグループ名が変わる場合があります。このページでは、例として motor_1 と「 motor_group_1 を使用しています。必要に応じて、ご自身の設定済みの名前に置き換えてください。

VEX IQ(第2世代)モーター。プラス記号は前進方向を示し、矢印は左回転、つまり反時計回りの回転方向を示しています。 VEX IQ(第2世代)モーター。逆方向はマイナス記号で示され、右回転(時計回り)を示す矢印が付いています。

デフォルトでは、 FORWARD モーターを反時計回りに回転させ、 REVERSE はモーターを時計回りに回転させます。モーターを逆回転に設定すると、これらの回転方向が反転します。

モーターやモーターグループをコーディングする方法は数多くあります。以下に、すべてのモーターおよびモーターグループのメソッドの一覧を示します。

動作 — モーターおよびモーター群を停止および回転させる。

  • spin — モーターまたはモーターグループを永久に正転または逆転させます。

  • spin_for — モーターまたはモーターグループを指定された距離だけ回転させます。

  • spin_to_position — モーターまたはモーターグループを特定の位置まで回転させます。

  • stop — モーターまたはモーターグループの回転を停止します。

ミューテーター — モーターおよびモーターグループの設定を調整します。

  • set_velocity — モーターまたはモーターグループに回転速度を指示します。

  • set_max_torque — モーターまたはモーターグループが回転中にどれだけ強く押せるかを設定します。

  • set_position — モーターまたはモーターグループの現在の位置を新しい値に変更します。

  • set_stopping — モーターまたはモーターグループが停止する方法(ブレーキ、惰性走行、保持)を設定します。

  • set_timeout — モーターまたはモーターグループが動作を完了しようとする時間を設定します。

  • set_reversed — モーターの回転方向を反転するかどうかを変更します。

  • reset_position — モーターまたはモーターグループの現在の位置を 0 に変更します。

ゲッター — モーターおよびモーター群の状態を確認してください。

  • position — モーターまたはモーターグループの現在の位置を返します。

  • velocity — モーターまたはモーターグループが回転している速度を返します。

  • current — モーターまたはモーターグループが使用している電流の量を返します。

  • is_done — モーターまたはモーターグループが動作を完了したかどうかをブール値として返します。

  • is_spinning — モーターまたはモーターグループが回転しているかどうかをブール値として返します。

  • direction — モーターまたはモーターグループが回転している方向を返します。

  • power — モーターまたはモーターグループが使用している電力の量を返します。

  • torque — モーターまたはモーターグループが使用しているトルクの量を返します。

  • efficiency — モーターまたはモーターグループが電力をどれだけ効率的に使用しているかを返します。

  • temperature — モーターまたはモーターグループの温度を返します。

  • count — モーターグループ内のモーターの数を返します。

  • get_timeout — モーターまたはモーターグループの現在のタイムアウト期間を返します。

コンストラクター — モーターおよびモーターグループを手動で初期化および構成します。

  • Motor — モーターを作成します。

  • MotorGroup — モーターグループを作成します。

行動#

spin#

spin は、モーターまたはモーター群を正逆方向に永久に回転させます。モーターまたはモーター群は、別の方向に回転したり停止したりするなど、別の動作が与えられるまで回転し続けます。

Usage:
motor_1.spin(direction, velocity, units)

パラメータ

説明

direction

モーターまたはモーター群が回転する方向: FORWARD または REVERSE。

velocity

Optional. The velocity to spin with from 0% to 100% when using PERCENT. This can be an integer or decimal (float).

units

オプション。速度の単位:

  • PERCENT
  • RPM — 1分あたりの回転数
  • VelocityUnits.DPS — 1秒あたりの角度

# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

spin_for#

spin_for は、モーターまたはモーターグループを特定の距離だけ回転させます。回転は、モーターまたはモーターグループの現在位置を基準とします。プロジェクトは、モーターまたはモーターグループの回転が終了するまで待機してから、次のコードを実行します。

Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)

パラメータ

説明

direction

モーターまたはモーター群が回転する方向: FORWARD または REVERSE。

angle

モーターまたはモーターグループが回転する距離。これは、 integer または小数 (float ) になります。

units

オプション。距離の単位: DEGREES (デフォルト)または TURNS。

velocity

Optional. The velocity to spin with from 0% to 100% when using PERCENT. This can be an integer or decimal (float).

units_v

オプション。速度の単位:

  • PERCENT
  • RPM (デフォルト)— 1分あたりの回転数

wait

オプション。

  • wait=True (デフォルト) — モーターまたはモーターグループの回転が終了するまでプロジェクトを待機させ、次のコード行を実行します。
  • wait=False — 次のコード行をすぐに実行します。

# Spin the motor forward, then put it
# at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)

# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.spin_for(REVERSE, 150, MM, 20, PERCENT)
wait(1, SECONDS)
# Spin faster
motor_1.spin_for(FORWARD, 150, MM, 100, PERCENT)

spin_to_position#

spin_to_position は、モーターまたはモーターグループを特定の位置まで回転させます。

モーターまたはモーターグループの位置は、回転した角度を表し、 DEGREES または TURNSで測定されます。1回転は360度に相当します。プロジェクトの開始時には、モーターまたはモーターグループの位置は0度に設定されます。モーターまたはモーターグループの位置は、set_positionメソッドを使用して設定することもできます。

位置情報は絶対値です。つまり、回転方向はモーターまたはモーター群の現在の位置によって決まります。

例えば、モーターまたはモーター群が0度から始まり、720度の位置まで回転する場合、2回転前進します。その後、360度の位置まで回転する場合、360度は720度より小さいため、1回転後退します。

Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)

パラメータ

説明

rotation

モーターまたはモーターグループが回転する位置の値。これは、 integer または小数 (float ) になります。

units

位置単位: DEGREES または TURNS。

velocity

Optional. The velocity to spin with from 0% to 100% when using PERCENT. This can be an integer or decimal (float).

units_v

オプション。速度の単位:

  • PERCENT
  • RPM — 1分あたりの回転数
  • VelocityUnits.DPS — 1秒あたりの角度

wait

オプション。

  • wait=True (デフォルト) — モーターまたはモーターグループの回転が終了するまでプロジェクトを待機させ、次のコード行を実行します。
  • wait=False — 次のコード行をすぐに実行します。

# Spin the motor forward, then
# put it at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)

# Spin forward then quickly reverse
# to 0 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(0, DEGREES, 100, PERCENT, wait=True)

stop#

stop モーターまたはモーター群の回転を停止します。

Usage:
motor_1.stop(mode)

パラメータ

説明

mode

Optional. How the motor or motor group will stop:

  • COAST — Slows to a stop.
  • BRAKE (default) — Stops immediately.
  • HOLD — Stops immediately and holds the motor’s position.

# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop(COAST)

変異誘発者#

set_velocity#

set_velocity 、モーターまたはモーターグループに回転速度を指示します。パーセンテージが高いほどモーターまたはモーターグループは速く回転し、パーセンテージが低いほどモーターまたはモーターグループは遅く回転します。

すべてのプロジェクトは、各モーターまたはモーターグループがデフォルトで50%の速度で回転する状態から始まります。

注: 回転速度を速くすると、モーターまたはモーター群の回転速度は速くなりますが、精度が低下する可能性があります。回転速度を遅くすると、モーターまたはモーター群の回転速度は遅くなりますが、精度が向上する可能性があります。

Usage:
motor_1.set_velocity(velocity, units)

パラメータ

説明

velocity

PERCENTを使用する場合、0% から 100% までの回転速度。これは integer または小数 (float ) になります。

units

オプション。速度の単位:

  • PERCENT
  • RPM — 1分あたりの回転数
  • VelocityUnits.DPS — 1秒あたりの角度

# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(REVERSE, 150, MM)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 150, MM)

set_max_torque#

トルクとは、モーターまたはモーター群が回転しながらどれだけの力で押したり引いたりできるかを示す指標です。

set_max_torque は、モーターまたはモーターグループが使用できる最大トルクを設定します。

パーセンテージが高いほど、モーターまたはモーター群はより強く押すことができます。例えば、重い物を持ち上げる時などです。パーセンテージが低いほど、モーターまたはモーター群が押せる力が制限されます。これは、モーターまたはモーター群が動かなくなったり、可動範囲の限界に達したりした場合に、ロボットを保護するのに役立ちます。

すべてのプロジェクトは、各モーターまたはモーターグループのトルクがデフォルトで50%に設定された状態から始まります。

Usage:
motor_1.set_max_torque(value, units)

パラメータ

説明

value

モーターまたはモーターグループが使用できる最大トルク。これは、 integer または小数 (float ) になります。

units

トルクの単位:

  • PERCENT
  • TorqueUnits.NM — ニュートンメートル
  • TorqueUnits.INLB — インチポンド

# Spin the motor at different torque values
# Default
motor_1.spin_to_position(45, DEGREES)
# Spin at a lower torque
motor_1.set_max_torque(20, PERCENT)
motor_1.spin_to_position(0, DEGREES)
# Spin at the max torque
motor_1.set_max_torque(100, PERCENT)
motor_1.spin_to_position(45, DEGREES)

set_position#

A motor or motor group’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. set_position changes the motor or motor group’s current position to a new value.

例えば、モーターまたはモーター群が180度回転している場合、位置を0度に設定すると、その位置は180度から0度にリセットされます。その後、モーターまたはモーター群はその新しい値に基づいて回転できるようになります。

Usage:
motor_1.set_position(position, units)

パラメータ

説明

position

モーターまたはモーターグループに設定する位置値。これは、 integer または小数 (float ) のいずれかです。

units

位置単位: DEGREES または TURNS。

# Position the motor at the
# new 0 degrees
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0)

set_stopping#

set_stopping は、モーターまたはモーターグループがどのように停止するかを設定します。停止方法は、ブレーキ、惰性走行、または保持のいずれかです。

Usage:
motor_1.set_stopping(mode)

パラメータ

説明

mode

モーターまたはモーター群の停止方法:

  • BRAKE — すぐに停止します。
  • COAST — 減速して停止します。
  • HOLD — すぐに停止し、モーターの位置を保持します。

# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.set_stopping(COAST)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop()

set_timeout#

set_timeout set_timeout は、モーターまたはモーターグループが動作を完了するまでの試行時間を設定します。モーターまたはモーターグループがその時間内に動作を完了できない場合、試行を停止して次のコード行に進みます。これにより、モーターまたはモーターグループが動作中に停止してしまうのを防ぎます。

Usage:
motor_1.set_timeout(value, units)

パラメータ

説明

value

The amount of time the motor or motor group can try to finish a movement. This can be a positive integer or decimal (float).

units

オプション。時間の単位:

  • SECONDS
  • MSEC (デフォルト) — ミリ秒

# Set a 0.5 second timeout for motor actions
motor_1.set_timeout(0.5, SECONDS)

# Try a long move that will time out early
motor_1.spin_for(FORWARD, 2, TURNS)
motor_1.spin_to_position(0, DEGREES)

set_reversed#

set_reversed は、モーターの回転方向を反転するかどうかを変更します。このメソッドは、 Motorを構築する際に reverse パラメータを True に設定するのと同様に機能します。

注: この方法はモーター単体でのみ有効で、モーターグループでは有効ではありません。

Usage:
motor_1.set_reversed(value)

パラメータ

説明

value

モーターの回転方向を反転するかどうか:

  • True — モーターの回転方向を反転します。
  • False — モーターの回転方向をデフォルトに戻します。

# Change the reverse direction while spinning
motor_1.spin_for(FORWARD, 45)
motor_1.set_reversed(True)
motor_1.spin_for(FORWARD, 45)

reset_position#

reset_position は、モーターまたはモーターグループの現在の位置を 0 に変更します。

Usage:
motor_1.reset_position()

パラメータ

説明

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

# Spin to 360 degrees, then reset the encoder
motor_1.spin_to_position(360, DEGREES)
motor_1.reset_position()

# Move again to 90 degrees from new zero point
motor_1.spin_to_position(90, DEGREES)

ゲッター#

position#

A motor or motor group’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. position returns the motor or motor group’s current position.

プロジェクトの開始時、モーターまたはモーターグループの位置は0度に設定されます。モーターまたはモーターグループが1回転すると、位置は360度(1回転)になります。モーターまたはモーターグループが反対方向に回転すると、位置はマイナスになります。

Usage:
motor_1.position(units)

パラメータ

説明

units

オプション。モーターまたはモーターグループの位置を戻す単位: DEGREES (デフォルト)または TURNS。

# Spin the motor and display the
# ending position
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
brain.screen.print(motor_1.position())

velocity#

velocity モーターまたはモーターグループの回転速度を返します。

正の値は、モーターまたはモーター群が正方向に回転していることを意味します。負の値は、逆方向に回転していることを意味します。

Usage:
motor_1.velocity(units)

パラメータ

説明

units

オプション。返される速度単位:

  • PERCENT
  • RPM (デフォルト) — 1分あたりの回転数
  • VelocityUnits.DPS — 1秒あたりの角度

current#

current 、モーターまたはモーターグループが使用している電流値を、0.0~1.2 A のアンペア単位で返します。電流とは、モーターまたはモーターグループを流れる電気の量です。

電流値が高いということは、モーターまたはモーター群がより多くの電流を使用していることを意味します。これは、モーターまたはモーター群が重い物を持ち上げているとき、物体を押しているとき、または動かなくなったときに動作しようとしているときに発生する可能性があります。

これは、動作中にモーターまたはモーター群が負荷を受けていないかを確認するために使用できます。電流が高い状態が続くと、モーターが過熱したり、電力効率が低下したりする可能性があります。

Usage:
motor_1.current(units)

パラメータ

説明

units

オプション。返される現在の単位:

  • CurrentUnits.AMP — アンペア

is_done#

is_done は、モーターまたはモーターグループの動作が完了したかどうかをブール値で返します。これは、モーターの動作に基づいて他の動作のタイミングを制御するために使用できます。

  • True — モーターまたはモーター群の動作が完了しました。

  • False — モーターまたはモーター群はまだ動いています。

このメソッドは、 wait パラメータを持つ次のモーションメソッドと連携して動作します: spin_for および spin_to_position。

Usage:
motor_1.is_done()

パラメータ

説明

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

is_spinning#

is_spinning は、モーターまたはモーターグループが回転しているかどうかをブール値で返します。これは、モーターの動きに基づいて他の動作のタイミングを制御するために使用できます。

  • True — モーターまたはモーター群が回転しています。

  • False — モーターまたはモーター群が回転していません。

このメソッドは、 wait パラメータを持つ次のモーションメソッドと連携して動作します: spin_for および spin_to_position。

Usage:
motor_1.is_spinning()

パラメータ

説明

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

direction#

direction は、モーターまたはモーター群が現在回転している方向を返します。

  • FORWARD

  • REVERSE

Usage:
motor_1.direction()

パラメータ

説明

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

power#

power モーターまたはモーターグループが使用している電力をワット単位で返します。電力は、モーターまたはモーターグループがエネルギーを消費する速度を示します。

出力値が高いほど、モーターまたはモーター群のエネルギー消費速度が速いことを意味します。これは、モーターまたはモーター群が重い物を持ち上げたり、物体を押したり、動かなくなったものを動かそうとしたりする際に発生します。

これは、動作を比較したり、モーターまたはモーター群に負荷がかかっていないかを確認したりするために使用できます。出力が高い状態が続くと、モーターが過熱したり、エネルギー効率が低下したりする可能性があります。

Usage:
motor_1.power()

パラメータ

説明

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

torque#

トルクとは、モーターまたはモーター群が回転する際に、どれだけの力でねじったり、押したり、引いたりしているかを示す指標です。

トルクがtorque は、モーターまたはモーターグループが使用しているトルクの値を返します。

トルク値が高いほど、モーターまたはモーター群がより強い力で押したり引いたりしていることを意味します。これは、モーターまたはモーター群が重い物を持ち上げたり、物体に押し付けたり、動かなくなったものを動かそうとしたりする際に発生します。

これは、運動器官または運動群が負荷に苦労しているかどうかを確認したり、さまざまな動作にどれだけの力が必要かを比較したりするために使用できます。

モーターまたはモーターグループのトルクを設定するには、set_max_torque を使用します。

Usage:
motor_1.torque(units)

パラメータ

説明

units

返されるトルク単位:

  • TorqueUnits.NM (デフォルト) — ニュートンメートル
  • TorqueUnits.INLB — インチポンド

efficiency#

効率efficiency 、モーターまたはモーターグループが電力をどれだけ効率的に使用しているかを、0%から100%までのパーセンテージで返します。

効率とは、モーターまたはモーター群のパワーのうち、どれだけが動作に使われているかを示す指標です。効率の値が高いほど、モーターまたはモーター群のパワーがより多く動作に使われていることを意味します。効率の値が低いのは、モーターまたはモーター群が懸命に働いているにもかかわらず、あまり動いて​​いない場合、例えば、何かに引っかかって動けなくなったり、物体に押し付けられたりしている場合などです。

これは、動作を比較したり、モーターまたはモーター群が動作にエネルギーを使う代わりに無駄にエネルギーを浪費していないかを確認するために使用できます。

Usage:
motor_1.efficiency()

パラメータ

説明

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

temperature#

temperature モーターまたはモーターグループの温度を返します。

モーター温度は、モーターまたはモーター群の温度を示します。温度が高いほど、モーターまたはモーター群は動作中に温度が上昇していることを意味します。モーターは、最高の性能を維持するために、摂氏55度以下に保つ必要があります。

モーターまたはモーター群が過熱すると、保護のために最大電流が低下します。摂氏70度になると、モーターは冷却されるまで動作を停止します。

これは、モーターまたはモーター群が、繰り返し動作中、長時間の走行中、または物体に押し付けられているときに、過熱していないかどうかを確認するために使用できます。

Usage:
motor_1.temperature(units)

パラメータ

説明

units

オプション。返される温度単位:

  • TemperatureUnits.CELSIUS (デフォルト)
  • TemperatureUnits.FAHRENHEIT

count#

count は、モーター グループ内のモーターの数を返します。

注: この方法はモーターグループに対してのみ有効であり、モーター単体に対しては有効ではありません。

Usage:
motor_group_1.count()

パラメータ

説明

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

get_timeout#

get_timeout は、モーターまたはモーターグループの現在のタイムアウトをミリ秒単位で返します。

注: この方法はモーター単体でのみ有効で、モーターグループでは有効ではありません。

Usage:
motor_1.get_timeout()

パラメータ

説明

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

建設業者#

コンストラクタは、デバイスウィンドウの外で、 Motor オブジェクトと MotorGroup オブジェクトを手動で作成するために使用されます。

Motor#

Motor はモーターを生成します。

Usage:
motor_1 = Motor(smartport, gears, reverse)

パラメータ

説明

smartport

モーターが接続されているスマートポートは、 Ports.PORTxのように表記されます。ここで、x はポート番号です。

gears

オプション。モーターのギア比:

  • GearSetting.RATIO_1_1 (デフォルト) — 1:1 比
  • GearSetting.RATIO_2_1 — 2:1 比
  • GearSetting.RATIO_3_1 — 3:1 比

reverse

オプション。モーターの回転方向を反転するかどうかを設定します。

  • True — モーターを反転します。
  • False (デフォルト) — モーターを反転しません。

# Create a reversed motor
motor_1 = Motor(Ports.PORT1, 1.0, True)

Motor Group#

MotorGroup はモーターグループを作成します。

Usage:
motor_group_1 = MotorGroup(motors)

パラメータ

説明

motors

モーター グループに追加する、以前に作成した Motor オブジェクトの名前。グループには最大 12 Motor オブジェクトを追加できます。

# Create two motors
motor_group_1_motor_a = Motor(Ports.PORT1, False)
motor_group_1_motor_b = Motor(Ports.PORT6, True)

# Create a motor group with those motors
motor_group_1 = MotorGroup(motor_group_1_motor_a, motor_group_1_motor_b)