Робототехника является одной из перспективных отраслей науки. С каждым днём она всё сильнее развивается и нас начинают окружать различные роботы и иные автоматизированные системы. Разнообразные роботы могут не только служить человеку для решения различных насущных проблем, но и могут быть использованы для обучения.
Одной из наиболее острых проблем, стоящих перед современными роботами, является навигация в больших помещениях. Существует множество способов навигации в помещениях, где использование спутниковой связи нецелесообразно, однако все из них имеют свои недостатки.
Существуют различные способы определения текущего местоположения. Их можно разделить на глобальные и локальные.
Глобальными способами определения текущего местоположения являются такие, которые позволяют получить примерное понимание о текущем местоположении на обширном пространстве. К ним можно отнести:
– GPS.
GPS не работает в помещении, когда не видны спутники. Нет возможности определения этажа в многоэтажном здании.
– Оптические системы
Определение текущего местоположения по ориентирам, выявленными при помощи машинного зрения является наиболее перспективным и сложным способом.
– Bluetooth/WiFi beacons или данные о сигналах
Сбор данных о трех и более ближайших Bluetooth/WiFi точках позволяет рассчитать примерное местонахождение относительно этих точек.
Локальными способами определения текущего местоположения являются такие, которые позволяют очень точно определить текущее местоположение в относительно небольшом пространстве. К ним можно отнести:
– Лидар
Лазерный радар, постоянно считывающий расстояния до окружающих препятствий при помощи лазерного дальномера. Довольно хорошая точность. Не требуется установка дополнительных маяков.
– Одометрия
Одометрия — использование данных о движении приводов для оценки перемещения. Очень хорошая точность на малых расстояниях, пока нет препятствий и пока имеется хорошее сцепление колес с полом. Но требует, время от времени, проверки текущего положения по дополнительному источнику данных. Без корректировки ошибка накапливается очень быстро и делает вычисление положения невозможным.
– Магнитометрия
Получение данных о направлении робота в зависимости от данных магнитометра. требует предварительной калибровки помещения и слишком подвержена влиянию собственных магнитов на роботе, например, от моторов или спикеров.
Ни один из вышеперечисленных методов в чистом виде не способен в полной мере решить вопрос определения местоположения робота. Однако, использование комбинации нескольких методов вполне может быть достаточно для решения поставленных задач. Предлагается использование следующих методов:
– Данные с датчика давления
Для того, чтобы робот был автономным, необходима телеметрическая система для мониторинга состояния робота. Одним из необходимых датчиков телеметрии является датчик давления. Если иметь стационарную станцию или заранее откалиброванный датчик и получить с него данные, можно получить информацию, необходимую для вычисления высоты робота, что укажет на каком этаже здания находится робот.
– WiFi данные о сигналах
Также автономный робот должен передавать различные запрашиваемые данные, например, при помощи WiFi. WiFi можно также использовать и для помощи в определении текущего местоположения. В больших зданиях для охвата всего строения WiFi сетью используются множество ретрансляторов сигнала. А каждый ретранслятор имеет свой уникальный Mac-адрес. Следовательно, если получить данные о том, какие точки доступа в данный момент находятся в области сканирования робота, можно высчитать примерную область, в которой находится робот.
– Данные с камеры
Еще одной из частых задач автономного робота является передача видеоданных с камеры. Такие данные также могут помочь в решении задачи определения текущего местоположения. Например, используя машинное зрение можно распознать специальные метки — QR-коды, содержащие информацию о том, какое помещение находится впереди и получить примерную информацию о местоположении и направлении робота, что способствует более точной и быстрой работе SLAM-алгоритма локализации робота.
– SLAM при помощи лидара
Помимо прочего, автономный робот должен обладать возможностью реагирования на препятствия — как статичные (стены, столы, колонны), так и мобильные (люди, открывающиеся и закрывающиеся двери, другие роботы). Благодаря охвату области в 360 градусов и частого обновления информации, для своевременного реагирования на различные препятствия подходит использование лидара. Также при помощи лидара можно строить карты помещений, которые необходимы для точного определения текущего местоположения робота.
Метод одновременной локализации и построения карты (SLAM от англ. simultaneous localization and mapping) — метод, используемый в мобильных автономных средствах для построения карты в неизвестном пространстве или для обновления карты в заранее известном пространстве с одновременным контролем текущего местоположения и пройденного пути [1].
Для построения карты помещения используется установленная Robot Operating System (ROS) [2]. В ROS имеются множество различных пакетов и библиотек, некоторые из которых могут помочь в решении вышеупомянутой задачи. Например, пакет “Hector-slam” может использовать данные с лидара для построения карты помещения (рис. 1).
Рис. 1. Процесс построения карты
Для определения точного местоположения используются amcl (algorithm Monte Carlo localization), для которого нужны построенная ранее карта примерные текущие местоположение и направление робота. Локализация по методу Монте-Карло (MCL), также известная как локализация фильтра частиц, представляет собой алгоритм локализации роботов с использованием фильтра частиц [3]. Учитывая карту окружающей среды, алгоритм оценивает положение и ориентацию робота, когда он движется, и воспринимает окружающую среду. Amcl предоставляет множество векторов положений робота. В самом начале работы алгоритма текущее местоположения представляется в виде обширного массива векторов (рис. 2).
Рис. 2. Начало работы amcl
Однако, уже после небольшого перемещения робота, amcl корректирует местоположения робота по данным лидара, уменьшая количество вероятных местоположений робота (рис. 3).
Рис. 3. Работа amcl
Примером решения поставленной задачи является собранный автономный робот. В качестве его бортовой ЭВМ используется Raspberry pi 3 с операционной системой Ubuntu Mate 16.04 и установленной ROS Kinetic Kame [4]. На данных версиях программного обеспечения корректно работает большинство необходимых инструментов. Бортовая ЭВМ собирает данные и близлежащих WiFi точках: их уровни сигнала и Mac-адреса, что используется для определения примерного местоположения.
Также к бортовой ЭВМ подключены:
– система движения робота;
– система сбора телеметрической информации, одним из датчиков которой является датчик давления BMP180, который служит для определения этажа;
– USB-камера, установленная на поворотно-наклонной платформе, которая служит для передачи видеопотока, нахождения и считывания QR-меток при помощи обученной нейросети для определения близлежащих помещений;
– лидар RPLidar A1, который используется для построения карт помещений и дальнейшей навигации по ним.
Для итоговой локализации робота в известном помещении используется amcl.
Литература:
- SLAM (метод) [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/SLAM_(метод) [Дата обращения: 02.04.2019]
- ROS (операционная система) [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/ROS_(операционная_система) [Дата обращения: 02.04.2019]
- Monte Carlo localization [Электронный ресурс]. URL: https://en.wikipedia.org/wiki/Monte_Carlo_localization [Дата обращения: 02.04.2019]
- ROS.org. [Электронный ресурс]. URL: https://wiki.ros.org/kinetic [Дата обращения: 02.04.2019]