КОМПЛЕКСНАЯ СИСТЕМА ТЕХНИЧЕСКОГО ЗРЕНИЯ Автор: Моисеев А.И. Московский Институт Электроники и Математики Аннотация В работе рассматривается унифицированный распределенный программный комплекс для реализации бортовой системы технического зрения для мобильных роботов. Введение При разработке автономных роботизированных платформ, на которых устанавливаются сенсоры различных типов (ИК и лазерные дальномеры, растровые камеры и другие), возникает потребность в высокоуровневом комплексном анализе полученных данных различной природы. Практически все виды сенсоров имеют ряд сильных сторон и существенных ограничений. Комплексная система технического зрения позволяет компенсировать слабости отдельных компонентов (слепая зона ИК-дальномеров, сложности в определении свойств предметов по цифровой камере) за счет других при помощи различных алгоритмов. Рассматривая описываемый комплекс, следует уточнить, что понимается под системой технического зрения (СТЗ). В классическом понимании, СТЗ – это комплекс датчиков, использующих активные и пассивные сигналы различной природы (световые, звуковые, инфракрасные и т.д.), служащий для обнаружения и детектирования элементов внешней среды. Мы будем понимать термин именно в этом смысле, не сводя только к системам компьютерного зрения, по сути, являющимися частным случаем СТЗ. Многие механизмы комбинирования в расчетах данных с разных сенсоров могут наследоваться и использоваться на различных роботах без изменений, поэтому одной из задач проекта является унификация системы, ее способность подстраиваться под различные модели и наборы оборудования. При такой постановке задачи важное место отводится характеристикам модульности и расширяемости комплекса. Обработка поступающей информации должна происходить в реальном времени, при этом система должна иметь возможность полноценной работы в контуре управления, в условиях ограниченных вычислительных мощностей. При этом, крайне полезной может оказаться возможность вынесения трудоемких расчетов на внешнее вычислительное устройство. Таким образом, целью данного исследования является создание единого высокоуровневого модульного программного комплекса СТЗ с открытой архитектурой, позволяющего решать широкий ряд задач на различных платформах. Архитектура Комплекс СТЗ является частью комплекта управляющего ПО робота, находясь в двухсторонней связи с системой планирования. В основе концепции комплексной обработки визуальной информации лежит сбор всех доступных сведений в единый вектор состояний при постоянном опросе датчиков в реальном времени. На Рис.1 пунктирной линией отмечена СТЗ, связанная с другими анализирующими и управляющими механизмами (датчики тактильного восприятия, магнитометр, энкодеры и другие). Рис.1 Общая схема управляющего ПО робота Комплекс представляет собой набор независимых процессов-серверов, связь между которыми осуществляется по протоколу TCP/IP посредством набора установленных команд, что позволяет выполнять ресурсоемкие вычисления на различных компьютерах. Только наиболее массивные блоки информации (такие, как изображения с растровых камер), которые необходимо использовать в нескольких модулях, передаются через разделяемую память локальной ЭВМ. Все серверы представляют собой равноправные блоки, которые активируются в настройках планировщика системы. Протокол обмена данными регламентирован, а данные для подключения по сети получаются из конфигураций серверов (в случае, когда комплекс расположен на единой бортовой ЭВМ). Модульная структура позволяет сократить затраты ресурсов в условиях ограниченных вычислительных мощностей без потерь в универсальности и общей расширяемости системы. Состав комплекса Набор используемых модулей зависит от специфики конкретного проекта и используемых типов сенсоров. Предположим, что робот имеет ИК-дальномеры, ИК- и RGB-камеру Microsoft Kinect. В этом случае СТЗ будет иметь следующий состав: Сервер контекста. Принимает данные с физического устройства (RGB-камеры, ИК-камеры) и размещает полученные данные в блок разделяемой памяти в регламентированном формате. В результате, несколько различных серверов могут работать с камерой, не монополизируя устройство. Также, это позволяет локализовать весь аппаратно-зависимый код в одном блоке. Сервер поиска цветовых пятен. Приложение, использующее библиотеку OpenCV для наложения фильтров на изображение в разделяемой памяти и поиска однородных областей. По размеру пятен определенной формы возможно определение расстояния до них с относительно высокой точностью, что используется в алгоритме навигации по световым маякам. Сервер щели дальномера. Используется для базовых алгоритмов обработки данных с инфракрасного дальномера. Предоставляет один или несколько отфильтрованных горизонтальных срезов, полученных из двухмерной матрицы глубин. Сервер оптического распознавания текста. Для распознавания надписей и символов в проекте используется библиотека Tesseract. Коммутирующий сервер. Предназначен для переключения текущих элементарных задач (к таковым не относятся рефлексы, обработка которых ведется 1 постоянно), управляя работой большей части серверов обработки данных с датчиков. Планировщик. Назначает начальную последовательность действий и управляет порядком переключения состояний конечного автомата робота. На планировщике также реализуется ручное управление для отладки компонентов системы. Порядок управления описывается в файлах сценариев. Рис.2 Общая структура СТЗ Локальные серверы. Реализация базовых элементарных операций, необходимых для большинства проектов, в которых используется система, содержится в коммутирующем сервере. С точки зрения планировщика, эти сервера существуют и используются так же, как и модульные. Базовые алгоритмы Далее приведено краткое описание некоторых базовых алгоритмов, применяемых в описываемой СТЗ. Нахождение градиента поверхности для ориентации относительно стен. Из матрицы глубин, выдаваемой дальномером, выбирается некоторое количество расположенных рядом точек. Находится сумма разностей расстояний до каждой точки и значения расстояния до последней точки. Сумма, деленная на общее число точек, представляет собой показатель ошибки в диапазоне от -1 до 1, который может быть использован PID-регулятором для расположения робота перпендикулярно к стене. E = ((D1 – Dn) + (D2 – Dn) + … + (Dn-1 – Dn)) / n Обнаружение препятствий с учетом габаритов робота. На предварительном этапе вычисляется, какое число близлежащих точек матрицы должно удовлетворять условию проходимости. Это число вычисляется на основе заданного заранее физического размера корпуса. В случае, когда условием проходимости является наличие некоторого свободного пространства, минимальная ширина доступной области определяется угловым размером габаритного отрезка на расстоянии, определенном как граница проходимости: Угловой размер в радианах = Ширина / Расстояние Размер в пикс. = (Угловой размер / Угол обзора) * Ширина изображения Алгоритм навигации по световым маякам. При помощи нескольких одинаковых маяков определенной формы, расположенных по периметру ограниченного прямоугольного пространства, возможно определение положения на полигоне со сравнительно высокой точностью. Алгоритм предполагает наличие представлений об отклонении платформы от начального угла – стартового положения. Получить подобную информацию можно различными способами: при помощи установленного на борту магнитометра, с помощью датчиков угла поворота (энкодеров) на двигателях, либо с помощью инфракрасного дальномера (в т. ч. по описанному ранее алгоритму нахождения градиента). В основе алгоритма лежит нахождение расстояния до меток, расположение которых на полигоне заранее известно. Маяк представляет собой шарообразный источник света определенного размера, который находится при помощи алгоритма нахождения однородного пятна по изображению с RGB-камеры. На основе размера пятна и угла обзора камеры, вычисляется угловой размер, по которому, зная реальный диаметр маяка, определяется расстояние. Расстояние = Диаметр маяка / Угловой размер в рад. На следующем этапе находится абсолютный угол отклонения положения маяка от начального значения угла, равный сумме текущего угла робота и полученного углового отклонения центра маяка от курса на изображении с камеры. Полученный угол используется для получения координат относительно видимого маяка: a – абсолютный угол X = Sin (a) Y = Cos (a) К относительным координатам поочередно прибавляются абсолютные координаты разных маяков, и проверяется, попадает ли полученная точка в область допустимых значений. Рис.3 Проверка полученных значений Метод позволяет исключать неопределенности в тех случаях, когда маяки расположены на границе или вне доступной области перемещения. Примеры систем Предлагаемая архитектура была апробирована в рамках двух следующих проектов: Робот Мирон (мобильный интеллектуальный робот общего назначения) – демонстрационно-показательный учебный робот. Выполняемые задачи: Отработка архитектурных принципов Алгоритмы управления и планирования Ориентация, распознавание, моделирование Средства ТЗ: ИК-дальномеры SHARP (5 штук), ИКи RGB-камера Microsoft Kinect. Робот Revenge. Проект команды qRobot, создаваемый для участия в Евробот-2012. Выполняемые задачи: Навигация на спортивном полигоне по специально разработанной системе маяков Обнаружение и перемещение предметов (дисков) при помощи камеры и манипулятора Принятие адекватных решений на основе изменяющихся внешних факторов Средства ТЗ: ИК-дальномеры SHARP (5 штук), две RGB-камеры (на корпусе и на манипуляторе) Несмотря на различия в поставленных задачах, функционале и конструктиве, проекты успешно используют единую архитектуру СТЗ. Выводы В данной работе был описан программный комплекс для системы технического зрения, его архитектурные особенности с перечислением факторов, повлиявших на принятие различных проектировочных решений. Полученная система имеет перспективы дальнейшего развития в сторону поддержки большего числа средств технического зрения и добавления алгоритмов обработки, взаимодействия и управления. 2