Czujnik GPS#

Wstęp#

Klasa gps służy do sterowania i dostępu do danych z czujnika V5 GPS (Game Positioning System™). Czujnik ten zapewnia dokładne śledzenie położenia i orientacji robota na polu VEX. Wykorzystuje on kod GPS wokół obwodu pola do obliczania współrzędnych X i Y oraz kierunku robota w czasie rzeczywistym.

Czujnik GPS zwraca położenie robota, korzystając z punktu odniesienia automatycznie obliczonego na podstawie przesunięć wprowadzonych podczas konfiguracji czujnika GPS w oknie Urządzenia.

Aby uzyskać więcej informacji na temat czujnika GPS, przeczytaj Korzystanie z czujnika GPS z VEX V5 w bibliotece VEX.

Punkt odniesienia działa jak własna pozycja czujnika GPS (0, 0), w której wszystkie współrzędne, kierunki i ruchy zwracane przez metody GPS są względne względem tego skonfigurowanego punktu.

Czujnik GPS VEX V5.

Konstruktory klas#

1 — Tworzy obiekt gps na określonym porcie inteligentnym, używając domyślnego początku (0, 0).

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

2 — Tworzy obiekt gps na określonym porcie inteligentnym i definiuje niestandardową pozycję początkową.

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

Destruktor klasy#

Niszczy obiekt gps i uwalnia powiązane zasoby.

~gps();

Parametry#

Parametr

Typ

Opis

index

int32_t

Inteligentny port, do którego podłączony jest czujnik GPS, zapisany jako PORTx, gdzie x to numer portu (na przykład PORT1).

ox

double

Współrzędna X położenia początkowego.

oy

double

Współrzędna Y położenia początkowego.

units

distanceUnits

Jednostka miary używana dla ox i oy:

  • mm (domyślna) — milimetry
  • distanceUnits::in / inches — cale
  • distanceUnits::cm — centymetry

heading_offset

double

Przesunięcie obrotowe czujnika GPS w stopniach, od 0,00 do 359,99. Wartość domyślna to 0.

dir

turnType

Kierunek, który zwróci dodatnie wartości nagłówka:

  • right (domyślnie)
  • left

Przykłady#

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

Funkcje członkowskie#

Klasa gps zawiera następujące funkcje członkowskie:

  • calibrate — Kalibruje czujnik GPS.

  • setOrigin — Ustawia położenie początkowe układu współrzędnych GPS.

  • setLocation — Ustawia bieżącą lokalizację i kierunek czujnika GPS.

  • xPosition — Zwraca aktualną pozycję X.

  • yPosition — Zwraca aktualną pozycję Y.

  • heading — Zwraca bieżący nagłówek.

  • acceleration — Zwraca przyspieszenie liniowe wzdłuż określonej osi.

  • gyroRate — Zwraca prędkość kątową dla określonej osi.

  • orientation — Zwraca orientację dla określonej osi.

  • quality — Zwraca aktualną jakość sygnału GPS.

  • changed — Rejestruje funkcję wywołania zwrotnego, która jest uruchamiana po zmianie danych GPS.

Przed wywołaniem jakiejkolwiek funkcji członkowskiej gps należy utworzyć instancję gps , jak pokazano poniżej:

/* 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 klasowe#

calibrate#

Kalibruje czujnik GPS. Spowoduje to ustawienie skonfigurowanego kierunku GPS (zgodnie z jego przesunięciem kątowym) jako aktualnego kierunku układu napędowego.

Podczas procesu kalibracji czujnik GPS musi pozostać nieruchomy.

Available Functions
void calibrate();

Parameters

Funkcja ta nie przyjmuje żadnych parametrów.

Return Values

Ta funkcja nie zwraca wartości.

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

setOrigin#

Ustawia początek układu współrzędnych GPS.

Available Functions

1 — Ustawia początek na określoną pozycję X i Y.

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

2 — Ustawia początek na bieżącą pozycję czujnika.

void setOrigin();

Parameters

Parametr

Typ

Opis

x

double

Współrzędna X nowego położenia początkowego.

y

double

Współrzędna Y nowego położenia początkowego.

units

distanceUnits

Jednostka miary używana dla x i y:

  • mm (domyślna) — milimetry
  • distanceUnits::cm — centymetry
  • distanceUnits::in — cale

Return Values

Ta funkcja nie zwraca wartości.

Notes

setLocation#

Ustawia aktualną pozycję GPS i kierunek.

Available Functions

1 — Ustawia bieżącą lokalizację, używając określonych jednostek odległości i obrotu.

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

2 — Ustawia bieżącą lokalizację przy użyciu milimetrów i stopni.

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

Parameters

Parametr

Typ

Opis

x

double

Współrzędna X bieżącej lokalizacji.

y

double

Współrzędna Y bieżącej lokalizacji.

units

distanceUnits

Jednostka miary używana dla x i y:

  • mm (domyślna) — milimetry
  • distanceUnits::in / inches — cale
  • distanceUnits::cm — centymetry

angle

double

Wartość nagłówka dla bieżącej lokalizacji.

units_r

rotationUnits

Jednostka miary używana dla kąta angle:

  • deg (domyślnie) — stopnie
  • rev — obroty

Return Values

Ta funkcja nie zwraca wartości.

Notes
  • Wywołanie tej funkcji aktualizuje wewnętrzne wartości pozycji i nagłówka zgłaszane przez xPosition, yPosition i heading.

xPosition#

Zwraca aktualną pozycję X czujnika GPS.

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

Parameters

Parametr

Typ

Opis

units

distanceUnits

Jednostka miary dla zwróconej pozycji X:

  • mm (domyślna) — milimetry
  • distanceUnits::cm — centymetry
  • distanceUnits::in — cale

Return Values

Zwraca wartość double co oznacza przesunięcie pozycji x od początku układu współrzędnych w określonych jednostkach.

Notes
  • Pozycję X mierzy się względem bieżącego punktu początkowego.

  • Pochodzenie można zmienić za 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#

Zwraca aktualną pozycję Y czujnika GPS.

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

Parameters

Parametr

Typ

Opis

units

distanceUnits

Jednostka miary dla zwróconej pozycji Y:

  • mm (domyślna) — milimetry
  • distanceUnits::cm — centymetry
  • distanceUnits::in — cale

Return Values

Zwraca wartość double co oznacza przesunięcie pozycyjne Y od początku układu współrzędnych w określonych jednostkach.

Notes
  • Pozycję Y mierzy się względem bieżącego punktu początkowego.

  • Pochodzenie można zmienić za 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#

Zwraca aktualny kurs (kąt odchylenia) czujnika GPS.

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

Parameters

Parametr

Typ

Opis

units

rotationUnits

Jednostka miary dla zwracanej wartości kursu:

  • deg (domyślnie) — stopnie
  • rev — obroty

Return Values

Zwraca wartość double reprezentującą bieżący nagłówek w określonych jednostkach.

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#

Zwraca przyspieszenie liniowe zmierzone przez czujnik GPS wzdłuż określonej osi.

Available Functions
double acceleration( 
  axisType axis );

Parameters

Parametr

Typ

Opis

axis

axisType

Oś, dla której zostanie zwrócone przyspieszenie:

  • xaxis
  • yaxis
  • zaxis

Return Values

Zwraca wartość double oznaczające przyspieszenie wzdłuż określonej osi w G (jednostkach grawitacji).

Notes
  • Wartości przyspieszenia podawane są w jednostkach G, gdzie 1 G odpowiada przyspieszeniu grawitacyjnemu na powierzchni Ziemi.

gyroRate#

Zwraca prędkość kątową zmierzoną przez czujnik GPS wzdłuż określonej osi.

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

Parameters

Parametr

Typ

Opis

axis

axisType

Oś, dla której zostanie zwrócona prędkość kątowa:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Jednostka miary dla zwracanej prędkości kątowej:

  • dps — stopnie na sekundę
  • rpm — obroty na minutę

Return Values

Zwraca wartość double co oznacza prędkość kątową wzdłuż określonej osi w wybranych jednostkach.

orientation#

Zwraca kąt orientacji czujnika GPS dla określonej osi.

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

Parameters

Parametr

Typ

Opis

axis

orientationType

Oś orientacji do pobrania:

  • roll
  • pitch
  • yaw

units

rotationUnits

Jednostka miary dla zwracanej wartości orientacji:

  • deg — stopnie
  • rev — obroty

Return Values

Zwraca wartość double reprezentującą orientację określonej osi w wybranych jednostkach.

quality#

Zwraca odczuwalną jakość sygnału GPS.

Available Functions
int32_t quality();

Parameters

Funkcja ta nie przyjmuje żadnych parametrów.

Return Values

Zwraca wartość int32_t reprezentującą jakość sygnału GPS w procentach:

Możliwe wartości

Opis

100

Wszystkie podane przez czujnik GPS dane dotyczące położenia i kierunku są prawidłowe.

~90

Dane dotyczące położenia nie są już obliczane bezpośrednio na podstawie kodu GPS, lecz szacowane za pomocą alternatywnych metod.

0 – 80

Ważne są tylko wartości nagłówka. W miarę upływu czasu i braku wystarczającego skanowania kodu pola GPS, jakość sygnału nadal spada, aż do 0, w którym to momencie dane GPS zostają skutecznie zamrożone i przestają być ważne.

changed#

Rejestruje funkcję wywołania zwrotnego, która jest uruchamiana, gdy zmienia się wartość kierunku GPS.

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

Parameters

Parametr

Typ

Opis

callback

void (*)(void)

Wskaźnik do funkcji, która zostanie wywołana po zmianie wartości kierunku GPS. Funkcja nie może przyjmować żadnych parametrów i zwracać void.

Return Values

Ta funkcja nie zwraca wartości.