Sensor GPS#

Introdução#

A classe gps é utilizada para controlar e aceder aos dados do sensor GPS V5 (Game Positioning System™). Este sensor fornece um seguimento preciso de posição e orientação para um robô no campo VEX. Utiliza o código GPS do campo em torno do perímetro do campo para calcular as coordenadas X e Y e a direção do robô em tempo real.

O sensor GPS devolve a posição do robô utilizando um ponto de referência calculado automaticamente a partir dos deslocamentos introduzidos ao configurar o sensor GPS na janela Dispositivos.

Para obter mais informações sobre o sensor GPS, leia Utilizar o sensor GPS com VEX V5 na biblioteca VEX.

O ponto de referência atua como a própria posição (0, 0) do sensor GPS, onde todas as coordenadas, direções e movimentos devolvidos pelos métodos GPS são relativos a este ponto configurado.

O sensor GPS VEX V5.

Construtores de Classes#

1 — Cria um objeto gps na Smart Port especificada utilizando a origem predefinida (0, 0).

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

2 — Cria um objeto gps na Smart Port especificada e define uma posição de origem personalizada.

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

Destrutor de classes#

Destrói o objeto gps e liberta os recursos associados.

~gps();

Parâmetros#

Parâmetro

Tipo

Descrição

index

int32_t

A porta inteligente à qual o sensor GPS está ligado é escrita como PORTx, em que x é o número da porta (por exemplo, PORT1).

ox

double

A coordenada X da posição de origem.

oy

double

A coordenada Y da posição de origem.

units

distanceUnits

A unidade de medida utilizada para ox e oy:

  • mm (padrão) — milímetros
  • distanceUnits::in / inches — polegadas
  • distanceUnits::cm — centímetros

heading_offset

double

O deslocamento rotacional do sensor GPS em graus, de 0,00 a 359,99. O valor predefinido é 0.

dir

turnType

A direção que irá devolver valores de rumo positivos:

  • right (padrão)
  • left

Exemplos#

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

Funções de membro#

A classe gps inclui as seguintes funções membro:

  • calibrate — Calibra o sensor GPS.

  • setOrigin — Define a posição de origem para o sistema de coordenadas GPS.

  • setLocation — Define a localização e a direção atuais do sensor GPS.

  • xPosition — Retorna a posição X actual.

  • yPosition — Retorna a posição Y actual.

  • heading — Retorna o cabeçalho actual.

  • acceleration — Devolve a aceleração linear ao longo do eixo especificado.

  • gyroRate — Devolve a velocidade angular para o eixo especificado.

  • orientation — Devolve a orientação para o eixo especificado.

  • quality — Retorna a qualidade actual do sinal GPS.

  • changed — Regista uma função de chamada de retorno que é executada quando os dados do GPS são alterados.

Antes de chamar qualquer função membro de gps , deve ser criada uma instância gps , como se mostra abaixo:

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

Métodos de classe#

calibrate#

Calibra o sensor GPS. Isto irá definir a direção configurada pelo GPS (de acordo com o seu deslocamento angular) como a direção atual do sistema de transmissão.

O sensor GPS deve permanecer imóvel durante o processo de calibração.

Available Functions
void calibrate();

Parameters

Esta função não recebe qualquer parâmetro.

Return Values

Esta função não devolve qualquer valor.

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

setOrigin#

Define a origem do sistema de coordenadas GPS.

Available Functions

1 — Define a origem para a posição X e Y especificada.

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

2 — Define a origem para a posição atual do sensor.

void setOrigin();

Parameters

Parâmetro

Tipo

Descrição

x

double

A coordenada X da nova posição de origem.

y

double

A coordenada Y da nova posição de origem.

units

distanceUnits

A unidade de medida utilizada para x e y:

  • mm (padrão) — milímetros
  • distanceUnits::cm — centímetros
  • distanceUnits::in — polegadas

Return Values

Esta função não devolve qualquer valor.

Notes

setLocation#

Define a posição e a direção atuais do GPS.

Available Functions

1 — Define a localização atual utilizando as unidades de distância e rotação especificadas.

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

2 — Define a localização atual utilizando milímetros e graus.

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

Parameters

Parâmetro

Tipo

Descrição

x

double

A coordenada X da localização atual.

y

double

A coordenada Y da localização atual.

units

distanceUnits

A unidade de medida utilizada para x e y:

  • mm (padrão) — milímetros
  • distanceUnits::in / inches — polegadas
  • distanceUnits::cm — centímetros

angle

double

O valor da direção para a localização atual.

units_r

rotationUnits

A unidade de medida utilizada para o ângulo angle:

  • deg (padrão) — graus
  • rev — rotações

Return Values

Esta função não devolve qualquer valor.

Notes
  • A chamada desta função actualiza os valores internos de posição e direcção reportados por xPosition, yPosition e heading.

xPosition#

Retorna a posição X atual do sensor GPS.

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

Parameters

Parâmetro

Tipo

Descrição

units

distanceUnits

Unidade de medida para a posição X devolvida:

  • mm (padrão) — milímetros
  • distanceUnits::cm — centímetros
  • distanceUnits::in — polegadas

Return Values

Retorna um valor double que representa o deslocamento posicional em x a partir da origem nas unidades especificadas.

Notes
  • A posição X é medida em relação à origem atual.

  • A origem pode ser alterada utilizando 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#

Retorna a posição Y atual do sensor GPS.

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

Parameters

Parâmetro

Tipo

Descrição

units

distanceUnits

Unidade de medida para a posição Y devolvida:

  • mm (padrão) — milímetros
  • distanceUnits::cm — centímetros
  • distanceUnits::in — polegadas

Return Values

Retorna um valor double que representa o deslocamento posicional Y em relação à origem nas unidades especificadas.

Notes
  • A posição Y é medida em relação à origem atual.

  • A origem pode ser alterada utilizando 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#

Retorna a direção atual (ângulo de guinada) do sensor GPS.

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

Parameters

Parâmetro

Tipo

Descrição

units

rotationUnits

A unidade de medida para o valor de direção devolvido:

  • deg (padrão) — graus
  • rev — rotações

Return Values

Retorna um valor double que representa a direção atual nas unidades especificadas.

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#

Devolve a aceleração linear medida pelo sensor GPS ao longo do eixo especificado.

Available Functions
double acceleration( 
  axisType axis );

Parameters

Parâmetro

Tipo

Descrição

axis

axisType

Eixo para o qual será devolvida a aceleração:

  • xaxis
  • yaxis
  • zaxis

Return Values

Devolve um valor do tipo double que representa a aceleração ao longo do eixo especificado em G (unidades gravíticas).

Notes
  • Os valores de aceleração são apresentados em unidades de G, em que 1 G é igual à aceleração da gravidade à superfície da Terra.

gyroRate#

Devolve a velocidade angular medida pelo sensor GPS ao longo do eixo especificado.

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

Parameters

Parâmetro

Tipo

Descrição

axis

axisType

Eixo para o qual será devolvida a velocidade angular:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

A unidade de medida para a velocidade angular devolvida:

  • dps — graus por segundo
  • rpm — rotações por minuto

Return Values

Retorna um valor double que representa a velocidade angular ao longo do eixo especificado nas unidades seleccionadas.

orientation#

Devolve o ângulo de orientação do sensor GPS para o eixo especificado.

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

Parameters

Parâmetro

Tipo

Descrição

axis

orientationType

Eixo de orientação para recuperação:

  • roll
  • pitch
  • yaw

units

rotationUnits

A unidade de medida para o valor de orientação devolvido:

  • deg — graus
  • rev — rotações

Return Values

Retorna um valor double que representa a orientação do eixo especificado nas unidades seleccionadas.

quality#

Retorna a qualidade do sinal GPS percebida.

Available Functions
int32_t quality();

Parameters

Esta função não recebe qualquer parâmetro.

Return Values

Retorna um valor int32_t que representa a qualidade do sinal GPS em percentagem:

Valores possíveis

Descrição

100

Todos os dados de posição e direção reportados pelo sensor GPS são válidos.

~90

Os dados de posicionamento já não estão a ser calculados diretamente a partir do código de campo do GPS, mas sim estimados por meios alternativos.

0 – 80

Apenas os valores de direção são válidos. Com o passar do tempo, sem que haja uma leitura suficiente do código de campo do GPS, a qualidade do sinal continua a diminuir até atingir 0, altura em que os dados do GPS ficam efetivamente congelados e deixam de ser válidos.

changed#

Regista uma função de retorno de chamada que é executada quando o valor da direção do GPS é alterado.

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

Parameters

Parâmetro

Tipo

Descrição

callback

void (*)(void)

Um ponteiro para uma função que será chamada quando o valor da direção do GPS mudar. A função não deve receber parâmetros e devolver void

Return Values

Esta função não devolve qualquer valor.