УДК 621.865.8-2
УПРАВЛЕНИЕ РОБОТОМ LEGO NXT ПОСРЕДСТВОМ BLUETOOTH
В. Р. Дусеев
Томский политехнический университет E-mail: [email protected]
Роботы LEGO NXT серии Mindstorms получили широкое распространение в качестве устройств для апробации алгоритмов управления робототехническими средствами. Целью работы являлось исследование удаленного управления роботом посредством Bluetooth-соединения. Проведено тестирование возможностей встроенного в робота LEGO NXT модуля беспроводной связи CSR BlueCore 4 v2.0. Тестирование осуществлялось пересылкой пакетов данных различной длины по беспроводному каналу между роботом и компьютером. Полученные результаты затем сравнивались с показателями, требующимися для решения реальных задач. Поставленный эксперимент наглядно продемонстрировал, что имеющийся в роботе Bluetooth-модуль не обеспечивает достаточной скорости передачи данных. В работе предложено переносить требовательные ко времени реакции задачи с компьютера на управляющий микроконтроллер робота с целью обойти ограничения беспроводного канала связи в задаче управления роботом в реальном времени.
Ключевые слова:
LEGO NXT, Bluetooth, Serial Port Profile, тестирование скорости соединения, алгоритмы управления роботом в реальном времени.
В настоящее время роботы Mindstorms NXT компании LEGO нашли самое широкое применение в учебном процессе в высших учебных заведениях. Роботы используются при проведении различных соревнований по мехатронике, робототехнике и искусственному интеллекту. Ежегодно проводится до 50 крупных соревнований международного уровня, самым крупным из которых является WRO (World Robot Olympiad — Всемирная олимпиада роботов) [1]. В России крупнейшим мероприятием подобного уровня являются ежегодные соревнования Ро-бофест [2]. Большое развитие получило движение робототехнических кружков.
Распространенность и популярность роботов NXT серии Mindstorms обоснована, в первую очередь, их доступностью широкому кругу пользователей. Процесс программирования и сборки роботов был максимально упрощен компанией LEGO. Сборка конструкции робота осуществляется с помощью универсальных строительных блоков. Написание управляющей программы возможно с использованием простых и наглядных в освоении графических языков, например NXT-G, а также более серьезных графических и процедурных языков, таких как LabView или C [3]. Инженеры LEGO создали модульный конструктор с большими возможностями для построения как простых, так и сложных роботов. Исходные тексты управляющей программы, описания протоколов, а также полное описание внутренней архитектуры находятся в открытом доступе, что открывает широкое поле для деятельности конструкторам и любителям со всего мира. В связи с этим роботы LEGO нередко используются для апробации различных алгоритмов управления робототехническими устройствами.
Аппаратное устройство робота Lego NXT
Управляющий блок робота, так называемый брик, оснащен управляющим микроконтроллером AT91SAM7S256 [4] производства корпорации Atmel на базе 32-битного микропроцессора ARM7. В табл. 1 приведены основные характеристики микроконтроллера.
Дусеев Вагиз Рауфович,
студент кафедры вычислительной техники Института кибернетики ТПУ. E-mail: [email protected] Область научных интересов: фильтрация данных, исследование аппаратных возможностей роботов семейства Mindstorms.
Таблица 1. Основные характеристики AT91SAM7S256
Процессор ARM7TDMI 32-битный, RISC-архитектура
Объем внутренней Flash-памяти 256 Кбайт
Объем внутренней SRAM-памяти 64 Кбайт
Частота работы до 55 МГц
В качестве управления силового модуля (сервоприводы робота) используется микроконтроллер на базе 8-битного ATmega48, который в данном случае способен управлять тремя моторами. Брик оснащен небольшим динамиком, диапазон воспроизводимых частот которого составляет 2-16 кГц. Вывод информации осуществляется посредством монохромного LCD-экрана с разрешением 100*64 пикселей и физическим размером 40,6*26 мм. Робот также оснащен четырьмя кнопками, которые предназначены для навигации по интерфейсу посредством иерархического меню. Доступны четыре порта для ввода, три порта для вывода, а также интерфейс USB 2.0, работающий в режиме Full speed (12 Мбит/с) [5]. Также робот способен получать данные от четырех датчиков. В табл. 2 представлены основные типы датчиков. Для беспроводного соединения доступен модуль Bluetooth 2.0 EDR, характеристики которого представлены в табл. 3. Питание робота осуществляется от шести батареек типа AA либо от литий-ионного аккумулятора емкостью 1400 мА/ч.
Таблица 2. Основные типы датчиков робота LEGO NXT
Цветовой датчик Определяет до шести различных цветов: синий, зеленый, красный, желтый, белый и черный
Световой датчик Определяет уровень яркости
Датчик касания Представляет собой кнопку, реагирующую на нажатие
Ультразвуковой датчик Измеряет расстояние в диапазоне 9-75 см
Звуковой датчик Измеряет громкость звука; не имеет функции записи
Компас Позволяет определить северное направление, возвращая текущее отклонение робота в радианах
Акселерометр Определяет ускорение и направление движения робота
Таблица 3. Характеристики модуля CSR BlueCore 4 v2.0 + EDR System
Объем внутренней RAM-памяти 47 Кбайт
Объем внешней Flash-памяти 8 Мбит
Частота работы 26 МГц
На рис. 1 представлена структурная схема, которая иллюстрирует взаимосвязь всех компонент робота [4].
Рис. 1. Структурная схема робота Lego NXT
Способы управления роботом
Аппаратное и программное обеспечение Lego NXT, представленное прошивкой LEGO MINDSTORM Firmware 1.28 [3], позволяют осуществлять управление роботом тремя возможными способами.
Первым из способов является подключение NXT к персональному компьютеру посредством USB-кабеля. Использование подобного способа управления ограничивает удаленность робота от компьютера максимальной длиной кабеля, которая составляет пять метров [6]. Также это требует наличия определенного программного обеспечения, установленного на компьютере, с которого осуществляется управление роботом. В реализации микроконтроллера AT91SAM7S256 передача сообщений через USB организована по принципу FIFO-очереди длиной в 328 байт [7]. Команды в виде опкодов посылаются с персонального компьютера, а затем обрабатываются виртуальной машиной робота. Структура команды с двумя аргументами представлена в табл. 4.
Таблица 4. Структура команды с двумя аргументами
Слово 1 Слово 2 Слово 3
Название поля Опкод Размер Флаги Аргумент 1 Аргумент 2
Биты 0..7 8..11 12..15 0..15 0..15
Вторым способом подключения является беспроводное соединение посредством Bluetooth-передатчика. Протокол соединения через Bluetooth был реализован в виде профиля последовательного порта (Serial Port Profile, далее SPP) [4], который можно рассматривать как беспроводной последовательный порт. Данный протокол основан на стандарте 07.10 европейского института телекоммуникационных стандартов, а также на протоколе RFCOMM.
SPP эмулирует работу последовательного порта, предоставляя тем самым замену существующему RS-232 [8]. С целью уменьшения энергопотребления Bluetooth микросхема была реализована в соответствии со стандартом Bluetooth Class II, что ограничивает дистанцию для соединения десятью метрами [4]. Обмен сообщениями происходит аналогично коммуникации посредством USB-кабеля. В виртуальной машине параллельно с выполняемыми программами запускается отдельная задача, ожидающая поступления опкодов из очереди сообщений определенного канала Bluetooth-соединения.
Последним способом управления роботом является запись во Flash-память робота NXT предварительно скомпилированной программы в формате .RXE. Компиляция программы осуществляется на персональном компьютере с помощью компилятора, соответствующего стандарту прошивки версии 1.28. После ручного запуска программы на роботе NXT виртуальной машиной будут произведены следующие действия:
1. Валидация файла - чтение файла и валидация его версии и заголовков.
2. Активация - выделение и инициализация блока RAM для хранения данных. После активации текущие исполняемые наборы опкодов и данных будут загружены в выделенный блок в соответствии с последовательностью выполнения кодов.
3. Исполнение - интерпретация байт-кода из файла программы. Исполнение продолжается до тех пор, пока все блоки команд не будут исполнены либо пока пользователь не прервет программу.
4. Завершение - освобождение всех использованных систем ввода/вывода и RAM, а также разблокировка файла программы для изменения или удаления.
Характеристик, заложенных в NXT, вполне хватает, если речь идет о несложных и не требовательных к ресурсам задачах. Некоторые задачи встречаются в соревновательной практике чаще других. Такими популярными задачами являются:
• следование по линии, которая обычно представляет собой контрастную изгибающуюся полосу, прочерченную на полу;
• избегание столкновения с препятствиями;
• поиск определенного объекта на соревновательном поле;
• перемещение заданного объекта по соревновательному полю.
Однако при апробации более сложных алгоритмов или же при превышении выделенного виртуальной машиной объема памяти, который в роботе NXT не может превышать 32 Кбайт для одной программы, неизбежно возникает необходимость задействовать дополнительные ресурсы. Например, вычисления производить на персональном компьютере, а непосредственно роботу передавать только управляющие опкоды. Организовать такое сообщение между роботом и компьютером можно либо посредством ^В-кабеля, либо используя беспроводное В1иеШо1Ь-соединение. Очевидно, что отсутствие необходимости физического подключения к ПК делает В1ие1оо1Ь-соединение наиболее удобным и интересным решением в данной ситуации.
Описание микросхемы С8Я В1иеСоге 4 у2.0
Микросхема BlueCore 4 v2.0 производства компании CSR содержит в себе все необходимые компоненты для организации полноценного Bluetooth-узла. Интегрированный 16-битный процессор организует стек сообщений. Управляющий NXT микроконтроллер ARM7 взаимодействует с модулем Bluetooth посредством UART. Реализуются два протокола последовательного порта: SPP-A и SPP-B. SPP-A используется, когда локальный беспроводной узел является инициатором соединения. SPP-B задействуется, когда инициатором соединения является удаленный узел. Микросхема BlueCore 4 использует потоковый режим передачи данных на скорости до 220 кбод. Структура данных, содержащих управляющую команду, предназначенную для отправки на NXT, представлена в табл. 5 [8].
Таблица 5. Структура данных для отправки управляющей команды
Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 - N
0x00 или 0x80 0x09 Номер очереди (0-9) Длина сообщения Данные
В качестве ответа робот NXT возвращает пакет данных, содержащий байт состояния. Длина ответного сообщения равна трем байтам. При запросе данных с робота NXT компьютер отправляет пакет с определенной структурой (табл. 6).
Байт 0 Байт 1 Байт 2 Байт 3 Байт 4
0x00 или 0x80 0x13 Номер очереди (0-9) Номер локальной очереди (0-9) Флаг удаления данных из очереди NXT
В этом случае в качестве ответа робот NXT возвращает пакет, содержащий не только байт состояния, но и номер очереди, из которой отправляются данные, и непосредственно данные, содержащиеся в байтах сообщения с номерами 5-63. Таким образом, максимальный размер полезных данных, отправляемых с робота в одном сообщении, не может превышать 59 байт как в случае Bluetooth-соединения, так и в случае подключения по USB.
При этом необходимо помнить, что практически во всех задачах обмен сообщениями между компьютером и роботом должен происходить в реальном времени. Приведем пример, в котором необходимо задействовать большую вычислительную мощность персонального компьютера, в то же время производя перерасчет управляющего воздействия в реальном времени. На рис. 2 схематично представлен алгоритм следования по линии на основе ПИД-регулятора. Особенностью ПИД-регулятора в случае следования робота по линии является необходимость корректировать управляющее воздействие в среднем каждые 50 миллисекунд с целью обеспечить своевременную реакцию на изменение направления линии.
Рис. 2. Блок схема ПИД-регулятора для задачи следования робота по линии
Одновременно с движением по линии может потребоваться выполнение ресурсоемкой задачи анализа окружающей среды. В серьезных соревновательных заданиях роботу, чтобы принять оптимальное решение и выиграть, требуется проанализировать текущую ситуацию, соотнеся ее с большой базой правил. В таком случае целесообразно применение экспертной системы с продукционной моделью представления знаний, где правила поведения представлены в виде условий «Если (условие), то (действие)». Применение такой системы потребует больше 32 Кбайт доступной памяти.
Определение скорости соединения
С целью проверки возможности беспроводного канала связи по передаче данных от робота NXT компьютеру был поставлен эксперимент. В рамках данного эксперимента робот постоянно получал запрос от компьютера на предоставление данных о своем состоянии. В ответ робот отправлял сообщения различной длины. В блок ответного сообщения, содержащий непосредственно данные о состоянии, помещались последовательности длиной от 4 до 59 байт.
После запуска программного обеспечения на компьютере и установки подключения между компьютером и роботом NXT со стороны компьютера инициировалось соединение. После инициализации отправлялось сообщение с запросом данных от робота. Затем компьютер ожидал ответа от робота NXT, после чего посылал следующее сообщение с запросом. Данная операция повторялась в течение одной секунды. Было протестировано шесть типов ответных сообщений с различной длиной блока данных: 4, 8, 16, 32, 48 и 59 байт. В целом эксперимент для всех типов блока данных был повторен 1000 раз. В табл. 7 представлены результаты эксперимента с указанием количества посланных и возвращенных пакетов за секунду.
Длина блока данных в байтах Количество переданных и полученных за секунду пакетов (шш-шах)
4 11-13
8 11-13
16 10-13
32 7-8
48 7-8
59 7-8
Как видно из табл. 7, снижение количества отправляемых пакетов происходит при длине блока данных свыше 16 байт. Характеристики блоков данных для разных случаев представлены в табл. 8.
Содержание блока Число задействованных датчиков Длина блока, байт Чис ло требуемых пакетов в секунду
Движение по линии 2 6 20
Обнаружение объекта 4 16 10
Состояние робота 0 48 1
Состояние двигателей 3 24 20
Рассмотрим размер блока данных в байтах для реальных задач управления роботом. Например, в задаче следования по линии необходимо обновлять информацию с датчиков каждые 50 миллисекунд. В таком случае каждую секунду компьютер должен запрашивать, а робот передавать ^^ ■ 6 = 120 байт данных. В виду того, что длина одного пакета в задаче следования по линии равна 6 байтам, целесообразно выбрать размер блока данных, равный 8 байт. Исходя из результатов эксперимента, NXT способен передавать от 11 до 13 пакетов длиной 8 байт за секунду. Отсюда возникает противоречие, заключающееся в несоответствии требуемой для решения задачи скорости передачи пакетов реальным возможностям В!иеШо1Ь-модуля.
Аналогичная ситуация имеет место быть и для других задач, в которых управление роботом должно происходить в реальном времени. На рис. 3 представлена диаграмма, демонстрирующая разницу между требуемой и реальной скоростью передачи пакетов для четырех различных информационных пакетов.
25 20 15 10
Движение по линии
Обнаружение Состояние робота Состояние объекта двигателей
I Требуемая скорость
(Действительная скорость
Рис. 3. Диаграмма, демонстрирующая несоответствие требуемой и реальной скорости передачи данных
Перенос критических секций на NXT
Одним из возможных решений обозначенной проблемы является перенос критических задач, таких как следование по линии и отслеживание состояния двигателей, с компьютера на робота NXT. В таком случае обеспечивается приемлемое время реакции на происходящие изменения. В то же время ресурсоемкие задачи продолжают обрабатываться на персональном компьютере с последующей корректировкой действий робота через беспроводной канал связи в соответствии с принятым решением. На рис. 4 представлена блок-схема решения.
ресурсоёмкая задача 2
Рис. 4. Блок-схема алгоритма выполнения критических секций на роботе
Заключение
Роботы Lego Mindstorms активно и широко используются в студенческой соревновательной деятельности, а также для апробации различных алгоритмов. Наиболее удобным способом управления в таком случае является беспроводное соединение посредством Bluetooth-
5
0
передатчика. Поставленный эксперимент наглядно демонстрирует, что реализованный в роботе NXT механизм беспроводного соединения через SPP не обеспечивает достаточной скорости передачи данных для полного переноса вычислений на персональный компьютер. В работе предложено переносить требовательные ко времени реакции задачи на управляющий микроконтроллер AT91SAM7S256 робота NXT для решения обозначенной проблемы.
СПИСОК ЛИТЕРАТУРЫ
1. World Robot Olympiad - About. - URL: http://www.wroboto.org/about-wro (дата обращения: 10.05.14).
2. Робофест-2014 - О фестивале. - URL: http://robofest2014.ru/about (дата обращения: 10.05.14).
3. LEGO MINDSTORMS NXT Executable File Spécification - 2009 The LEGO Group. - URL: http://www.lego.com/en-us/mindstorms/downloads/nxt/nxt-sdk/ (дата обращения: 10.05.14).
4. LEGO MINDSTORMS NXT Hardware Developer Kit - 2006 The LEGO Group. - URL: http://www.lego.com/en-us/mindstorms/downloads/nxt/nxt-hdk/ (дата обращения: 10.05.14).
5. LEGO MINDSTORMS NXT Bluetooth Developer Kit - 2006 The LEGO Group. - URL: http://www.lego.com/en-us/mindstorms/downloads/nxt/nxt-bdk/ (дата обращения: 10.05.14).
6. Universal Serial Bus Spécification / TOANYIP RIGHTS. - 2000 Apr 27. - URL: http://www.sdphca.ucsd.edu/Lab_Equip_Manuals/usb_20.pdf (дата обращения: 10.05.14).
7. SAM7S Series Complete // atmel.com [2014]. - URL: http://www.atmel.com/Images/doc6175.pdf (дата обращения: 11.05.2014).
8. Bluetooth Core Specification 4.1. - URL: https://www.bluetooth.org/DocMan/handlers/ DownloadDoc.ashx?doc_id=282159 (дата обращения: 11.05.2014).
Поступила 20.05.2014 г.