🕹️ События и ручное управление subscribe_event.py

Подписка на события

subscribe_event.py

Подписывается на события завершения взлёта и посадки и меняет цвет светодиодов.

Callback event_activate(event) вызывается при событиях. При TAKEOFF_COMPLETE светодиоды становятся зелёными, при COPTER_LANDED — красными. Дрон взлетает, ждёт 3 секунды и садится.

Как работает

  1. Создать Pioneer().
  2. Подписаться на TAKEOFF_COMPLETE и COPTER_LANDED.
  3. Выполнить arm() и takeoff().
  4. Пауза 3 секунды.
  5. Выполнить land().
  6. В finally закрыть соединение.

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

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

ПараметрЗначениеОписание
sleep3 сПауза в полёте.

Запуск

python3 subscribe_event.py

Результат

  • Зелёный свет после взлёта, красный после посадки.

Безопасность

  • Проверьте свободную зону для взлёта и посадки.

Примечания

  • Callback вызывается из потока обработки сообщений — не выполняйте в нём тяжёлых операций.

Полный исходный код

Показать subscribe_event.py
from pioneer_sdk2 import Pioneer, Event  # импортируем классы Pioneer и Event из библиотеки pioneer_sdk2
import time                              # библиотека time содержит функции для работы со временем

def event_activate(event):               # функция вызывается при получении события от дрона
    if event == Event.TAKEOFF_COMPLETE:  # если пришло событие завершения взлета
        drone.led_control(r=0, g=1, b=0) # включаем зеленый свет

    elif event == Event.COPTER_LANDED:   # если пришло событие завершения посадки
        drone.led_control(r=1, g=0, b=0) # включаем красный свет

drone = Pioneer()                        # создаем экземпляр класса Pioneer, устанавливаем соединение

drone.subscribe(event_activate, Event.TAKEOFF_COMPLETE) # вызываем функцию event_activate при завершении взлета
drone.subscribe(event_activate, Event.COPTER_LANDED)    # вызываем функцию event_activate при завершении посадки

try:                                     # основной код находится внутри блока try
    drone.arm()                          # включаем двигатели
    drone.takeoff()                      # взлетаем
    time.sleep(3)                        # ставим паузу на 3 секунды
    drone.land()                         # садимся, двигатели выключатся автоматически

finally:                                 # блок finally выполнится при завершении программы
    drone.close_connection()             # закрываем соединение