パワートレイン#

導入#

123ロボットは、走行と旋回を可能にする2輪駆動システムを備えています。駆動方式によってロボットの動き方が制御されます。

駆動系は、ステップとmm(ミリメートル)の2つの方法で距離を測定できます。1ステップは、123フィールドの1マスです。

ドライブトレインをコーディングする方法は数多くあります。以下に、ドライブトレインのすべてのメソッドの一覧を示します。

動作 — ロボットを移動および旋回させる。

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

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

  • drive_until — 物体、衝突、またはラインを検出するまでロボットを前進または後退させます。

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

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

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

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

ミューテーター — ドライブトレインの設定を調整します。

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

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

ゲッターズ ― 移動状況を確認してください。

  • is_stopped — ロボットが停止したかどうかをブール値として返します。

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

行動#

drive#

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

Usage:
robot.drive(direction)

パラメータ

説明

direction

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

# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()

drive_for#

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

Usage:
robot.drive_for(direction, distance, unit)

パラメータ

説明

direction

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

distance

ロボットが走行する距離。整数または小数で指定できます。

unit

距離の単位: MM (ミリメートル)または STEPS (123 フィールド上の 1 マス)。

# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)

drive_until#

drive_until は、ロボットが物体、衝突、またはラインを検出するまで前進または後退します。

Usage:
robot.drive_until(direction)

パラメータ

説明

direction

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

# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)

turn#

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

Usage:
robot.turn(direction)

パラメータ

説明

direction

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

# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()

turn_for#

turn_for は、ロボットを特定の角度だけ左右に回転させます。プロジェクトは、ロボットの回転が完了するまで待機し、その後次のコードが実行されます。

Usage:
robot.turn_for(direction, degrees)

パラメータ

説明

direction

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

degrees

回転させる角度(度数)。整数または小数で指定できます。

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

turn_to_heading#

turn_to_heading は、ロボットを-359度から359度までの特定の方位に向けます。ロボットは、目標方位に到達するために最短の方向へ旋回します。

開始時の方位は0度です。

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

Usage:
robot.turn_to_heading(heading)

パラメータ

説明

heading

ロボットが向くべき方向。範囲は-359度から359度まで。

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

stop#

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

Usage:
robot.stop()

パラメータ

説明

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

# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()

変異誘発者#

set_timeout#

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

Usage:
robot.set_timeout(time, unit)

パラメータ

説明

time

動作に必要な時間。整数または小数で指定できます。

unit

時間単位: MSEC または SECONDS。

# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)

set_heading#

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

例えば、ロボットが右を向いた場合、方位を0度に設定すると、その右向きの位置が新たな0度となる。

Usage:
robot.set_heading(heading)

パラメータ

説明

heading

ロボットに設定する方位角の値(度数)。

# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)

ゲッター#

is_stopped#

is_stopped 、ロボットが動きを停止したかどうかを報告する Boolean を返します。

  • True — ロボットは停止しています。

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

Usage:
robot.is_stopped()

パラメータ

説明

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

# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
    if robot.is_stopped():
        robot.led.glow(BLUE)
    else:
        robot.led.glow(GREEN)
    wait(0.05, SECONDS)

get_heading#

get_heading は、ロボットが現在向いている方向を 0 度から 359 度までの整数で返します。

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

Usage:
robot.get_heading()

パラメータ

説明

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

# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())