全球定位系统#
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,单位,航向偏移)
此构造函数使用五个参数:
范围 |
描述 |
---|---|
|
距离传感器连接到的有效 智能端口。 |
|
**可选。**GPS 传感器相对于机器人原点(也称为参考点)的 X 位置。默认情况下,此值为 0 |
|
**可选。**GPS 传感器相对于机器人原点(也称为参考点)的 Y 位置。默认情况下,此值为 0 |
|
**可选。**指定 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。默认值为 |
**返回:**无
# 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。默认值为 |
gps.heading
命令报告的范围是从 0.00 到 359.99 度。
航向对应于场方向,范围为顺时针方向 0º 至 359.9º。0º 位于 12 点钟位置。
默认情况下,“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。默认值为 |
**返回:**无
# 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。默认值为 |
**返回:**单位指定范围内的航向值。
# Report the current rotation of the GPS Sensor.
rotation = gps_1.rotation()
x_position()#
x_position()
方法返回现场 GPS 传感器的当前 x 坐标。
参数 |
描述 |
---|---|
单位 |
**可选。**有效的 DistanceUnit。默认值为 |
默认情况下,“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。默认值为 |
默认情况下,“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。默认值为 |
**返回:**无
# 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。默认值为 |
角度 |
**可选。**机器人的航向。 |
单位 |
**可选。**有效的 RotationUnit。默认值为 |
当 GPS 传感器距离场地墙壁太近而无法读取场地代码时(例如,当机器人处于场地上的比赛起始位置时),如果代码依赖于 GPS 的坐标和航向数据,则经常会出现意外行为。
X
和 Y
参数分别是机器人在场地上已知位置的参考点的 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。默认值为 |
OrientationType.ROLL 轴报告一个介于 -180 到 180 度之间的值,表示 GPS 传感器向左或向右倾斜时的方向。
OrientationType.PITCH 轴报告一个介于 -90 到 90 度之间的值,表示 GPS 传感器向前或向后倾斜时的方向。
OrientationType.YAW 轴报告一个介于 -180 到 180 度之间的值,表示 GPS 传感器绕垂直轴旋转时的方向。
**返回:**指定单位的轴方向值。
gyro_rate()#
gyro_rate()
方法读取 GPS 传感器一个轴的陀螺仪速率。
参数 |
描述 |
---|---|
轴 |
有效的 AxisType。 |
单位 |
**可选。**有效的 VelocityUnit。默认值为 |
**返回:**以指定单位表示的轴陀螺仪速率值。
acceleration()#
acceleration()
方法读取 GPS 传感器一个轴的加速度。
参数 |
描述 |
---|---|
轴 |
有效的 AxisType。 |
**返回:**以重力单位表示的轴加速度值。
set_sensor_rotation()#
set_sensor_rotation()
方法设置 GPS 传感器相对于机器人的传感器旋转角度。这使得航向和旋转方法可以返回相对于机器人的角度,而不是 GPS 传感器本身的角度。
参数 |
描述 |
---|---|
价值 |
GPS 传感器相对于机器人的角度。 |
单位 |
**可选。**有效的 RotationUnit。默认值为 |
**返回:**无
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()
方法获取返回正值的方向。
**返回:**当前的转弯类型,LEFT
或 RIGHT
。
installed()#
installed()
方法检查设备连接。
返回: True 或 False
timestamp()#
timestamp()
方法请求 GPS 传感器最后接收到的状态包的时间戳。
**返回:**最后接收的状态包的时间戳(以毫秒为单位)。