慣性センサー#

導入#

inertial クラスは、IQ(第2世代)Brainに内蔵された慣性センサーからのデータを制御し、アクセスするために使用されます。このセンサーは、Brainの動きや回転を測定します。

慣性センサーは、この目的のために2つの部分を使用します。ジャイロスコープは、方位、回転、ジャイロレート、向きなどの回転を測定します。加速度計は、x軸、y軸、z軸に沿った加速や減速などの動きの変化を測定します。

クラスコンストラクタ#

inertial(
  turnType dir = turnType::right );

クラスデストラクタ#

Destroys the inertial object and releases associated resources.

~inertial();

パラメータ#

パラメータ

タイプ

説明

dir

turnType

オプション。正の値を返す方向:

  • right (デフォルト) — 右折は正の値を返します。4
  • left — 左折は正の値を返します

例#

// Create the inertial instance
inertial myInertial = inertial(
    right);     // dir

メンバーの機能#

inertial クラスには、以下のメンバ関数が含まれます。

  • heading — センサーが向いている方向を返します。

  • rotation — センサーがどれだけ回転したかを返します。

  • setHeading — センサーの現在の方位を新しい方位値に設定します。

  • setRotation — センサーの現在の回転を新しい回転値に設定します。

  • calibrate — 慣性センサーを校正します。

  • resetHeading — センサーの現在の方位を0度にリセットします。

  • resetRotation — センサーの現在の回転を0度にリセットします。

  • isCalibrating — 慣性センサーが現在キャリブレーション中かどうかを返します。

  • changed — 見出しが変更されたときに実行されるコールバック関数を登録します。

  • installed — 慣性センサーがインストールされているかどうかを返します。

  • acceleration — センサーが選択された軸でどれだけ速く加速または減速しているかを返します。

  • gyroRate — センサーが選択された軸を中心に回転する速度を返します。

  • orientation — 慣性センサーのロール、ピッチ、またはヨー角を返します。

  • collision — 衝突が検出されたときに実行されるコールバック関数を登録します。

  • setTurnType — 正の進行方向値を返す旋回方向を設定します。

  • getTurnType — 正の値を生成する旋回方向を返します。

inertial メンバー関数を呼び出す前に、以下に示すように inertial インスタンスを作成する必要があります。

/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode with the IQ (2nd gen) Brain. Replace the values
as needed. */

// Create the inertial instance
inertial myInertial = inertial();

heading#

方位とは、センサーが向いている方向のことで、0度から359.99度までの角度で表されます。この関数は、センサーの現在の方位を返します。

開始時の方位は0度です。センサーが359.99度を超えて回転すると、方位は0度に戻ります。

Available Functions
double heading( rotationUnits units = degrees );

Parameters

パラメータ

タイプ

説明

units

rotationUnits

方位単位:

  • deg / degrees (デフォルト) — 度
  • turns / rev — 回転

Return Values

指定された単位でセンサーの現在の方位を表す double を返します。

Notes
  • 方位角の値は 0 ~ 359.99 度の範囲でラップされています。rotation を使用して連続回転値にアクセスします。

Examples
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));

rotation#

慣性センサーの現在の回転角度を返します。

回転とは、センサーがどれだけ回転したかを示すものです。方位とは異なり、回転は359.99度を超えて増加したり、0度を下回ったりすることがあります。例えば、右に2回転すると720度の回転になります。0度から左に1回転すると-360度の回転になります。

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

パラメータ

タイプ

説明

units

rotationUnits

回転単位:

  • deg / degrees (デフォルト)—度
  • turns / rev 回転

Return Values

指定された単位での現在の回転を表す、 double 倍精度浮動小数点数を返します。

Notes
  • 回転値は連続しており、0度から359.99度の間では折り返しません。折り返された方位値にアクセスするには、heading を使用します。

Examples
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));

setHeading#

方位とは、センサーが向いている方向のことで、0度から359.99度までの度数で表されます。この機能は、慣性センサーの現在の方位を新しい方位値に変更します。

例えば、センサーが右を向いた場合、方位を0度に設定すると、その右向きの位置が新たな0度になります。その後、センサーはその新たな方向に基づいて他の方位を追跡できます。

Available Functions
void setHeading( double        value,
                 rotationUnits units );

Parameters

パラメータ

タイプ

説明

value

double

センサーに設定する方位角の値(度単位)。0~359.99の範囲の値を指定できます。

units

rotationUnits

方位単位:

  • deg / degrees —度
  • turns / rev —回転

Return Values

この関数は値を返しません。

Examples
// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);

setRotation#

慣性センサーの現在の回転角を、指定された値に設定します。

回転とは、センサーがどれだけ回転したかを示すものです。方位とは異なり、回転は359.99度を超えて増加したり、0度を下回ったりすることがあります。

Available Functions
void setRotation( double        value,
                  rotationUnits units );

Parameters

パラメータ

タイプ

説明

value

double

センサーに設定する回転角度(度数)。整数または小数を指定できます。

units

rotationUnits

The rotation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

この関数は値を返しません。

Examples
// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);

calibrate#

慣性センサーを校正します。

キャリブレーションは、センサーが回転を正確に測定するのに役立ちます。キャリブレーション中はセンサーを動かさないでください。キャリブレーション中にセンサーが動くと、方位、回転、ジャイロレート、および姿勢の値が正しく測定されない可能性があります。

Available Functions
void calibrate( );

Parameters

この関数は引数を受け付けません。

Return Values

この関数は値を返しません。

Notes
  • キャリブレーション中は、センサーを動かさないようにしてください。

  • キャリブレーションが完了したかどうかを判断するには、isCalibrating を使用します。

resetHeading#

慣性センサーの現在の方位を0度にリセットします。

この機能を使用すると、センサーの現在の方向が新しい0度の方向になります。

Available Functions
void resetHeading();

Parameters

この関数は引数を取りません。

Return Values

この関数は値を返しません。

resetRotation#

慣性センサーの現在の回転角度を0度にリセットします。

この機能を使用すると、センサーは新しい0度の回転値から今後の回転を追跡します。

Available Functions
void resetRotation();

Parameters

この関数は引数を取りません。

Return Values

この関数は値を返しません。

isCalibrating#

慣性センサーが現在キャリブレーション中かどうかを返します。

Available Functions
bool isCalibrating();

Parameters

この関数は引数を取りません。

Return Values

慣性センサーがキャリブレーション中かどうかを示すブール値を返します。

  • true — The sensor is currently calibrating.
  • false — The sensor is not currently calibrating.

changed#

慣性センサーの進行方向の値が変化したときに実行されるコールバック関数を登録します。

Available Functions
void changed( void (* callback)(void) );

Parameters

パラメータ

タイプ

説明

callback

void (*)(void)

見出しの値が変更されたときに呼び出される関数へのポインタ。関数はパラメータを受け取らず、 voidを返す必要があります。

Return Values

この関数は値を返しません。

Examples

コールバック関数を定義します( int main()の外側)

// Display the heading when the Inertial Sensor's heading value changes.
void onHeadingChanged() {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Heading: %.2f", myInertial.heading());
}

コールバックを登録する int main()

int main() {
  // Run onHeadingChanged when the Inertial Sensor's heading value changes.
  myInertial.changed(onHeadingChanged);
}

installed#

慣性センサーがインストールされ、接続されているかどうかを返します。

Available Functions
bool installed();

Parameters

この関数は引数を取りません。

Return Values

慣性センサーがインストールされ、接続されているかどうかを示すブール値を返します。

  • true — The sensor is connected and responding.
  • false — The sensor is not connected or not detected.

acceleration#

加速度とは、センサーが加速または減速する速さのことです。この関数は、選択した軸における慣性センサーの加速度を-4.0Gから4.0Gの範囲で返します。

G 加速度を測定するための単位です。1Gは、静止しているときに重力によって感じる加速度に相当します。値は、選択した軸上の加速度の方向に応じて、正にも負にもなります。

Available Functions
double acceleration( axisType axis );

Parameters

パラメータ

タイプ

説明

axis

axisType

加速度を測定する軸:

  • xaxis
  • yaxis
  • zaxis

Return Values

指定された軸に沿った加速度をG(重力単位)で表す double を返します。

Notes
  • 加速度の値は Gの単位で報告されます。

gyroRate#

ジャイロレートとは、慣性センサーの回転速度のことです。この関数は、選択した軸における慣性センサーの現在の回転速度を返します。

センサーがその軸を中心に回転する方向によって、値は正にも負にもなり得る。

Available Functions
double gyroRate( axisType      axis,
                 velocityUnits units );

Parameters

パラメータ

タイプ

説明

axis

axisType

ジャイロレートを返す軸:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

ジャイロレート単位:

  • dps — 1秒あたりの度数
  • rpm — 1分あたりの回転数

Return Values

指定された軸に沿った現在の回転速度を、選択された単位で表す double を返します。

Examples
// Display the rate of change of rotation while turning in dps
Drivetrain.turn(right);
wait(1, seconds);

Brain.Screen.print(myInertial.gyroRate(zaxis, dps));

Drivetrain.stop();

orientation#

方向とは、慣性センサが選択した回転軸に対して現在保持している角度のことです。この関数は、指定された軸における慣性センサの現在の方向を返します。

ロール、ピッチ、ヨーは、センサーが傾いたり回転したりするさまざまな方法を表します。

Available Functions
double orientation(
  orientationType type,
  rotationUnits   units );

Parameters

パラメータ

タイプ

説明

type

orientationType

復帰する姿勢角:

  • pitch
  • roll
  • yaw

units

rotationUnits

The orientation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

指定された単位で選択された方向角度を表す、 double を返します。

Examples
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1,1);
  // Show the Inertial Sensor's orientation value
  // for roll in degrees
  double orient = myInertial.orientation(roll, deg);
  Brain.Screen.print("%f", orient);
  wait(0.1, seconds);
}

collision#

慣性センサーが突然の衝撃や衝突を検出したときに実行されるコールバック関数を登録します。

Available Functions
void collision( void (* callback)(axisType, double, double, double) );

Parameters

パラメータ

タイプ

説明

callback

void (*)(axisType, double, double, double)

衝突が検出されたときに呼び出される関数へのポインタ。コールバック関数は、次のパラメータを受け入れる必要があります。

  • axisType — 衝突が検出された軸。
  • 衝突時の加速度値(順不同):
    • double — x 軸方向の加速度(G 単位)。
    • double — y 軸方向の加速度(G 単位)。
    • double — z 軸方向の加速度(G 単位)。
関数は void を返す必要があります。 void。

Return Values

この関数は値を返しません。

Examples

コールバック関数を定義します( int main()の外側)

// Display a message when the Inertial Sensor detects a collision.
void onCollision(axisType axis, double x, double y, double z) {
  Brain.Screen.print("Collision detected!");
}

コールバックを登録する int main()

int main() {
  // Run onCollision when the Inertial Sensor detects a collision.
  myInertial.collision(onCollision);
}

setTurnType#

回転方向が正の値を返すセット。

Available Functions
void setTurnType( turnType dir );

Parameters

パラメータ

タイプ

説明

dir

turnType

正の値を返す方向:

  • right
  • left

Return Values

この関数は値を返しません。

Notes
  • この設定は、heading と rotation が正の値と負の値を報告する方法に影響します。

  • この関数を呼び出すと、 inertial の構築時に指定された dir 値が上書きされます。

getTurnType#

回転方向が正の値を生成するかどうかを返します。

Available Functions
turnType getTurnType();

Parameters

この関数は引数を取りません。

Return Values

turnType は、どちらの方向が正の値を生成するかを示します。

  • right — Clockwise rotation returns positive values.
  • left — Counterclockwise rotation returns positive values.
Notes