GPS#

To make Gps commands appear in VEXcode V5, a GPS (Game Positioning System™) Sensor must be configured in the Devices window.

Para obtener más información, consulte estos artículos:

Inicializando la clase Gps#

Un sensor GPS se crea utilizando el siguiente constructor:

Gps(puerto, origen_x, origen_y, unidades, desplazamiento_de_rumbo)

Este constructor utiliza cinco parámetros:

Parámetro

Descripción

puerto

Un Puerto inteligente válido al que está conectado el sensor de distancia.

origen_x

Opcional. La ubicación X del sensor GPS con respecto al origen (también conocido como punto de referencia) del robot. Por defecto, es
Nota: Si se proporciona la ubicación Y, también debe proporcionarse el parámetro origin_x.

origen_y

Opcional. La posición Y del sensor GPS con respecto al origen (también conocido como punto de referencia) del robot. Por defecto, es
Nota: Si se proporciona la posición Y, también debe proporcionarse el parámetro origin_x.

unidades

Opcional. Las unidades en las que se especifican las ubicaciones X e Y. De manera predeterminada, es MM.

desplazamiento_de_encabezado

Opcional. El ángulo en grados para desplazar la orientación del sensor GPS. Por defecto, es 180°.

# Create a GPS Sensor "gps_1" with the
# Gps class.
gps_1 = Gps(Ports.PORT1, 0.00, 0.00, MM, 180)

Este objeto gps_1 se utilizará en todos los ejemplos posteriores a lo largo de esta documentación de API cuando se haga referencia a los métodos de la clase Gps.

Métodos de clase#

calibrate()#

El método calibrate() calibra el sensor GPS cuando este se ha configurado como parte de un tren motriz V5. Esto establecerá el rumbo configurado del GPS (según su desplazamiento angular) como el rumbo actual del tren motriz.

El sensor GPS y la transmisión deben permanecer quietos durante el proceso de calibración.

Devoluciones: Ninguna

En este ejemplo, se calibrará el sensor GPS y luego se utilizará el rumbo del sensor para girar el robot hacia el rumbo de 180 grados del campo.

# Turn to face the lower Field wall using data from the GPS Sensor.
drivetrain_gps.calibrate()
drivetrain.turn_to_heading(180, DEGREES)

is_calibrating()#

El método is_calibrating() verifica si el sensor GPS está calibrando actualmente o no.

Devuelve: Verdadero si el sensor GPS se está calibrando. Falso si no lo está.

set_heading()#

El método set_heading() establece el rumbo del sensor GPS a un nuevo valor. Este debe estar entre 0 y 359,99 grados.

Parámetros

Descripción

valor

El nuevo valor a utilizar para el encabezado.

unidades

Opcional. Una RotationUnit válida. El valor predeterminado es GRADOS.

Devoluciones: Ninguna

# Set the current GPS Sensor's heading to 180 degrees.
gps_1.set_heading(180)

reset_heading()#

El método reset_heading() establece el rumbo del sensor GPS a 0 grados.

Devoluciones: Ninguna

heading()#

El método heading() informa el rumbo de un sensor GPS en un campo basándose en las lecturas del sensor del código de campo GPS.

Parámetros

Descripción

unidades

Opcional. Una RotationUnit válida. El valor predeterminado es GRADOS.

El comando gps.heading informa un rango de 0,00 a 359,99 grados.

El rumbo corresponde al rumbo de campo, que abarca un rango de 0° a 359,9° en sentido horario. El 0° se encuentra a las 12 en punto.

establecer_campo_de_ubicación_gps

De forma predeterminada, el comando gps.heading informa el rumbo de un sensor GPS.

Si se agrega un desplazamiento de ángulo al configurar el sensor GPS, el rumbo informado será el del punto de referencia en el robot.

Devuelve: Un valor para el encabezado en el rango especificado por las unidades.

En este ejemplo, el robot (que comienza mirando hacia las 12 en punto del campo) gira hacia la pared derecha del campo hasta que se informa que su rumbo es mayor de 90 grados. Entonces, el robot deja de moverse.

# Turn slowly to face the right wall.
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn(RIGHT)
# Stop turning when the GPS reports a heading greater than 90 degrees.
while not gps_20.heading() > 90:
    wait(5, MSEC)
drivetrain.stop()

set_rotation()#

El método set_rotation() establece la rotación del sensor GPS a un nuevo valor.

Parámetros

Descripción

valor

El nuevo valor a utilizar para la rotación.

unidades

Opcional. Una RotationUnit válida. El valor predeterminado es GRADOS.

Devoluciones: Ninguna

# Set the current rotation of the GPS Sensor to 400 degrees.
gps_1.set_rotation(400)

reset_rotation()#

El método reset_rotation() restablece la rotación del sensor GPS a 0 grados.

Devoluciones: Ninguna

rotation()#

El método rotation() lee la rotación actual del sensor GPS. La rotación es ilimitada; puede ser positiva o negativa y muestra el ángulo absoluto del sensor GPS.

Parámetros

Descripción

unidades

Opcional. Una RotationUnit válida. El valor predeterminado es GRADOS.

Devuelve: Un valor para el encabezado en el rango especificado por las unidades.

# Report the current rotation of the GPS Sensor.
rotation = gps_1.rotation()

x_position()#

El método x_position() devuelve la coordenada x actual de un sensor GPS en el campo.

Parámetros

Descripción

unidades

Opcional. Una DistanceUnit válida. El valor predeterminado es MM.

De forma predeterminada, el método x_position devuelve la ubicación de la coordenada X de un sensor GPS.

Si se agrega un desplazamiento al configurar el sensor GPS, la posición X informada será la del punto de referencia en el robot.

Devuelve: Un valor para la coordenada x en las unidades especificadas.

En este ejemplo, el robot (que comienza en el lado derecho del campo) avanza hacia el centro hasta que la posición X se indica inferior a 0 mm. Entonces, el robot deja de avanzar.

# Drive slowly towards the center of the Field.
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive(FORWARD)
# Stop driving when the GPS reports an X position near the center of the Field.
while not gps_20.x_position(MM) < 0:
    wait(5, MSEC)
drivetrain.stop()

y_position()#

El método y_position() devuelve la coordenada y actual de un sensor GPS en el campo.

Parámetros

Descripción

unidades

Opcional. Una DistanceUnit válida. El valor predeterminado es MM.

De forma predeterminada, el método y_position devuelve la ubicación de la coordenada Y de un sensor GPS.

Si se agrega un desplazamiento al configurar el sensor GPS, la posición Y informada será la del punto de referencia en el robot.

Devuelve: Un valor para la coordenada y en las unidades especificadas.

En este ejemplo, el robot (que comienza en la parte superior del campo) avanza hacia el centro hasta que la posición Y se indica inferior a 0 mm. A continuación, el robot detiene su avance.

# Drive slowly towards the center of the Field.
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive(FORWARD)
# Stop driving when the GPS reports an Y position near the center of the Field.
while not gps_20.y_position(MM) < 0:
    wait(5, MSEC)
drivetrain.stop()

quality()#

El método quality() devuelve un valor numérico de 0 a 100 que representa la calidad de la señal actual de un sensor GPS.

Valor reportado

Descripción

100

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

~90

Los datos de posición ya no se calculan capturando información del código de campo VEX, sino a través de medios alternativos.

0 - 80

Solo los valores de rumbo del sensor GPS son válidos, pero a medida que pasa el tiempo en el que un sensor GPS no escanea lo suficiente del código de campo VEX para determinar con precisión la información de posición y rumbo, la calidad de la señal informada continuará cayendo hasta 0, donde todos los datos del sensor GPS quedan efectivamente congelados y ya no son válidos.

Devuelve: Un valor de calidad en el rango de 0 a 100.

En este fragmento de código, la calidad de la señal se verificará constantemente mediante el bucle while True. La rama true solo se ejecutará si la calidad de la señal del sensor GPS reporta valores superiores a 90, para garantizar la validez de los datos del sensor GPS utilizados en el proyecto.

while True:
    if gps_20.quality() > 90:
        pass
    else:
        pass
    wait(5, MSEC)

set_origin()#

El método set_origin() establece el origen del sensor GPS. Una forma alternativa de establecer el origen del sensor si no se proporciona en el constructor de la clase Gps.

Parámetros

Descripción

incógnita

La ubicación X del sensor GPS con respecto al origen del robot.

y

La ubicación Y del sensor GPS con respecto al origen del robot.

unidades

Opcional. Una DistanceUnit válida. El valor predeterminado es MM.

Devoluciones: Ninguna

# Set the GPS Sensor's origin +6 inches on the x axis and
# -6 inches on the y axis.
gps_1.set_origin(6, -6, INCHES)

set_location()#

El método set_location() establece las coordenadas X, Y y el rumbo de un sensor GPS a un valor conocido al inicio de un proyecto. Esto permite reducir las imprecisiones de los datos GPS debido a la proximidad del sensor a las paredes del campo al inicio del proyecto.

Parámetros

Descripción

incógnita

La coordenada X.

y

La coordenada Y.

unidades

Opcional. Una DistanceUnit válida. El valor predeterminado es MM.

ángulo

Opcional. El rumbo del robot.

unidades_r

Opcional. Una RotationUnit válida. El valor predeterminado es GRADOS.

Cuando un sensor GPS está demasiado cerca de las paredes del campo para leer el código de campo (por ejemplo, cuando un robot está en la posición de inicio de un juego en un campo), a menudo pueden ocurrir comportamientos inesperados si el código se basa en los datos de coordenadas y rumbo del GPS.

establecer_campo_de_ubicación_gps

Los parámetros X e Y son las coordenadas X e Y del punto de referencia de su robot en el campo, en esta ubicación conocida. El punto de referencia de su robot es la misma ubicación que se utilizó para calcular las compensaciones al configurar el sensor GPS.

El parámetro HEADING es el rumbo del punto de referencia de su robot. En la imagen de ejemplo anterior, el sensor GPS está montado mirando hacia atrás del robot, mientras que el punto de referencia se encuentra al final del brazo. Dado que el punto de referencia está orientado hacia la pared derecha (rumbo de 90°), el valor de rumbo que debe introducirse es 90°.

Devoluciones: Ninguna

El ejemplo que se muestra aquí establece la posición del punto de referencia en el robot, el brazo, para que coincida con la ubicación del robot en el campo.

# Wait so the GPS has time to initialize.
wait(0.5, SECONDS)
# Set the starting position to the bottom left corner of the Field facing the right wall.
drivetrain_gps.set_location(-1200, -1200, MM, 90)

Devuelve: Falso

orientation()#

El método orientation() lee la orientación de un eje del sensor GPS.

Parámetros

Descripción

eje

Un OrientationType válido.

unidades

Opcional. Una RotationUnit válida. El valor predeterminado es GRADOS.

  • El eje OrientationType.ROLL informa un valor entre -180 y 180 grados, que representa la orientación cuando el sensor GPS está inclinado hacia la izquierda o hacia la derecha.

  • El eje OrientationType.PITCH informa un valor entre -90 y 90 grados, que representa la orientación cuando el sensor GPS está inclinado hacia adelante o hacia atrás.

  • El eje OrientationType.YAW informa un valor entre -180 y 180 grados, que representa la orientación cuando el sensor GPS gira sobre el eje vertical.

Devuelve: Un valor para la orientación del eje en las unidades especificadas.

gyro_rate()#

El método gyro_rate() lee la velocidad del giroscopio de un eje del sensor GPS.

Parámetros

Descripción

eje

Un AxisType válido.

unidades

Opcional. Una VelocityUnit válida. El valor predeterminado es DPS.

Devuelve: Un valor para la velocidad del giro del eje en las unidades especificadas.

acceleration()#

El método acceleration() lee la aceleración de un eje del sensor GPS.

Parámetros

Descripción

eje

Un AxisType válido.

Devuelve: Un valor para la aceleración del eje en unidades de gravedad.

set_sensor_rotation()#

El método set_sensor_rotation() establece la rotación del sensor GPS con respecto al robot. Esto permite que los métodos de rumbo y rotación devuelvan ángulos relativos al robot, en lugar del propio sensor GPS.

Parámetros

Descripción

valor

El ángulo del sensor GPS con respecto al robot.

unidades

Opcional. Una RotationUnit válida. El valor predeterminado es GRADOS.

Devoluciones: Ninguna

changed()#

El método changed() registra una función que se llama cuando cambia el valor del rumbo del sensor GPS. Esto no es particularmente útil, ya que el rumbo del sensor GPS es inestable y causa muchos eventos.

Parámetros

Descripción

llamar de vuelta

Una función que se llamará cuando cambie el valor del rumbo del sensor GPS.

arg

Opcional. Una tupla que se utiliza para pasar argumentos a la función de devolución de llamada.

Devuelve: Una instancia de la clase Event.

# Define the function to occur when the GPS Sensor's
# heading changes.
def heading_changed():
    brain.screen.print("heading changed")

# Set the function to occur when the GPS Sensor's
# heading changes.
gps_1.changed(heading_changed())

set_turn_type()#

El método set_turn_type(turntype) establece la dirección que devuelve valores positivos para el rumbo.

Parámetros

Descripción

tipo de giro

Un TurnType válido.

Devoluciones: Ninguna

get_turn_type()#

El método get_turn_type() obtiene la dirección que devuelve valores positivos para el rumbo.

Devuelve: El tipo de giro actual, IZQUIERDA o DERECHA.

installed()#

El método installed() verifica la conexión del dispositivo.

Devuelve: Verdadero o Falso

timestamp()#

El método timestamp() solicita la marca de tiempo del último paquete de estado recibido del sensor GPS.

Devuelve: Marca de tiempo del último paquete de estado recibido en milisegundos.