GPSセンサー#

導入#

gps クラスは、V5 GPS(ゲームポジショニングシステム™)センサーの制御とデータアクセスに使用されます。このセンサーは、VEXフィールド上のロボットの正確な位置と向きの追跡を提供します。フィールドの周囲にあるGPSフィールドコードを使用して、ロボットのX座標、Y座標、および進行方向をリアルタイムで計算します。

GPSセンサーは、デバイスウィンドウでGPSセンサーを設定する際に入力されたオフセットから自動的に計算された基準点を使用して、ロボットの位置を返します。

GPSセンサーの詳細については、VEXライブラリのVEX V5でのGPSセンサーの使用を参照してください。

基準点は、GPSセンサー自身の(0, 0)位置として機能し、GPS方式によって返されるすべての座標、方位、および移動は、この設定された基準点に対する相対値となります。

VEX V5 GPSセンサー。

クラスコンストラクタ#

1 — デフォルトの原点 (0, 0) を使用して、指定されたスマートポート上に gps オブジェクトを作成します。

gps(
  int32_t  index,
  double   heading_offset = 0,
  turnType dir = right );

2 — 指定されたスマートポート上に gps オブジェクトを作成し、カスタムの原点位置を定義します。

gps(
  int32_t       index,
  double        ox,
  double        oy,
  distanceUnits units = mm,
  double        heading_offset = 0,
  turnType      dir = right );

クラスデストラクタ#

gps オブジェクトを破棄し、関連するリソースを解放します。

~gps();

パラメータ#

パラメータ

タイプ

説明

index

int32_t

GPSセンサーが接続されているスマートポートは、 PORTxと表記され、 x はポート番号です(例: PORT1)。

ox

double

原点位置のX座標。

oy

double

原点位置のY座標。

units

distanceUnits

ox および oyに使用される測定単位:

  • mm (デフォルト) — ミリメートル
  • distanceUnits::in / inches — インチ
  • distanceUnits::cm — センチメートル

heading_offset

double

GPSセンサーの回転オフセット(度数)。0.00~359.99の範囲で指定します。デフォルト値は0です。

dir

turnType

正の進行方向値を返す方向:

  • right (デフォルト)
  • left

例#

// Create the gps instance
gps GPS1 = gps(
    PORT1,      // Smart Port 1
    180);       // heading_offset


// Create the gps instance
gps GPS1 = gps(
    PORT1,   // Smart Port 1
    50.00,   // ox
    100.00,  // oy
    mm,      // units
    180 );   // heading_offset

メンバーの機能#

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

  • calibrate — GPSセンサーを較正します。

  • setOrigin — GPS座標系の原点位置を設定します。

  • setLocation — GPSセンサーの現在位置と方位を設定します。

  • xPosition — 現在の X 位置を返します。

  • yPosition — 現在の Y 位置を返します。

  • heading — 現在の見出しを返します。

  • acceleration — 指定された軸に沿った線形加速度を返します。

  • gyroRate — 指定された軸の角速度を返します。

  • orientation — 指定された軸の向きを返します。

  • quality — 現在の GPS 信号品質を返します。

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

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

/* This constructor is required when using VS Code.
GPS Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */

// Create the gps instance in Smart Port 1
gps GPS1 = gps(PORT1);

クラスメソッド#

calibrate#

GPSセンサーを較正します。これにより、GPSに設定されている方位(角度オフセットに基づく)が、ドライブトレインの現在の方位として設定されます。

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

Available Functions
void calibrate();

Parameters

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

Return Values

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

Examples
// Turn to face the lower Field wall using data from the GPS Sensor.
GPS1.calibrate();
Drivetrain.turnToHeading(180, degrees)

setOrigin#

GPS座標系の原点を設定します。

Available Functions

1 — 原点を指定された X および Y 位置に設定します。

void setOrigin( 
  double        x, 
  double        y, 
  distanceUnits units = mm );

2 — センサーの現在位置を原点に設定します。

void setOrigin();

Parameters

パラメータ

タイプ

説明

x

double

新しい原点位置のX座標。

y

double

新しい原点位置のY座標。

units

distanceUnits

x および yに使用される測定単位:

  • mm (デフォルト) — ミリメートル
  • distanceUnits::cm — センチメートル
  • distanceUnits::in — インチ

Return Values

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

Notes
  • 原点を変更すると、xPosition および yPosition によって返される値に影響します。

setLocation#

現在のGPS位置と方位を設定します。

Available Functions

1 — 指定された距離と回転単位を使用して現在位置を設定します。

void setLocation(
  double        x,
  double        y,
  distanceUnits units = mm,
  double        angle = 0,
  rotationUnits units_r = degrees );

2 — 現在位置をミリメートルと度で設定します。

void setLocation( double x, double y, double angle );

Parameters

パラメータ

タイプ

説明

x

double

現在位置のX座標。

y

double

現在位置のY座標。

units

distanceUnits

x および yに使用される測定単位:

  • mm (デフォルト) — ミリメートル
  • distanceUnits::in / inches — インチ
  • distanceUnits::cm — センチメートル

angle

double

現在位置の方向を示す値。

units_r

rotationUnits

角度 angle:

  • deg (デフォルト) — 度
  • rev — 回転
に使用される測定単位

Return Values

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

Notes
  • この関数を呼び出すと、xPosition、yPosition、およびheadingによって報告される内部位置と方位の値が更新されます。

xPosition#

GPSセンサーの現在のX座標を返します。

Available Functions
double xPosition( distanceUnits units = distanceUnits::mm );

Parameters

パラメータ

タイプ

説明

units

distanceUnits

返されるX座標の測定単位:

  • mm (デフォルト) — ミリメートル
  • distanceUnits::cm — センチメートル
  • distanceUnits::in — インチ

Return Values

指定された単位で、原点からのx座標オフセットを表す double を返します。

Notes
  • X座標は、現在の原点を基準として測定されます。

  • 原点は setOrigin を使用して変更できます。

Examples
// Drive slowly towards the center of the Field
Drivetrain.setDriveVelocity(20.0, percent);
Drivetrain.drive(forward);
// Stop driving when the GPS returns an x position
// near the center of the Field
waitUntil((GPS1.xPosition(mm) < 0.0));
Drivetrain.stop();

yPosition#

GPSセンサーの現在のY座標を返します。

Available Functions
double yPosition( distanceUnits units = distanceUnits::mm );

Parameters

パラメータ

タイプ

説明

units

distanceUnits

返されるY座標の測定単位:

  • mm (デフォルト) — ミリメートル
  • distanceUnits::cm — センチメートル
  • distanceUnits::in — インチ

Return Values

指定された単位で、原点からのY座標オフセットを表す double を返します。

Notes
  • Y座標は、現在の原点を基準として測定されます。

  • 原点は setOrigin()を使用して変更できます。

Examples
// Drive slowly towards the center of the Field
Drivetrain.setDriveVelocity(20.0, percent);
Drivetrain.drive(forward);
// Stop driving when the GPS reports an y position
// near the center of the Field
waitUntil((GPS1.yPosition(mm) < 0.0));
Drivetrain.stop();

heading#

GPSセンサーの現在の方位角(ヨー角)を返します。

Available Functions
double heading( rotationUnits units = rotationUnits::deg );

Parameters

パラメータ

タイプ

説明

units

rotationUnits

返される方位値の測定単位:

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

Return Values

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

Notes
  • 方位角の値は0度から360度の範囲で切り上げられます。

  • 正の回転方向は、構築時に指定されたdir パラメータによって決定されます。

Examples
// Turn slowly to face the right wall
Drivetrain.setTurnVelocity(20.0, percent);
Drivetrain.turn(right);
// Stop turning when the GPS reports a heading 
// greater than 90 degrees
waitUntil((GPS1.heading() > 90.0));
Drivetrain.stop();

acceleration#

指定された軸に沿ってGPSセンサーによって測定された線形加速度を返します。

Available Functions
double acceleration( 
  axisType axis );

Parameters

パラメータ

タイプ

説明

axis

axisType

加速度が返される軸:

  • xaxis
  • yaxis
  • zaxis

Return Values

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

Notes
  • 加速度の値はG単位で表され、1Gは地球表面における重力加速度に等しい。

gyroRate#

指定された軸に沿ってGPSセンサーによって測定された角速度を返します。

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

Parameters

パラメータ

タイプ

説明

axis

axisType

角速度が返される軸:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

返される角速度の測定単位:

  • dps — 度/秒
  • rpm — 回転/分

Return Values

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

orientation#

指定された軸に対するGPSセンサーの向きの角度を返します。

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

Parameters

パラメータ

タイプ

説明

axis

orientationType

取得する姿勢軸:

  • roll
  • pitch
  • yaw

units

rotationUnits

返される方向値の測定単位:

  • deg — 度
  • rev — 回転

Return Values

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

quality#

知覚されたGPS信号品質を返します。

Available Functions
int32_t quality();

Parameters

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

Return Values

GPS信号品質をパーセンテージで表した int32_t を返します。

可能な値

説明

100

GPSセンサーから報告される位置情報および方位データはすべて有効です。

~90

位置データは、GPSフィールドコードから直接計算されるのではなく、別の方法で推定されるようになった。

0 – 80

方位値のみが有効です。GPSフィールドコードを十分にスキャンせずに時間が経過すると、信号品質は 0になるまで低下し続け、その時点でGPSデータは事実上凍結され、無効になります。

changed#

GPS方位値が変化したときに実行されるコールバック関数を登録します。

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

Parameters

パラメータ

タイプ

説明

callback

void (*)(void)

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

Return Values

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