write chapter_3

This commit is contained in:
2026-04-01 14:00:38 +03:00
parent 26f2fac07b
commit 2561ba1cbf
21 changed files with 557 additions and 18 deletions

View File

@@ -0,0 +1,59 @@
# 3.4 Автопилот
Автопилот является ключевым компонентом системы навигации БПЛА и реализован в файле `autopilot.py`. Класс `AutoPilot` наследуется от базового класса `Pilot` и обеспечивает управление полётом на основе визуальной одометрии.
\section{Структура автопилота}
Автопилот хранит следующие данные:
\begin{itemize}
\item \textbf{Позиция} — текущее положение БПЛА (объект класса Position)
\item \textbf{Ориентиры} — набор ключевых кадров (VisionChunk) с известными позициями
\item \textbf{Целевой ориентир} — индекс текущего ориентира для коррекции
\item \textbf{Предыдущий кадр} — последний обработанный кадр
\end{itemize}
\section{Оптический поток}
Метод `calculate_optical_flow` вычисляет оптический поток между двумя последовательными кадрами с использованием алгоритма Лукаса-Канаде:
\begin{enumerate}
\item Создание сетки точек для отслеживания (шаг 20 пикселей)
\item Вычисление разреженного оптического потока
\item Фильтрация по ошибке предсказания (порог 12.0)
\item Центрирование координат относительно центра изображения
\end{enumerate}
\section{Коррекция по ориентирам}
Метод `get_position_by_chunk` определяет позицию БПЛА путём сопоставления текущего кадра с ближайшим ориентиром:
\begin{enumerate}
\item Поиск ближайшего ориентира по евклидову расстоянию
\item Сопоставление ключевых точек между кадрами
\item Оценка матрицы гомографии
\item Проверка качества гомографии
\item Обновление позиции при выполнении критериев
\end{enumerate}
\section{Критерии качества}
Для принятия коррекции позиции используются следующие критерии:
\begin{itemize}
\item Минимальное количество инлайеров (не менее 6)
\item Доля инлайеров от общего числа сопоставлений (не менее 60\%)
\item Детерминант матрицы гомографии (от 0.1 до 10.0)
\item Средняя ошибка репроекции (не более 3.0 пикселей)
\end{itemize}
\section{Команды управления}
Автопилот формирует команды управления в виде объекта `PilotCommand`, содержащего:
\begin{itemize}
\item `dangle` — изменение угла курса
\item `velocity` — скорость движения
\item `stop` — флаг остановки
\item `proccessing_time` — время обработки кадра
\end{itemize}

View File

@@ -0,0 +1,5 @@
# 3.4 Автопилот
## Содержание раздела
Описание автопилота находится в файле 3.4_autopilot.md