GPS senzor#

Zavedení#

Třída gps se používá k ovládání a přístupu k datům ze senzoru V5 GPS (Game Positioning System™). Tento senzor poskytuje přesné sledování polohy a orientace robota na hřišti VEX. Využívá kód GPS pole po obvodu hřiště k výpočtu souřadnic X a Y a směru robota v reálném čase.

GPS senzor vrací polohu robota pomocí referenčního bodu automaticky vypočítaného z posunů zadaných při konfiguraci GPS senzoru v okně Zařízení.

Více informací o GPS senzoru naleznete v knihovně VEX v dokumentu Použití GPS senzoru s VEX V5.

Referenční bod funguje jako vlastní pozice (0, 0) GPS senzoru, kde všechny souřadnice, směry a pohyby vrácené metodami GPS jsou relativní vzhledem k tomuto nakonfigurovanému bodu.

GPS senzor VEX V5.

Konstruktory tříd#

1 — Vytvoří objekt gps na zadaném inteligentním portu s použitím výchozího počátku (0, 0).

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

2 — Vytvoří objekt gps na zadaném inteligentním portu a definuje vlastní počáteční pozici.

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

Destruktor tříd#

Zničí objekt gps a uvolní související zdroje.

~gps();

Parametry#

Parametr

Typ

Popis

index

int32_t

Inteligentní port, ke kterému je připojen GPS senzor, zapsaný jako PORTx, kde x je číslo portu (například PORT1).

ox

double

Souřadnice X počáteční polohy.

oy

double

Souřadnice Y počáteční polohy.

units

distanceUnits

Jednotka měření použitá pro ox a oy:

  • mm (výchozí) — milimetry,
  • ,
  • distanceUnits::in / inches — palce
  • ,
  • distanceUnits::cm — centimetry,

heading_offset

double

Rotační offset GPS senzoru ve stupních, od 0,00 do 359,99. Výchozí hodnota je 0.

dir

turnType

Směr, který vrátí kladné hodnoty kurzu:

  • right (výchozí)
  • left

Příklady#

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

Členské funkce#

Třída gps obsahuje následující členské funkce:

  • calibrate — Kalibruje GPS senzor.

  • setOrigin — Nastaví počáteční pozici pro souřadnicový systém GPS.

  • setLocation — Nastaví aktuální polohu a směr GPS senzoru.

  • xPosition — Vrátí aktuální pozici X.

  • yPosition — Vrátí aktuální pozici Y.

  • heading — Vrátí aktuální nadpis.

  • acceleration — Vrátí lineární zrychlení podél zadané osy.

  • gyroRate — Vrátí úhlovou rychlost pro zadanou osu.

  • orientation — Vrátí orientaci pro zadanou osu.

  • quality — Vrátí aktuální kvalitu signálu GPS.

  • changed — Registruje funkci zpětného volání, která se spustí při změně dat GPS.

Před voláním jakékoli členské funkce gps musí být vytvořena instance gps , jak je znázorněno níže:

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

Metody třídy#

calibrate#

Kalibruje GPS senzor. Nastaví nakonfigurovaný směr GPS (podle jeho úhlového posunu) jako aktuální směr hnacího ústrojí.

GPS senzor musí během kalibrace zůstat v klidu.

Available Functions
void calibrate();

Parameters

Tato funkce nepřijímá žádné parametry.

Return Values

Tato funkce nevrací hodnotu.

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

setOrigin#

Nastaví počátek souřadnicového systému GPS.

Available Functions

1 — Nastaví počátek na zadanou pozici X a Y.

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

2 — Nastaví počátek na aktuální polohu senzoru.

void setOrigin();

Parameters

Parametr

Typ

Popis

x

double

Souřadnice X nové polohy počátku.

y

double

Souřadnice Y nové počáteční polohy.

units

distanceUnits

Jednotka měření použitá pro x a y:

  • mm (výchozí) — milimetry
  • distanceUnits::cm — centimetry
  • distanceUnits::in — palce

Return Values

Tato funkce nevrací hodnotu.

Notes

setLocation#

Nastaví aktuální polohu a směr GPS.

Available Functions

1 — Nastaví aktuální polohu pomocí zadaných jednotek vzdálenosti a rotace.

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

2 — Nastaví aktuální polohu pomocí milimetrů a stupňů.

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

Parameters

Parametr

Typ

Popis

x

double

Souřadnice X aktuální polohy.

y

double

Souřadnice Y aktuální polohy.

units

distanceUnits

Jednotka měření použitá pro x a y:

  • mm (výchozí) — milimetry
  • distanceUnits::in / inches — inches
  • distanceUnits::cm — centimetry

angle

double

Hodnota směru pro aktuální polohu.

units_r

rotationUnits

Jednotka měření použitá pro úhel angle:

  • deg (výchozí) — stupně
  • rev — otáčky

Return Values

Tato funkce nevrací hodnotu.

Notes

xPosition#

Vrátí aktuální pozici X GPS senzoru.

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

Parameters

Parametr

Typ

Popis

units

distanceUnits

Jednotka měření pro vrácenou pozici X:

  • mm (výchozí) — milimetry
  • distanceUnits::cm — centimetry
  • distanceUnits::in — palce

Return Values

Vrací hodnotu double která představuje posun polohy x od počátku v zadaných jednotkách.

Notes
  • Pozice X se měří vzhledem k aktuálnímu počátku.

  • Počátek lze změnit pomocí 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#

Vrátí aktuální pozici Y GPS senzoru.

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

Parameters

Parametr

Typ

Popis

units

distanceUnits

Jednotka měření pro vrácenou pozici Y:

  • mm (výchozí) — milimetry
  • distanceUnits::cm — centimetry
  • distanceUnits::in — palce

Return Values

Vrátí hodnotu double která představuje posun pozice Y od počátku v zadaných jednotkách.

Notes
  • Poloha Y se měří vzhledem k aktuálnímu počátku.

  • Původ lze změnit pomocí 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#

Vrátí aktuální směr (úhel stáčení) GPS senzoru.

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

Parameters

Parametr

Typ

Popis

units

rotationUnits

Jednotka měření pro vrácenou hodnotu směru:

  • deg (výchozí) — stupně
  • rev — otáčky

Return Values

Vrací hodnotu double představující aktuální nadpis v zadaných jednotkách.

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#

Vrátí lineární zrychlení měřené GPS senzorem podél zadané osy.

Available Functions
double acceleration( 
  axisType axis );

Parameters

Parametr

Typ

Popis

axis

axisType

Osa, pro kterou bude vráceno zrychlení:

  • xaxis
  • yaxis
  • zaxis

Return Values

Vrací hodnotu double , která představuje zrychlení podél zadané osy v G (gravitační jednotky).

Notes
  • Hodnoty zrychlení se uvádějí v jednotkách G, kde 1 G se rovná gravitačnímu zrychlení na zemském povrchu.

gyroRate#

Vrátí úhlovou rychlost naměřenou GPS senzorem podél zadané osy.

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

Parameters

Parametr

Typ

Popis

axis

axisType

Osa, pro kterou bude vrácena úhlová rychlost:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Jednotka měření pro vrácenou úhlovou rychlost:

  • dps — stupně za sekundu
  • rpm — otáčky za minutu

Return Values

Vrátí hodnotu double , která představuje úhlovou rychlost podél zadané osy ve vybraných jednotkách.

orientation#

Vrátí úhel orientace GPS senzoru pro zadanou osu.

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

Parameters

Parametr

Typ

Popis

axis

orientationType

Orientační osa pro vyvolání:

  • roll
  • pitch
  • yaw

units

rotationUnits

Jednotka měření pro vrácenou hodnotu orientace:

  • deg — stupně
  • rev — otáčky

Return Values

Vrátí hodnotu double , která představuje orientaci zadané osy ve vybraných jednotkách.

quality#

Vrátí vnímanou kvalitu signálu GPS.

Available Functions
int32_t quality();

Parameters

Tato funkce nepřijímá žádné parametry.

Return Values

Vrací hodnotu int32_t která představuje kvalitu signálu GPS v procentech:

Možné hodnoty

Popis

100

Všechna hlášená data o poloze a směru ze senzoru GPS jsou platná.

~90

Polohová data se již nevypočítávají přímo z kódu GPS Field Code, ale místo toho se odhadují alternativními způsoby.

0 – 80

Platné jsou pouze hodnoty směru. S postupem času bez dostatečného skenování kódu GPS pole se kvalita signálu dále snižuje až do bodu 0, kdy se data GPS efektivně zmrazí a přestanou být platná.

changed#

Registruje funkci zpětného volání, která se spustí při změně hodnoty směru GPS.

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

Parameters

Parametr

Typ

Popis

callback

void (*)(void)

Ukazatel na funkci, která bude volána při změně hodnoty směru GPS. Funkce nesmí přijímat žádné parametry a vracet void.

Return Values

Tato funkce nevrací hodnotu.