🕹️ События и ручное управление
subscribe_event.py
Подписка на события
subscribe_event.pyПодписывается на события завершения взлёта и посадки и меняет цвет светодиодов.
Callback event_activate(event) вызывается при событиях. При TAKEOFF_COMPLETE светодиоды становятся зелёными, при COPTER_LANDED — красными. Дрон взлетает, ждёт 3 секунды и садится.
Как работает
- Создать
Pioneer(). - Подписаться на
TAKEOFF_COMPLETEиCOPTER_LANDED. - Выполнить
arm()иtakeoff(). - Пауза 3 секунды.
- Выполнить
land(). - В
finallyзакрыть соединение.
Используемые методы SDK
Ключевые параметры
| Параметр | Значение | Описание |
|---|---|---|
sleep | 3 с | Пауза в полёте. |
Запуск
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() # закрываем соединение