Files
autopilot/dissertation/chapter_3/3.4_autopilot/3.4_autopilot.md
2026-04-01 14:00:38 +03:00

60 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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}