Python для программиста БПЛА и робототехники
k00. Обзор «UAV Python Pro»
k00
Это нулевой конспект курса «UAV Python Pro» — Python для программиста беспилотных летательных аппаратов (БПЛА, проще говоря — дронов) и робототехники.
k01. Старт: окружение Windows
k01
На этом уроке вы соберёте рабочее место программиста БПЛА на Windows: язык Python, среда разработки PyCharm Pro, система контроля версий Git и аккуратная папка курса. Без этого шага нельзя надёжно запускать симулятор, скрипты MAVLink и проекты на Raspberry Pi.
k02. Старт: Mission Planner без полёта
k02
На этом уроке вы установите Mission Planner и спокойно разберёте его как инструмент наземной станции: какие экраны за что отвечают, как выглядит подключение, где живут параметры, миссии и логи.
k03. Python intensive: синтаксис, типы, ввод-вывод
k03
С этого урока начинается ускоренный, но подробный Python «с нуля» внутри вашего проекта PyCharm. Мы не учим язык «вообще для сайтов», а сразу привязываем примеры к телеметрии, порогам безопасности и простым решениям автопилотной логики.
k04. Коллекции list, tuple, dict, set
k04
В реальной работе с дроном данные телеметрии почти всегда приходят пачками: список точек маршрута, словарь параметров автопилота, набор уникальных режимов из лога, очередь последних отсчётов телеметрии. На этом уроке вы разберёте четыре встроенные коллекции Python — list, tuple, dict и set — и поймёте, какую из них выбирать под задачу БПЛА.
k05. Управление потоком и функции
k05
Учимся повторять действия (циклы) и выносить повторяющуюся логику в функции — именованные блоки кода с входом и выходом.
k06. Mодули, пакеты, venv и pip.
k06
Когда функций становится много, их нельзя держать все в одном файле: проект перестанет читаться. На этом уроке вы разберёте, как Python раскладывает код по файлам и папкам, как подключать свой код через import, зачем виртуальное окружение venv (вы уже создали его на K01) и как аккуратно ставить библиотеки через pip.
k07. Файлы, JSON, CSV, YAML
k07
Телеметрию нужно сохранять. Конфигурацию соединения нужно читать с диска. Трек полёта нужно отдать в таблицу. На этом уроке вы научитесь записывать и читать текстовые файлы, освоите три распространённых формата данных — JSON, CSV и YAML — и познакомитесь с аккуратной записью файла через временный файл.
k08. Исключения, логирование, отладка
k08
На этом занятии вы научитесь перехватывать ожидаемые ошибки кода, создавать учебное исключение предметной области, вести журнал работы с помощью модуля logging и понимать, чем журнал отличается от вывода, который создаёт функция print.
k09. классы, dataclasses и Enum
k09
До сих пор телеметрию и точки маршрута вы часто описывали словарями и кортежами. Такой способ работает, но имена полей легко перепутать, а допустимые режимы полёта остаются «просто строками». На этом уроке вы научитесь собирать данные и поведение в типы: обычный класс с методами, dataclass для снимков состояния, Enum для ограниченного набора режимов и композицию объектов.
k10. Потоки, asyncio и очередь сообщений
k10
До сих пор учебные программы выполнялись в одном потоке управления: строка за строкой, без параллельной работы. В программах для БПЛА часто нужно одновременно принимать поток телеметрии и принимать решения, ставить команды в очередь и не блокировать весь процесс навечно, если сообщение задерживается. На этом уроке вы познакомитесь с тремя согласованными идеями: поток threading, очередь queue.
k11. Тесты pytest и заглушки
k11
До сих пор вы проверяли программы, запуская их и глядя на печать в консоли. Такой способ быстро перестаёт масштабироваться: после каждого изменения функции классификации напряжения или загрузки JSON приходится вручную вспоминать все крайние случаи. На этом уроке вы научитесь фиксировать ожидаемое поведение в виде автоматических тестов с помощью pytest, проверять исключения через pytest.raises и подменять обращение к диску с помощью unittest.mock.