传感器#
介绍#
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_battery_level
– Returns the drone’s battery level in percent.
惯性#
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.
下图使用箭头表示偏航的正旋转方向。
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.
下图用箭头表示滚动的正向旋转方向。
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.
下图使用箭头表示俯仰的正向旋转方向。
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)
参数 |
描述 |
---|---|
|
新航向使用的值在 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.
下图用箭头表示向前和向右的正加速度方向,向下的负加速度方向。
用法:
drone.inertial.get_acceleration(type)
参数 |
描述 |
---|---|
|
The direction of acceleration to report:
|
# 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.
下图使用箭头显示滚动、俯仰和偏航的正旋转方向。
Usage:
drone.inertial.get_turn_rate(axis)
参数 |
描述 |
---|---|
|
Which orientation to report:
|
# 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)
参数 |
描述 |
---|---|
|
The Range Sensor to use:
|
|
Optional. The unit that represents the distance:
|
# 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!")