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.

Construtores de Classes#
1 — Cria um objeto
gpsna Smart Port especificada utilizando a origem predefinida (0, 0).gps( int32_t index, double heading_offset = 0, turnType dir = right );
2 — Cria um objeto
gpsna 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 |
|---|---|---|
|
|
A porta inteligente à qual o sensor GPS está ligado é escrita como |
|
|
A coordenada X da posição de origem. |
|
|
A coordenada Y da posição de origem. |
|
|
A unidade de medida utilizada para
|
|
|
O deslocamento rotacional do sensor GPS em graus, de 0,00 a 359,99. O valor predefinido é 0. |
|
|
A direção que irá devolver valores de rumo positivos:
|
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 Functionsvoid calibrate();
Esta função não recebe qualquer parâmetro.
Return ValuesEsta 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 Functions1 — Define a origem para a posição X e Y especificada.
void setOrigin( double x, double y, distanceUnits units = mm );
Parameters2 — Define a origem para a posição atual do sensor.
void setOrigin();
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
A coordenada X da nova posição de origem. |
|
|
A coordenada Y da nova posição de origem. |
|
|
A unidade de medida utilizada para
|
Esta função não devolve qualquer valor.
NotessetLocation#
Define a posição e a direção atuais do GPS.
Available Functions1 — 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 );
Parameters2 — Define a localização atual utilizando milímetros e graus.
void setLocation( double x, double y, double angle );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
A coordenada X da localização atual. |
|
|
A coordenada Y da localização atual. |
|
|
A unidade de medida utilizada para
|
|
|
O valor da direção para a localização atual. |
|
|
A unidade de medida utilizada para o ângulo
|
Esta função não devolve qualquer valor.
NotesxPosition#
Retorna a posição X atual do sensor GPS.
Available Functionsdouble xPosition( distanceUnits units = distanceUnits::mm );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Unidade de medida para a posição X devolvida:
|
Retorna um valor double que representa o deslocamento posicional em x a partir da origem nas unidades especificadas.
A posição X é medida em relação à origem atual.
A origem pode ser alterada utilizando
setOrigin.
// 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 Functionsdouble yPosition( distanceUnits units = distanceUnits::mm );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Unidade de medida para a posição Y devolvida:
|
Retorna um valor double que representa o deslocamento posicional Y em relação à origem nas unidades especificadas.
A posição Y é medida em relação à origem atual.
A origem pode ser alterada utilizando
setOrigin().
// 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 Functionsdouble heading( rotationUnits units = rotationUnits::deg );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
A unidade de medida para o valor de direção devolvido:
|
Retorna um valor double que representa a direção atual nas unidades especificadas.
O valor do cabeçalho é ajustado entre 0 e 360 graus.
O sentido de rotação positivo é determinado pelo parâmetro
direspecificado durante a construção.
// 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 Functionsdouble acceleration(
axisType axis );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Eixo para o qual será devolvida a aceleração:
|
Devolve um valor do tipo double que representa a aceleração ao longo do eixo especificado em G (unidades gravíticas).
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 Functionsdouble gyroRate(
axisType axis,
velocityUnits units );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Eixo para o qual será devolvida a velocidade angular:
|
|
|
A unidade de medida para a velocidade angular devolvida:
|
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 Functionsdouble orientation(
orientationType axis,
rotationUnits units );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Eixo de orientação para recuperação:
|
|
|
A unidade de medida para o valor de orientação devolvido:
|
Retorna um valor double que representa a orientação do eixo especificado nas unidades seleccionadas.
quality#
Retorna a qualidade do sinal GPS percebida.
Available Functionsint32_t quality();
Esta função não recebe qualquer parâmetro.
Return ValuesRetorna um valor int32_t que representa a qualidade do sinal GPS em percentagem:
Valores possíveis |
Descrição |
|---|---|
|
Todos os dados de posição e direção reportados pelo sensor GPS são válidos. |
|
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. |
|
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 |
changed#
Regista uma função de retorno de chamada que é executada quando o valor da direção do GPS é alterado.
Available Functionsvoid changed(
void (* callback)(void) );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
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 |
Esta função não devolve qualquer valor.