diff --git a/README.md b/README.md index 4e0b169..6f25f8d 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,15 @@ 🎓 My science works on FAMCS, BSU +## 4th course project + +* You can read rendered report just + [here](https://drapegnik.github.io/bsu-science/4th_course_work.pdf) +* Check report code in + [release `v2.0.0`](https://github.com/Drapegnik/bsu-science/releases/tag/v2.0.0) +* And watch presentation + [here](https://docs.google.com/presentation/d/e/2PACX-1vRFiTfkBQKGjRlOPysUdg21WhlLiT0j5QRBzsHCf-r8sDQl7aIjv2y03xTsnmNKBomY005vewqOjip5/pub?start=false&loop=false&delayms=3000) + ## 3th course work * You can read rendered report just diff --git a/conclusions.tex b/conclusions.tex index 2827e56..a77300f 100644 --- a/conclusions.tex +++ b/conclusions.tex @@ -1,17 +1,15 @@ \chapter*{ЗАКЛЮЧЕНИЕ} \addcontentsline{toc}{chapter}{ЗАКЛЮЧЕНИЕ} +В процессе выполнения предыдущей работы было выявлено, что метод Structure from Motion не подходит для работы в реальном времени на борту беспилотного летательного аппарата. + В процессе выполнения данной работы были получены следующие результаты: \begin{itemize} \item выявлены требования и поставлена задача; - \item изучены и проанализированы основные алгоритмы компьютерного зрения, основанные на особых точках; - \item разработан простейший алгоритм решения задачи поиска; - \item подготовлены тестовые данные, проведены эксперименты; - \item спроектировано и реализовано приложение, позволяющее строить 3D модели и осуществлять поиск по ним. + \item рассмотрен новый метод Simultaneous Localization and Mapping; + \item изучены и проанализированы различные реализации SLAM. \end{itemize} -Полученные теоретические знания и практические навыки, а также результаты экспериментов являются хорошей основой для будущих исследований. - -Выбранная область и проблема позволяют не останавливаться на достигнутом и, в дальнейшем, продолжить работу над задачей. +Полученные теоретические знания и практические навыки, а также результаты экспериментов являются хорошей основой для будущей работы. В результате исследования выявлено, что последние SLAM алгоритмы являются идеальными кандидатами, для решения задачи навигации в режиме реального времени на борту беспилотного летательного аппарата. \newpage diff --git a/docs/4th_course_project.pdf b/docs/4th_course_project.pdf new file mode 100644 index 0000000..d11aba6 Binary files /dev/null and b/docs/4th_course_project.pdf differ diff --git a/essay.tex b/essay.tex index 7ec3887..22d153c 100644 --- a/essay.tex +++ b/essay.tex @@ -16,6 +16,6 @@ \textbf{Области применения:} модели и алгоритмы, работающие на борту беспилотных летательных аппаратов. -\textbf{Результаты:} теоретическая база, сравнительные эксперименты, алгоритм решения. +\textbf{Результаты:} сравнительные эксперименты, алгоритм решения. \newpage diff --git a/introduction.tex b/introduction.tex index 027ebc4..b596e6d 100644 --- a/introduction.tex +++ b/introduction.tex @@ -10,16 +10,3 @@ \chapter*{ВВЕДЕНИЕ} Таким образом компьютерное зрение сейчас - это новая, очень популярная и активно развивающаяся область информатики, используемая всеми лидерами отрасли. Многие проекты, использующие компьютерное зрение, направлены на автоматизацию рутинной работы, уменьшение человеческого труда. Одна из основных задач - улучшение качества жизни путём высвобождения одного из самых дорогих ресурсов - человеческого времени. - -\newpage - -\chapter*{АКТУАЛЬНОСТЬ И ПРАКТИЧЕСКАЯ ЗНАЧИМОСТЬ} -\addcontentsline{toc}{chapter}{АКТУАЛЬНОСТЬ И ПРАКТИЧЕСКАЯ ЗНАЧИМОСТЬ} - -Как следует из названия БПЛА не имеют пилота, но это не значит, что они не пилотируемы. Управление беспилотником требует специального обучения, сосредоточенности и является очень утомительным для оператора. Основополагающим необходимым условием для работы дрона является наличие GPS сигнала, что делает его очень уязвимым и зависимым от внешних обстоятельств. В отсутствие сигнала системы глобального позиционирования дрон теряет управление. - -В связи с этим возникает задача нахождения и использования альтернативных источников навигации. Так как почти каждый современный беспилотник оснащён камерой, то возможно применение алгоритмов компьютерного зрения. - -С помощью разработанного алгоритма и программного обеспечения будет возможна навигация дрона, используя только камеру. Дополнительные возможности применения обширны: патрулирование заданной территории и обнаружение новых объектов, не присутствовавших ранее, возвращение в заданную точку в случае потери gps сигнала, слежение за данным объектом, построение 3D карт местности, навигация по заданной цифровой карте. - -\newpage diff --git a/literature.tex b/literature.tex index fcf6bac..c741c8f 100644 --- a/literature.tex +++ b/literature.tex @@ -18,9 +18,17 @@ \chapter*{СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ} % \item \label{itm:theia} Официальная документация библиотеки с открытым исходным кодом TheiaSfm [Электронный ресурс] / Chris Sweeney - 2016. - Режим доступа: \url{http://www.theia-sfm.org/}. - Дата доступа: 17.04.2017. - % \item \label{itm:last}\label{itm:qt} Официальный сайт C++ фрэймворка QT [Электронный ресурс] / The Qt Company - 2017. - Режим доступа: \url{https://www.qt.io/}. - Дата доступа: 20.04.2017. + % \item \label{itm:qt} Официальный сайт C++ фрэймворка QT [Электронный ресурс] / The Qt Company - 2017. - Режим доступа: \url{https://www.qt.io/}. - Дата доступа: 20.04.2017. - \item \label{itm:cheeseman} Smith, R.C.; Cheeseman, P. On the Representation and Estimation of Spatial Uncertainty // The International Journal of Robotics Research - 1986. - no. 5 (4). - pp. 56–68. + \item \label{itm:cheeseman} Smith R.C., Cheeseman P. On the Representation and Estimation of Spatial Uncertainty // The International Journal of Robotics Research - 1986. - no. 5 (4). - pp. 56–68. + + \item \label{itm:ptam} Georg Klein, David Murray. Parallel Tracking and Mapping for Small AR Workspaces // Proc. International Symposium on Mixed and Augmented Reality (ISMAR) [Electronic resource] - 2007. - Mode of access: \url{http://www.robots.ox.ac.uk/~gk/publications/KleinMurray2007ISMAR.pdf}. - Date of access: 17.06.2017. + + \item \label{itm:lsd} J. Engel, T. Schöps, D. Cremers. LSD-SLAM: Large-Scale Direct Monocular SLAM // European Conference on Computer Vision (ECCV) [Electronic resource] - 2014. - Mode of access: \url{https://vision.in.tum.de/_media/spezial/bib/engel14eccv.pdf}. - Date of access: 15.10.2017. + + \item \label{itm:orbslam} Raúl Mur-Artal, J. M. M. Montiel, Juan D. Tardós ORB-SLAM: A Versatile and Accurate Monocular SLAM System. // IEEE Transactions on Robotics - 2015. - vol. 31, no. 5 - pp. 1147-1163. + + \item \label{itm:last}\label{itm:svo} Christian Forster, Matia Pizzoli, Davide Scaramuzza. SVO: Fast Semi-Direct Monocular Visual Odometry // IEEE International Conference on Robotics and Automation (ICRA) [Electronic resource] - 2014. - Mode of access: \url{http://rpg.ifi.uzh.ch/docs/ICRA14_Forster.pdf}. - Date of access: 27.09.2017. \end{enumerate} \newpage diff --git a/styles/bsumain.sty b/styles/bsumain.sty index 82ce8c4..110847b 100644 --- a/styles/bsumain.sty +++ b/styles/bsumain.sty @@ -177,13 +177,13 @@ \renewcommand{\@makechapterhead}[1] { \vspace{36pt} % Пустое место вверху страницы { - \centering + % \centering \parindent=18pt \normalfont\large\bfseries - % \chaptername ~ \thechapter{} \par % Номер главы + ГЛАВА \thechapter. % Номер главы #1 \par % Заголовок текста с новой строки \nopagebreak % Не отрываем заголовок от текста - \vspace{36pt} % Пустое место между заголовком и текстом + \vspace{30pt} % Пустое место между заголовком и текстом } } diff --git a/theory/bundle-adjustment.tex b/theory/bundle-adjustment.tex index 2619481..e65381c 100644 --- a/theory/bundle-adjustment.tex +++ b/theory/bundle-adjustment.tex @@ -1,9 +1,9 @@ \section{Алгоритм \quotes{Bundle adjustment}} \textbf{Bundle adjustment} (дословно \quotes{\textit{регулировка пучков}}) - алгоритм проективной геометрии который, решая системы нелинейных уравнений (путем минимизации ошибки) находит 3d координаты ключевых точек в пространстве. Используется на последних этапах процесса Structure from Motion. - + Одна трёхмерная точка в реконструируемой модели соответствует нескольким двухмерным точкам на исходных изображениях (потому что на снимках изображено одна и та же местность или объект с разных ракурсов). Если спроецировать 3d точку на изображения - лучи должны попасть в соответствующие ей 2d точки. И, в свою очередь, все лучи должны собраться в один \quotes{пучок} в точке на трёхмерной модели. - + Суть метода Bundle adjustment: \begin{enumerate} \item Представление всех лучей, которые должны сойтись в одной точке как систему алгебраических уравнений; diff --git a/theory/common.tex b/theory/common.tex index 5eff8db..0e55009 100644 --- a/theory/common.tex +++ b/theory/common.tex @@ -1,8 +1,18 @@ +\chapter{ОБЛАСТЬ КОМПЬЮТЕРНОГО ЗРЕНИЯ} + +\section{Актуальность и практическая значимость} + +Как следует из названия БПЛА не имеют пилота, но это не значит, что они не пилотируемы. Управление беспилотником требует специального обучения, сосредоточенности и является очень утомительным для оператора. Основополагающим необходимым условием для работы дрона является наличие GPS сигнала, что делает его очень уязвимым и зависимым от внешних обстоятельств. В отсутствие сигнала системы глобального позиционирования дрон теряет управление. + +В связи с этим возникает задача нахождения и использования альтернативных источников навигации. Так как почти каждый современный беспилотник оснащён камерой, то возможно применение алгоритмов компьютерного зрения. + +С помощью разработанного алгоритма и программного обеспечения будет возможна навигация дрона, используя только камеру. Дополнительные возможности применения обширны: патрулирование заданной территории и обнаружение новых объектов, не присутствовавших ранее, возвращение в заданную точку в случае потери gps сигнала, слежение за данным объектом, построение 3D карт местности, навигация по заданной цифровой карте. + \section{Постановка задачи} Необходимо изучить и проанализировать различные существующие алгоритмы компьютерного зрения, провести практические эксперименты и впоследствии применить накопленные знания для решения задачи навигации беспилотного летательного аппарата в условиях отсутствия GPS сигнала, с использованием имеющихся с оптических приборов. Ниже будут рассмотрены такие глобальные подходы как Structure from Motion (SFM) и Simultaneous Localization and Mapping (SLAM), с использованием таких алгоритмов как Bundle Adjustment, SIFT, SURF, ORB и их различных реализаций. -\section{Общие теоретические положения} +\section{Основные теоретические понятия} Люди обладают зрением, что позволяет нам распознавать изображения и объекты на них, сравнивать их между собой и всё это мы делаем бессознательно, автоматически. Однако, для машины изображение — всего лишь закодированные данные, набор нулей и единиц. Одной из больших проблем в сопоставлении изображений является очень большая размерность пространства, которое несёт информацию. Если взять картинку размером хотя бы $100*100$ пикселей, то уже получим размерность равную $10^4$ пикселей. Поэтому методы анализа изображения должны быть быстрыми и эффективными. diff --git a/theory/conclusions.tex b/theory/conclusions.tex deleted file mode 100644 index c5eb13d..0000000 --- a/theory/conclusions.tex +++ /dev/null @@ -1,7 +0,0 @@ -\section{Выводы} - -TODO REFACTOR - -В этой главе мной были рассмотрены основные алгоритмы компьютерного зрения, с помощью которых можно находить и сравнивать ключевые точки. Подводя итог анализа: SIFT самый первый, математически точный и медленный дескриптор, на котором основаны большинство современных эвристических алгоритмов feature extraction. SURF - запатентованный в США алгоритм и поэтому является закрытым. Авторы BRIEF приводят результаты экспериментов в которых при одинаковых условиях на некоторых тестовых изображениях точность детектирования с помощью BRIEF почти в $1.5$ раза выше, чем с использованием SURF-дескрипторов. Дескриптор ORB быстрый, устойчивый ко многим искажениям и действительно является эффективной альтернативой алгоритму SIFT. Также ORB находится в свободном доступе. - -В своих дальнейших исследованиях я решил провести эксперименты с использованием SIFT - так как он является стандартом в компьютерном зрении, а ORB использовать как альтернативу и сравнить результаты по времени работы и точности сопоставления. OpenCV предоставляет удобный интерфейс создания дескрипторов и детекторов, что даёт возможность динамически сменять features methods. Практические эксперименты и их результаты будут рассмотрены в следующей главе. diff --git a/theory/index.tex b/theory/index.tex index 2448569..f4b5bf2 100644 --- a/theory/index.tex +++ b/theory/index.tex @@ -1,12 +1,11 @@ -\chapter{ОБЗОР СУЩЕСТВУЮЩИХ АЛГОРИТМОВ И МЕТОДОВ НАВИГАЦИИ} - \input{theory/common.tex} \input{theory/sfm.tex} \input{theory/sift.tex} \input{theory/feature-based-comparison.tex} \input{theory/bundle-adjustment.tex} +\input{theory/sfm-conclusions.tex} \input{theory/slam.tex} \input{theory/slams-comparison.tex} -\input{theory/conclusions.tex} +\input{theory/slam-conclusions.tex} \newpage diff --git a/theory/sfm-conclusions.tex b/theory/sfm-conclusions.tex new file mode 100644 index 0000000..5a72069 --- /dev/null +++ b/theory/sfm-conclusions.tex @@ -0,0 +1,5 @@ +\section{Выводы} + +В этой главе был рассмотрен метод построения 3d реконструкции из набора снимков, называемый Structure from Motion. Были подробно разобраны составляющие его этапы и проанализированы различные алгоритмы, которые могут использоваться на каждом шаге метода. Среди рассмотренных дескрипторов и детекторов можно выделить SIFT - как самый точный и надёжный, и современный ORB - как быстрый, но в то же время достаточно устойчивый. + +Как показали практические эксперименты Structure from Motion больше применим для офлайн построения больших карт местности и 3d реконструкций, чем для работы в реальном времени на борту. Он точный, но медленный. Так как для успешной навигации требуется онлайн работа, то это приводит к необходимости проведения дальнейших исследований и поиска подходящего метода. Метод SLAM будет рассмотрен в следующей главе. \ No newline at end of file diff --git a/theory/sfm.tex b/theory/sfm.tex index b154231..7a88d0d 100644 --- a/theory/sfm.tex +++ b/theory/sfm.tex @@ -1,4 +1,4 @@ -\section{Метод \quotes{Structure from Motion}} +\chapter{МЕТОД STRUCTURE FROM MOTION} \textbf{Structure from Motion} (дословно \quotes{\textit{структура из движения}}, SFM) - техника построения трёхмерных структур из последовательности двухмерных изображений (фотографий, кадров видео) используемая в области компьютерного зрения. В биологии описывает феномен, позволяющий человеку восстанавливать трёхмерную структуру окружающего мира по двухмерным проекциям на сетчатку глаза. @@ -11,7 +11,7 @@ \section{Метод \quotes{Structure from Motion}} \label{fig:sfm} \end{figure} -Таким образом можно выделить следующие составляющие процесса реконструкции: +Таким образом можно выделить следующие составляющие процесса реконструкции: \begin{enumerate} \item Выделение ключевых точек и дескрипторов; diff --git a/theory/slam-conclusions.tex b/theory/slam-conclusions.tex new file mode 100644 index 0000000..6db9d8c --- /dev/null +++ b/theory/slam-conclusions.tex @@ -0,0 +1,7 @@ +\section{Выводы} + +В этой главе был рассмотрен новый метод построения 3d карты местности. Было проведено сравнение с рассмотренным ранее методом SFM. + +SLAM - очень активно развивающаяся в последнее время область с большим количеством работ и достойных реализаций. Активно используется как для навигации, так и в новых сферах информатики и программного обеспечения, таких как виртуальная и дополненная реальность. + +LSD-SLAM и ORB-SLAM разными подходами добиваются работы в реальном времени и могут быть использованы для навигации БПЛА. SVO-SLAM разработан и оптимизирован специально для применения на маломощных устройствах, таких как дроны. diff --git a/theory/slam.tex b/theory/slam.tex index 77baa9b..25e566e 100644 --- a/theory/slam.tex +++ b/theory/slam.tex @@ -1,10 +1,12 @@ -\section{Метод SLAM} +\chapter{МЕТОД SLAM} + +\section{Описание метода} \textbf{Simultaneous Localization and Mapping (SLAM)} - Метод одновременной локализации и построения карты, первоначально предложенный Питером Чесманом (\textit{Peter Cheeseman}) и Рэндалом Смитом (\textit{Randall C. Smith}) для задачи ориентации колёсных роботов с лазерными сенсорами в плоских пространствах и опубликованный в 1986 \hyperref[itm:cheeseman]{[\ref{itm:cheeseman}]}. В общем случае SLAM решает проблему построения или обновления карты неизвестной окружающей среды и одновременной навигации по ней. Используется в различных средах и с различными роботизированными устройствами, например: self-driving автомобили, домашние роботы (пылесосы), планетоходы, воздушные и даже подводные беспилотные аппараты. -Существует много различных реализаций и решений данной проблемы, это связано с тем фактором, что алгоритм сильно зависит от окружающей среды, в которой предполагается его использование. Так, например, выделяют среды з многочисленными ярко выраженными ориентирами (ландшафты с отдельно стоящими деревьями) и с их отсутствием (коридоры, комнаты). Так же алгоритмы разделяют по типу строящейся карты - плоская или трёхмерная. В первом случае может строиться карта препятствий - массив, где элементы, отражающие положение препятствий, имеют значение 1, а все остальные — 0, а во втором - облако точек описывающее окружающий мир. +Существует много различных реализаций и решений данной проблемы, это связано с тем фактором, что алгоритм сильно зависит от окружающей среды, в которой предполагается его использование. Так, например, выделяют среды с многочисленными ярко выраженными ориентирами (ландшафты с отдельно стоящими деревьями) и с их отсутствием (коридоры, комнаты). Так же алгоритмы разделяют по типу строящейся карты - плоская или трёхмерная. В первом случае может строиться карта препятствий - массив, где элементы, отражающие положение препятствий, имеют значение 1, а все остальные — 0, а во втором - облако точек описывающее окружающий мир. SLAM представляет в себе \quotes{проблему курицы и яйца}: карта нужна для навигации по ней, но в то же время оценка текущего положения нужна для построения карты. Несмотря на это существуют алгоритмы, решающие эту проблему в реальном времени. @@ -20,7 +22,7 @@ \section{Метод SLAM} Следующие требования предъявляются к ориентирам: \begin{enumerate} - \item Они должны быть легко выделятся с разных позиций используемым средством восприятия окружающей среды; + \item Они должны легко выделяться с разных позиций используемым средством восприятия окружающей среды; \item Они должны быть уникальны и легко отличимы друг от друга; \item Их должно быть достаточное количество в окружающей среде; \item Они должны быть стационарными. diff --git a/theory/slams-comparison.tex b/theory/slams-comparison.tex index a220503..40a444e 100644 --- a/theory/slams-comparison.tex +++ b/theory/slams-comparison.tex @@ -1,3 +1,31 @@ -\section{Обзор различных SLAM-алгоритмов} +\section{Сравнение различных SLAM-алгоритмов} -TODO +Все рассмотренные в данном разделе алгоритмы и их реализации - находятся в открытом доступе и их исходный код можно найти на GitHub. + +\subsection{Parallel Tracking And Mapping} +\textbf{Parallel Tracking And Mapping} (\hyperref[itm:ptam]{PTAM [\ref{itm:ptam}]}) - визуальный метод адаптирующий SLAM для для области дополненной реальности. + +Впервые в PTAM (в 2007 году) было предложено распараллелить процессы локализации и построения карты. Является прародителем современных быстрых SLAM решений. Как и большинство визуальных методов использует Bundle Adjustment и хранит карту как облако точек. Подробнее работа алгоритма была рассмотрена в предыдущей секции. + +\subsection{Large Scale Direct SLAM} +\textbf{Large Scale Direct SLAM} (\hyperref[itm:lsd]{LSD-SLAM [\ref{itm:lsd}]}) - плотный прямой монокулярный SLAM метод, который вместо использования ключевых точек оперирует непосредственно интенсивностью (числовыми значениями пикселей) изображения. + +LSD-SLAM параллельно запускает три функции: трекинг (локализация), построение карты и оптимизация карты. В отличие от методов основанных на ключевых точках, прямой прямой метод не представляет изображения в виде абстракции (набора ключевых точек), а сохраняет полные изображения. + +Вместо минимизации ошибки проекций точек в этом прямом методе минимизируется попиксельная разность (фотометрическая разность) на ключевых кадрах. Для построения и уточнения карты оценивается попиксельная глубина, вместо оценки особенностей изображений, таких как 3d точки и векторы нормали. + +Также в прямых методах, за счёт сохранения большего количества точек, получается гораздо более плотная и полная 3D реконструкция. + +LSD-SLAM работает в реальном времени даже на CPU, что позволяет использовать его даже на современных смартфонах. Также он является монокулярным - использует только одну камеру. Поэтому он получил широкое распространение в сфере дополненной реальности (\textit{augmented reality}). + +\subsection{ORB SLAM} +\textbf{ORB SLAM} - \hyperref[itm:orbslam]{опубликованный в 2015 [\ref{itm:orbslam}]} монокулярный метод, основанный на особых точках. Как следует из названия алгоритм использует для извлечения ключевых точек рассмотренный ранее детектор \hyperref[itm:orb]{ORB (Oriented FAST and Rotated BRIEF)[\ref{itm:orb}]}. Благодаря высокой скорости ORB (извлечение особых точек за милисекунды) достигается работа в реальном времени, а инвариантность ORB к поворотам камеры и смене освещения обеспечивает надёжность метода. + +В настоящее время метод называют лучшим из всех SLAM основанных на особых точках. + +\subsection{Semi-direct Visual Odometry} +Выбирая между прямыми и основанными на особых точках методами некоторые разработчики решили извлечь все лучшие стороны из обоих подходов. + +\textbf{Semidirect +Visual Odometry} (\hyperref[itm:svo]{SVO [\ref{itm:svo}]}) - полупрямой SLAM метод. Карта в этом подходе представляет собой координаты FAST (Features from Accelerated Segment Test) особых точек. С другой стороны, как и в прямых методах, для оценки используется минимизация разницы глубин, поэтому FAST особенности помещаются в глубинный фильтр и позднее используются для такой оценки. +SVO разрабатывался специально для работы на борту микро летательных аппаратов. Как утверждают разработчики алгоритм работает в реальном времени на скорости 55 кадров в секунду на встроенном бортовом компьютере и 300 кадров в секунду на обычном ноутбуке. \ No newline at end of file diff --git a/titlepage.tex b/titlepage.tex index 009bb6c..faafdbe 100644 --- a/titlepage.tex +++ b/titlepage.tex @@ -29,7 +29,7 @@ \begin{flushright} Пажитных Ивана Павловича\\ студента 4 курса\\ - специальность "информатика"\\ + специальность \quotes{информатика}\\ \end{flushright} \vspace{1em}