Проект социального робота Qbo, очень интересен. Хотя бы тем, что является примером использования открытого ПО (ОС Linux и операционной системы для роботов — ROS).
А так же — наглядным примером использования и реализации различных методов робототехники.
Совсем недавно мы рассмотрели такое понятие, как SLAM. На примере робота пылесоса Neato XV-11, мы увидели, как работает SLAM на основании данных от лазерного дальномера (и одометрии). На примере же робота Qbo, можно рассмотреть реализацию визуального SLAM-а.
Одометрия Qbo
Qbo использует два двигателя (скорость вращения — 170 RPM (Revolutions Per Minute — оборотов в минуту)), а для получения обратной связи используется датчик угла поворота — поворотный энкодер.
Это стандартная практика для мобильных роботов.
Использование энкодера, позволяет узнать — сколько оборотов колеса нужно сделать, чтобы робот ехал по прямой линии.
Для исправления ошибки между требуемым значением и значением считываемым датчиком, используется ПИД-алгоритм.
Таким образом, если требуется, чтобы робот ехал совершенно прямо, то необходимо считать значения с обоих энкодеров и нужным образом скорректировать управляющий сигнал, подаваемый на двигатели.
Использование энкодеров позволяет оценить положение робота в конкретной области, во время его движения по ней, но точность оценки снижается по мере движения.
Это происходит из-за множества причин:
* разные диаметры колёс;
* неправильное выравнивание колёс;
* проскальзывание колёс на поверхности;
* накопление ошибки кодирования.
Поэтому, обойтись одними энкодерами, обычно, не получается и используются методы комплексирования информации с разных датчиков робота (инерциальная система (IMU, ИНС), глобальная система позиционирования (GPS, ГЛОНАСС), лазерные дальномеры, система технического зрения).
В итоге, приходим к SLAM (Одновременная локализация и построение карты) — методике, позволяющей построить карту неизвестного помещения, при помощи датчиков робота и/или технического зрения и определить положение робота на этой карте.
SLAM у Qbo основывается на стереоскопическом зрении (в голове робота смонтированы две веб-камеры высокого разрешения) и получаемой одометрии.
Демонстрационное видео показывает полностью автономную навигацию Qbo по офису.
Синяя стрелка соответствует позиции робота, только на основании одометрии, а жёлтая стрелка показывает позицию робота, исправленную фильтром Калмана (Kalman filter). На изображениях, захваченных с веб-камер, зелёными кружками помечены ключевые точки, между которыми найдено соответствие (зелёная линия), и которые представляют место в трёхмерном пространстве. Эти точки добавляются в статусную матрицу фильтра Калмана для создания карты окружения.
Реализация SLAM у Qbo
Алгоритм SLAM-а, реализован у Qbo в виде трёх задач:
1. Первая задача заключается в вычислении движения робота. Для этого, используется драйвер робота, который посылает сообщение об одометрии.
2. Вторая задача заключается в обнаружении ключевых точек (особенностей — features) на последовательности изображений с камер и оценке своей позиции в трёхмерном пространстве:
Для детектирования ключевых точек, используется метод GoodFeaturesToTrackDetector из OpenCV. Затем, для найденных точек вычисляются SURF-дескрипторы, которые сопоставляются друг с другом OpenCV-методом BruteForceMatcher.
Так же, происходит отслеживание точек прорежено-итеративной пирамидальной версией оптического потока Лукаса-Канаде (Lucas-Kanade optical flow in pyramids). Это позволяет избежать поиска новых ключевых точек в областях где они уже отслеживается.
Т.о., Узел принимает Сообщение с синхронизированным изображением и отправляет Сообщение с облаком точек (PointCloud), содержащем позиции ключевых точек(особенностей), их ковариацию в трёх координатах и SURF-дескрипторы.
3. Третья задача заключается в осуществлении расширенного фильтра Калмана (Extended Kalman Filter) и алгоритма ассоциации данных, основанного на расстоянии Махаланобиса (Mahalanobis distance) от облака точек, которое видит робот и облака точек на карте.
Для этого, Узел считывает Сообщение одометрии и Сообщения PointCloud, а в качестве вывода, отправляет Сообщения об одометрии и PointCloud с позицией робота и ключевыми точками, включенными в карту.
Ссылки
SLAM, PID & ODOMETRY in Qbo
http://en.wikipedia.org/wiki/SURF
wiki: Lucas-Kanade Optical Flow Method
http://en.wikipedia.org/wiki/Point_cloud
http://en.wikipedia.org/wiki/Kalman_filter
http://en.wikipedia.org/wiki/Mahalanobis_distance
далее: Робот Qbo и 3D-сенсор Xtion Pro Live
По теме
Робот Qbo
Энкодер
SLAM
Визуальная одометрия