传感器#

介绍#

VEX AIR 无人机内置惯性传感器,用于测量旋转运动和检测运动变化,以及测距传感器,用于测量距离。VEX AIR 无人机还可以跟踪电池电量。这些传感器使无人机能够追踪其方向、航向、加速度以及与物体的距离。

以下是所有可用方法的列表:

惯性 - 跟踪无人机的旋转运动。

  • get_rotation – Returns how much the drone has turned since it started.

  • get_heading – Returns the current heading (0 to 359.99°).

  • get_yaw – Returns the yaw angle (–180 to 180°).

  • get_roll – Returns the roll angle (–180 to 180°).

  • get_pitch – Returns the pitch angle (–180 to 180°).

  • reset_rotation – Resets the rotation value to 0.

  • reset_heading – Sets the current heading to 0.

  • set_heading – Sets the heading to a specific value.

  • get_acceleration – Returns acceleration in a specific direction.

  • get_turn_rate – Returns turning rate in degrees per second.

范围 - 检测无人机距离传感器的距离。

  • get_distance – Returns the distance from a Range Sensor.

电池 - 返回无人机的电池百分比。

惯性#

get_rotation#

get_rotation returns how many degrees the drone has turned since it started. It adds up all turns and returns the total in degrees: positive for clockwise, negative for counterclockwise.

Usage:
drone.inertial.get_rotation()

参数

描述

该方法没有参数。

# Display the rotation after turning
drone.take_off(climb_to=500)
drone.turn_for(LEFT, 450, 50)
print(drone.inertial.get_rotation(), end="")
drone.land()

get_heading#

get_heading returns the drone’s heading angle as a float in the range 0 to 359.99 degrees.

Usage:
drone.inertial.get_heading()

参数

描述

该方法没有参数。

# Display the drone's heading after turning
drone.take_off(climb_to=500)
drone.set_turn_velocity(100)
drone.turn(RIGHT)
wait(5, SECONDS)
controller.screen.print("Heading: ")
controller.screen.print(drone.inertial.get_heading())
drone.land()

get_yaw#

get_yaw returns the drone’s yaw angle in the range –180.0 to 180.0 degrees as a float.

下图使用箭头表示偏航的正旋转方向。

图中 VEX 无人机带有一个彩色箭头,指示其偏航方向。标有“偏航”的蓝色箭头从中心直接向下。

Usage:
drone.inertial.get_yaw

参数

描述

该方法没有参数。

# Display the yaw angle as you rotate the drone by hand
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print("Yaw: ")
    controller.screen.print(drone.inertial.get_yaw())
    wait(0.2, SECONDS)

get_roll#

get_roll returns the drone’s roll angle in the range –180.0 to 180.0 degrees as a float.

下图用箭头表示滚动的正向旋转方向。

VEX 无人机图示中有一个彩色箭头,指示其滚转方向。标有“滚转”的绿色箭头指向右下方。

Usage:
drone.inertial.get_roll()

参数

描述

该方法没有参数。

# Display the roll angle as you rotate the drone by hand
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print("Roll: ")
    controller.screen.print(drone.inertial.get_roll())
    wait(0.2, SECONDS)

get_pitch#

get_pitch returns the drone’s pitch angle in the range –180.0 to 180.0 degrees as a float.

下图使用箭头表示俯仰的正向旋转方向。

图中 VEX 无人机带有一个彩色箭头,指示其俯仰角度。标有“俯仰”的红色箭头指向左下方。

Usage:
drone.inertial.get_pitch()

参数

描述

该方法没有参数。

# Display the pitch angle as you rotate the drone by hand
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print("Pitch: ")
    controller.screen.print(drone.inertial.get_pitch())
    wait(0.2, SECONDS)

reset_rotation#

reset_rotation resets the drone’s rotation value to 0 degrees.

Usage:
drone.inertial.reset_rotation()

参数

描述

该方法没有参数。

# Display the new rotation after resetting
drone.take_off(climb_to=500)
drone.turn(RIGHT)
while not drone.inertial.get_rotation() > 360:
    wait(5, MSEC)
drone.hover()
drone.inertial.reset_rotation()
wait(1, SECONDS)
print(drone.inertial.get_rotation(), end="")
drone.land()

reset_heading#

reset_heading resets the drone’s heading to 0 degrees.

用法:

drone.inertial.reset_heading()

参数

描述

该方法没有参数。

# Turn to a heading, reset the heading, and turn to the same heading.
drone.take_off(climb_to=500)
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.inertial.reset_heading()
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.land()

set_heading#

set_heading sets the drone’s heading to a specified value in degrees.

用法:

drone.inertial.set_heading(heading)

参数

描述

heading

新航向使用的值在 0 到 359.99 度范围内。

# Turn to a heading, set the heading, and turn to the same heading.
drone.take_off(climb_to=500)
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.inertial.set_heading(90)
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.land()

get_acceleration#

get_acceleration returns the drone’s acceleration in a specified direction. The returned value represents the rate of change in velocity, measured in units of g (where 1g ≈ 9.81 m/s²), as a float ranging from -4.00 to 4.00.

下图用箭头表示向前和向右的正加速度方向,向下的负加速度方向。

VEX 无人机上显示三个带颜色的箭头,分别指示方向。标有“向右”的红色箭头指向左侧斜下方,标有“向前”的绿色箭头指向右侧斜下方,标有“向下”的蓝色箭头指向正下方。

用法:

drone.inertial.get_acceleration(type)

参数

描述

type

The direction of acceleration to report:

  • DOWNWARD
  • FORWARD
  • RIGHTWARD

# Display the acceleration as the drone takes off
drone.take_off(500, wait=False)
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print(drone.inertial.get_acceleration(DOWNWARD))
    wait(5, MSEC)

get_turn_rate#

get_turn_rate returns the rate at which the drone is rotating along the specified axis. This returns a value in degrees per second \(dps\) as a float from –1000.00 to 1000.00 dps.

下图使用箭头显示滚动、俯仰和偏航的正旋转方向。

VEX 无人机图示中有三个彩色箭头,分别指向其旋转轴。红色箭头“俯仰”(Pitch)指向左侧斜下方,绿色箭头“滚转”(Roll)指向右侧斜下方,蓝色箭头“偏航”(Yaw)指向正下方。

Usage:
drone.inertial.get_turn_rate(axis)

参数

描述

axis

Which orientation to report:

  • YAW
  • ROLL
  • PITCH

# Display the drone turn rate as it is rotated by hand.
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(7, 1)
    controller.screen.print(drone.inertial.get_turn_rate(ROLL))

范围#

get_distance#

get_distance returns the distance between a Range Sensor and the nearest object.

Usage:
drone.range.get_distance(range, units)

参数

描述

range

The Range Sensor to use:

  • FORWARD_RANGE – The distance from the front of the drone.
  • DOWNWARD_RANGE – The distance from the bottom of the drone.

units

Optional. The unit that represents the distance:

  • CM – Centimeters
  • MM (default) – Millimeters
  • INCHES
# Fly forward until close to an object
drone.take_off(climb_to=500)
drone.move_at(direction=0, velocity=50)
while not drone.range.get_distance(FORWARD_RANGE, MM) < 750:
    wait(0.1, SECONDS)
drone.land()

电池#

get_battery_level#

get_battery_level returns the drone’s battery charge level as a percentage. This returns a number from 0 to 100.

Usage:
drone.get_battery_level()

参数

描述

该方法没有参数。

# Display the drone's battery level
if drone.get_battery_level() < 25:
    controller.screen.print("Charge the drone Battery!")
else:
    controller.screen.print("Ready to fly!")