Sensor GPS#

Introducción#

La clase gps se utiliza para controlar y acceder a los datos del sensor V5 GPS (Game Positioning System™). Este sensor proporciona un seguimiento preciso de la posición y la orientación de un robot en el campo VEX. Utiliza el código de campo GPS alrededor del perímetro del campo para calcular las coordenadas X e Y del robot y el rumbo en tiempo real.

El sensor GPS devuelve la posición del robot utilizando un punto de referencia calculado automáticamente a partir de los desplazamientos introducidos al configurar el sensor GPS en la ventana Dispositivos.

Para obtener más información sobre el sensor GPS, lea Uso del sensor GPS con VEX V5 en la biblioteca de VEX.

El punto de referencia actúa como la posición propia (0, 0) del sensor GPS donde todas las coordenadas, encabezamientos y movimientos devueltos por los métodos GPS son relativos a este punto configurado.

El sensor GPS VEX V5.

Constructores de clase#

1 — Crea un objeto gps en el puerto inteligente especificado utilizando el origen predeterminado (0, 0).

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

2 — Crea un objeto gps en el puerto inteligente especificado y define una posición de origen personalizada.

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

Destructor de clase#

Destruye el objeto gps y libera los recursos asociados.

~gps();

Parámetros#

Parámetro

Tipo

Descripción

index

int32_t

El puerto inteligente al que está conectado el sensor GPS, escrito como PORTx, donde x es el número de puerto (por ejemplo, PORT1).

ox

double

La coordenada X de la posición de origen.

oy

double

La coordenada Y de la posición de origen.

units

distanceUnits

La unidad de medida utilizada para ox y oy:

  • mm (predeterminado) — milímetros de distancia
  • distanceUnits::in / inches — pulgadas de
  • distanceUnits::cm — centímetros

heading_offset

double

Desplazamiento rotacional del sensor GPS en grados, de 0,00 a 359,99. El valor predeterminado es 0.

dir

turnType

La dirección que devolverá valores de encabezado positivos:

  • right (predeterminada)
  • left

Ejemplos#

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

Funciones de los miembros#

La clase gps incluye las siguientes funciones de miembro:

  • calibrate — Calibra el sensor GPS.

  • setOrigin — Establece la posición de origen para el sistema de coordenadas GPS.

  • setLocation — Establece la ubicación actual y el rumbo del sensor GPS.

  • xPosition — Devuelve la posición X actual.

  • yPosition — Devuelve la posición Y actual.

  • heading — Devuelve el encabezado actual.

  • acceleration — Devuelve la aceleración lineal a lo largo del eje especificado.

  • gyroRate — Devuelve la velocidad angular para el eje especificado.

  • orientation — Devuelve la orientación para el eje especificado.

  • quality — Devuelve la calidad de la señal GPS actual.

  • changed: registra una función de devolución de llamada que se ejecuta cuando cambian los datos del GPS.

Antes de llamar a cualquier función de miembro gps, se debe crear una instancia gps, como se muestra a continuación:

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

calibrate#

Calibra el sensor GPS. Esto establecerá el rumbo configurado del GPS (de acuerdo con su desplazamiento angular) como el rumbo actual del tren de transmisión.

El sensor GPS debe permanecer quieto durante el proceso de calibración.

Available Functions
void calibrate();

Parameters

Esta función no toma ningún parámetro.

Return Values

Esta función no devuelve un valor.

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

setOrigin#

Establece el origen del sistema de coordenadas GPS.

Available Functions

1 — Establece el origen en las posiciones X e Y especificadas.

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

2 — Establece el origen en la posición actual del sensor.

void setOrigin();

Parameters

Parámetro

Tipo

Descripción

x

double

La coordenada X de la nueva posición de origen.

y

double

La coordenada Y de la nueva posición de origen.

units

distanceUnits

La unidad de medida utilizada para x y y:

  • mm (predeterminado) — milímetros
  • distanceUnits::cm — centímetros
  • distanceUnits::in — pulgadas

Return Values

Esta función no devuelve un valor.

Notes

setLocation#

Establece la posición actual del GPS y el rumbo.

Available Functions

1 — Establece la ubicación actual utilizando las unidades de distancia y rotación especificadas.

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

2 — Establece la ubicación actual usando milímetros y grados.

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

Parameters

Parámetro

Tipo

Descripción

x

double

La coordenada X de la ubicación actual.

y

double

La coordenada Y de la ubicación actual.

units

distanceUnits

La unidad de medida utilizada para x y y:

  • mm (predeterminado) — milímetros
  • distanceUnits::in / inches — pulgadas
  • distanceUnits::cm — centímetros

angle

double

El valor del encabezado para la ubicación actual.

units_r

rotationUnits

La unidad de medida utilizada para el angle:

  • deg (predeterminado) — grados
  • rev — revoluciones

Return Values

Esta función no devuelve un valor.

Notes

xPosition#

Devuelve la posición X actual del sensor GPS.

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

Parameters

Parámetro

Tipo

Descripción

units

distanceUnits

La unidad de medida para la posición X devuelta:

  • mm (predeterminado) — milímetros de
  • distanceUnits::cm — centímetros de
  • distanceUnits::in — pulgadas

Return Values

Devuelve un double que representa el desplazamiento posicional x desde el origen en las unidades especificadas.

Notes
  • La posición X se mide en relación con el origen actual.

  • El origen se puede cambiar usando 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#

Devuelve la posición Y actual del sensor GPS.

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

Parameters

Parámetro

Tipo

Descripción

units

distanceUnits

La unidad de medida para la posición Y devuelta:

  • mm (predeterminado) — milímetros de
  • distanceUnits::cm — centímetros de
  • distanceUnits::in — pulgadas

Return Values

Devuelve un double que representa el desplazamiento posicional Y desde el origen en las unidades especificadas.

Notes
  • La posición Y se mide en relación con el origen actual.

  • El origen se puede cambiar 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#

Devuelve el rumbo actual (ángulo de guiñada) del sensor GPS.

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

Parameters

Parámetro

Tipo

Descripción

units

rotationUnits

La unidad de medida para el valor de rumbo devuelto:

  • deg (predeterminado) — grados
  • rev — revoluciones

Return Values

Devuelve un double que representa el encabezado actual en las 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#

Devuelve la aceleración lineal medida por el sensor GPS a lo largo del eje especificado.

Available Functions
double acceleration( 
  axisType axis );

Parameters

Parámetro

Tipo

Descripción

axis

axisType

El eje para el que se devolverá la aceleración:

  • xaxis
  • yaxis
  • zaxis

Return Values

Devuelve un double que representa la aceleración a lo largo del eje especificado en G (unidades gravitacionales).

Notes
  • Los valores de aceleración se informan en unidades de G, donde 1 G es igual a la aceleración debida a la gravedad en la superficie de la Tierra.

gyroRate#

Devuelve la velocidad angular medida por el sensor GPS a lo largo del eje especificado.

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

Parameters

Parámetro

Tipo

Descripción

axis

axisType

El eje para el que se devolverá la velocidad angular:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

La unidad de medida para la velocidad angular devuelta:

  • dps — grados por segundo
  • rpm — revoluciones por minuto

Return Values

Devuelve un double que representa la velocidad angular a lo largo del eje especificado en las unidades seleccionadas.

orientation#

Devuelve el ángulo de orientación del sensor GPS para el eje especificado.

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

Parameters

Parámetro

Tipo

Descripción

axis

orientationType

Eje de orientación a recuperar:

  • roll
  • pitch
  • yaw

units

rotationUnits

La unidad de medida para el valor de orientación devuelto:

  • deg — grados
  • rev — revoluciones

Return Values

Devuelve un double que representa la orientación del eje especificado en las unidades seleccionadas.

quality#

Devuelve la calidad de la señal GPS percibida.

Available Functions
int32_t quality();

Parameters

Esta función no toma ningún parámetro.

Return Values

Devuelve un int32_t que representa la calidad de la señal GPS como porcentaje:

Valores posibles

Descripción

100

Todos los datos de posición y rumbo informados desde el sensor GPS son válidos.

~90

Los datos posicionales ya no se calculan directamente a partir del código de campo GPS, sino que se estiman a través de medios alternativos.

0 – 80

Solo los valores de encabezado son válidos. A medida que pasa el tiempo sin un escaneo suficiente del código de campo GPS, la calidad de la señal continúa disminuyendo hasta 0, momento en el que los datos GPS se congelan efectivamente y ya no son válidos.

changed#

Registra una función de devolución de llamada que se ejecuta cuando cambia el valor del encabezado GPS.

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

Parameters

Parámetro

Tipo

Descripción

callback

void (*)(void)

Un puntero a una función que se llamará cuando cambie el valor del encabezado GPS. La función no debe tomar parámetros y devolver void.

Return Values

Esta función no devuelve un valor.