全球定位系统#

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

有关详细信息,请参阅以下文章:

初始化 Gps 类#

使用以下构造函数创建 GPS 传感器:

Gps(端口,原点 x,原点 y,单位,航向偏移)

此构造函数使用五个参数:

范围

描述

端口

距离传感器连接到的有效 智能端口

origin_x

**可选。**GPS 传感器相对于机器人原点(也称为参考点)的 X 位置。默认情况下,此值为 0
**注意:**如果提供了 Y 位置,则还必须提供 origin_x 参数。

origin_y

**可选。**GPS 传感器相对于机器人原点(也称为参考点)的 Y 位置。默认情况下,此值为 0
**注意:**如果提供了 Y 位置,则还必须提供 origin_x 参数。

单位

**可选。**指定 X 和 Y 位置的单位。默认情况下为 MM。

航向偏移

可选。 GPS 传感器航向的偏移角度(以度为单位)。默认值为 180 度。

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

当引用 Gps 类方法时,此“gps_1”对象将在整个 API 文档的所有后续示例中使用。

类方法#

calibrate()#

当传感器配置为 V5 传动系统的一部分时,calibrate() 方法会校准 GPS 传感器。这会将 GPS 的配置航向(根据其角度偏移)设置为传动系统的当前航向。

在校准过程中,GPS 传感器和传动系统必须保持静止

**返回:**无

在这个例子中,GPS 传感器将进行校准,然后使用传感器的航向将机器人转到场地的 180 度航向。

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

is_calibrating()#

is_calibrating() 方法检查 GPS 传感器当前是否正在校准。

返回: 如果 GPS 传感器当前正在校准,则返回 True。如果不是,则返回 False。

set_heading()#

set_heading() 方法将 GPS 传感器的航向设置为新值。新的航向值应在 0 - 359.99 度范围内。

参数

描述

价值

用于标题的新值。

单位

**可选。**有效的 RotationUnit。默认值为 DEGREES

**返回:**无

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

reset_heading()#

reset_heading() 方法将 GPS 传感器的航向设置为 0 度。

**返回:**无

heading()#

heading() 方法根据传感器从 GPS 字段代码读取的数据,报告字段上 GPS 传感器的朝向。

参数

描述

单位

**可选。**有效的 RotationUnit。默认值为 DEGREES

gps.heading 命令报告的范围是从 0.00 到 359.99 度

航向对应于场方向,范围为顺时针方向 0º 至 359.9º。0º 位于 12 点钟位置。

设置gps_location_field

默认情况下,“gps.heading”命令报告 GPS 传感器的航向。

如果在配置 GPS 传感器时添加了角度偏移,则报告的航向将是机器人上的参考点。

**返回:**单位指定范围内的航向值。

在这个例子中,机器人(起始方向面向场地的12点钟方向)转向场地右侧墙壁,直到航向报告大于90度。然后机器人停止行驶。

# 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()#

set_rotation() 方法将 GPS 传感器的旋转设置为新值。

参数

描述

价值

用于旋转的新值。

单位

**可选。**有效的 RotationUnit。默认值为 DEGREES

**返回:**无

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

reset_rotation()#

reset_rotation() 方法将 GPS 传感器的旋转重置为 0 度。

**返回:**无

rotation()#

rotation() 方法读取 GPS 传感器的当前旋转角度。旋转角度不受限制,可以是正向的,也可以是负向的,并显示 GPS 传感器的绝对角度。

参数

描述

单位

**可选。**有效的 RotationUnit。默认值为 DEGREES

**返回:**单位指定范围内的航向值。

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

x_position()#

x_position() 方法返回现场 GPS 传感器的当前 x 坐标。

参数

描述

单位

**可选。**有效的 DistanceUnit。默认值为 MM

默认情况下,“x_position”方法返回 GPS 传感器的 X 坐标位置。

如果在配置 GPS 传感器时添加了偏移量,则报告的 X 位置将是机器人上的参考点。

**返回:**指定单位的 x 坐标值。

在本例中,机器人(从场地右侧出发)向中心移动,直到 X 轴位置报告小于 0 毫米。然后机器人停止移动。

# 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()#

y_position() 方法返回现场 GPS 传感器的当前 y 坐标。

参数

描述

单位

**可选。**有效的 DistanceUnit。默认值为 MM

默认情况下,“y_position”方法返回 GPS 传感器的 Y 坐标位置。

如果在配置 GPS 传感器时添加了偏移量,则报告的 Y 位置将是机器人上的参考点。

**返回:**指定单位的 y 坐标值。

在此示例中,机器人(从场地顶部出发)向中心移动,直到 Y 位置报告小于 0 毫米。然后机器人停止移动。

# 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()#

quality() 方法返回 0-100 之间的数值,表示 GPS 传感器的当前信号质量。

报告值

描述

100

GPS 传感器报告的所有位置和航向数据均有效。

~90

任何位置数据不再通过捕获 VEX 字段代码中的信息来计算,而是通过其他方式。

0 - 80

只有 GPS 传感器航向值有效,但随着时间的推移,GPS 传感器扫描的 VEX 字段代码不足以准确确定位置和航向信息,报告的信号质量将持续下降直至为 0,此时任何 GPS 传感器数据都会被有效冻结且不再有效。

返回: 0 到 100 范围内的质量值。

在此代码片段中,由于 while True 循环的存在,信号质量将不断被检查。只有当 GPS 传感器的信号质量报告值高于 90 时,true 分支才会运行,以确保项目中使用的 GPS 传感器数据有效。

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

set_origin()#

set_origin() 方法用于设置 GPS 传感器的原点。如果 Gps 类构造函数中未提供原点,则可以使用另一种方法来设置传感器原点。

参数

描述

x

GPS 传感器相对于机器人原点的 X 位置。

y

GPS 传感器相对于机器人原点的 Y 位置。

单位

**可选。**有效的 DistanceUnit。默认值为 MM

**返回:**无

# 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()#

set_location() 方法会在项目开始时将 GPS 传感器的 X、Y 坐标和航向设置为已知值。这样做有助于减少项目启动时由于传感器靠近场地墙壁而导致的 GPS 数据误差。

参数

描述

x

X 坐标。

y

Y 坐标。

单位

**可选。**有效的 DistanceUnit。默认值为 MM

角度

**可选。**机器人的航向。

单位

**可选。**有效的 RotationUnit。默认值为 DEGREES

当 GPS 传感器距离场地墙壁太近而无法读取场地代码时(例如,当机器人处于场地上的比赛起始位置时),如果代码依赖于 GPS 的坐标和航向数据,则经常会出现意外行为。

设置gps_location_field

XY 参数分别是机器人在场地上已知位置的参考点的 X 和 Y 坐标。机器人上的参考点与配置 GPS 传感器时用于计算偏移量的位置相同。

HEADING 参数是机器人参考点的航向。使用上面的示例图,GPS 传感器安装在机器人后方,而参考点位于机器人手臂的末端。由于参考点朝向右侧墙壁(航向为 90 度),因此应输入的航向值为 90 度。

**返回:**无

此处显示的示例设置了机器人(手臂)上的参考点的位置,以匹配机器人在场地上的位置。

# 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)

返回: False

orientation()#

orientation() 方法读取 GPS 传感器一个轴的方向。

参数

描述

有效的 OrientationType

单位

**可选。**有效的 RotationUnit。默认值为 DEGREES

  • OrientationType.ROLL 轴报告一个介于 -180180 度之间的值,表示 GPS 传感器向左或向右倾斜时的方向。

  • OrientationType.PITCH 轴报告一个介于 -9090 度之间的值,表示 GPS 传感器向前或向后倾斜时的方向。

  • OrientationType.YAW 轴报告一个介于 -180180 度之间的值,表示 GPS 传感器绕垂直轴旋转时的方向。

**返回:**指定单位的轴方向值。

gyro_rate()#

gyro_rate() 方法读取 GPS 传感器一个轴的陀螺仪速率。

参数

描述

有效的 AxisType

单位

**可选。**有效的 VelocityUnit。默认值为 DPS

**返回:**以指定单位表示的轴陀螺仪速率值。

acceleration()#

acceleration() 方法读取 GPS 传感器一个轴的加速度。

参数

描述

有效的 AxisType

**返回:**以重力单位表示的轴加速度值。

set_sensor_rotation()#

set_sensor_rotation() 方法设置 GPS 传感器相对于机器人的传感器旋转角度。这使得航向和旋转方法可以返回相对于机器人的角度,而不是 GPS 传感器本身的角度。

参数

描述

价值

GPS 传感器相对于机器人的角度。

单位

**可选。**有效的 RotationUnit。默认值为 DEGREES

**返回:**无

changed()#

changed() 方法注册了一个函数,当 GPS 传感器的航向值发生变化时调用。由于 GPS 传感器的航向不稳定,会引发许多事件,因此这个方法用处不大。

参数

描述

打回来

当 GPS 传感器航向的值发生变化时调用的函数。

arg

**可选。**用于向回调函数传递参数的元组。

**返回:**事件类的一个实例。

# 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()#

set_turn_type(turntype) 方法设置返回正值的方向。

参数

描述

转盘式

有效的 TurnType

**返回:**无

get_turn_type()#

get_turn_type() 方法获取返回正值的方向。

**返回:**当前的转弯类型,LEFTRIGHT

installed()#

installed() 方法检查设备连接。

返回: True 或 False

timestamp()#

timestamp() 方法请求 GPS 传感器最后接收到的状态包的时间戳。

**返回:**最后接收的状态包的时间戳(以毫秒为单位)。