パワートレイン#
導入#
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)
パラメータ |
説明 |
|---|---|
|
ロボットの移動方向: |
# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()
drive_for#
drive_for は、ロボットを特定の距離だけ前進または後退させます。プロジェクトは、ロボットの移動が完了するまで待機し、その後次のコードが実行されます。
Usage:
robot.drive_for(direction, distance, unit)
パラメータ |
説明 |
|---|---|
|
ロボットの移動方向: |
|
ロボットが走行する距離。整数または小数で指定できます。 |
|
距離の単位: |
# 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)
パラメータ |
説明 |
|---|---|
|
ロボットの移動方向: |
# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)
turn#
turn ロボットを左右に永久に回転させます。ロボットは、走行や停止などの別の動作が与えられるまで回転し続けます。
Usage:
robot.turn(direction)
パラメータ |
説明 |
|---|---|
|
ロボットが回転する方向: |
# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()
turn_for#
turn_for は、ロボットを特定の角度だけ左右に回転させます。プロジェクトは、ロボットの回転が完了するまで待機し、その後次のコードが実行されます。
Usage:
robot.turn_for(direction, 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)
パラメータ |
説明 |
|---|---|
|
ロボットが向くべき方向。範囲は-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)
パラメータ |
説明 |
|---|---|
|
動作に必要な時間。整数または小数で指定できます。 |
|
時間単位: |
# 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)
パラメータ |
説明 |
|---|---|
|
ロボットに設定する方位角の値(度数)。 |
# 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())