Перейти к содержимому

Python для программиста БПЛА и робототехники

k00. Обзор «UAV Python Pro» k00

Это нулевой конспект курса «UAV Python Pro» — Python для программиста беспилотных летательных аппаратов (БПЛА, проще говоря — дронов) и робототехники.

k00. Обзор «UAV Python Pro» мод.: 06.09.26

k01. Старт: окружение Windows k01

На этом уроке вы соберёте рабочее место программиста БПЛА на Windows: язык Python, среда разработки PyCharm Pro, система контроля версий Git и аккуратная папка курса. Без этого шага нельзя надёжно запускать симулятор, скрипты MAVLink и проекты на Raspberry Pi.

k01. Старт: окружение Windows мод.: 06.09.26

k02. Старт: Mission Planner без полёта k02

На этом уроке вы установите Mission Planner и спокойно разберёте его как инструмент наземной станции: какие экраны за что отвечают, как выглядит подключение, где живут параметры, миссии и логи.

k02. Старт: Mission Planner без полёта мод.: 06.09.26

k03. Python intensive: синтаксис, типы, ввод-вывод k03

С этого урока начинается ускоренный, но подробный Python «с нуля» внутри вашего проекта PyCharm. Мы не учим язык «вообще для сайтов», а сразу привязываем примеры к телеметрии, порогам безопасности и простым решениям автопилотной логики.

k03. Python intensive: синтаксис, типы, ввод-вывод мод.: 06.09.26

k04. Коллекции list, tuple, dict, set k04

В реальной работе с дроном данные телеметрии почти всегда приходят пачками: список точек маршрута, словарь параметров автопилота, набор уникальных режимов из лога, очередь последних отсчётов телеметрии. На этом уроке вы разберёте четыре встроенные коллекции Python — list, tuple, dict и set — и поймёте, какую из них выбирать под задачу БПЛА.

k04. Коллекции list, tuple, dict, set мод.: 06.09.26

k05. Управление потоком и функции k05

Учимся повторять действия (циклы) и выносить повторяющуюся логику в функции — именованные блоки кода с входом и выходом.

k05. Управление потоком и функции мод.: 06.09.26

k06. Mодули, пакеты, venv и pip. k06

Когда функций становится много, их нельзя держать все в одном файле: проект перестанет читаться. На этом уроке вы разберёте, как Python раскладывает код по файлам и папкам, как подключать свой код через import, зачем виртуальное окружение venv (вы уже создали его на K01) и как аккуратно ставить библиотеки через pip.

k06. Mодули, пакеты, venv и pip. мод.: 06.09.26

k07. Файлы, JSON, CSV, YAML k07

Телеметрию нужно сохранять. Конфигурацию соединения нужно читать с диска. Трек полёта нужно отдать в таблицу. На этом уроке вы научитесь записывать и читать текстовые файлы, освоите три распространённых формата данных — JSON, CSV и YAML — и познакомитесь с аккуратной записью файла через временный файл.

k07. Файлы, JSON, CSV, YAML мод.: 06.09.26

k08. Исключения, логирование, отладка k08

На этом занятии вы научитесь перехватывать ожидаемые ошибки кода, создавать учебное исключение предметной области, вести журнал работы с помощью модуля logging и понимать, чем журнал отличается от вывода, который создаёт функция print.

k08. Исключения, логирование, отладка мод.: 06.09.26

k09. классы, dataclasses и Enum k09

До сих пор телеметрию и точки маршрута вы часто описывали словарями и кортежами. Такой способ работает, но имена полей легко перепутать, а допустимые режимы полёта остаются «просто строками». На этом уроке вы научитесь собирать данные и поведение в типы: обычный класс с методами, dataclass для снимков состояния, Enum для ограниченного набора режимов и композицию объектов.

k09. классы, dataclasses и Enum мод.: 06.09.26

k10. Потоки, asyncio и очередь сообщений k10

До сих пор учебные программы выполнялись в одном потоке управления: строка за строкой, без параллельной работы. В программах для БПЛА часто нужно одновременно принимать поток телеметрии и принимать решения, ставить команды в очередь и не блокировать весь процесс навечно, если сообщение задерживается. На этом уроке вы познакомитесь с тремя согласованными идеями: поток threading, очередь queue.

k10. Потоки, asyncio и очередь сообщений мод.: 06.09.26

k11. Тесты pytest и заглушки k11

До сих пор вы проверяли программы, запуская их и глядя на печать в консоли. Такой способ быстро перестаёт масштабироваться: после каждого изменения функции классификации напряжения или загрузки JSON приходится вручную вспоминать все крайние случаи. На этом уроке вы научитесь фиксировать ожидаемое поведение в виде автоматических тестов с помощью pytest, проверять исключения через pytest.raises и подменять обращение к диску с помощью unittest.mock.

k11. Тесты pytest и заглушки мод.: 06.09.26