Вопросы программной поддержки процессов управления мобильным роботом

Пример реализации мобильного робота с минимальным набором датчиков, а также применение алгоритмов компьютерного зрения для автоматического управления. Вычисление кода указателя. Управляющая команда для сервоприводов. Локализация положения робота.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 28.10.2018
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru//

Размещено на http://www.allbest.ru//

Вопросы программной поддержки процессов управления мобильным роботом

Р. А. Севостьянов

Рассматривается пример реализации мобильного робота с минимальным набором датчиков, а также применение алгоритмов компьютерного зрения для автоматического управления. Приведены результаты экспериментов.

Введение

Научный руководитель д.ф.-м.н., проф. Веремей Е.И.Изначально была поставлена задача разработки мобильного робота, управление движением которого должно осуществляться в двух режимах: режиме ручного управления, когда оператор непосредственно контролирует движение, и режиме автоматического управления, когда робот самостоятельно движется к некоторой цели, обходя препятствия. При этом интерес представляла ситуация, когда количество датчиков, поставляющих в систему управления данные о внешнем мире, минимально. В частности, в качестве единственного датчика было решено использовать видеокамеру и осуществлять локализацию положения робота по заранее известным внешним указателям. Кроме этого, задача была поставлена таким образом, что все необходимые вычисления, относящиеся к обработке сигналов и синтезу законов управления, должны осуществляться на внешнем компьютере, который передает роботу управляющие сигналы по беспроводной связи.

Система управления

Объект управления. В качестве объекта управления выступает мобильный робот на гусеничном шасси с 7,2В электромоторами (рис. 1). Аппаратно-вычислительной платформой является плата DFRDuino Mega со следующими модулями расширений:

Motor Shield V3, представляющий собой силовой модуль для управления электромоторами и сервоприводами, использование которого определяется тем, что напряжения портов платы DFRDuino Mega не достаточно для управления;

плата XBee Shield V5, которая применяется для подключения беспроводного модуля XBee, а также сам модуль XBee, обеспечивающий передачу данных по стандарту ZigBee.

Для получения изображений, передаваемых в качестве информации в систему управления, используется аналоговая CCD-видеокамера SONY с разрешением 752х582 (NTSC) и восьмиканальный 900 МГц передатчик. Камера закреплена на платформе, установленной на двух сервоприводах, что позволяет поворачивать ее в двух плоскостях.

Рис. 1. Робот.

Математическая модель. Математическая модель робота выглядит следующим образом:

где: (x,y,ц) - координаты и угол направления робота (состояние системы); (v,щ) - поступательная и угловая скорости (управляющие сигналы).

Угол ц отсчитывается от положительного направления оси ординат по часовой стрелке.

Для этой модели удобно строить законы управления, однако реально управление происходит напряжениями, подаваемыми на правый и левый электромоторы, так что следует перейти от приведенных управляющих сигналов к реальным:

где: L - расстояние между гусеницами; kr и kl - коэффициенты, связывающие напряжение со скоростью вращения колеса.

Кроме этого, существуют физические ограничения на движение робота: максимальная скорость вращения колес - 14 см/с.

Протокол коммуникации. Для передачи управляющих команд от системы управления движением, реализуемой на внешнем компьютере, используется USB-плата XBee Shield V5 с беспроводным модулем XBee. Протокол коммуникации состоит из двух типов команд. Первый тип - команды для управления напряжением электромоторов (рис. 2).

В состав структуры управляющей команды для электромоторов входят следующие элементы:

байт ID означает начало управляющего пакета для моторов, он всегда содержит значение 0xFF;

байт Dir отвечает за направление вращения правого и левого мотора (0 - остановка, 1 - вперед, 2 - назад), причем значения направления для правого мотора занимают первый и второй биты, для левого - соответственно, третий и четвертый;

байты VoltR и VoltL содержат значение напряжения, которое необходимо подать на правый и левый моторы, соответственно;

байт Sum -- контрольная сумма, которая высчитывается как исключающее ИЛИ, примененное к предыдущим трем байтам. Это значение используется для верификации команды и гарантирует, что команда либо будет выполнена в том виде, в каком была передана, либо не будет выполнена вообще.

Рис. 2. Управляющая команда для электромоторов.

Второй тип команд - команды для управления поворотом сервоприводов камеры (рис. 3).

Рис. 3. Управляющая команда для сервоприводов.

В состав структуры управляющей команды для сервоприводов входят следующие элементы:

байты ID и Sum аналогичны соответствующим байтам управляющей команды для электромоторов, при этом байт ID всегда содержит значение 0xFE;

байты Pos1 и Pos2, содержат положение, в которое нужно перевести первый и второй сервопривод видеокамеры.

Программное обеспечение бортового микроконтроллера. Ввиду того, что все необходимые вычисление и синтез законов управления происходят на внешнем компьютере, основная задача бортового микроконтроллера - прием управляющих команд и управление электромоторами и сервоприводами в соответствии с ними.

Программирование бортового микроконтроллера осуществлялось в среде разработки Arduino IDE на специализированном языке, основанном на языке Wiring. Этот язык разработан специально для проектов на базе платформы Arduino и имеет синтаксис языка C++, но другую структуру программ [1].

Беспроводной модуль XBee подключен к последовательному порту бортового микроконтроллера. Библиотека языка программирования Arduino содержит класс Serial, который упрощает работу с последовательным портом. На каждом цикле своей работы программное обеспечение микроконтроллера проверяет, не появилось ли новых данных в буфере последовательного порта и, если данные есть, проверяет корректность команды и передает соответствующие управляющие сигналы на электромоторы или сервоприводы.

Локализация положения робота. Как было сказано выше, единственным датчиком в системе является видеокамера, а локализацию положения предлагается осуществлять при помощи внешних указателей заданного вида. Как видно из математической модели, положение (или состояние) робота состоит из трех компонент: координаты на плоскости пола x и y, а также угол направления движения ц.

В качестве внешних указателей используются белые квадраты со стороной 13см, внутри которых расположены от одного до четырех темных квадратов. Расположение внутренних квадратов относительно центра белого квадрата кодирует число от 1 до 15. Таким образом, в системе можно использовать до 15 указателей одновременно.

Распознавание указателей происходит следующим образом. Цветное изображение конвертируется в бинарное. После этого находятся все контуры, как внешние, так и внутренние, с отслеживанием иерархии. Далее каждый контур при помощи алгоритма Рамера-Дугласа-Пекера [2] аппроксимируется замкнутой ломаной, после чего работа ведется только с теми ломаными, у которых число вершин равно четырем. Кроме этого, области, ограниченные такими линиями, должны быть более ста пикселей по площади, а внутри каждой такой области также должна быть ломаная с четырьмя вершинами.

Далее вычисляется числовой код каждого указателя как четырехразрядное двоичное число. Каждый темный квадрат внутри указателя отвечает за определенный разряд в этом числе. Наличие квадрата соответствует единице, отсутствие - нулю. Формирование двоичного числа происходит построчно, левый верхний угол соответствует низшему разряду. Например, указатель, приведенный на рис. 4, кодирует число 10112=1110.

Рис. 4. Вычисление кода указателя.

После того, как вычислен код указателя, происходит непосредственно локализация положения робота. Предполагается, что указатели установлены строго перпендикулярно поверхности пола. Соответственно, боковые стороны каждого квадрата всегда параллельны плоскости камеры, которая также перпендикулярна поверхности пола. Таким образом, зная параметры камеры, можно вычислить расстояние до боковых сторон по следующей формуле:

где: Z - расстояние от плоскости камеры до стороны указателя в сантиметрах; f - фокусное расстояние камеры в пикселях; x - длина стороны в пикселях; Y - длина стороны в сантиметрах.

робот датчик компьютерный зрение

Рис. 5. Локализация положения робота.

Далее с помощью геометрических рассуждений можно вывести компоненты состояния робота (рис. 5). Здесь AB - указатель, C - центр указателя, AA1 и BB1 - расстояния до сторон указателя, C1 - точка на изображении, в которую проецируется центр указателя, F1 - центр изображения, F1C1 - смещении проекции центра указателя относительно центра изображения, F - точка фокуса, f - фокусное расстояние, угол б - угол поворота робота относительно указателя. Положение робота относительно указателя находятся по следующим формулам:

Положение робота в глобальной системе координат находится по следующим формулам:

где: (xb,yb,и) - положение указателя в глобальной системе координат.

Режим автоматического управления. В режиме автоматического управления робот должен самостоятельно двигаться к заданной точке, избегая столкновения с препятствиями.

Для начала рассмотрим движение к точке, когда препятствия отсутствуют. В этом случае закон управления можно построить при помощи пропорционального регулятора:

где: цd - желаемый угол направления на точку; (x,y) - координаты робота; (xd,yd) - координаты точки; kd - регулируемый коэффициент; щd - угловая скорость.

Поступательная скорость v - постоянная. Когда робот оказывается в некоторой окрестности целевой точки, происходит остановка.

Теперь рассмотрим случай, когда целевая точка не задана, и робот движется с постоянной скоростью. В качестве препятствия примем окружности известного радиуса. Вокруг такой окружности опишем окружность большего радиуса - «зону опасности». Тогда, если робот оказывается в такой зоне, управление, позволяющее избежать столкновения, строится аналогично предыдущему варианту, но направление выбирается от центра препятствия:

где: цo - желаемый угол направления от центра препятствия; (x,y) - координаты робота; (xo,yo) - координаты центра препятствия; ko - регулируемый коэффициент; щo - угловая скорость.

Наконец, рассмотрим ситуацию, когда робот движется к заданной точке, обходя препятствия. В этом случае строится гибридное управление как линейная комбинация двух предыдущих:

Такое управление позволяет избегать препятствий и в то же время учитывает направление на целевую точку.

Для обозначения препятствий используются такие же указатели, как и для локализации положения робота. Когда такой указатель появляется на изображении, в память заносятся координаты его центра, а радиус «опасной зоны вычисляется по следующей формуле:

где: R-радиус «опасной зоны»; a - длина стороны указателя.

Компьютерное моделирование показало, что указанное управление позволяет достигать целевой точки с точностью до 1 см.

Программное обеспечение внешнего компьютера. Для режима ручного управления на языке C# реализовано программное обеспечение, которое позволяет вручную управлять движением мобильного робота, а также вращением сервоприводов видеокамеры.

Для режима автоматического управления на языке C++ с использованием открытой библиотеки OpenCV [3] реализовано программное обеспечение, которое позволяет осуществлять движение мобильного робота в заданную точку с обходом препятствий по алгоритму, описанному выше.

Результаты экспериментов. В результате проведенных экспериментов получены следующие характеристики системы:

время работы программы микроконтроллера:

в среднем около 500 мкс;

время отклика:

в среднем около 24 мс;

радиус действия:

более 30 метров на открытой местности;

12-15 м в закрытом помещении;

время работы:

более часа;

точность локализации положения:

2-3 см (расстояние до 1м);

точность локализации угла направления:

2-3 градуса (расстояние до 1м);

время работы программы автоматического управления:

до 50 мс (Core i7 3770K, 3.5 GHz).

Заключение

В результате проведенной работы был построен мобильный робот на гусеничном шасси, управление которым осуществляется по беспроводной связи в режимах ручного и автоматического управления. Разработано и реализовано программное обеспечение бортового микроконтроллера. Разработан алгоритм локализации положения робота по внешним указателям, способ кодирования указателей, а также гибридный алгоритм движения к точке с обходом препятствий. Реализовано соответствующее программное обеспечение внешнего компьютера, осуществляющее локализацию и автоматическое управление движением мобильного робота. Кроме этого реализовано программное обеспечение внешнего компьютера, осуществляющее управление движением мобильного робота в ручном режиме. Также проведены натурные эксперименты.

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.