Рух#
Вступ#
Дрон 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)
Параметри |
Опис |
|---|---|
|
Встановлює точку зору, яка використовується для керування дроном. |
# 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 повертає максимальну висоту, якої може досягти дрон, у вигляді цілого числа.
Використання:
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)