|
1 |
| -\section{Задача SLAM} |
| 1 | +\section{Метод SLAM} |
2 | 2 |
|
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 перестраивает карту в фоновом режиме. По завершению работы фоновый процесс обновляет карту для процесса ориентации, а тот, в свою очередь, добавляет новые ориентиры для уточнения карты и это повторяется бесконечно. |
0 commit comments