Анализ технологии мгновенного позиционирования и построения карты
1. SLAM Обзор
SLAM: Одновременная локализация и картирование, локация в реальном времени и технологии построения карт. Это относится к: робот запускается из неизвестного места в неизвестной среде, определяет свое положение и положение посредством повторного наблюдения характеристик окружающей среды во время движения, а затем строит инкрементальную карту окружающей среды в соответствии с его положением, тем самым достигая одновременного позиционирования и карты. Цель строительства.
Используя технологию SLAM, вы можете сообщить роботу, где вы находитесь в неизвестной среде в режиме реального времени, и одновременно нарисовать карту окружающей среды. SLAM играет центральную роль в технологиях позиционирования, отслеживания и планирования роботов. Робот без SLAM походит на смартфон, который не может получить доступ к Интернету в эпоху мобильного Интернета и не может играть важную роль. Чтобы просто описать сценарий применения SLAM для людей, которые не понимают SLAM, лучшим роботом для объяснения должен быть стремительный робот.
Как ВКЛЮЧИТЬ МУЗЫКУ в ГОЛОСОВОЙ ЧАТ КС ГО и ДРУГИХ ИГР? ПРОГРАММА SLAM (МУЗЫКА / ЗВУКИ)
Из рисунка видно, что подметающий робот может нарисовать карту области, через которую он проходит, и спланировать подметающий путь, чтобы очистить его. Эта технология позиционирования и построения карт в реальном времени — это то, что мы называем технологией SLAM. Чтобы использовать технологию SLAM, робот сначала должен быть оснащен как минимум одним устройством измерения расстояния, а информация об окружающей среде робота может быть получена через устройство измерения расстояния. В настоящее время более распространенные устройства для измерения расстояния в основном включают лазерное измерение расстояния, ультразвуковое измерение расстояния и измерение расстояния изображения.
Ультразвуковое измерение расстояния
Высокая точность измерений, высокая эффективность и производительность не требуют большой обработки данных.
Сильное проникновение под водой и низкая цена
Подражая человеческому мышлению, вы можете получить больше информации,
Цена относительно дорогая, не может быть измерена под водой, а дальномерное стекло недействительно
Низкая точность измерений
Вывод требует много вычислений и не может быть использован в темной комнате
Из таблицы видно, что измерение расстояния с использованием метода лазерного измерения расстояния может обеспечить более высокую точность пространственного позиционирования, а требования к вычислениям ниже. Такие характеристики делают лазерное позиционирование легко применимым к SLAM. Чтобы облегчить понимание каждого, мы будем использовать технологию лазерного позиционирования в двухмерном пространстве, чтобы объяснить конкретный процесс применения технологии SLAM.
Развитие технологии SLAM способствовало развитию технологий локализации, отслеживания и планирования пути, которые, в свою очередь, оказывают значительное влияние на популярные области исследований, такие как дроны, беспилотное вождение и робототехника.
Understanding SLAM Using Pose Graph Optimization | Autonomous Navigation, Part 3
Давайте посмотрим на области, где технология SLAM играет роль.
Рисунок 1. Области применения SLAM
VR / AR: помощь в усилении визуальных эффектов.Технология SLAM может создать карту с более реалистичными визуальными эффектами, чтобы визуализировать наложенный эффект виртуальных объектов для текущей перспективы, делая ее более реальной без ощущения нарушения. Среди продуктов, представляющих VR / AR, Microsoft Hololens, Google ProjectTango и MagicLeap используют SLAM в качестве метода визуального улучшения.
Поле БПЛА и позиционирование робота и поле навигации: моделирование карты.SLAM может быстро создавать локальные 3D-карты и в сочетании с географической информационной системой (GIS), технологией визуального распознавания объектов, может помочь беспилотникам определять препятствия на пути и автоматически избегать препятствий на пути к плану, а также может помогать роботам выполнять планирование пути, автономное исследование и навигацию И другие задачи. Дрон камеры Hover, который когда-то разбил круг друзей в Соединенных Штатах, использовал технологию SLAM. Подметальные машины Domestic Cobos и Tammy используют алгоритм SLAM в сочетании с методами лидара или камеры, что позволяет подметальной машине эффективно рисовать карты помещений, интеллектуально анализировать и планировать среду подметания, таким образом успешно превращаясь в интеллектуальный навигационный массив.
Беспилотное вождение: визуальный одометр.Технология SLAM может обеспечивать функцию визуального одометра и интегрироваться с другими методами позиционирования, такими как GPS, для удовлетворения потребностей беспилотного вождения для точного позиционирования. Например, автомобиль Google с автоматическим управлением на основе Lidar Slam, основанный на технологии лидара, и автомобиль Wildcat, автомобиль с автоматическим управлением, модифицированный Mobile Robotics Group из Оксфордского университета за 11 лет, были успешно протестированы.
Во-вторых, структура SLAM
С момента появления концепции SLAM в 1980-х годах и до настоящего времени технология SLAM прошла более чем 30-летнюю историю. Аппаратные средства и алгоритмы, используемые в технологии SLAM, также «идут в ногу со временем», и инфраструктура технологии SLAM постепенно обогащается. С точки зрения аппаратного обеспечения, датчики, используемые в системе SLAM, эволюционировали от раннего сонара до позднего 2D / 3D лидара, к монокулярным и бинокулярным камерам, RGBD, ToF и другим камерам глубины, а также к инерциальным единицам измерения (IMU) и т. Д. Датчик слияния. С точки зрения программных алгоритмов начальные методы на основе фильтров, такие как расширенный фильтр Калмана (EKF), фильтр частиц (PF) и т. Д., Перешли на методы, основанные на оптимизации.
Система SLAM обычно делится на пять модулей. Структура системы показана на рисунке 2, в том числе:
- Данные датчика: в основном используются для сбора различных типов исходных данных в реальных условиях. Включая данные лазерного сканирования, данные видеоизображения, данные облака точек и т. Д.
- Визуальный одометр: в основном используется для оценки относительного положения движущихся целей в разное время. В том числе применение алгоритма, таких как сопоставление функций и прямая м робота). Полученная разница должна быть отражена во всех предыдущих замерах особенностей как корректирующий коэффициент – вероятность.
2) Обновление общего представления о карте мира и траектории робота (Global Optimisation)
На основе вновь полученных данных производится уточнение текущих представлений о мире – пересчет позиций робота (state estimation), особенностей и их вероятностей. Дополнительно производится поиск замыканий (loop closure – ситуаций, когда робот возвращается в те места где уже побывал). После всех вычислений обновляется общее представление мира – позы робота (state update) и координаты особенностей (landmark update).На основе глобальной структуры, хранящей все перемещения робота и представление мира в любой момент времени возможно воссоздать карту миру с траекторией движения робота. Для визуализации (Reconstructing world map) используются сторонние средства к методам SLAM особого отношения не имеющие.
Методы SLAM
Популярнейшим методом для решения был EKM – Extended Kalman Filter.
На каждом шаге у нас есть набор ранее полученных особенностей (landmark) и только что поступившие данные (дальномерные и RGB). На основании новых и предыдущих кадров мы можем определить смещение робота (используя методы визуальной одометрии) и предсказать новую позицию робота.С другой стороны, из нового кадра, мы можем выделить местоположение особенностей и вычислить положение робота относительно их. На основе разницы между двумя этими оценками позиций робота обновляются вероятности/веса для всех особенностей и корректируются позы-траектория движения робота. Детальное описание – по ссылкам ниже. В качестве структуры для хранения информации о мире и траектории движения робота – используется разрастающаяся со временем матрица ковариации, содержащая на каждом шаге исчерпывающую информацию о нашем текущем представлении мира. В случае большего числа поз – лучше подойдет particle filter, видео – отличный пример из курса ai-class от Sebastian Thrun.
Loop closure – обнаружение петлей. Обособлено от задач SLAM стоит вопрос как отслеживать ситуации когда робот возвращается туда, где уже побывал (в литературе это называется loop closure – замыкание, петля). Одно из решений – так называемая корзина “слов” (англ. Bags of Binary Words).
Каждому кадру ставится в соответствие дескриптор (BRIEF descriptor), вычисляемый на основе визуальных особенностей изображения. Для хранения информации о изображениях, на основе данных для обучения, формируется словарь в виде дерева, содержащий “слова” для представления дескрипторов и их веса (отражающих насколько часто они встречались в наборе изображений для обучения). Для формирования “слова” производится поиск визуальных особенностей на основе данных для тренинга и их последующая группировка (с помощью метода k-среднего). Каждый последующий уровень дерева получается путем повторения данной операции с дескриптором родительского узла. В результате, при анализе ново-поступивших данных производится быстрое (см дистанция Хэмминга) разложение идентификатора текущего кадра в линейную комбинацию узлов дерева, где в роли коэффициентов выступают их веса – вероятности.
Как уже упоминалось выше, в настоящее время наиболее популярно представление проблемы SLAM в виде графа, где вершины и ребра представляют позицию робота и месторасположение особенностей сцены. iSam – одна из открытых реализаций, построенная по этому принципу.
В iSam используется двудольный граф состоящий из узлов-поз, содержащих результаты вычислений координат робота и узлов-факторов, содержащих результаты оценок визуальной одометрии, отражающей сдвиг между двумя последовательными позами. Дополнительно используется множество узлов-особенностей, содержащей вычисленные координаты особенностей представленных на сцене.
Узлы-позы и узлы-особенности не могут быть связаны друг с другом напрямую, а только через узлы-факторы. В качестве расширения могут быть использованы узлы-якоря – особенности наблюдаемые разными роботами (одновременно) или особенности которые видит один и тот же робот в течении нескольких независимых путешествий. Ядро системы производит оптимизацию данного графа выравнивая все узлы на основе новых данных. Возможна работа и без особенностей и без узлов-якорей – только на основе результатов визуальной одометрии.
В настоящее время наиболее быстрые результаты дает TORO (ценою точности вычисления).
Данный метод определяет конфигурация графа при которой вероятность наблюдаемых особенностей будет максимальна. Подходов к решению подобных задач – видимо не видимо (гуглить по “Sparse Bundle Adjustments”, “Structure from motion”, “Visual SLAM”), в основу TORO лег метод стохастического градиентного спуска – (SGD – stochastic gradient descent). Суть данного метода в последовательной оптимизации всего графа для каждого ограничения (взаимного расположения особенностей и робота). Для объединения данных оптимизации с нескольких ограничений используются специальные коэффициенты для корректировки значений остатка. Ключевое достижение данного метода – представление данных для SGD – в TORO используется дерево параметров в качестве индексов для линейного уравнения поз робота.Хочу попробовать поиграться со SLAM – есть ли что-нибудь готовое?
Если вкратце – нет я не встречал. Свободно доступны различные реализации отдельных компонентов из которых при остром желании (и навыке) можно самостоятельно собрать готовые системы.
Желающим поиграться с какой-нибудь готовой реализацией можно посоветовать RGBDSLAM. На момент написания – инструкция по сборке устарела и требуется как следует прошерстить раздел http://answers.ros.org/ на предмет каждой ошибки. Гипотетически, если следовать уточнениям в ссылках ниже – и использовать эталонную систему авторов – т.е. 64 разрядную убунту – должно работать. Лично я собрать то ее собрал (на убунте 32), убив пару дней, однако спорадически возникающие сегфолты и пропадающий gui задушил желание поиграться на корню.
Желающим попытать счастья настоятельно рекомендую ознакомиться:
- Ошибки вида can’t locate node, can’t find node – лечатся с помощью http://www.ros.org/wiki/fuerte/Installation/Overlays
- Ошибки rosmake:
- Во-первых не надо лениться заглядывать в лог файл сборки.
- Во-вторых перед сборкой желательно ознакомиться с инструкцией – http://answers.ros.org/question/40059/ros-rgbdslam-fuerte-support/
- если не помогает – читать до просветления:
http://answers.ros.org/question/12708/rgbdslam-installation-problem/
Возможный результат можно посмотреть тут.
Из минусов – солидный список зависимостей, не все из которых собираются простым make install (одна unstable версия PCL чего стоит – внимательнее смотрите в cmake, какие компоненты вам действительно нужны).
Также учтите что для того чтобы завести NVidea toolkit под линуксом – придется немного попотеть: как установить cuda toolkit под ubuntu – http://sn0v.wordpress.com/2012/05/11/installing-cuda-on-ubuntu-12-04/
Ссылки на реализацию SLAM и связанных с ними компонент
DBow: Hierarchical bag-of-word library for C++ – описание
последняя версия DBoW – http://webdiis.unizar.es/~dorian/index.php?p=32Еще одна из вариаций SLAM-backend (на этапе оптимизации позволяет изменять структуру графа, ускоряя процес оптимизации)
http://www.tu-chemnitz.de/etit/proaut/forschung/robustSLAM.html.enСписок api связанных со SLAM имплементированных в библиотеке MRPT – Mobile Robot Programming Toolkit:
http://www.mrpt.org/List_of_SLAM_algorithmsUPDATE от 11.01.2012
Наткнулся в запасниках еще на некоторые материалы. Добавляю.Вопрос новичка – что такое SLAM – и развернутые ответы “для начинающих”:
http://www.mrpt.org/node/441
Описание свеженькой (от 2012 года) книжки про SLAM
Оглавление интересное.
http://www.mrpt.org/SLAM_book_2012Karto – коммерческая версия SLAM (есть триалка и опенсурсный вариант с последним коммитом от 2010 года)
в описании проскальзывали утверждения о том что работает лучше чем iSam
http://www.kartorobotics.com
http://www.willowgarage.com/blog/2010/04/19/karto-mapping-now-open-source-and-coderosorgОписание еще одного метода loop closing:
http://jochen.sprickerhof.de/software/elch/
по ссылке на странице можно зайти на сайт опенсурсного продукта – The 3D Toolkit – в котором кроме SLAM есть средства для просмотра облака точек, определения поверхностей и т.п.update 03102013
Презентация с roboconf.ru:
“SLAM – путеводные крошки в мире людей” SLAM – Intro with algo and libsзы уточнения/поправки рьяно приветствуются
- computer vision, kinect, programming, SLAM, компьютерное зрение, о мой моск, программирование
2 pings
- features — локальные особенности — за что зацепиться взгляду | Мои IT-заметки on May 3, 2013 at 9:10 am
- #
[…] (recognition) объектов, 3d-реконструкция и навигация (SLAM и loop-closure). Используя характерные точки можно […]
- Anonymous on December 4, 2013 at 9:50 pm
- #
Источник: my-it-notes.com