Skip to main content

Python

Технологическая карта урока

Образовательная организация: [Наименование ОО]
Учитель: [ФИО учителя]
Дата проведения: [Дата]


ЦЕЛЕВОЙ БЛОК

Модуль: 💻 Программирование дронов
Тема урока: 🐍 Python для дронов: Инженеры автономных систем

Цель урока: Сформировать специализированные навыки программирования автономных летательных систем, освоить библиотеки для дронов и протоколы связи.

Планируемые результаты:

Личностные:

  • Понимание ответственности при программировании критических систем
  • Развитие инженерного подхода к обеспечению надежности
  • Формирование культуры безопасного программирования

Предметные:

  • Владение DroneKit, MAVLink для управления БПЛА
  • Понимание архитектуры бортового ПО и наземных станций
  • Навыки программирования автономных миссий и аварийных процедур
  • Умение интегрировать компьютерное зрение с навигацией

Метапредметные (УУД):

  • Познавательные: понимание протоколов связи, анализ телеметрических данных
  • Регулятивные: обеспечение безопасности критических систем
  • Коммуникативные: техническое взаимодействие с автопилотами

ИНСТРУМЕНТАЛЬНЫЙ БЛОК

Задачи урока:

  1. Освоить специализированные библиотеки для управления дронами
  2. Понять архитектуру протокола MAVLink и его реализацию в Python
  3. Разработать систему автономного планирования миссий
  4. Интегрировать компьютерное зрение для навигации

Тип урока: Специализированная лаборатория программирования автономных систем

Учебно-методическое и материально-техническое обеспечение:

  • Программные библиотеки: DroneKit-Python, pymavlink, mavproxy
  • Автопилоты: ArduPilot SITL, симулятор PX4
  • Наземные станции: Mission Planner, QGroundControl
  • Компьютерное зрение: OpenCV для дронов, алгоритмы слежения

ОРГАНИЗАЦИОННО-ДЕЯТЕЛЬНОСТНЫЙ БЛОК

Образовательные технологии:

  • Специализированное программирование критических систем
  • Разработка через тестирование для автономных систем
  • Интеграционное тестирование с реальными автопилотами

Межпредметные связи:

  • Математика: векторная навигация, планирование траекторий
  • Физика: кинематика и динамика полета
  • География: геодезические расчеты, картографические проекции
  • Информатика: сетевые протоколы, системы реального времени

Основные понятия:

  • Протокол MAVLink, DroneKit API, режимы автопилота
  • Навигация по точкам, команды миссий, триггеры безопасности
  • Компьютерное зрение: слежение за объектами, визуальная навигация
  • Симуляция SITL, потоки телеметрии

СТРУКТУРА УРОКА

Этап урока Деятельность учителя Деятельность ученика Планируемые результаты предметные Планируемые результаты УУД

1. Экосистема программирования дронов (8 мин)

| “Анатомия цифрового пилота” | Демонстрирует архитектуру ПО дронов:

🧠 Уровни программного стека:

  • Прошивка: ArduPilot/PX4 - операционная система дрона
  • MAVLink: протокол связи между компонентами
  • API: DroneKit, MAVSDK - высокоуровневые интерфейсы
  • Приложения: пользовательские программы и миссии

🔗 Компоненты экосистемы:

  • Автопилот: бортовой компьютер с датчиками
  • Наземная станция: управление с земли
  • Компаньон-компьютер: дополнительные вычисления
  • Облачные сервисы: телеметрия, логирование

📡 MAVLink - язык дронов:

  • Сердцебиение: сообщения “я жив” каждую секунду
  • Команды: ARM, TAKEOFF, LAND, MISSION_START
  • Телеметрия: GPS, батарея, датчики в реальном времени
  • Протокол миссий: загрузка и выполнение маршрутов

🎯 Специфика программирования дронов:

  • Ограничения времени: жесткие временные рамки
  • Критическая безопасность: ошибка может стоить дрона
  • Распределенные системы: код на нескольких устройствах
  • Ограниченные ресурсы: ограниченная вычислительная мощность | Изучают архитектуру ПО дронов, понимают уровни абстракции, осваивают специфику критических систем | Понимание архитектуры специализированного ПО для дронов | Познавательные: системный анализ сложных программных архитектур
    Регулятивные: понимание критических требований |

2. DroneKit - Python для пилотов (12 мин)

2.1. Подключение и телеметрия (6 мин)

| “Первый контакт с автопилотом” | Осваивает DroneKit для управления дронами:

🔌 Подключение к автопилоту:

1from dronekit import connect, VehicleMode
2vehicle = connect('127.0.0.1:14550', wait_ready=True)
3print(f"Подключились к {vehicle.version}")

📊 Чтение телеметрии в реальном времени:

  • GPS координаты: текущее положение дрона
  • Напряжение батареи: контроль заряда
  • Текущий режим: MANUAL, GUIDED, AUTO
  • Статус вооружения: готовность к полету

🚁 Базовые команды управления:

  • Вооружение: подготовка моторов к запуску
  • Смена режима: переключение между режимами полета
  • Мониторинг состояния: отслеживание изменений

🛡️ Принципы безопасного кода:

  • Всегда проверяем готовность системы
  • Обрабатываем потерю связи (тайм-аут)
  • Корректное завершение соединений
  • Обработка исключений для всех операций | Подключаются к автопилоту, читают телеметрию, отправляют команды, понимают асинхронность систем дронов | Навыки работы с DroneKit API | Познавательные: освоение специализированных API
    Регулятивные: безопасное программирование критических систем |

2.2. Автономная навигация (6 мин)

| “Программируемый автопилот” | Разрабатывает алгоритмы автономной навигации:

🎯 Автоматический взлет:

1def simple_takeoff(target_altitude):
2    vehicle.simple_takeoff(target_altitude)
3    # Ожидание достижения высоты с мониторингом

🗺️ Навигация по GPS координатам:

1target = LocationGlobalRelative(lat, lon, alt)
2vehicle.simple_goto(target)
3# Мониторинг приближения к цели

📐 Геодезические расчеты для дронов:

  • Расчет расстояния между GPS точками
  • Определение азимута движения
  • Преобразование координат
  • Учет кривизны Земли

🎛️ Контроль скорости и траектории:

  • Установка максимальной скорости по земле
  • Управление курсом полета
  • Плавное изменение направления
  • Адаптивный контроль скорости

🛬 Возврат и посадка:

  • Режим возврата домой: автоматический возврат к старту
  • Посадка на месте: вертикальная посадка
  • Мониторинг процесса посадки | Программируют автономную навигацию, осваивают геодезические расчеты, управляют траекторией полета | Навыки программирования автономной навигации | Познавательные: алгоритмы навигации и геодезические расчеты
    Регулятивные: программирование управления траекторией |

3.1. Низкоуровневое управление (5 мин)

| “Прямое общение с автопилотом” | Изучает MAVLink на низком уровне:

📡 Структура сообщений MAVLink:

  • Сердцебиение: проверка связи каждую секунду
  • Командные сообщения: прямые команды автопилоту
  • Потоки телеметрии: данные датчиков
  • Протокол миссий: загрузка точек маршрута

Отправка команд низкого уровня:

1# Команда вооружения через MAVLink
2master.mav.command_long_send(
3    target_system, target_component,
4    mavutil.mavlink.MAV_CMD_COMPONENT_ARM_DISARM,
5    0, 1, 0, 0, 0, 0, 0, 0  # 1=ВООРУЖИТЬ
6)

📊 Чтение специфичных сообщений:

  • GPS_RAW_INT: сырые данные GPS
  • ATTITUDE: углы ориентации
  • VFR_HUD: данные полета для человека
  • BATTERY_STATUS: подробная информация о батарее

🔄 Потоковая обработка телеметрии: Создание обработчиков реального времени для критических данных | Работают с низкоуровневым MAVLink, понимают структуру протокола, обрабатывают телеметрические потоки | Понимание протокола MAVLink и низкоуровневого управления | Познавательные: протоколы связи и обработка данных реального времени
Регулятивные: работа с критическими протоколами связи |

3.2. Программирование миссий (5 мин)

| “Архитектор автономных маршрутов” | Создает и загружает миссии в автопилот:

🗺️ Создание миссий с точками маршрута:

  • Домашняя точка: стартовая позиция
  • Команда взлета: автоматический взлет
  • Последовательность точек: маршрут полета
  • Команда посадки: автоматическая посадка

📤 Загрузка миссии в автопилот:

1cmds = vehicle.commands
2cmds.clear()
3# Добавление команд миссии
4cmds.upload()

▶️ Запуск и мониторинг:

  • Переключение в автоматический режим
  • Мониторинг текущей точки маршрута
  • Отслеживание прогресса выполнения
  • Обработка ошибок выполнения

🎯 Типы команд миссии:

  • NAV_WAYPOINT: полет к точке
  • NAV_LOITER_TIME: зависание на время
  • DO_SET_CAM_TRIGG_DIST: фотосъемка через интервалы
  • DO_CHANGE_SPEED: изменение скорости в полете | Создают программные миссии, загружают в автопилот, мониторят выполнение | Навыки программирования автономных миссий | Познавательные: планирование и программирование сложных миссий
    Регулятивные: управление автономными системами |

4. Компьютерное зрение для навигации (12 мин)

4.1. Визуальная навигация (6 мин)

| “Цифровое зрение пилота” | Интегрирует компьютерное зрение:

👁️ Видеопоток с дрона:

  • Подключение к потоку видео
  • Обработка кадров в реальном времени
  • Минимизация задержек обработки
  • Адаптация к различным камерам

🎯 Обнаружение посадочных меток:

  • Цветовая фильтрация в пространстве HSV
  • Поиск геометрических форм
  • Расчет центра и ориентации метки
  • Фильтрация ложных обнаружений

🧭 Визуальная навигация в реальном времени:

1def visual_navigation(frame):
2    marker_pos = detect_landing_marker(frame)
3    if marker_pos:
4        # Расчет отклонения от центра
5        error_x = marker_pos[0] - frame_center[0]
6        error_y = marker_pos[1] - frame_center[1]
7        # Команды коррекции положения
8        send_velocity_command(error_x * gain, error_y * gain)

📏 Оценка расстояния по размеру объекта:

  • Калибровка камеры для измерений
  • Соотношение размер объекта / расстояние
  • Компенсация искажений объектива
  • Интеграция с высотометром | Интегрируют компьютерное зрение с навигацией, обнаруживают метки, реализуют визуальную навигацию | Навыки интеграции компьютерного зрения с управлением дронами | Познавательные: интеграция компьютерного зрения с робототехникой
    Регулятивные: визуальное управление автономными системами |

4.2. Слежение и режим “следуй за мной” (6 мин)

| “Интеллектуальное преследование” | Создает системы автоматического сопровождения:

🎯 Слежение за объектами с дрона:

  • Инициализация трекера (CSRT, KCF)
  • Обновление положения объекта
  • Обработка потери объекта
  • Повторное обнаружение после потери

🏃 Алгоритм “следуй за мной”:

  • Обнаружение человека (HOG детектор)
  • Центрирование объекта в кадре
  • ПИД-регулятор для удержания объекта
  • Адаптация к скорости движения

📊 Геотаргетинг (проецирование на карту):

1def pixel_to_gps(pixel_x, pixel_y, drone_position, camera_params):
2    # Проецирование пикселя на земную поверхность
3    # Учет высоты дрона и параметров камеры
4    # Возврат GPS координат объекта

🎮 Интеллектуальные режимы:

  • Режим орбиты: облет вокруг объекта
  • Следуй за мной: следование за объектом
  • Точка интереса: направление камеры на цель
  • Режим селфи: автопозиционирование для фото | Создают системы слежения, реализуют режимы “следуй за мной”, проецируют видео на GPS координаты | Навыки создания интеллектуальных режимов полета | Познавательные: интеграция компьютерного зрения с навигацией
    Регулятивные: программирование интеллектуального поведения |

5. Системы безопасности и аварийные процедуры (8 мин)

| “Инженерия безопасности критических систем” | Программирует системы безопасности:

🛡️ Мониторинг критических параметров:

  • Уровень батареи: автоматический возврат при 25%
  • Максимальная высота: ограничение 120м
  • Дистанция от дома: максимум 500м
  • Качество GPS: минимум 6 спутников

🚨 Автоматические реакции на угрозы:

1def emergency_procedures(threat_type):
2    if threat_type == "LOW_BATTERY":
3        vehicle.mode = VehicleMode("RTL")
4    elif threat_type == "GPS_LOST":
5        vehicle.mode = VehicleMode("LAND")
6    elif threat_type == "COMMUNICATION_LOST":
7        # Автоматический аварийный режим

📡 Мониторинг связи:

  • Отслеживание сообщений сердцебиения
  • Обнаружение тайм-аута (10 секунд)
  • Автоматические действия при потере связи
  • Восстановление после переподключения

🔒 Геозоны (виртуальные границы):

  • Определение допустимой зоны полета
  • Проверка текущего положения
  • Автоматический возврат при нарушении
  • Различные типы геозон (круг, многоугольник)

📝 Логирование событий безопасности:

  • Запись всех критических событий
  • Временные метки для каждого события
  • Отправка в облачный мониторинг
  • Локальное резервирование для расследования | Программируют системы безопасности, создают аварийные процедуры, реализуют геозоны | Навыки программирования критических систем безопасности | Регулятивные: обеспечение безопасности критических систем
    Познавательные: проектирование отказоустойчивых систем |

6. Интеграция и проверка (4 мин)

| “Комплексные автономные системы” | Объединяет все компоненты:

🔧 Архитектура комплексного приложения:

  • Основной класс системы автономного дрона
  • Интеграция всех подсистем
  • Координация между компонентами
  • Единая точка управления

🧪 Модульное тестирование для кода дронов:

  • Имитационные объекты для дрона
  • Тестирование функций безопасности
  • Проверка алгоритмов навигации
  • Граничные случаи и условия ошибок

📊 Интеграционное тестирование с симулятором:

  • Программный запуск симулятора
  • Автоматизированное тестирование миссий
  • Проверка интеграции всех систем
  • Тестирование производительности и нагрузки

🏆 Лучшие практики разработки для дронов:

  • Подход оборонительного программирования
  • Учет ограничений реального времени
  • Архитектура “безопасность прежде всего”
  • Всестороннее логирование

🏠 Финальный проект: “Автономный инспектор” - система для автономного обследования объекта с использованием всех технологий | Интегрируют все компоненты, создают комплексные системы, проводят тестирование | Навыки интеграции и тестирования автономных систем | Регулятивные: комплексная интеграция и проверка
Познавательные: системный подход к разработке |


СПЕЦИФИЧНЫЕ ТЕХНОЛОГИИ ДЛЯ ДРОНОВ

🐍 Основные библиотеки Python:

DroneKit-Python:

  • Высокоуровневый API для ArduPilot/PX4
  • Автоматическое управление миссиями
  • Телеметрия реального времени
  • Кроссплатформенная совместимость

pymavlink:

  • Низкоуровневый доступ к MAVLink
  • Полный контроль протокола
  • Поддержка пользовательских сообщений
  • Высокопроизводительные приложения

MAVSDK-Python:

  • Современная асинхронная альтернатива
  • Поддержка async/await
  • Активная разработка
  • Поддержка нескольких дронов

🔧 Специализированные инструменты:

MAVProxy:

  • Наземная станция командной строки
  • Скриптинг и автоматизация
  • Модульная система
  • Телеметрия реального времени

ArduPilot SITL:

  • Симуляция “программа в цикле”
  • Реалистичная физика
  • Различные типы БПЛА
  • Автоматизированное тестирование

БЕЗОПАСНОСТЬ И НАДЕЖНОСТЬ

🛡️ Принципы безопасного программирования:

Оборонительное программирование:

  • Проверка состояния связи
  • Проверка входных параметров
  • Грациозная обработка ошибок
  • Множественные уровни защиты

Ограничения реального времени:

  • Минимизация задержек
  • Приоритет операций безопасности
  • Мониторинг производительности
  • Тайм-ауты для всех операций

Отказоустойчивость:

  • Резервирование в критических системах
  • Автоматическое восстановление
  • Всестороннее логирование
  • Мониторинг состояния здоровья

ПРОФОРИЕНТАЦИОННЫЙ КОМПОНЕНТ

💼 Специализированные карьеры:

Инженер ПО дронов (₽200-500k):

  • Разработка прошивки автопилотов
  • Автономные системы
  • Алгоритмы слияния данных датчиков
  • Системы управления полетом

Инженер компьютерного зрения (₽180-450k):

  • Визуальная навигация
  • Обнаружение объектов для дронов
  • Алгоритмы одновременной локализации и картографии
  • Навигация на базе искусственного интеллекта

Инженер безопасности полетов (₽150-400k):

  • Программирование аварийных систем
  • Сертификация ПО для авиации
  • Оценка и снижение рисков
  • Соответствие авиационным стандартам

🎓 Образовательные направления:

  • Робототехника и автономные системы
  • Компьютерное зрение и машинное обучение
  • Встроенные системы реального времени
  • Авиационное программное обеспечение