GPS-Sensor#

Einführung#

Die Klasse gps dient zur Steuerung und zum Zugriff auf Daten des V5-GPS-Sensors (Game Positioning System™). Dieser Sensor ermöglicht die präzise Positions- und Orientierungsbestimmung eines Roboters auf dem VEX-Spielfeld. Er nutzt den GPS-Feldcode entlang des Spielfeldrandes, um die X- und Y-Koordinaten sowie die Fahrtrichtung des Roboters in Echtzeit zu berechnen.

Der GPS-Sensor gibt die Position des Roboters anhand eines Referenzpunkts zurück, der automatisch aus den bei der Konfiguration des GPS-Sensors im Gerätefenster eingegebenen Offsets berechnet wird.

Weitere Informationen zum GPS-Sensor finden Sie unter Using the GPS Sensor with VEX V5 in der VEX-Bibliothek.

Der Referenzpunkt dient als die (0, 0)-Position des GPS-Sensors, auf die sich alle von GPS-Methoden zurückgegebenen Koordinaten, Kurse und Bewegungen beziehen.

Der VEX V5 GPS-Sensor.

Klassenkonstruktoren#

1 — Erstellt ein gps Objekt am angegebenen Smart Port unter Verwendung des Standardursprungs (0, 0).

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

2 — Erstellt ein gps Objekt am angegebenen Smart Port und definiert eine benutzerdefinierte Ursprungsposition.

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

Klassendestruktor#

Zerstört das Objekt gps und gibt die zugehörigen Ressourcen frei.

~gps();

Parameter#

Parameter

Typ

Beschreibung

index

int32_t

Der Smart Port, an den der GPS-Sensor angeschlossen ist, wird als PORTxgeschrieben, wobei x die Portnummer ist (zum Beispiel PORT1).

ox

double

Die X-Koordinate der Ursprungsposition.

oy

double

Die Y-Koordinate der Ursprungsposition.

units

distanceUnits

Die Maßeinheit für ox und oy:

  • mm (Standard) — Millimeter
  • distanceUnits::in / inches — inch
  • distanceUnits::cm — centimeter

heading_offset

double

Der Rotationsversatz des GPS-Sensors in Grad, von 0,00 bis 359,99. Standardwert ist 0.

dir

turnType

Die Richtung, die positive Kurswerte liefert:

  • right (Standard)
  • left

Beispiele#

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

Mitgliedsfunktionen#

Die Klasse gps umfasst die folgenden Memberfunktionen:

  • calibrate — Kalibriert den GPS-Sensor.

  • setOrigin — Legt die Ursprungsposition für das GPS-Koordinatensystem fest.

  • setLocation — Legt den aktuellen Standort und die Richtung des GPS-Sensors fest.

  • xPosition — Gibt die aktuelle X-Position zurück.

  • yPosition — Gibt die aktuelle Y-Position zurück.

  • heading — Gibt die aktuelle Überschrift zurück.

  • acceleration — Gibt die lineare Beschleunigung entlang der angegebenen Achse zurück.

  • gyroRate — Gibt die Winkelgeschwindigkeit für die angegebene Achse zurück.

  • orientation — Gibt die Orientierung für die angegebene Achse zurück.

  • quality — Gibt die aktuelle GPS-Signalqualität zurück.

  • changed — Registriert eine Rückruffunktion, die ausgeführt wird, wenn sich die GPS-Daten ändern.

Bevor gps Memberfunktionen aufgerufen werden können, muss eine gps -Instanz erstellt werden, wie unten gezeigt:

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

Klassenmethoden#

calibrate#

Kalibriert den GPS-Sensor. Dadurch wird die vom GPS konfigurierte Richtung (entsprechend seinem Winkelversatz) als aktuelle Richtung des Antriebsstrangs festgelegt.

Der GPS-Sensor muss während des Kalibrierungsvorgangs stillgehalten werden.

Available Functions
void calibrate();

Parameters

Diese Funktion benötigt keine Parameter.

Return Values

Diese Funktion gibt keinen Wert zurück.

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

setOrigin#

Legt den Ursprung des GPS-Koordinatensystems fest.

Available Functions

1 — Legt den Ursprung auf die angegebene X- und Y-Position fest.

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

2 — Legt den Ursprung auf die aktuelle Position des Sensors fest.

void setOrigin();

Parameters

Parameter

Typ

Beschreibung

x

double

Die X-Koordinate der neuen Ursprungsposition.

y

double

Die Y-Koordinate der neuen Ursprungsposition.

units

distanceUnits

Die Maßeinheit für x und y:

  • mm (Standard) — Millimeter
  • distanceUnits::cm — Zentimeter
  • distanceUnits::in — Zoll

Return Values

Diese Funktion gibt keinen Wert zurück.

Notes
  • Eine Änderung des Ursprungs beeinflusst die von xPosition und yPosition zurückgegebenen Werte.

setLocation#

Legt die aktuelle GPS-Position und -Richtung fest.

Available Functions

1 — Legt den aktuellen Standort unter Verwendung der angegebenen Entfernungs- und Rotationseinheiten fest.

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

2 — Legt die aktuelle Position in Millimetern und Grad fest.

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

Parameters

Parameter

Typ

Beschreibung

x

double

Die X-Koordinate des aktuellen Standorts.

y

double

Die Y-Koordinate des aktuellen Standorts.

units

distanceUnits

Die Maßeinheit für x und y:

  • mm (Standard) — Millimeter
  • distanceUnits::in / inches — Zoll
  • distanceUnits::cm — Zentimeter

angle

double

Der Überschriftenwert für den aktuellen Standort.

units_r

rotationUnits

Die Maßeinheit für angle:

  • deg (Standard) — Grad
  • rev — Umdrehungen

Return Values

Diese Funktion gibt keinen Wert zurück.

Notes
  • Durch Aufruf dieser Funktion werden die internen Positions- und Richtungswerte aktualisiert, die von xPosition, yPosition und heading gemeldet werden.

xPosition#

Gibt die aktuelle X-Position des GPS-Sensors zurück.

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

Parameters

Parameter

Typ

Beschreibung

units

distanceUnits

Die Maßeinheit für die zurückgegebene X-Position:

  • mm (Standard) — Millimeter
  • distanceUnits::cm — Zentimeter
  • distanceUnits::in — Zoll

Return Values

Gibt einen Wert vom Typ double zurück, der den x-Positionsversatz vom Ursprung in den angegebenen Einheiten darstellt.

Notes
  • Die X-Position wird relativ zum Stromursprung gemessen.

  • Der Ursprung kann mit setOrigin geändert werden.

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#

Gibt die aktuelle Y-Position des GPS-Sensors zurück.

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

Parameters

Parameter

Typ

Beschreibung

units

distanceUnits

Die Maßeinheit für die zurückgegebene Y-Position:

  • mm (Standard) — Millimeter
  • distanceUnits::cm — Zentimeter
  • distanceUnits::in — Zoll

Return Values

Gibt einen Wert vom Typ double zurück, der den Y-Positionsversatz vom Ursprung in den angegebenen Einheiten darstellt.

Notes
  • Die Y-Position wird relativ zum Stromursprung gemessen.

  • Der Ursprung kann mit 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#

Gibt den aktuellen Kurs (Gierwinkel) des GPS-Sensors zurück.

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

Parameters

Parameter

Typ

Beschreibung

units

rotationUnits

Die Maßeinheit für den zurückgegebenen Kurswert:

  • deg (Standard) — Grad
  • rev — Umdrehungen

Return Values

Gibt einen Wert vom double zurück, der die aktuelle Überschrift in den angegebenen Einheiten darstellt.

Notes
  • Der Wert der Kursrichtung wird zwischen 0 und 360 Grad umgebrochen.

  • Die positive Drehrichtung wird durch den während der Konstruktion angegebenen Parameter dir bestimmt.

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#

Gibt die vom GPS-Sensor entlang der angegebenen Achse gemessene lineare Beschleunigung zurück.

Available Functions
double acceleration( 
  axisType axis );

Parameters

Parameter

Typ

Beschreibung

axis

axisType

Die Achse, für die die Beschleunigung zurückgegeben wird:

  • xaxis
  • yaxis
  • zaxis

Return Values

Gibt einen Wert vom Typ double zurück, der die Beschleunigung entlang der angegebenen Achse in G (Gravitationseinheiten) darstellt.

Notes
  • Die Beschleunigungswerte werden in Einheiten von G angegeben, wobei 1 G der Fallbeschleunigung an der Erdoberfläche entspricht.

gyroRate#

Gibt die vom GPS-Sensor entlang der angegebenen Achse gemessene Winkelgeschwindigkeit zurück.

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

Parameters

Parameter

Typ

Beschreibung

axis

axisType

Die Achse, für die die Winkelgeschwindigkeit zurückgegeben wird:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Die Maßeinheit für die zurückgegebene Winkelgeschwindigkeit:

  • dps — Grad pro Sekunde
  • rpm — Umdrehungen pro Minute

Return Values

Gibt einen Wert vom Typ double zurück, der die Winkelgeschwindigkeit entlang der angegebenen Achse in den ausgewählten Einheiten darstellt.

orientation#

Gibt den Orientierungswinkel des GPS-Sensors für die angegebene Achse zurück.

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

Parameters

Parameter

Typ

Beschreibung

axis

orientationType

Die abzurufende Orientierungsachse:

  • roll
  • pitch
  • yaw

units

rotationUnits

Die Maßeinheit für den zurückgegebenen Orientierungswert:

  • deg — Grad
  • rev — Umdrehungen

Return Values

Gibt einen Wert vom Typ double zurück, der die Orientierung der angegebenen Achse in den ausgewählten Einheiten darstellt.

quality#

Gibt die wahrgenommene GPS-Signalqualität zurück.

Available Functions
int32_t quality();

Parameters

Diese Funktion benötigt keine Parameter.

Return Values

Gibt einen int32_t zurück, der die GPS-Signalqualität in Prozent darstellt:

Mögliche Werte

Beschreibung

100

Alle vom GPS-Sensor gemeldeten Positions- und Kursdaten sind gültig.

~90

Die Positionsdaten werden nicht mehr direkt aus dem GPS-Feldcode berechnet, sondern stattdessen auf anderem Wege geschätzt.

0 – 80

Nur die Kurswerte sind gültig. Verstreicht Zeit ohne ausreichendes Scannen des GPS-Feldcodes, verschlechtert sich die Signalqualität kontinuierlich bis zum Wert 0, ab dem die GPS-Daten praktisch eingefroren und ungültig sind.

changed#

Registriert eine Callback-Funktion, die ausgeführt wird, wenn sich der GPS-Kurs ändert.

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

Parameters

Parameter

Typ

Beschreibung

callback

void (*)(void)

A pointer to a function that will be called when the GPS heading value changes. The function must take no parameters and return void.

Return Values

Diese Funktion gibt keinen Wert zurück.