Sensor GPS#

Perkenalan#

Kelas gps digunakan untuk mengontrol dan mengakses data dari Sensor GPS V5 (Game Positioning System™). Sensor ini menyediakan pelacakan posisi dan orientasi yang akurat untuk robot di Lapangan VEX. Sensor ini menggunakan Kode Lapangan GPS di sekitar perimeter Lapangan untuk menghitung koordinat X dan Y serta arah robot secara real-time.

Sensor GPS mengembalikan posisi robot menggunakan titik referensi yang dihitung secara otomatis dari offset yang dimasukkan saat mengkonfigurasi Sensor GPS di jendela Perangkat.

Untuk informasi lebih lanjut mengenai Sensor GPS, baca Menggunakan Sensor GPS dengan VEX V5 di Pustaka VEX.

Titik referensi bertindak sebagai posisi (0, 0) Sensor GPS itu sendiri, di mana semua koordinat, arah, dan pergerakan yang dikembalikan oleh metode GPS bersifat relatif terhadap titik yang dikonfigurasi ini.

Sensor GPS VEX V5.

Konstruktor Kelas#

1 — Membuat objek gps pada Smart Port yang ditentukan menggunakan titik asal default (0, 0).

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

2 — Membuat objek gps pada Smart Port yang ditentukan dan mendefinisikan posisi asal khusus.

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

Destruktor Kelas#

Menghapus objek gps dan melepaskan sumber daya terkait.

~gps();

Parameter#

Parameter

Jenis

Keterangan

index

int32_t

Port Pintar tempat Sensor GPS terhubung, ditulis sebagai PORTx, di mana x adalah nomor port (misalnya, PORT1).

ox

double

Koordinat X dari posisi asal.

oy

double

Koordinat Y dari posisi asal.

units

distanceUnits

Satuan pengukuran yang digunakan untuk ox dan oy:

  • mm (standar) — milimeter
  • distanceUnits::in / inches — inci
  • distanceUnits::cm — sentimeter

heading_offset

double

Offset rotasi sensor GPS dalam derajat, dari 0,00 hingga 359,99. Nilai default adalah 0.

dir

turnType

Arah yang akan menghasilkan nilai haluan positif:

  • right (default)
  • left

Contoh#

// 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

Fungsi Keanggotaan#

Kelas gps mencakup fungsi anggota berikut:

  • calibrate — Mengkalibrasi Sensor GPS.

  • setOrigin — Mengatur posisi asal untuk sistem koordinat GPS.

  • setLocation — Mengatur lokasi dan arah saat ini dari Sensor GPS.

  • xPosition — Mengembalikan posisi X saat ini.

  • yPosition — Mengembalikan posisi Y saat ini.

  • heading — Mengembalikan heading saat ini.

  • acceleration — Mengembalikan percepatan linier sepanjang sumbu yang ditentukan.

  • gyroRate — Mengembalikan kecepatan sudut untuk sumbu yang ditentukan.

  • orientation — Mengembalikan orientasi untuk sumbu yang ditentukan.

  • quality — Mengembalikan kualitas sinyal GPS saat ini.

  • changed — Mendaftarkan fungsi callback yang berjalan ketika data GPS berubah.

Sebelum memanggil fungsi anggota gps apa pun, sebuah instance gps harus dibuat, seperti yang ditunjukkan di bawah ini:

/* 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);

Metode Kelas#

calibrate#

Mengkalibrasi Sensor GPS. Ini akan mengatur arah yang dikonfigurasi GPS (sesuai dengan offset sudutnya) sebagai arah penggerak saat ini.

Sensor GPS harus tetap diam selama proses kalibrasi.

Available Functions
void calibrate();

Parameters

Fungsi ini tidak memerlukan parameter apa pun.

Return Values

Fungsi ini tidak mengembalikan nilai.

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

setOrigin#

Menentukan titik asal sistem koordinat GPS.

Available Functions

1 — Mengatur titik asal ke posisi X dan Y yang ditentukan.

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

2 — Mengatur titik asal ke posisi sensor saat ini.

void setOrigin();

Parameters

Parameter

Jenis

Keterangan

x

double

Koordinat X dari posisi asal yang baru.

y

double

Koordinat Y dari posisi asal yang baru.

units

distanceUnits

Satuan pengukuran yang digunakan untuk x dan y:

  • mm (standar) — milimeter
  • distanceUnits::cm — sentimeter
  • distanceUnits::in — inci

Return Values

Fungsi ini tidak mengembalikan nilai.

Notes

setLocation#

Mengatur posisi dan arah GPS saat ini.

Available Functions

1 — Mengatur lokasi saat ini menggunakan satuan jarak dan rotasi yang ditentukan.

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

2 — Mengatur lokasi saat ini menggunakan milimeter dan derajat.

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

Parameters

Parameter

Jenis

Keterangan

x

double

Koordinat X dari lokasi saat ini.

y

double

Koordinat Y dari lokasi saat ini.

units

distanceUnits

Satuan pengukuran yang digunakan untuk x dan y:

  • mm (standar) — milimeter
  • distanceUnits::in / inches — inci
  • distanceUnits::cm — sentimeter

angle

double

Nilai arah untuk lokasi saat ini.

units_r

rotationUnits

Satuan pengukuran yang digunakan untuk sudut angle:

  • deg (standar) — derajat
  • rev — putaran

Return Values

Fungsi ini tidak mengembalikan nilai.

Notes

xPosition#

Mengembalikan posisi X saat ini dari Sensor GPS.

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

Parameters

Parameter

Jenis

Keterangan

units

distanceUnits

Satuan pengukuran untuk posisi X yang dikembalikan:

  • mm (default) — milimeter
  • distanceUnits::cm — sentimeter
  • distanceUnits::in — inci

Return Values

Mengembalikan nilai double yang mewakili offset posisi x dari titik asal dalam satuan yang ditentukan.

Notes
  • Posisi X diukur relatif terhadap titik asal saat ini.

  • Asal usul dapat diubah menggunakan 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#

Mengembalikan posisi Y saat ini dari Sensor GPS.

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

Parameters

Parameter

Jenis

Keterangan

units

distanceUnits

Satuan pengukuran untuk posisi Y yang dikembalikan:

  • mm (default) — milimeter
  • distanceUnits::cm — sentimeter
  • distanceUnits::in — inci

Return Values

Mengembalikan nilai double yang mewakili offset posisi Y dari titik asal dalam satuan yang ditentukan.

Notes
  • Posisi Y diukur relatif terhadap titik asal saat ini.

  • Asal usul dapat diubah menggunakan 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#

Mengembalikan arah (sudut yaw) terkini dari Sensor GPS.

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

Parameters

Parameter

Jenis

Keterangan

units

rotationUnits

Satuan pengukuran untuk nilai arah yang dikembalikan:

  • deg (default) — derajat
  • rev — putaran

Return Values

Mengembalikan nilai double yang mewakili arah saat ini dalam satuan yang ditentukan.

Notes 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#

Mengembalikan percepatan linier yang diukur oleh Sensor GPS sepanjang sumbu yang ditentukan.

Available Functions
double acceleration( 
  axisType axis );

Parameters

Parameter

Jenis

Keterangan

axis

axisType

Sumbu yang akan dikembalikan percepatannya:

  • xaxis
  • yaxis
  • zaxis

Return Values

Mengembalikan nilai double yang mewakili percepatan sepanjang sumbu yang ditentukan dalam G (satuan gravitasi).

Notes
  • Nilai percepatan dilaporkan dalam satuan G, di mana 1 G sama dengan percepatan gravitasi di permukaan Bumi.

gyroRate#

Mengembalikan kecepatan sudut yang diukur oleh Sensor GPS di sepanjang sumbu yang ditentukan.

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

Parameters

Parameter

Jenis

Keterangan

axis

axisType

Sumbu yang akan dikembalikan kecepatan sudutnya:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Satuan pengukuran untuk kecepatan sudut yang dikembalikan:

  • dps — derajat per detik
  • rpm — putaran per menit

Return Values

Mengembalikan nilai double yang mewakili kecepatan sudut sepanjang sumbu yang ditentukan dalam satuan yang dipilih.

orientation#

Mengembalikan sudut orientasi Sensor GPS untuk sumbu yang ditentukan.

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

Parameters

Parameter

Jenis

Keterangan

axis

orientationType

Sumbu orientasi yang akan diambil:

  • roll
  • pitch
  • yaw

units

rotationUnits

Satuan pengukuran untuk nilai orientasi yang dikembalikan:

  • deg — derajat
  • rev — putaran

Return Values

Mengembalikan nilai double yang mewakili orientasi sumbu yang ditentukan dalam satuan yang dipilih.

quality#

Mengembalikan kualitas sinyal GPS yang terdeteksi.

Available Functions
int32_t quality();

Parameters

Fungsi ini tidak memerlukan parameter apa pun.

Return Values

Mengembalikan nilai int32_t yang mewakili kualitas sinyal GPS dalam persentase:

Nilai yang Mungkin

Keterangan

100

Semua data posisi dan arah yang dilaporkan dari Sensor GPS adalah valid.

~90

Data posisi tidak lagi dihitung langsung dari Kode Lapangan GPS, melainkan diperkirakan melalui cara alternatif.

0 – 80

Hanya nilai arah yang valid. Seiring berjalannya waktu tanpa pemindaian Kode Medan GPS yang memadai, kualitas sinyal terus menurun hingga 0, di mana data GPS secara efektif dibekukan dan tidak lagi valid.

changed#

Mendaftarkan fungsi callback yang akan dijalankan ketika nilai arah GPS berubah.

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

Parameters

Parameter

Jenis

Keterangan

callback

void (*)(void)

Pointer ke sebuah fungsi yang akan dipanggil ketika nilai arah GPS berubah. Fungsi tersebut tidak boleh menerima parameter dan harus mengembalikan void.

Return Values

Fungsi ini tidak mengembalikan nilai.