Skip to content

Commit 9487959

Browse files
committed
add section about slam
1 parent deb2695 commit 9487959

6 files changed

+47
-6
lines changed

literature.tex

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ \chapter*{СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ}
1919
% \item \label{itm:theia} Официальная документация библиотеки с открытым исходным кодом TheiaSfm [Электронный ресурс] / Chris Sweeney - 2016. - Режим доступа: \url{http://www.theia-sfm.org/}. - Дата доступа: 17.04.2017.
2020

2121
% \item \label{itm:last}\label{itm:qt} Официальный сайт C++ фрэймворка QT [Электронный ресурс] / The Qt Company - 2017. - Режим доступа: \url{https://www.qt.io/}. - Дата доступа: 20.04.2017.
22+
23+
\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.
2224
\end{enumerate}
2325

2426
\newpage

theory/bundle-adjustment.tex

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
\section{Алгоритм \quotes{Bundle adjustment}}
22

3-
\textbf{Bundle adjustment} (\quotes{\textit{регулировка пучков}}) - алгоритм проективной геометрии который, решая системы нелинейных уравнений (путем минимизации ошибки) находит 3d координаты ключевых точек в пространстве.
3+
\textbf{Bundle adjustment} (дословно \quotes{\textit{регулировка пучков}}) - алгоритм проективной геометрии который, решая системы нелинейных уравнений (путем минимизации ошибки) находит 3d координаты ключевых точек в пространстве. Используется на последних этапах процесса Structure from Motion.
44

55
Одна трёхмерная точка в реконструируемой модели соответствует нескольким двухмерным точкам на исходных изображениях (потому что на снимках изображено одна и та же местность или объект с разных ракурсов). Если спроецировать 3d точку на изображения - лучи должны попасть в соответствующие ей 2d точки. И, в свою очередь, все лучи должны собраться в один \quotes{пучок} в точке на трёхмерной модели.
66

theory/sfm.tex

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
\section{Метод \quotes{Structure from Motion}}
22

3-
\textbf{Structure from Motion} (\quotes{\textit{структура из движения}}, SFM) - техника построения трёхмерных структур из последовательности двухмерных изображений (фотографий, кадров видео) используемая в области компьютерного зрения. В биологии описывает феномен, позволяющий человеку восстанавливать трёхмерную структуру окружающего мира по двухмерным проекциям на сетчатку глаза.
3+
\textbf{Structure from Motion} (дословно \quotes{\textit{структура из движения}}, SFM) - техника построения трёхмерных структур из последовательности двухмерных изображений (фотографий, кадров видео) используемая в области компьютерного зрения. В биологии описывает феномен, позволяющий человеку восстанавливать трёхмерную структуру окружающего мира по двухмерным проекциям на сетчатку глаза.
44

55
На рисунке \ref{fig:sfm} представлена схема, демонстрирующая процесс восстанавления 3d модели поверхности.
66

theory/sift.tex

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
\section{Алгоритм SIFT}
22

3-
\textbf{Scale-invariant feature transform} (SIFT) - алгоритм компьютерного зрения для выделения ключевых точек и их дескрипторов. Алгоритм был разработан в Университете Британской Колумбии и опубликован Дэвидом Лоу (\textit{David G. Lowe}) в 1999 \hyperref[itm:lowe]{[\ref{itm:lowe}]}.
3+
\textbf{Scale-invariant feature transform} (SIFT) - алгоритм компьютерного зрения для выделения ключевых точек и их дескрипторов. Алгоритм был разработан в Университете Британской Колумбии и опубликован Дэвидом Лоу (\textit{David G. Lowe}) в 1999 году \hyperref[itm:lowe]{[\ref{itm:lowe}]}.
44

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

theory/slam.tex

+41-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,42 @@
1-
\section{Задача SLAM}
1+
\section{Метод SLAM}
22

3-
TODO
3+
\textbf{Simultaneous Localization and Mapping (SLAM)} - Метод одновременной локализации и построения карты, первоначально предложенный Питером Чесманом (\textit{Peter Cheeseman}) и Рэндалом Смитом (\textit{Randall C. Smith}) для задачи ориентации колёсных роботов с лазерными сенсорами в плоских пространствах и опубликованный в 1986 \hyperref[itm:cheeseman]{[\ref{itm:cheeseman}]}.
4+
5+
В общем случае SLAM решает проблему построения или обновления карты неизвестной окружающей среды и одновременной навигации по ней. Используется в различных средах и с различными роботизированными устройствами, например: self-driving автомобили, домашние роботы (пылесосы), планетоходы, воздушные и даже подводные беспилотные аппараты.
6+
7+
Существует много различных реализаций и решений данной проблемы, это связано с тем фактором, что алгоритм сильно зависит от окружающей среды, в которой предполагается его использование. Так, например, выделяют среды з многочисленными ярко выраженными ориентирами (ландшафты с отдельно стоящими деревьями) и с их отсутствием (коридоры, комнаты). Так же алгоритмы разделяют по типу строящейся карты - плоская или трёхмерная. В первом случае может строиться карта препятствий - массив, где элементы, отражающие положение препятствий, имеют значение 1, а все остальные — 0, а во втором - облако точек описывающее окружающий мир.
8+
9+
SLAM представляет в себе \quotes{проблему курицы и яйца}: карта нужна для навигации по ней, но в то же время оценка текущего положения нужна для построения карты. Несмотря на это существуют алгоритмы, решающие эту проблему в реальном времени.
10+
11+
SLAM можно разбить на части:
12+
\begin{enumerate}
13+
\item Извлечение ориентиров (\textit{Landmarks extraction});
14+
\item Объединение (сопостовление) ориентиров с разных позиций (\textit{Data association});
15+
\item Оценка положения (\textit{State estimation});
16+
\item Обновление положения и ориентиров (\textit{State and landmarks update}).
17+
\end{enumerate}
18+
19+
Одной из важнейших состовляющих SLAM процесса, является получение сведений о текущей позиции робота через одометрию. Одометрия - использование данных о движении приводов, углах поворота колёс / лопастей, текущей скорости, показаний гироскопа для оценки перемещения. Одометрия даёт лишь приблизительное положение, которое SLAM и уточняет основываясь на ориентирах.
20+
21+
Следующие требования предъявляются к ориентирам:
22+
\begin{enumerate}
23+
\item Они должны быть легко выделятся с разных позиций используемым средством восприятия окружающей среды;
24+
\item Они должны быть уникальны и легко отличимы друг от друга;
25+
\item Их должно быть достаточное количество в окружающей среде;
26+
\item Они должны быть стационарными.
27+
\end{enumerate}
28+
29+
При использовании для навигации БПЛА камеры под все описанные требования подходят ключевые точки, которые мы рассматривали ранее. Они могут быть выделены и сопоставлены с помощью уже рассмотренных алгоритмов SIFT или ORB. В таком случае SLAM называют основанным на особых точках (\textit{feature based}).
30+
31+
Рассмотрим работу алгоритма на примере:
32+
\begin{enumerate}
33+
\item Робот выделяет ориентиры и их позиции;
34+
\item Робот двигается. Через одометрию он вычисляет позицию в которой он \quotes{думает} что находится;
35+
\item Робот опять оценивает положения ориентиров, но получает, что они находятся не там, где он \quotes{думает} они должны находится по расчётам. Это означает что положение полученное через одеметрию не точное;
36+
\item Через данные о действительном расположении ориентиров обновляется позиция робота - таким образом происходит уточнение;
37+
\item Положения ориентиров сохраняются для дальнейшей навигации по ним, алгоритм переходит на первый шаг.
38+
\end{enumerate}
39+
40+
Для возможности работы алгоритма в реальном времени обработка каждой следующей порции данных (ориентиров, кадров с камеры) должна выполнятся до того, как будут получены новые данные. Это и отличает SLAM от рассмотренного ранее SFM, где на вход поступает сразу большое количество изображений и обрабатываются офлайн за большое количество времени.
41+
42+
Для триангуляции и расположения камер используется рассмотренный ранее Bundle Adjustment. Проблема в том что время его работы быстро растёт с увеличением размера построенной карты. Решается данная проблема с помощью разнесения задач локализации и построения карты по разным процессам. Ориентация происходит в реальном времени, а Bundle adjustment перестраивает карту в фоновом режиме. По завершению работы фоновый процесс обновляет карту для процесса ориентации, а тот, в свою очередь, добавляет новые ориентиры для уточнения карты и это повторяется бесконечно.

theory/slams-comparison.tex

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
\section{Обзор различных реализаций решения задачи SLAM}
1+
\section{Обзор различных SLAM-алгоритмов}
22

33
TODO

0 commit comments

Comments
 (0)