-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
47 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,42 @@ | ||
\section{Задача SLAM} | ||
\section{Метод SLAM} | ||
|
||
TODO | ||
\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, а во втором - облако точек описывающее окружающий мир. | ||
|
||
SLAM представляет в себе \quotes{проблему курицы и яйца}: карта нужна для навигации по ней, но в то же время оценка текущего положения нужна для построения карты. Несмотря на это существуют алгоритмы, решающие эту проблему в реальном времени. | ||
|
||
SLAM можно разбить на части: | ||
\begin{enumerate} | ||
\item Извлечение ориентиров (\textit{Landmarks extraction}); | ||
\item Объединение (сопостовление) ориентиров с разных позиций (\textit{Data association}); | ||
\item Оценка положения (\textit{State estimation}); | ||
\item Обновление положения и ориентиров (\textit{State and landmarks update}). | ||
\end{enumerate} | ||
|
||
Одной из важнейших состовляющих SLAM процесса, является получение сведений о текущей позиции робота через одометрию. Одометрия - использование данных о движении приводов, углах поворота колёс / лопастей, текущей скорости, показаний гироскопа для оценки перемещения. Одометрия даёт лишь приблизительное положение, которое SLAM и уточняет основываясь на ориентирах. | ||
|
||
Следующие требования предъявляются к ориентирам: | ||
\begin{enumerate} | ||
\item Они должны быть легко выделятся с разных позиций используемым средством восприятия окружающей среды; | ||
\item Они должны быть уникальны и легко отличимы друг от друга; | ||
\item Их должно быть достаточное количество в окружающей среде; | ||
\item Они должны быть стационарными. | ||
\end{enumerate} | ||
|
||
При использовании для навигации БПЛА камеры под все описанные требования подходят ключевые точки, которые мы рассматривали ранее. Они могут быть выделены и сопоставлены с помощью уже рассмотренных алгоритмов SIFT или ORB. В таком случае SLAM называют основанным на особых точках (\textit{feature based}). | ||
|
||
Рассмотрим работу алгоритма на примере: | ||
\begin{enumerate} | ||
\item Робот выделяет ориентиры и их позиции; | ||
\item Робот двигается. Через одометрию он вычисляет позицию в которой он \quotes{думает} что находится; | ||
\item Робот опять оценивает положения ориентиров, но получает, что они находятся не там, где он \quotes{думает} они должны находится по расчётам. Это означает что положение полученное через одеметрию не точное; | ||
\item Через данные о действительном расположении ориентиров обновляется позиция робота - таким образом происходит уточнение; | ||
\item Положения ориентиров сохраняются для дальнейшей навигации по ним, алгоритм переходит на первый шаг. | ||
\end{enumerate} | ||
|
||
Для возможности работы алгоритма в реальном времени обработка каждой следующей порции данных (ориентиров, кадров с камеры) должна выполнятся до того, как будут получены новые данные. Это и отличает SLAM от рассмотренного ранее SFM, где на вход поступает сразу большое количество изображений и обрабатываются офлайн за большое количество времени. | ||
|
||
Для триангуляции и расположения камер используется рассмотренный ранее Bundle Adjustment. Проблема в том что время его работы быстро растёт с увеличением размера построенной карты. Решается данная проблема с помощью разнесения задач локализации и построения карты по разным процессам. Ориентация происходит в реальном времени, а Bundle adjustment перестраивает карту в фоновом режиме. По завершению работы фоновый процесс обновляет карту для процесса ориентации, а тот, в свою очередь, добавляет новые ориентиры для уточнения карты и это повторяется бесконечно. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
\section{Обзор различных реализаций решения задачи SLAM} | ||
\section{Обзор различных SLAM-алгоритмов} | ||
|
||
TODO |