Введение
Люди задумались и заговорили о машинах, способных облегчить их повседневные рутинные занятия, много лет назад. Сначала люди конструировали простые механические приспособления, способные выполнять одно действие. С развитием механики механизмы усложнялись, усложнялись и работы, которые могли выполнять эти механизмы. Но с развитием вычислительной техники робототехника стала неотъемлемой частью научно-технического прогресса. Люди стали изобретать роботов, способных анализировать окружающую их среду и принимать решения о своих действиях на основе этого анализа.
Поэтому, после своего знакомства с простым набором Lego WeDo, я заинтересовался робототехникой, и мне стало интересно попробовать свои силы в создании и программировании более сложных машин. Поэтому я выбрал более сложный набор Lego Mindstorms NXT 2.0 для проведения своей учебно-исследовательской работы.
Цель исследования: освоить основы конструирования и логического программирования с помощью набора Lego Mindstorms NXT 2.0.
Задачи исследования:
изучить литературу и другие источники по теме исследования;
исследовать возможности набора Lego Mindstorms NXT;
изучить возможности логического программирования роботов на базе набора Lego Mindstorms NXT.
Объект исследования: набор-конструктор Lego Mindstorms NXT 2.0.
Предметисследования: программирование поведения робота, выполняющего функции уборщика.
Гипотеза: с помощью набора Lego Mindstorms NXT возможно создать робота-уборщика и запрограммировать его поведение.
Методы исследования: изучение литературы и материалов сети Internet, анализ полученной информации, моделирование и эксперимент.
В 1998 году компания Lego начала выпуск линейки роботизированных наборов, названной «Mindstorms». Основой набора послужил универсальный программируемый блок-процессор, разработанный совместно с компанией MIT Media Lab. Данный конструктор обладал настолько мощным творческим потенциалом, что через 8 лет, в 2006 году, была выпущена вторая версия набора Mindstorms – NXT 1.0, в 2009 третья – NXT 2.0, а в 2013 четвертая – LEGO Mindstorms EV3. В наборы конструкторов входят стандартные детали LEGO: пластиковые оси, колеса, балки, шестерни. Кроме того, в комплекте есть сенсоры (звука, расстояния, освещенности, касания и другие), двигатели и главное – универсальный программируемый блок. Последняя версия робототехнического конструктора, LEGO Mindstorms EV3, была максимально усовершенствована: чтобы запрограммировать EV3 Intelligent Brick, пользователю не обязательно иметь стационарный компьютер – добавлять и изменять программы можно напрямую на самом блоке. Управление роботом стало возможно через специальное бесплатное приложение с помощью смартфонов и планшетов с установленными операционными системами iOS и Android.
Набор, который я исследую в рамках своей работу, является третьей версией набора Mindstorms – Lego Mindstorms NXT 2.0.
Данный набор состоит из следующих основных частей:
универсальный программируемый блок-процессор;
3 сервомотора, позволяющие роботу двигаться или совершать какие-либо манипуляции. В сервомоторе имеется встроенный датчик поворота, который позволяет блоку-процессору точно знать, на какой угол повернулась ось мотора, с точностью до 1 градуса. Скорость вращения привода зависит от условной мощности, подающейся на сервомотор;
2 датчика касания, представляющие собой кнопку. Данный датчик позволяет сообщить блоку-процессору о нажатии или отпускании кнопки;
ультразвуковой датчик расстояния – позволяет процессору измерять расстояние до объектов. Его можно использовать, чтобы обнаруживать объекты, обойти препятствия, оценить и измерить расстояние, a также зафиксировать движение объекта;
датчик цвета – это датчик, позволяющий процессору различать цвета. Его также можно использовать и как датчик освещенности;
широкий набор деталей, включая колеса, шестеренки, конструкционные и соединительные элементы.
Рис. 1. Сервомотор и датчики комплекта NXT
Внешний вид входящих в комплект Lego Mindstorms NXT 2.0 сервомоторов и датчиков приведен на рис.1.
Существуют и другие датчики, которые выпускаются отдельно от комплекта, например, датчики для измерения громкости звука, освещенности, температуры, гироскопический датчик, компас и др.
Блок-процессор NXT (рис.2), идущий в поставке конструктора Mindstorms NXT 2.0, представляет собой специализированный микрокомпьютер, основанный на двух микроконтроллерах с флэш-памятью. На корпусе блока-процессора выделяются четыре кнопки управления и монохромный жидкокристаллический дисплей. Задняя сторона блока представляет собой крышку батарейного отсека для установки 6 элементов питания типа AA. Верхнюю и нижнюю грань корпуса занимают порты ввода и вывода для подключения сенсоров и электромоторов, а также порт USB 2.0. Также в корпусе NXT есть динамик, позволяющий воспроизводить звуки.
Рис.2. Блок-процессор NXT
Все датчики и моторы подсоединяются к блоку NXT через порты входа и выхода посредством шестипроводных кабелей. Сенсоры подключаются к входным портам под номерами 1, 2, 3 или 4. Моторы подключаются к выходным портам, имеющим на блоке NXT названия A, B и C.
Порт USB на блоке NXT необходим для подключения блока к компьютеру, загрузки в него программ или передачи данных от робота на компьютер. Для загрузки и обмена данными можно также использовать беспроводный адаптер Bluetooth, который предоставляет более универсальный тип беспроводного подключения. С его помощью блок NXT может взаимодействовать с блоками других наборов Mindstorms NXT 2.0, а также с ноутбуками, планшетами или смартфонами.
Производитель рекомендует для подключения сенсоров и моторов использовать следующие порты:
Порт 1: Датчик касания;
Порт 2: Датчик касания;
Порт 3: Датчик цвета;
Порт 4: Ультразвуковой датчик;
Порт A: Мотор для дополнительных функций;
Порт B: Мотор для движения;
Порт C: Мотор для движения.
Кнопки на блоке NXT необходимы для работы с меню блока NXT:
Серые треугольники – кнопки «вперёд» (вправо) и «назад» (влево) – позволяют перемещаться внутри меню до нужного пункта;
Оранжевый квадрат соответствует клавише ввода; она же используется для включения робота;
Тёмно-серый прямоугольник – «отмена» или переход назад к предыдущему пункту. Эта же кнопка используется для выключения робота.
Технические параметры блока NXT сведены в табл. 1.
Таблица 1. Технические параметры блока NXT
Процессор |
32-битный Atmel ARM7 AT91SAM7S256, частота 48 МГц. |
Сопроцессор |
8-битный Atmel AVR ATmega48, частота 8 МГц. |
Память |
256 Кб FLASH, 64 Кб ОЗУ основного процессора;
4Кб FLASH, 8 Кб ОЗУ сопроцессора. |
Порты ввода |
4 входа, 6 контактов на вход, поддерживают аналоговые и цифровые датчики, скорость передачи данных 9600 бит/с (I2C). |
Порты вывода |
3 выхода, 6 контактов на выход. |
Дисплей |
Графический LCD, 100 x 64 точек, черно-белый. При выводе текста используются символы 8 точек высотой, 8 строк. |
Звук |
Встроенный динамик, воспроизведение записанных звуков с разрешением 8-бит, частотный диапазон 2-16 КГц. |
Связь |
USB 2.0, скорость передачи данных до 12 Мбит/с;
Bluetooth Class II v2.0 с поддержкой эмуляции последовательного порта (SPP), скорость (внутренняя) 460.8 Кбит/с. |
Питание |
От 7 до 9 вольт, 6 элементов типа АА или литиевая батарея 7.2 В (опционально). |
Размеры |
14,5 х 9,6 х 6,1 см |
В набор Lego Mindstorms NXT 2.0 входит программное обеспечение Lego Mindstorms NXT Education для создания программ для роботов, созданных из набора-конструктора NXT.
Платформа NXT Education была разработана специально для Lego специалистами компании National Instruments. Данная среда программирования создана на основе собственного продукта компании – программного обеспечения LabVIEW.
Графическая среда разработки NXT Education используется для визуального проектирования программ для блока-процессора NXT. Данное ПО имеет интуитивно понятный интерфейс, создание программ управления роботами напоминает создание блок-схем и осуществляется с помощью специальных блоков, размещаемых на LEGO-балках вдоль оси последовательности действий. Порядок выполнения программы определяется порядком следования блоков. Подключение новых компонентов выполняется путем их «перетаскивания» с палитры программирования на LEGO-балку.
Каждый из иконок-блоков обладает набором уникальных характеристик, определяющих поведение робота. Например, блок «Движение», предназначенный для активации моторов, имеет параметры продолжительности хода и направления, а также мощность, передаваемую на двигатели. В NXT Education имеются блоки: для арифметических операций (сложения, вычитания, умножения и деления), для таймеров, для переменных, для сравнения числовых значений (меньше, равно, больше). Присутствуют блоки, отвечающие за звуковые эффекты роботов или за возможность бесконечного повторения установленных действий и за их завершение по определенным событиям. В программе возможно создание своих собственных компонентов, каждый из которых будет являться последовательностью стандартных блоков, объединенных вместе.
Кроме того платформа NXT Education включает в себя подробные инструкции по сборке огромного ряда моделей роботов LEGO; дополнительные инструменты для создания изображений, редактирования звуков и калибровки сенсоров; контроллер для передачи, запуска и остановки созданных программ и просмотра справочной информации о микрокомпьютере (ресурсах памяти, параметрах связи и т.д.). Имеется возможность дистанционного управления подключенного к ПК робота.
Среди основных достоинств среды визуального программирования – наглядность и простота в использовании, позволяющая быстро освоить ПО без особых знаний и усилий. Однако диапазон функциональных возможностей NXT Education весьма ограничен и требует для работы значительных ресурсов персонального компьютера. Последнее в свою очередь является существенной преградой при разработке сложных проектов.
В качестве практической части моей исследовательской работы я решил сконструировать робота, выполняющего функции уборщика помещения, и запрограммировать его поведение.
Робот должен уметь выполнять следующие действия:
перемещаться вперед;
определять границы помещения (стены);
совершать развороты при достижении границы;
подметать (натирать) пол щеткой.
Исходя из перечисленных действия я выбрал следующую конструкцию робота – это должна быть движущаяся тележка с блоком-процессором, к которой прикреплена щетка, вращающаяся в плоскости пола.
Для движения и совершения поворотов роботу необходимо использовать два сервомотора – один для левого ведущего колеса и один для правого ведущего колеса. Движение по прямой осуществляется путем работы обоих сервомоторов одновременно, повороты осуществляются путем включения только одного из сервомоторов (правого или левого).
Для того чтобы тележка твердо стояла на горизонтальной поверхности, она должна иметь минимально три точки опоры. Две точки опоры – это два ведущих колеса – правое и левое. Поэтому тележке необходимо третье опорное колесо, которое не является ведущим.
Для осуществления вращения щетки роботу необходим еще один сервомотор, который должен вращать щетку в плоскости пола.
Определение границ помещения (стен) необходимо роботу для того, чтобы подъехав к стене, робот не сталкивался с ней, а совершал поворот и продолжал движение. Для этого можно использовать либо датчик касания, либо ультразвуковой датчик расстояния из набора NXT. Я решил использовать ультразвуковой датчик расстояния, поскольку этот датчик позволяет определить расстояние до препятствия не касаясь его, т.е. не совершая столкновения, в отличие от датчика касания, который должен коснуться препятствия для срабатывания.
Таким образом, мы получаем следующую конструкцию робота:
блок-процессор NXT как основа робота;
2 сервомотора, подключенные к портам B и С блока NXT, с ведущими колесами на валах этих сервомоторов;
1 свободновращающееся опорное колесо, которое крепится к блоку NXT;
1 сервомотор привода щетки, подключенный к порту A блока NXT, со щеткой, присоединяемой к валу этого сервомотора;
ультразвуковой датчик расстояния, подключенный к порту 4 блока NXT.
Рис. 3. Робот-уборщик
Фото построенного мной робота приведено на рис. 3. Дополнительные фотографии представлены в приложении 1.
Для того, чтобы робот мог автоматически выполнять действия, необходимо запрограммировать блок-процессор NXT, который и будет управлять роботом по заложенной в него программе.
Я решил, что робот должен двигаться от стены к стене «змейкой», т.е. двигаться прямо, при достижении одной стены делать разворот через свою левую сторону, затем двигаться прямо и при достижении противоположной стены делать разворот через свою правую сторону, и т.д. (рис. 4).
Рис.4. Траектория движения робота
Исходя из этого, я составил программу, которая может быть представлена следующей последовательностью действий при помощи блоков программы Lego Mindstorms NXT Education:
Блок движение: Мотор A вращается постоянно.
Блок движение: Моторы B и C вращаются постоянно.
Бло цикл с условием выхода из цикла по значению с датчика расстояния: действие 2 продолжается до тех пор, пока расстояние до стены не станет меньше 20 см.
Блок движение: разворот робота на 180 градусов мотором B.
Блок движение: Моторы B и C вращаются постоянно.
Блок цикл с условием выхода из цикла по значению с датчика расстояния: действие 5 продолжается до тех пор, пока расстояние до стены не станет меньше 20 см.
Блок движение: разворот робота на 180 градусов мотором C.
Блок цикл с условием выхода из цикла по счетчику: действия 2-7 повторяются 10 раз.
Данная программа была спроектирована мною при помощи программного обеспечения Lego Mindstorms NXT Education (рис. 5) и была загружена в блок-процессор NXT моего робота.
Рис.5. Программа робота-уборщика
Подробное описание настроек каждого из блоков программы приведено в приложении 2.
Заключение
Проведенная мной работа показала, что с помощью набора-конструктора Lego Mindstorms NXT 2.0 можно создавать и программировать роботов с совершенно различными функциями. Я создал конструкцию и запрограммировал поведение робота-уборщика. И данный робот точно выполнял заложенную в него программу. Это показало мне, что я смог разобраться и с технической частью конструктора, и с его логической частью.
Теперь я понимаю, что можно усовершенствовать конструкцию робота, облегчив выступающую конструкцию со щеткой и сократив общую длину робота. Также можно попробовать усовершенствовать программу управления, чтобы робот определял кончилась ли комната при очередном своем развороте, или чтобы совершал обход помещения более оптимальным маршрутом – по сужающейся «спирали» по периметру комнаты.
И я сделал вывод, что набор-конструктор Lego Mindstorms NXT 2.0 очень полезен, т.к. он позволяет постичь основы механики при создании самой конструкции робота и его действующих частей, а также основы алгоритмического программирования при создании и отладке программы поведения робота.
Список литературы
Филиппов С.А. Робототехника для детей и родителей. – СПб.: Наука, 2013.
Копосов Д.Г. Первый шаг в робототехнику: практикум для 5-6 классов. – М.: БИНОМ. Лаборатория знаний, 2012.
Белиовская Л.Г. Программируем микрокомпьютер NXT в LabVIEW. / Белиовская Л.Г., Белиовский А.Е. – М.: ДМК Пресс, 2010.
Курс «Введение в программирование LEGO-роботов на языке NXT-G» / https://www.intuit.ru/studies/courses/14007/1280/info
Приложение 1. Конструкция робота
Вид робота слева:
Ультразвуковой датчик
расстояния
Мотор B
Мотор C
Мотор A
Блок-процессор NXT
Вид робота справа:
Щетка
Опорное колесо
Приложение 2. Программа робота
Программа робота-уборщика:
Блок 1. Движение. Мотор A вращается постоянно:
Блок 2. Движение. Моторы B и C вращаются постоянно:
Блок 3. Цикл. Условие выхода по расстоянию до препятствия:
Блок 4. Движение. Разворот мотором B:
Блок 5. Движение. Моторы B и C вращаются постоянно:
Блок 6. Цикл. Условие выхода по расстоянию до препятствия:
Блок 7. Движение. Разворот мотором C:
Блок 8. Цикл. Повторение действий 10 раз: