🎯 Полётные миссии
set_manual_speed.py
Ручное управление скоростью
mission_examples/set_manual_speed.pyПосле взлёта летит вперёд по Y, затем вправо по X командами set_manual_speed().
Демонстрирует полёт с заданными скоростями в глобальной системе координат. После взлёта и паузы дрон движется вперёд (vy=1) 2 секунды, затем вправо (vx=1) 2 секунды и садится.
Как работает
- Создать
Pioneer(). - Выполнить
arm()иtakeoff(), пауза 3 секунды. - Вызвать
set_manual_speed(0, 1, 0, 0, 2)— вперёд по Y. - Пауза 2 секунды, затем
set_manual_speed(1, 0, 0, 0, 2)— вправо по X. - Пауза 2 секунды и
land().
Используемые методы SDK
Ключевые параметры
| Параметр | Значение | Описание |
|---|---|---|
interval | 2 с | Время действия команды скорости. |
vy / vx | 1 м/с | Скорости движения. |
Запуск
cd mission_examples
python3 set_manual_speed.pyРезультат
- Дрон смещается вперёд и вправо относительно глобальных осей.
Безопасность
- Держите достаточное расстояние до препятствий: скорость 1 м/с.
Примечания
- Скорости задаются в глобальной системе (север-восток), а не относительно корпуса.
Требования
- Активная навигация.
Полный исходный код
Показать set_manual_speed.py
from pioneer_sdk2 import Pioneer # импортируем класс Pioneer из библиотеки pioneer_sdk2
import time # библиотека time содержит функции для работы со временем
drone = Pioneer() # создаем экземпляр класса Pioneer, устанавливаем соединение
try: # основной код находится внутри блока try
drone.arm() # включаем двигатели
drone.takeoff() # взлетаем
time.sleep(3) # ставим паузу на 3 секунды после взлета
drone.set_manual_speed(0, 1, 0, 0, 2) # летим вперед по оси Y в течение 2 секунд
# vx(0) - скорость по оси "x" в м/с
# vy(1) - скорость по оси "y" в м/с
# vz(0) - скорость по оси "z" в м/с
# yaw_rate(0) - скорость поворота по курсу
# interval(2) - время действия команды в секундах
time.sleep(2) # ставим паузу на 2 секунды перед следующим движением
drone.set_manual_speed(1, 0, 0, 0, 2) # летим вправо по оси X в течение 2 секунд
time.sleep(2) # ставим паузу на 2 секунды перед посадкой
drone.land() # садимся, двигатели выключатся автоматически
except KeyboardInterrupt: # если пользователь остановил программу сочетанием Ctrl+C
print("Остановка программы, производится посадка") # выводим сообщение об остановке программы
drone.land() # сажаем дрон
except Exception as error: # если произошла другая ошибка
print("Ошибка:", error) # выводим текст ошибки
drone.land() # сажаем дрон при ошибке
finally: # блок finally выполнится в любом случае
drone.close_connection() # закрываем соединение с дроном