ロボット専用のPython#

導入#

ヒーローボット「ヒューイ」には、2種類のモーターオプション、IQ AIビジョンセンサー、光学センサー、タッチLEDが搭載されています。

すべての標準的な VEXcode VR メソッドは、IQ 25-26 Mix & Match プレイグラウンドで使用できます。

以下は、利用可能なロボット固有のメソッドの一覧です。

駆動系 – ロボットの移動と旋回。

  • アクション

    • drive — ロボットを永久に前進または後退させます。

    • drive_for — ロボットを特定の距離だけ前進または後退させます。

    • turn — ロボットを永久に左または右に回転させます。

    • turn_for — ロボットを特定の角度だけ左または右に回転させます。

    • turn_to_heading — ロボットを-359度から359度までの特定の方向に向けて回転させます。

    • turn_to_rotation — ロボットを特定の回転方向に回転させます。

    • stop — ロボットの動きを停止します。

  • ミューテーター

    • set_heading — ロボットの現在の進行方向を新しい進行方向に変更します。

    • set_rotation — ロボットの現在の回転を新しい回転に変更します。

    • set_timeout — ロボットが動作を完了しようとする時間を設定します。

    • set_drive_velocity — ロボットに走行速度を指示します。

    • set_turn_velocity — ロボットに旋回速度を指示します。

  • ゲッターズ

    • heading — ロボットの現在の方位を0度から359.99度の範囲で返します。

    • rotation — ロボットの現在の回転を返します。

    • is_done — ロボットの移動が完了したかどうかをブール値として返します。

    • is_moving — ロボットが移動しているかどうかをブール値として返します。

    • velocity — ロボットの走行速度を返します。

動作 - ロボットのモーターを動かし、追跡する。

  • アクション

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

    • spin_for — モーターを特定の距離だけ回転させます。

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

    • stop — モーターの回転を停止します。

  • ミューテーター

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

    • set_velocity — モーターに回転速度を指示します。

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

  • ゲッターズ

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

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

    • position — モーターの現在位置を返します。

    • velocity — モーターの回転速度を返します。

AIビジョン - IQ AIビジョンセンサーを使用して物体をキャプチャおよび分析します。

  • ゲッターズ

    • take_snapshot - 特定のシグネチャに対して検出されたオブジェクトのタプルを返します。

  • 物件

    • width - 検出されたオブジェクトの幅(ピクセル単位)。

    • height - 検出されたオブジェクトの高さ(ピクセル単位)。

    • centerX - オブジェクトの中心のX座標(ピクセル単位)。

    • centerY - オブジェクトの中心の Y 座標 (ピクセル単位)。

    • originX - オブジェクトの左上隅のX座標(ピクセル単位)。

    • originY - オブジェクトの左上隅のY座標(ピクセル単位)。

    • id - オブジェクトの分類またはタグ ID。

コンソール – コンソールに出力し、値を監視します。

  • 印刷

  • モニター

    • monitor_variable — 1 つ以上の定義済み変数をモニター タブに追加します。

    • monitor_sensor — モニター タブに 1 つ以上のセンサー値を追加します。

センシング - ロボットの各種センサーを活用する。

  • タッチLED

    • set_color - タッチLEDを選択した色に設定します。

  • 光学

    • is_near_object – 光学センサーが範囲内の物体を検出したかどうかを返します。

    • color – 光学センサーによって検出された色を返します。

    • brightness – オブジェクトから反射された光の量を返します。

    • hue – 光学センサーによって検出された色相を返します。

    • object_detected – 光学センサーが物体を検出したときに呼び出される関数を登録します。

    • object_lost – 光学センサーが物体を失ったときに呼び出される関数を登録します。

このページに掲載されている例では、Playgroundのデフォルトの開始位置を使用しています。

パワートレイン#

駆動系は、VRロボットの走行と旋回を制御します。駆動系は、前進、後退、左折、右折、方向転換、回転などを行うことができます。

行動#

ドライブ#

ドライブdrive 組み合わせでは、ロボットは永久に前進または後退します。ロボットは、旋回や停止などの別の動作が与えられるまで動き続けます。

Usage:
drivetrain.drive(direction)

パラメータ

説明

direction

ロボットの移動方向: FORWARD または REVERSE。

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

ドライブ_for#

drive_for は、ロボットを特定の距離だけ前進または後退させます。プロジェクトは、ロボットの移動が完了するまで待機し、その後次のコードが実行されます。

Usage:
drivetrain.drive_for(direction, distance, units, wait)

パラメータ

説明

direction

ロボットの移動方向: FORWARD または REVERSE。

distance

ロボットが走行する距離。これは、 integer または小数 (float ) になります。

units

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

wait

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

def main():
    # Drive forward and backward
    drivetrain.drive_for(FORWARD, 200, MM)
    drivetrain.drive_for(REVERSE, 200, MM)

# VR threads — Do not delete
vr_thread(main)

振り向く#

turn ロボットを左右に永久に回転させます。ロボットは、走行や停止などの別の動作が与えられるまで回転し続けます。

Usage:
drivetrain.turn(direction)

パラメータ

説明

direction

ロボットが回転する方向: LEFT または RIGHT。

def main():
    # Turn right and left, then stop
    drivetrain.turn(RIGHT)
    wait(2, SECONDS)
    drivetrain.turn(LEFT)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

ターン_フォー#

turn_for は、ロボットを指定された角度だけ左右に回転させます。回転角度はロボットの現在位置を基準としています。プロジェクトは、ロボットの回転が完了するまで次のコード行を実行しません。

Usage:
drivetrain.turn_for(direction, angle, units, wait)

パラメータ

説明

direction

ロボットが回転する方向: LEFT または RIGHT。

angle

ロボットが回転する角度。これは、整数 integerfloat ) のいずれかになります。

units

オプション。回転単位: DEGREES (デフォルト)。

wait

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

def main():
    # Turn the robot right and left
    drivetrain.turn_for(RIGHT, 90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_for(LEFT, 90, DEGREES)

# VR threads — Do not delete
vr_thread(main)

見出しへ#

方位とは、ロボットが向いている方向のことで、度数で表されます。0 turn_to_heading 、ロボットを-359度から359度までの特定の方位に向けます。ロボットは、目標の方位に到達するために最短の方向へ旋回します。

ロボットの初期進行方向は0度です。

プロジェクトは、ロボットの旋回が完了するまで待機し、その後次のコードが実行されます。

Usage:
drivetrain.turn_to_heading(angle, units, wait)

パラメータ

説明

angle

ロボットが向くべき方向(度数) integer は小数、-359から359までの小数値(float)を指定できます。

units

オプション。回転単位: DEGREES (デフォルト)。

wait

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

def main():
    # Turn to face the cardinal directions
    drivetrain.turn_to_heading(90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(180, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(270, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

回転#

turn_to_rotation はロボットを特定の回転方向に回転させます。

回転とは、ロボットがどれだけ回転したかを示すもので、度数で表されます。プロジェクトの開始時には、回転値は0度に設定されます。回転は、set_rotation メソッドを使用して設定することもできます。

回転値は絶対値です。つまり、旋回方向はロボットの現在の回転角度によって決まります。右に旋回すると回転角度が大きくなり、左に旋回すると回転角度が小さくなります。

例えば、ロボットが0度の位置から始まり、720度回転させると、右に2回転します。次に360度回転させると、360度は720度より小さいため、左に1回転します。

プロジェクトは、ロボットの旋回が完了するまで待機し、その後次のコードが実行されます。

Usage:
drivetrain.turn_to_rotation(angle, units, wait)

パラメータ

説明

angle

ロボットが回転する角度(度)。これは、整数 integerfloat ) のいずれかになります。

units

オプション。回転単位: DEGREES (デフォルト)。

wait

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

def main():
    # Turn left, then spin in a circle
    # clockwise and face right
    drivetrain.turn_to_rotation(-90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_rotation(450, DEGREES)

# VR threads — Do not delete
vr_thread(main)

停止#

stop ロボットの動きを停止します。

Usage:
drivetrain.stop()

パラメータ

説明

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

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

変異誘発者#

見出しを設定#

方位とは、ロボットが向いている方向のことで、度数で表されます。0 set_heading ロボットの現在の方位を新しい方位値に変更します。

例えば、ロボットが右を向いた場合、方位を0度に設定すると、その右向きの位置が新たな0度になります。その後、ロボットはその新たな方位に基づいて他の位置に旋回することができます。

Usage:
drivetrain.set_heading(heading, units)

パラメータ

説明

heading

ロボットに設定する方位角の値(度)。これは、整数 integer 、または小数 (float浮動小数点数) のいずれかになります。

units

オプション。見出し単位: DEGREES (デフォルト)。

def main():
    # Face the new 0 degrees
    drivetrain.set_heading(90, DEGREES)
    drivetrain.turn_to_heading(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

回転を設定する#

回転とは、ロボットがどれだけ回転したかを示すもので、度数で表されます。プロジェクトの開始時には、回転値は0度に設定されます。0 set_rotation 実行すると、ロボットの現在の回転が新しい値に変更されます。

例えば、ロボットが右に2回転した場合、回転角度は720度になります。回転角度を0度に設定すると、720度から0度にリセットされます。その後、ロボットはその新しい値に基づいて回転することができます。

Usage:
drivetrain.set_rotation(rotation, units)

パラメータ

説明

rotation

ロボットに設定する回転値(度)。これは、 integer または小数 (float ) のいずれかです。

units

オプション。回転単位: DEGREES (デフォルト)。

def main():
    # Spin counterclockwise two times
    drivetrain.set_rotation(720, DEGREES)
    drivetrain.turn_to_rotation(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

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

Usage:
drivetrain.set_timeout(value, units)

パラメータ

説明

value

ロボットが動作を完了しようと試みる時間。これは、正の整数 integerfloat ) になります。

units

時間単位: SECONDS または MSEC (ミリ秒)。

def main():
    # Turn right after driving forward
    drivetrain.set_timeout(1, SECONDS)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    drivetrain.turn_for(RIGHT, 90)

# VR threads — Do not delete
vr_thread(main)

set_drive_velocity#

set_drive_velocity は、ロボットの走行速度を指定します。パーセンテージが高いほどロボットは速く走行し、低いほど遅く走行します。

すべてのプロジェクトは、ロボットがデフォルトで50%の速度で走行するところから始まります。

注: 速度を速くするとロボットの走行速度は速くなりますが、精度が低下する可能性があります。速度を遅くするとロボットの走行速度は遅くなりますが、精度は向上する可能性があります。

Usage:
drivetrain.set_drive_velocity(velocity, units)

パラメータ

説明

velocity

0%から100%までの走行速度。0は整数、 integerfloat小数です。

units

オプション。速度の単位: PERCENT (デフォルト)。

def main():
    # Drive forward at different velocities
    # Default velocity
    drivetrain.drive_for(FORWARD, 150, MM)
    wait(1, SECONDS)
    # Drive slower
    drivetrain.set_drive_velocity(20, PERCENT)
    drivetrain.drive_for(FORWARD, 150, MM)
    wait(1, SECONDS)
    # Drive faster
    drivetrain.set_drive_velocity(100, PERCENT)
    drivetrain.drive_for(FORWARD, 150, MM)

# VR threads — Do not delete
vr_thread(main)

set_turn_velocity#

set_turn_velocity は、ロボットの旋回速度を指定します。パーセンテージが高いほどロボットの旋回速度は速くなり、低いほど旋回速度は遅くなります。

すべてのプロジェクトは、ロボットがデフォルトで50%の速度で旋回するところから始まります。

注: 速度が速いほどロボットの旋回速度は速くなりますが、精度が低下する可能性があります。速度が遅いほどロボットの旋回速度は遅くなりますが、精度は向上する可能性があります。

Usage:
drivetrain.set_turn_velocity(velocity, units)

パラメータ

説明

velocity

旋回速度は0%から100%までです。これは integer または小数(float )になります。

units

オプション。速度の単位: PERCENT (デフォルト)。

def main():
    # Turn at different velocities
    # Default velocity
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn slower
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn faster
    drivetrain.set_turn_velocity(100, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)

# VR threads — Do not delete
vr_thread(main)

ゲッター#

見出し#

方位とは、ロボットが向いている方向のことで、度数で表されます。0 heading は ロボットの現在の方位を0度から359.99度の範囲で返します。

ロボットの初期進行方向は0度です。

Usage:
drivetrain.heading(units)

パラメータ

説明

units

オプション。見出し単位: DEGREES (デフォルト)。

def main():
    # Display the heading after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.screen.print("Heading: ")
    brain.screen.print(drivetrain.heading(DEGREES))

# VR threads — Do not delete
vr_thread(main)

回転#

Rotation is how much the robot has turned, measured in degrees. At the beginning of a project, the rotation value is set to 0 degrees. rotation returns the robot’s current rotation.

右に回すと回転角度が大きくなり、左に回すと回転角度が小さくなります。例えば、右に2回転すると720度回転します。

Usage:
drivetrain.rotation(units)

パラメータ

説明

units

オプション。回転単位: DEGREES (デフォルト)。

def main():
    # Display the rotation after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.screen.print("Rotation: ")
    brain.screen.print(drivetrain.rotation(DEGREES))

# VR threads — Do not delete
vr_thread(main)

完了しました#

is_doneが 場合は、ロボットの移動が完了したかどうかをブール値で返します。1の場合は、ロボットの移動に基づいて他の動作のタイミングを制御するために使用できます。

  • True — ロボットの移動が完了しました。

  • False — ロボットはまだ動いています。

このメソッドは、 wait パラメータを持つ以下の Drivetrain メソッドと連携して動作します: drive_for、turn_for、turn_to_heading、および turn_to_rotation。

Usage:
drivetrain.is_done()

パラメータ

説明

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

動いている#

is_moving は、ロボットが移動中かどうかをブール値で返します。これは、ロボットの動きに基づいて他の動作のタイミングを制御するために使用できます。

  • True — ロボットが動いています。

  • False — ロボットは動いていません。

Usage:
drivetrain.is_moving()

パラメータ

説明

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

速度#

velocity ロボットの走行速度を -100% から 100% までのパーセンテージで返します。

Usage:
drivetrain.velocity(units)

パラメータ

説明

units

オプション。速度の単位: PERCENT (デフォルト)。

例

def main():
    # Display the velocity after driving
    drivetrain.drive_for(FORWARD, 150, MM)
    brain.screen.print("Velocity: ")
    brain.screen.print(drivetrain.velocity(PERCENT))

モーション#

ヒューイはクローモーターを使ってクローを開閉し、ピンやビームを拾ったり落としたりします。リフトモーターはピンやビームを上下させ、互いに接続できるようにします。

各モーターにはそれぞれ独自の動作方向があります。方向の説明では、ヒューイのモーターがそれぞれの方向でどのように動くかを説明します。

行動#

スピン#

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.spin(direction) — クローモーター

lift_motor

lift_motor.spin(direction) — リフトモーター

パラメータ

説明

direction

モーターの回転方向:

  • FORWARD — クローを開くか、リフトを下げる。
  • REVERSE — クローを閉じるか、リフトを上げる。

def main():
    # Raise the lift, drive forward, then open the claw.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

スピン_for#

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.spin_for(direction, distance, units, wait=True) — クローモーター

lift_motor

lift_motor.spin_for(direction, distance, units, wait=True) — リフトモーター

パラメータ

説明

direction

モーターの回転方向:

  • FORWARD — クローを開くか、リフトを下げる。
  • REVERSE — クローを閉じるか、リフトを上げる。

distance

モーターが回転する距離。0 DEGREES 整数を使用します。2 TURNS 整数または小数を使用できます。

units

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

wait

オプション。

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

def main():
    # Raise the lift, drive forward, then open the claw.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

スピン位置#

spin_to_position はモーターを特定の位置まで回転させます。

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

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

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.spin_to_position(angle, units, wait=True) — クローモーター

lift_motor

lift_motor.spin_to_position(angle, units, wait=True) — リフトモーター

パラメータ

説明

angle

モーターが回転する位置の値 DEGREES 整数を使用します。2 TURNS 整数または小数を使用できます。

units

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

wait

オプション。

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

def main():
    # Raise the lift to a known position, drive, then open the claw
    lift_motor.spin_to_position(-720, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

モーターを停止する#

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.stop() — クローモーター

lift_motor

lift_motor.stop() — リフトモーター

パラメータ

説明

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

def main():
    # Raise the lift for 2 seconds, then stop
    lift_motor.spin(REVERSE)
    wait(2, SECONDS)
    lift_motor.stop()
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

変異誘発者#

位置を設定する#

A motor’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’s current position to a new value.

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.set_position(position, units) — クローモーター

lift_motor

lift_motor.set_position(position, units) — リフトモーター

パラメータ

説明

position

モーターに設定する位置値 DEGREES 整数を使用します。2 TURNS 整数または小数を使用できます。

units

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

def main():
    # Reset the lift position, then move to a new target.
    lift_motor.set_position(100, DEGREES)
    lift_motor.spin_to_position(-500, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

速度を設定する#

set_velocity は、モーターの回転速度を指定します。パーセンテージが高いほどモーターは速く回転し、低いほど遅く回転します。

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

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.set_velocity(velocity, units) — クローモーター

lift_motor

lift_motor.set_velocity(velocity, units) — リフトモーター

パラメータ

説明

velocity

回転速度は0%から100%までです。これは integer または小数(float )を指定できます。

units

速度の単位: PERCENT。

def main():
    # Set lift speed, then raise it.
    lift_motor.set_velocity(100, PERCENT)
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.set_timeout(value, units) — クローモーター

lift_motor

lift_motor.set_timeout(value, units) — リフトモーター

パラメータ

説明

value

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

units

時間単位: SECONDS または MSEC (ミリ秒)。

def main():
    # Limit how long the lift waits to reach its target.
    lift_motor.set_timeout(2, SECONDS)
    lift_motor.spin_for(REVERSE, 1800, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

ゲッター#

完了しました#

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

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

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

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.is_done() — クローモーター

lift_motor

lift_motor.is_done() — リフトモーター

パラメータ

説明

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

def main():
    # Flash the Touch LED while the lift is moving.
    lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while not lift_motor.is_done():
        touchled.set_color(RED)
        wait(0.5, SECONDS)
        touchled.set_color(NONE)
        wait(0.5, SECONDS)

# VR threads — Do not delete
vr_thread(main)

回転している#

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

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

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

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.is_spinning() — クローモーター

lift_motor

lift_motor.is_spinning() — リフトモーター

パラメータ

説明

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

def main():
    # Flash the Touch LED while the lift is spinning.
    lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while lift_motor.is_spinning():
        touchled.set_color(RED)
        wait(0.5, SECONDS)
        touchled.set_color(NONE)
        wait(0.5, SECONDS)

# VR threads — Do not delete
vr_thread(main)

位置#

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

プロジェクト開始時、モーターの位置は0度に設定されます。モーターが正方向に1回転すると、位置は360度、つまり1回転となります。モーターが逆方向に回転すると、位置は負の値になります。

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.position(units) — クローモーター

lift_motor

lift_motor.position(units) — リフトモーター

パラメータ

説明

units

モーターの位置を戻すためのユニット: DEGREES 回転または TURNS。

def main():
    # Raise the lift until it reaches roughly 600 degrees.
    lift_motor.spin(REVERSE)
    while not lift_motor.position(DEGREES) <= -600:
        wait(2, MSEC)
    lift_motor.stop()
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

速度#

velocity モーターの回転速度を返します。

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

使用方法:
このメソッドでは、以下に示すように、使用可能な2つのモーターオブジェクトのうちの1つを使用できます。

モーター

指示

claw_motor

claw_motor.velocity(units) — クローモーター

lift_motor

lift_motor.velocity(units) — リフトモーター

パラメータ

説明

units

戻る速度単位: PERCENT。

def main():
    # Print the lift velocity while it is moving.
    lift_motor.set_velocity(100, PERCENT)
    lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
    wait(0.5, SECONDS)
    brain.screen.print(lift_motor.velocity(PERCENT))

# VR threads — Do not delete
vr_thread(main)

AIビジョン#

ゲッター#

スナップショットを撮る#

take_snapshot は、IQ AI Vision Sensor フレームからのデータを単一のシグネチャ (センサーが認識できるもの (フィールド上のゲーム要素など) の保存された説明) にフィルタリングし、タプルを返します。

The tuple stores objects ordered from largest to smallest by width, starting at index 0. Each object’s properties can be accessed using its index. An empty tuple is returned if no matching objects are detected.

Usage:
ai_vision.take_snapshot(signature)

パラメータ

説明

signature

指定されたシグネチャのデータのみを含むようにデータセットをフィルタリングします。使用可能なシグネチャは次のとおりです

  • AiVision.ALL_AIOBJS - ビームと青、赤、オレンジのピンを検出します

def main():
    # Place the Red Pin on the top-left Blue Pin.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.turn_for(LEFT, 38, DEGREES)

    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    while not ai_objects[0].width > 48:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        drivetrain.drive(FORWARD)

    drivetrain.drive_for(FORWARD, 160, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

不動産#

take_snapshot を使用した後にタプルに格納される各オブジェクトには、7 つのプロパティが含まれます。

.id を除くすべてのプロパティ値は、take_snapshot が使用された時点で IQ AI Vision Sensor の視野内での検出されたオブジェクトの位置とサイズを表します。これらの値は、センサーの 320 x 240 ピクセルの解像度に基づいてピクセル単位で測定されます。

。幅#

.width 、検出されたオブジェクトの幅をピクセル単位で返します。これは 1 から 320 までの整数です。

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].width)

# VR threads — Do not delete
vr_thread(main)

。身長#

.height 、検出されたオブジェクトの高さをピクセル単位で返します。これは 1 から 240 までの整数です。

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].height)

# VR threads — Do not delete
vr_thread(main)

.centerX#

.centerX 、検出されたオブジェクトの中心の x 座標をピクセル単位で返します。これは 0 から 320 までの整数です。

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].centerX)

# VR threads — Do not delete
vr_thread(main)

.centerY#

.centerY 、検出されたオブジェクトの中心の y 座標をピクセル単位で返します。これは 0 から 240 までの整数です。

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].centerY)

# VR threads — Do not delete
vr_thread(main)

.originX#

.originX 、検出されたオブジェクトのバウンディングボックスの左上隅の x 座標をピクセル単位で返します。これは 0 から 320 までの整数です。

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].originX)

# VR threads — Do not delete
vr_thread(main)

.originY#

.originY 、検出されたオブジェクトのバウンディングボックスの左上隅の y 座標をピクセル単位で返します。これは 0 から 240 までの整数です。

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].originY)

# VR threads — Do not delete
vr_thread(main)

.id#

.id 、検出された AI 分類の ID を整数として返します。

AI分類

ID

サイン

ビーム

0

GameElements.BEAM

ブルーピン

1

GameElements.BLUE_PIN

赤いピン

2

GameElements.RED_PIN

オレンジピン

3

GameElements.ORANGE_PIN

def main():
    # Find the nearest Blue Pin in the current snapshot.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    object_count = 1
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) > 0:
        for repeat_count in range(len(ai_objects)):
            if ai_objects[repeat_count].id == GameElements.BLUE_PIN:
                brain.screen.print(str("Closest Blue Pin is ") + str(object_count))
                break
            object_count = object_count + 1

# VR threads — Do not delete
vr_thread(main)

コンソール#

コンソールには、プロジェクトの実行中にテキスト、数値、変数値が表示されます。コンソールのメソッドを使用すると、カーソルを新しい行に移動したり、コンソールをクリアしたり、変数やセンサー値をモニタータブに追加したりすることもできます。

印刷#

脳スクリーン印刷#

brain.screen.print 、現在のカーソル位置を使用してコンソールにテキスト、数値、または変数値を表示します。これは、コンソール API ページの print と同様の動作をします。

次の印刷値を新しい行から開始したい場合は、brain.screen.next_row を使用します。

Usage:
brain.screen.print(value)

パラメータ

説明

value

コンソールに表示するテキスト、数値、または変数値。

def main():
    # Display a message in the Console
    brain.screen.print("Hello, robot!")

# VR threads — Do not delete
vr_thread(main)

VEXcodeコンソールが表示され、コンソールと「こんにちは、ロボット!」というテキストが表示されています。

脳の画面の次の行#

brain.screen.next_row は、コンソールの次の行の 1 列目にカーソルを移動します。次に表示される値はその行に表示されます。

Usage:
brain.screen.next_row()

パラメータ

説明

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

def main():
    # Print on two rows
    brain.screen.print("Row 1")
    brain.screen.next_row()
    brain.screen.print("Row 2")

# VR threads — Do not delete
vr_thread(main)

VEXcodeコンソール。コンソールと、1行目に「Row 1」、2行目に「Row 2」というテキストが表示されます。

脳スクリーンクリアスクリーン#

brain.screen.clear_screen はコンソールからすべての行をクリアし、カーソルを 1 行目に戻します。

Usage:
brain.screen.clear_screen()

パラメータ

説明

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

def main():
    # Display text, then clear it after two seconds
    brain.screen.print("This will disappear...")
    wait(2, SECONDS)
    brain.screen.clear_screen()

# VR threads — Do not delete
vr_thread(main)

モニター#

モニター変数#

monitor_variable 、VEXcode のモニター タブに 1 つ以上の定義済み変数を追加します。これにより、プロジェクトの実行中に変数の値の変化を監視できます。

変数を正常に監視するには monitor_variable グローバルである必要があります。各変数名は文字列として指定してください。

Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)

パラメータ

説明

variable

監視対象となる定義済みグローバル変数の名前を文字列で指定します。複数の変数を監視する場合は、各変数名をカンマで区切ってください。

def main():
    # Monitor the amount of loops
    global loops
    monitor_variable("loops")

    # Drive in a square 3 times
    for loops in range(12):
        drivetrain.turn_for(RIGHT, 90, DEGREES)
        drivetrain.drive_for(FORWARD, 150, MM)

# VR threads — Do not delete
vr_thread(main)

モニターセンサー#

monitor_sensor は、VEXcode のモニター タブに 1 つ以上のセンサー値を追加します。これにより、プロジェクトの実行中にセンサー値の変化を監視できます。

各センサー値を文字列として指定してください。

Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)

パラメータ

説明

sensor

The sensor value to monitor, given as a string. To monitor more than one sensor value, separate each sensor value with a comma. Supported sensor identifiers include:

  • Brain
    • brain.timer.time
  • Drivetrain
    • drivetrain.is_done
    • drivetrain.is_moving
    • drivetrain.heading
    • drivetrain.rotation
    • drivetrain.velocity
  • Pusher Motor
    • pusher_motor.is_done
    • pusher_motor.is_spinning
    • pusher_motor.position
    • pusher_motor.velocity
  • Arm Motor
    • arm_motor.is_done
    • arm_motor.is_spinning
    • arm_motor.position
    • arm_motor.velocity
  • Front Distance Sensor
    • front_distance.is_object_detected
    • front_distance.object_distance_mm
    • front_distance.object_distance_inches
  • Front Optical Sensor
    • front_optical.is_near_object
    • front_optical.color
    • front_optical.brightness
    • front_optical.hue
  • GPS Sensor
    • gps.position_mm
    • gps.position_inches
    • gps.heading
  • Pusher Rotation Sensor
    • pusher_rotation.angle
    • pusher_rotation.position
  • AI Vision Sensor
    • ai_vision.object_count
    • ai_vision.height
    • ai_vision.width
    • ai_vision.centerX
    • ai_vision.centerY
    • ai_vision.originX
    • ai_vision.originY
    • ai_vision.id

def main():
    # Monitor the robot's heading
    monitor_sensor("drivetrain.heading")
    drivetrain.turn_for(RIGHT, 450, DEGREES)

# VR threads — Do not delete
vr_thread(main)

センシング#

タッチLED#

色を設定する#

set_color はタッチLEDの色を設定します。

Usage:
touchled.set_color(color)

パラメータ

説明

color

The color to set the Touch LED to:

  • NONE - Turns off the Touch LED
  • RED
  • GREEN
  • BLUE
  • YELLOW
  • ORANGE
  • PURPLE
  • WHITE
  • RED_VIOLET
  • VIOLET
  • BLUE_VIOLET
  • BLUE_GREEN
  • YELLOW_GREEN
  • YELLOW_ORANGE
  • RED_ORANGE

def main():
    # Light the Touch LED while placing a Pin.
    touchled.set_color(RED)
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    touchled.set_color(NONE)

# VR threads — Do not delete
vr_thread(main)

光学#

is_near_object#

is_near_object は、光学センサーが範囲内の物体を検出したかどうかを示すブール値を返します。

  • True – 光学センサーが物体を検出します。

  • False – 光学センサーが物体を検出しません。

Usage:
optical.is_near_object()

パラメータ

説明

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

def main():
    # Wait until the claw no longer detects an object, then lower the lift.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    while optical.is_near_object():
        wait(2, MSEC)
    lift_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

色#

color 検出された色相値に基づいて、 Color クラスのインスタンスを返します。これらは、定義済みの Color オブジェクトと比較することで、条件文を作成できます。

選択可能な色は以下のとおりです。

  • NONE

  • RED - 340°~20°の間の色相値

  • GREEN - 色相値が80°~140°

  • BLUE - 色相値が200°~240°

  • YELLOW - 色相値が40°~60°

  • ORANGE - 色相値が20°~40°

  • PURPLE - 色相値が240°~280°

  • CYAN - 140°~200°の色相値

注: 光学センサーは、指定された色に一致する色相範囲を探します。特定の色相範囲を検出するには、hue を参照してください。

Usage:
optical.color()

パラメータ

説明

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

def main():
    # Wait until the Optical Sensor detects red, then lower the lift.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    while not optical.color() == RED:
        wait(5, MSEC)
    lift_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

輝度#

brightness 、オブジェクトから反射された光の量をパーセントを表す小数 (float) として返します。

パーセンテージが高いほど、光学センサーに反射される光の量が多くなります。パーセンテージが低いほど、反射される光の量が少なくなります。

Usage:
optical.brightness()

パラメータ

説明

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

def main():
    # Lower the lift once the claw sees a darker object.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    while not 30 > optical.brightness():
        wait(5, MSEC)
    lift_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

色合い#

hue 、検出された色の色相値を 0 から 359 までの小数 (float) として返します。

色相とは、色相環上の数字を用いて色を表現する方法のことです。

円形のカラーホイールには、周囲に度数が表示され、上部の0度から360度まで30度刻みで増加する、色相の全スペクトルが表示されています。

Usage:
optical.hue()

パラメータ

説明

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

def main():
    # Lower the lift once the Optical Sensor reports a hue value.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    while not optical.hue() > 0:
        wait(5, MSEC)
    lift_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

オブジェクトが検出されました#

object_detected 光学センサーが新しい物体を検出するたびに呼び出される関数を登録します。

Usage:
optical.object_detected(callback, arg)

パラメータ

説明

callback

光学センサーが新しい物体を検出したときに実行される、事前に定義された関数。

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Functions with Parameters for more information.

def pin_in_claw():
    touchled.set_color(RED)

def main():
    # Change the Touch LED color when the claw detects an object.
    optical.object_detected(pin_in_claw)
    touchled.set_color(GREEN)
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

オブジェクトが失われた#

object_lost は、光学センサーが検出したオブジェクトを失ったときに呼び出される関数を登録します。

Usage:
optical.object_lost(callback, arg)

パラメータ

説明

callback

光学センサーが検出対象物を失ったときに実行される、事前に定義された関数。

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Functions with Parameters for more information.

def lower_lift():
    # Lower the lift when the claw no longer holds an object.
    lift_motor.spin_to_position(0, DEGREES)

def main():
    optical.object_lost(lower_lift)
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)