慣性#
導入#
The IQ (2nd gen) Brain includes a built-in Inertial Sensor. This sensor measures how the Brain is moving and turning.
慣性センサーは、この目的のために2つの部分を使用します。ジャイロスコープは、方位、回転、ジャイロレート、向きなどの回転を測定します。加速度計は、x軸、y軸、z軸に沿った加速や減速などの動きの変化を測定します。
このページでは、慣性センサー名の例として brain_inertial を使用しています。必要に応じて、ご自身で設定した名前に置き換えてください。
以下に、利用可能なメソッドの一覧を示します。
方位設定 — 方位、回転、センサーのキャリブレーションを読み取り、制御します。
heading— センサーが向いている方向を0度から359.99度の範囲で返します。rotation— センサーがどれだけ回転したかを返します。calibrate— 慣性センサーを校正します。set_heading— 慣性センサーの現在の方位を新しい方位値に設定します。set_rotation— 慣性センサーの現在の回転を新しい回転値に設定します。is_calibrating— 慣性センサーが現在キャリブレーション中かどうかを返します。reset_heading— 慣性センサーの現在の方位を0度にリセットします。reset_rotation— 慣性センサーの現在の回転を0度にリセットします。changed— 慣性センサーの向きが変わったときに実行する関数を登録します。
動作 — 加速度、回転速度、傾斜を測定します。
acceleration— センサーが選択された軸でどれだけ速く加速または減速しているかを返します。gyro_rate— センサーが選択された軸を中心に回転する速度を返します。orientation— 慣性センサーのロール、ピッチ、またはヨー角を返します。
コンストラクター — 慣性センサーを手動で初期化および構成します。
Inertial— 慣性センサーを作成します。
オリエンテーション#
heading#
方位とは、センサーが向いている方向のことで、0度から359.99度までの角度で表されます heading は、センサーの現在の方位を返します。
開始時の方位は0度です。センサーが359.99度を超えて回転すると、方位は0度に戻ります。
Usage:
brain_inertial.heading(units)
パラメータ |
説明 |
|---|---|
|
オプション。方位単位: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
Rotation is how much the sensor has turned, measured in degrees. Unlike heading, rotation can increase past 359.99 degrees or decrease below 0 degrees. At the beginning of a project, the rotation value is set to 0 degrees. rotation returns the Inertial Sensor’s current rotation.
右に回すと回転角度が大きくなり、左に回すと回転角度が小さくなります。例えば、右に2回転すると720度回転します。0度から左に1回転すると-360度回転します。
Usage:
brain_inertial.rotation(units)
パラメータ |
説明 |
|---|---|
|
オプション。回転単位: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate センサーをキャリブレーションします。以降のすべての行は、キャリブレーションが完了するまで実行を待ちます。キャリブレーションは、指定された期間にわたってセンサーのノイズとドリフトを測定して補正することで、センサーが旋回を正しく測定するのに役立ちます。この間、Brainは安定した表面上で完全に静止していなければなりません。キャリブレーション中の動きは、不正確な結果を生み出す可能性があります。
VEX Brainは、プロジェクト開始時に内蔵の慣性センサーのキャリブレーションを自動的に試みます。しかし、プロジェクト開始時にロボットが運ばれたり移動されたりしている場合、センサーのキャリブレーションが正しく行われなかったり、誤ったキャリブレーション結果が出たりする可能性があります。
Usage:
brain_inertial.calibrate()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
set_heading#
方位とは、センサーが向いている方向のことで、0度から359.99度までで測定されます。 set_heading() 慣性センサーの現在の方位を新しい方位値に変更します。
例えば、センサーが右を向いた場合、方位を0度に設定すると、その右向きの位置が新たな0度になります。その後、センサーはその新たな方向に基づいて他の方位を追跡できます。
Usage:
brain_inertial.set_heading(value, units)
パラメータ |
説明 |
|---|---|
|
センサーに設定する方位角の値(度単位)。0~359.99の範囲の値を指定できます。 |
|
オプション。方位単位: |
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
回転とは、センサーがどれだけ回転したかを示す度数です。方位とは異なり、回転は359.99度を超えて増加したり、0度未満に減少したりすることがあります。プロジェクトの開始時には、回転値は0度に設定されます。 set_rotation() 、慣性センサーの現在の回転を新しい値に変更します。
例えば、センサーが右に2回転した場合、回転値は720度になります。回転を0度に設定すると、回転値は720度から0度にリセットされます。その後、センサーはその新しい値に基づいて回転を追跡できます。
Usage:
brain_inertial.set_rotation(value, units)
パラメータ |
説明 |
|---|---|
|
センサーに設定する回転角度(度数)。整数または小数(浮動小数点数)を指定できます。 |
|
オプション。回転単位: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating は、慣性センサーが現在キャリブレーション中かどうかを返します。
True— 慣性センサーが校正中です。False— 慣性センサーが校正されていません。
Usage:
brain_inertial.is_calibrating()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
reset_heading#
reset_heading は慣性センサーの現在の方位を 0 度にリセットします。
この方法を用いると、センサーの現在の方向が新たな0度の方位角となる。
Usage:
brain_inertial.reset_heading()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)
reset_rotation#
reset_rotation は慣性センサーの現在の回転を 0 度にリセットします。
この方法を用いると、センサーは新しい0度の回転値から将来の回転を追跡する。
Usage:
brain_inertial.reset_rotation()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)
changed#
changed 慣性センサーの向きが変わったときに呼び出される関数を登録します。
Usage:
brain_inertial.changed(callback, arg)
パラメータ |
説明 |
|---|---|
|
慣性センサーの進行方向が変化したときに実行される関数。 |
|
オプション。コールバック関数に渡す引数のタプル。 |
def heading_changed():
brain.screen.set_cursor(1, 1)
brain.screen.clear_screen()
brain.screen.print("my heading ")
brain.screen.next_row()
brain.screen.print("has changed!")
wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)
モーション#
acceleration#
加速度とは、センサーが加速または減速する速さのことです。加速度が acceleration 、選択された軸の慣性センサーの加速度(-4.0 Gから4.0 Gまで)が浮動小数点数として返されます。
G は加速度を測定するために使用される単位です。1Gは、静止しているときに重力によって感じる加速度に相当します。
The value can be positive or negative depending on the direction of acceleration on the selected axis. The axis options are XAXIS, YAXIS, and ZAXIS.
Usage:
brain_inertial.acceleration(axis)
パラメータ |
説明 |
|---|---|
軸 |
加速度を測定する軸:
|
# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
gyro_rate#
ジャイロレートとは、慣性センサーが回転する速度のことです。0 gyro_rate 選択した軸における慣性センサーの現在の回転速度を返します。
センサーがその軸を中心に回転する方向によって、値は正にも負にもなり得る。
Usage:
brain_inertial.gyro_rate(axis, units)
パラメータ |
説明 |
|---|---|
|
ジャイロレートを返す軸:
|
|
オプション。ジャイロレート単位:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
方向とは、慣性センサが選択した回転軸に対して現在持っている角度のことです。方向が orientation は、慣性センサのロール、ピッチ、またはヨーが返されます。
ロール、ピッチ、ヨーは、センサーが傾いたり回転したりするさまざまな方法を表します。
Usage:
brain_inertial.orientation(axis, units)
パラメータ |
説明 |
|---|---|
|
復帰する姿勢角:
|
|
オプション。方向単位: |
# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
brain.screen.clear_screen()
brain.screen.print(brain_inertial.orientation(OrientationType.ROLL))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
建設業者#
コンストラクタは、VEXcode の外で慣性センサーを設定する場合など、 Inertial オブジェクトを手動で作成するために使用されます。
Inertial#
Inertial は慣性センサーを作成します。
Usage:
Inertial(smartport)
パラメータ |
説明 |
|---|---|
|
オプション。IQ(第2世代)Brainの内蔵慣性センサーを使用する場合は、スマートポートは不要です。外部慣性センサーを接続する場合は、慣性センサーが接続されているスマートポートを |
# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)


