Движение#
Введение#
Дрон VEX AIR оснащен четырьмя пропеллерами, что позволяет ему двигаться в любом направлении и вращаться независимо друг от друга. Система управления движением обеспечивает возможности для перемещения, поворотов, регулировки скорости и отслеживания положения.

Ниже приведён список всех доступных методов:
Действия
take_off– Поднимает дрон на заданную высоту.land– Приземляет дрон.hover- Удерживает дрон в заданном положении.climb– Перемещает дрон в заданном вертикальном направлении.climb_for– Перемещает дрон в заданном вертикальном направлении на определенное расстояние.climb_to– Перемещает дрон на заданную высоту.move_at– Перемещает дрон по заданному курсу и с заданной скоростью.move_for– Перемещает дрон в заданном направлении на заданное расстояние.move_to– Перемещает дрон в заданную позицию, сохраняя при этом то же направление.turn– Поворачивает дрон влево или вправо.turn_for– Поворачивает дрон на заданное количество градусов.turn_to– Разворачивает дрон в заданном направлении.move_with_vectors– Перемещает дрон, используя векторные значения x, y, z и вращения.
Мутаторы
set_steering_mode– Устанавливает точку обзора для управления дроном.set_movement_mode– Задает стиль движения дрона.set_climb_velocity– Устанавливает скорость подъема по умолчанию.set_move_velocity– Устанавливает скорость движения по умолчанию.set_turn_velocity- Устанавливает скорость поворота по умолчанию.set_max_z_height- Устанавливает ограничение на высоту полета дрона.set_xyz_position– Устанавливает текущее положение дрона.
Геттеры
get_max_z_height– Возвращает максимальную высоту, которую может достичь дрон.get_flight_state– Возвращает текущее состояние дрона.get_x_position– Возвращает координату x дрона.get_y_position– Возвращает y-координату дрона.get_z_position– Возвращает z-координату дрона.get_safe_mode– Возвращает состояние блокировки пропеллеров дрона.is_climb_active– Возвращает значение, указывающее, находится ли дрон в данный момент в режиме набора высоты.is_move_active– Возвращает значение, указывающее, находится ли дрон в данный момент в движении.is_turn_active– Возвращает значение, указывающее, поворачивается ли дрон в данный момент.is_hovering- Возвращает значение, указывающее, находится ли дрон в данный момент в режиме зависания.is_taking_off– Возвращает значение, указывающее, находится ли дрон в данный момент в состоянии взлета.is_landing– Возвращает значение, указывающее, находится ли дрон в данный момент на посадке.is_landed- Возвращает значение, указывающее, находится ли дрон в данный момент на земле.
Действия#
take_off#
take_off запускает пропеллеры и поднимает дрон в воздух. Этот метод необходимо использовать перед выполнением других движений.
Применение:
drone.take_off(climb_to, units, wait)
Параметры |
Описание |
|---|---|
|
Положение по оси Z (высота), на которую будет лететь дрон. |
|
Единицы измерения:
|
|
Необязательно. |
# Fly for 1 second
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
land#
land опускает дрон на землю. Пропеллеры будут продолжать вращаться до тех пор, пока проект не будет остановлен.
Применение:
drone.land(wait)
Параметры |
Описание |
|---|---|
|
Необязательно. |
# Land after 1 second
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
hover#
Параметр hover останавливает движение дрона в любом направлении и удерживает его текущее положение в воздухе.
Usage:
drone.hover()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Hold current position for 3 seconds after moving forward
drone.take_off(climb_to=500)
drone.move_at(direction=0, velocity=50)
wait(1, SECONDS)
drone.hover()
wait(3, SECONDS)
drone.land()
climb#
climb — перемещение дрона в заданном вертикальном направлении.
Usage:
drone.climb(direction, velocity)
Параметры |
Описание |
|---|---|
|
Направление полета дрона: |
|
Скорость, с которой дрон будет набирать высоту, выраженная в процентах. |
# Climb upwards for 2 seconds
drone.take_off(climb_to=500)
wait(2, SECONDS)
drone.climb(direction=UP)
wait(2, SECONDS)
drone.land()
climb_for#
climb_for перемещает дрон в заданном вертикальном направлении на определенное расстояние.
Применение:
drone.climb_for(direction, distance, units, velocity, wait)
Параметры |
Описание |
|---|---|
|
Направление полета дрона: |
|
Расстояние, на которое пролетит дрон. |
|
Необязательно. Единица измерения расстояния:
|
|
Необязательный параметр. Скорость набора высоты дроном в процентах. Если скорость не указана, используется значение по умолчанию — 50%. |
|
Необязательно. |
# Lower drone before landing
drone.take_off(climb_to=700)
wait(2, SECONDS)
drone.climb_for(direction=DOWN, distance=300)
wait(2, SECONDS)
drone.land()
climb_to#
climb_to перемещает дрон в определенную позицию по оси Z.
Применение:
drone.climb_to(z, units, velocity, wait)
Параметры |
Описание |
|---|---|
|
Z-координата, выраженная целым числом или десятичной дробью, до которой дрон будет подниматься. |
|
Необязательно. Единица измерения расстояния:
|
|
Необязательно. Скорость набора высоты дроном в процентах. |
|
Необязательно. |
# Reach 500 mm after takeoff
drone.take_off(climb_to=300)
wait(1, SECONDS)
drone.climb_to(z=500)
wait(1, SECONDS)
drone.land()
move_at#
move_at перемещает дрон под заданным углом и с заданной скоростью.
Применение:
drone.move_at(angle, velocity)
Параметры |
Описание |
|---|---|
|
Угол, выраженный целым числом или десятичной дробью, под которым движется дрон, варьируется от 0 до 359 градусов. |
|
Скорость движения дрона в процентах. |
# Move left for 2 seconds
drone.take_off(climb_to=500)
drone.move_at(angle=270)
wait(2, SECONDS)
drone.land()
move_for#
move_for перемещает дрон в определенном направлении на определенное расстояние, используя текущую set_move_velocity.
Применение:
drone.move_for(angle, distance, units, velocity, wait)
Параметры |
Описание |
|---|---|
|
Угол, заданный целым числом или десятичной дробью (float), под которым движется дрон, варьируется от 0 до 359 градусов. |
|
Расстояние, которое пролетит дрон, выраженное целым числом или десятичной дробью. |
|
Необязательно. Единица измерения расстояния:
|
|
Необязательно. Скорость движения дрона в процентах. |
|
Необязательно. |
# Move forward for 200 mm
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.move_for(direction=0, distance=200, velocity=50, units=MM)
wait(1, SECONDS)
drone.land()
move_to#
move_to перемещает дрон в заданную позицию в воздухе, сохраняя при этом тот же курс.
Применение:
drone.move_to(x, y, z, units, move_velocity, climb_velocity, wait)
Параметры |
Описание |
|---|---|
|
Координата x, к которой будет перемещен дрон. |
|
Координата Y, к которой будет переместиться дрон. |
|
Z-координата, к которой будет перемещаться дрон. |
|
Необязательно. Единица измерения расстояния:
|
|
Необязательно. Скорость движения дрона в процентах. |
|
Необязательно. Скорость набора высоты дроном в процентах. |
|
Необязательно. |
# Move diagonally to (300, 300, 800)
drone.take_off(climb_to=300)
wait(2, SECONDS)
drone.move_to(x=300, y=300, z=800)
wait(2, SECONDS)
drone.land()
turn#
turn поворачивает дрон в определенном направлении, используя текущую set_turn_velocity.
Применение:
drone.turn(direction, velocity)
Параметры |
Описание |
|---|---|
|
Направление поворота дрона: |
|
Необязательно. Скорость поворота дрона в процентах. |
# Turn to the right for 2 seconds
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.turn(RIGHT, 50)
wait(2, SECONDS)
drone.land()
turn_for#
turn_for поворачивает дрон в заданном направлении на заданное расстояние относительно текущего направления его взгляда, используя текущую set_turn_velocity.
Применение:
drone.turn_for(direction, angle, velocity, wait)
Параметры |
Описание |
|---|---|
|
Направление поворота дрона: |
|
Угол поворота дрона, выраженный целым числом или десятичной дробью (float), варьируется от 0 до 359 градусов. |
|
Необязательно. Скорость поворота дрона в процентах. |
|
Необязательно. |
# Turn around, then land
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.turn_for(RIGHT, 180)
wait(1, SECONDS)
drone.land()
turn_to#
turn_to поворачивает дрон в определенном направлении, используя текущую set_turn_velocity.
Применение:
drone.turn_to(heading, velocity, wait)
Параметры |
Описание |
|---|---|
|
Направление, в котором дрон будет поворачиваться, от 0 до 360 градусов. |
|
Необязательно. Скорость поворота дрона в процентах. |
|
Необязательно. |
# Turn to face each of the cardinal headings
drone.take_off(climb_to=500)
drone.turn_to(heading=90, velocity=50)
wait(3, SECONDS)
drone.turn_to(heading=180, velocity=50)
wait(3, SECONDS)
drone.turn_to(heading=270, velocity=50)
wait(3, SECONDS)
drone.turn_to(heading=0, velocity=50)
wait(3, SECONDS)
drone.land()
move_with_vectors#
move_with_vectors перемещает дрон, используя векторное движение, сочетая движение вдоль оси x (горизонтальное) и оси y (вертикальное) с одновременным вращением дрона.
Примечание: Этот метод устанавливает значения скорости движения и поворота напрямую, поэтому он не использует set_move_velocity или set_turn_velocity.
Применение:
drone.move_with_vectors(forward, rightward, upward, rotation)
Параметры |
Описание |
|---|---|
|
Скорость дрона вдоль оси Y (движение вперед и назад). Принимает значение от -100 до 100 в процентах, где отрицательные значения соответствуют движению назад, а положительные — движению вперед. |
|
Скорость дрона вдоль оси X (движение из стороны в сторону). Принимает значение от -100 до 100 в процентах, где отрицательные значения соответствуют движению влево, а положительные — вправо. |
|
Скорость дрона вдоль оси Z (движение вверх и вниз). Принимает значение от -100 до 100 в процентах, где отрицательные значения соответствуют движению вниз, а положительные — вверх. |
|
Угловая скорость дрона. Принимает значение от -100 до 100 в процентах, где отрицательные значения вращаются против часовой стрелки, а положительные — по часовой стрелке. |
# Move with controller
drone.take_off(climb_to=500)
while True:
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
wait(5, MSEC)
Мутаторы#
set_steering_mode#
set_steering_mode задает точку обзора, используемую при управлении дроном.
Применение:
drone.set_steering_mode(style)
Параметры |
Описание |
|---|---|
|
Задает точку обзора (POV), используемую для управления дроном. |
# Steer based on the drone's starting orientation
# until button 7 is pressed
drone.take_off(climb_to=500)
drone.set_steering_mode(HEADLESS)
while not controller.button7.pressing():
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
wait(5, MSEC)
drone.land()
set_movement_mode#
set_movement_mode задает стиль движения дрона.
Этот стиль движений используется при управлении дроном с помощью пульта дистанционного управления.
Применение:
drone.set_movement_mode(style)
Параметры |
Описание |
|---|---|
|
Задает скорость, используемую для управления дроном.
|
# Control the drone with the balanced movement style
drone.take_off(climb_to=500)
drone.set_movement_mode(BALANCED)
while not controller.button5.pressing():
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
wait(5, MSEC)
drone.land()
set_climb_velocity#
Параметр set_climb_velocity устанавливает скорость подъема по умолчанию в процентах. Это повлияет на все последующие методы, связанные с подъемом. Скорость подъема по умолчанию составляет 50%.
Применение:
drone.set_climb_velocity(velocity)
Параметры |
Описание |
|---|---|
|
Скорость, с которой дрон будет набирать высоту, выраженная в процентах. |
# Raise the drone quickly before landing
drone.take_off(climb_to=300)
wait(1, SECONDS)
drone.set_climb_velocity(100)
drone.climb_for(direction=UP, distance=500)
wait(1, SECONDS)
drone.land()
set_move_velocity#
Параметр set_move_velocity устанавливает скорость движения по умолчанию в процентах. Это повлияет на все последующие методы, связанные с перемещением. Скорость движения по умолчанию составляет 50%.
Применение:
drone.set_move_velocity(velocity)
Параметры |
Описание |
|---|---|
|
Скорость движения дрона в процентах. |
# Move forward quickly, then reverse slowly
drone.take_off(climb_to=500)
drone.set_move_velocity(100)
drone.move_for(direction=0, distance=500)
wait(3, SECONDS)
drone.set_move_velocity(20)
drone.move_for(direction=180, distance=500)
wait(5, SECONDS)
drone.land()
set_turn_velocity#
Параметр set_turn_velocity устанавливает скорость поворота по умолчанию в процентах. Это повлияет на все последующие методы, связанные с поворотом. Скорость поворота по умолчанию составляет 50%.
Применение:
drone.set_turn_velocity(velocity)
Параметры |
Описание |
|---|---|
|
Скорость, с которой дрон будет поворачивать, выраженная в процентах. |
# Turn clockwise quickly, then counterclockwise slowly
drone.take_off(climb_to=500)
drone.set_turn_velocity(100)
drone.turn_for(RIGHT, 360)
wait(3, SECONDS)
drone.set_turn_velocity(20)
drone.turn_for(LEFT, 360)
wait(5, SECONDS)
drone.land()
set_max_z_height#
set_max_z_height устанавливает ограничение на высоту полета дрона.
Применение:
drone.set_max_z_height(z_height, units)
Параметры |
Описание |
|---|---|
|
Максимальное значение по оси Z, в виде целого числа или десятичной дроби, выше которого дрон не сможет летать, в диапазоне от 1000 до 5000 мм или от 40 до 196 дюймов. |
|
Дополнительно. Единицы измерения расстояния:
|
# Fly with controller under 1000 mm
drone.set_max_z_height(1000, MM)
drone.take_off(climb_to=500)
while not controller.button7.pressing():
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
drone.land()
set_xyz_position#
set_xyz_position устанавливает текущую координату x, y или z дрона на указанное значение.
Применение:
drone.set_xyz_position(x, y, z, units)
Примечание: Все параметры являются необязательными, но как минимум один (x, yили z) должен быть указан.
Параметры |
Описание |
|---|---|
|
Необязательно. Координата x, которую нужно установить для дрона, в единицах |
|
Необязательно. Координата Y для дрона в единицах |
|
Необязательно. Координата z, которую нужно установить для дрона в единицах |
|
Необязательно. Единица измерения расстояния:
|
# Set a new z position, then fly to z position -300
drone.take_off(climb_to=800)
drone.set_xyz_position(z=0)
wait(1, SECONDS)
drone.climb(DOWN, 50)
while not drone.get_z_position() < -300:
wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()
Геттеры#
get_max_z_height#
Функция get_max_z_height ( get_max_z_height возвращает максимально возможную высоту, которую может достичь дрон, в виде целого числа.
Применение:
drone.get_max_z_height(units)
Параметры |
Описание |
|---|---|
|
Необязательно. Единица измерения:
|
# Display the new z height limit
controller.screen.print(drone.get_max_z_height(MM))
controller.screen.next_row()
drone.take_off(climb_to=500)
drone.set_max_z_height(1000)
controller.screen.print(drone.get_max_z_height(MM))
wait(1, SECONDS)
drone.land()
get_flight_state#
get_flight_state возвращает текущее состояние полета дрона в виде объекта DroneFlightStateType:
MOTOR_OFF- Никакое другое состояние полета не является истинным.CALIBRATION- Дрон калибрует свои датчики.MOTOR_START- Дрон запускает двигатели.FLIGHT_READY- Дрон готов к полету.FLIGHT- Дрон находится в полете.
Usage:
drone.get_flight_state()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Report the flight status as the drone takes off
controller.screen.print("Preparing for flight!")
controller.screen.next_row()
drone.take_off(climb_to=800, wait=False)
while not drone.get_flight_state() == MOTOR_START:
wait(5, MSEC)
controller.screen.print("Motors starting...")
controller.screen.next_row()
while not drone.get_flight_state() == FLIGHT:
wait(5, MSEC)
controller.screen.print("Take off!")
get_x_position#
get_x_position возвращает координату x дрона в виде десятичного числа (float).
Usage:
drone.get_x_position(units)
Параметры |
Описание |
|---|---|
|
Дополнительно. Единица измерения, обозначающая положение:
|
# Move to (200, 0, 500)
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.move_at(direction=90, velocity=50)
while not drone.get_x_position() > 200:
wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()
get_y_position#
get_y_position возвращает координату Y дрона в виде десятичного числа (float).
Применение:
drone.get_y_position(units)
Параметры |
Описание |
|---|---|
|
Дополнительно. Единица измерения, обозначающая положение:
|
# Move to (0, 200, 500)
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.move_at(direction=0, velocity=50)
while not drone.get_y_position() > 200:
wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()
get_z_position#
get_y_position возвращает z-координату дрона в виде десятичного числа (float).
Применение:
drone.get_z_position(units)
Параметры |
Описание |
|---|---|
|
Дополнительно. Единица измерения, обозначающая положение:
|
# Move to (0, 0, 800)
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.climb(UP, 50)
while not drone.get_z_position() > 800:
wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()
get_safe_mode#
get_safe_mode возвращает Boolean , указывающее, включена ли блокировка пропеллеров на дроне.
True– Блокировка винта включена.False– Блокировка пропеллера не включена.
Применение:
drone.get_safe_mode()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Change the sound by enabling the Propeller Lock
while True:
if drone.get_safe_mode():
controller.sound.play(FAULT)
while controller.sound.is_active():
wait(50, MSEC)
else:
controller.sound.play(SUCCESS)
while controller.sound.is_active():
wait(50, MSEC)
wait(5, MSEC)
is_climb_active#
is_climb_active возвращает Boolean указывающее, поднимается ли дрон в воздух.
True– Дрон в данный момент набирает высоту.False– Дрон не набирает высоту.
Применение:
drone.is_climb_active()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# After the drone starts to climb, play a sound and land
drone.take_off(climb_to=500)
drone.climb(UP, 50)
wait(3, SECONDS)
if drone.is_climb_active():
controller.sound.play(SUCCESS)
drone.land()
is_move_active#
is_move_active возвращает Boolean указывающее, использует ли дрон в данный момент метод перемещения.
True– В данный момент дрон использует метод перемещения.False– В данный момент дрон не использует метод перемещения.
Применение:
drone.is_move_active()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# After the drone starts to move, play a sound and land
drone.take_off(climb_to=500)
drone.move_at(direction=0, velocity=50)
wait(2, SECONDS)
if drone.is_move_active():
controller.sound.play(SUCCESS)
drone.land()
is_turn_active#
is_turn_active возвращает логическое значение Boolean
True– Дрон в данный момент вращается.False– Дрон не поворачивает.
Применение:
drone.is_turn_active()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# After the drone starts to turn, play a sound and land
drone.take_off(climb_to=500)
drone.turn(RIGHT)
wait(2, SECONDS)
if drone.is_turn_active():
controller.sound.play(LOOPING)
while controller.sound.is_active():
wait(50, MSEC)
drone.land()
is_hovering#
is_hovering возвращает логическое значение Boolean , удерживает ли дрон свое положение (зависает).
True– Дрон в данный момент удерживает свою позицию (зависает).False– В данный момент дрон меняет свое положение.
Применение:
drone.is_hovering()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Play a sound after the drone has finished taking off
drone.take_off(climb_to=700)
while not drone.is_hovering():
wait(5, MSEC)
controller.sound.play(PAUSE)
wait(2, SECONDS)
drone.land()
is_taking_off#
is_taking_off возвращает Boolean указывающее, находится ли дрон в процессе взлета.
True– Дрон в данный момент находится в процессе взлета.False– Дрон не находится в процессе взлета.
Применение:
drone.is_taking_off()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Play sounds while the drone is taking off
drone.take_off(700, wait=False)
wait(1, SECONDS)
while drone.is_taking_off():
controller.sound.play(LOOPING)
wait(5, MSEC)
is_landing#
is_landing возвращает логическое значение Boolean , находится ли дрон в процессе посадки.
True– Дрон в данный момент находится в процессе посадки.False– Дрон не находится в процессе посадки.
Применение:
drone.is_landing()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Play sounds while the drone is landing
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land(wait=False)
wait(1, SECONDS)
while drone.is_landing():
controller.sound.play(LOOPING)
wait(5, MSEC)
is_landed#
is_landed возвращает логическое значение Boolean указывающее, находится ли дрон в данный момент на земле.
True– Дрон приземлился.False– Дрон не приземлился.
Применение:
drone.is_landed()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Celebrate a successful landing
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
wait(1, SECONDS)
if drone.is_landed():
controller.sound.play(SUCCESS)