🎯 Полётные миссии set_manual_speed.py

Ручное управление скоростью

mission_examples/set_manual_speed.py

После взлёта летит вперёд по Y, затем вправо по X командами set_manual_speed().

Демонстрирует полёт с заданными скоростями в глобальной системе координат. После взлёта и паузы дрон движется вперёд (vy=1) 2 секунды, затем вправо (vx=1) 2 секунды и садится.

Как работает

  1. Создать Pioneer().
  2. Выполнить arm() и takeoff(), пауза 3 секунды.
  3. Вызвать set_manual_speed(0, 1, 0, 0, 2) — вперёд по Y.
  4. Пауза 2 секунды, затем set_manual_speed(1, 0, 0, 0, 2) — вправо по X.
  5. Пауза 2 секунды и land().

Используемые методы SDK

Ключевые параметры

ПараметрЗначениеОписание
interval2 сВремя действия команды скорости.
vy / vx1 м/сСкорости движения.

Запуск

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()                  # закрываем соединение с дроном