Санкт-Петербургский Государственный Университет Математико-механический факультет Реализация управления роботом LEGO Mindstorms NXT посредством USB Курсовая работа студентки 245 группы Птахиной Алины Ивановны Научный руководитель: ст. преп. Ю.В.Литвинов Санкт-Петербург 2011 Содержание Введение.........................................................................................................................................3 Обзор существующих решений....................................................................................................5 Реализация......................................................................................................................................6 Результаты......................................................................................................................................8 Список литературы........................................................................................................................9 2 Введение Объекты информатики и программирования сложны для восприятия. Они абстрактны: их трудно понять, представить, сравнить. В связи с этим возникла потребность создания реального исполнителя для демонстрации работы программ, с помощью которого преподавание информатики стало бы значительно проще, интереснее и нагляднее. Одним из первых эту проблему попытался решить психолог-информатик из MIT Сеймур Пейперт. Он создал язык программирования LOGO, который должен был быть понятен детям. Его идея заключалась в том, что программируя на этом языке, школьник сразу же видел результаты своей работы – на экране отображалось движение виртуального объекта – черепашки. программирования Благодаря этому языку, школьники отходили от тонкостей и в то же время получали доступ к новым информационным технологиям. Преподавание информатики как учебного предмета во многих советских школах началось благодаря академику А.П.Ершову и его группе, к которой принадлежали Г.А.Звенигородский и Н.А.Юнерман. Они разработали первые методики и соответствующие инструментальные средства (Робик, Рапира). Благодаря А.П.Ершову, слова «Программирование — вторая грамотность» стали не просто названием доклада, а лозунгом. Однако использования нематериального исполнителя было недостаточно. Даже красиво отображающийся на экране, он был мало нагляден. Современный уровень развития вычислительной техники позволяет создание недорогих устройств, как исполняющих внутреннюю программу, так и управляемых по беспроводной связи с персонального компьютера. Такие устройства и соответствующие робототехнические конструкторы уже активно внедряются в школьное образование. Самым популярным среди них является Lego Mindstorms NXT 2.0. Существует довольно много средств программирования для роботов, в том числе и визуальных. Однако каждое из них имеет свои недостатки, поэтому мы решили создать новый инструмент и тем самым найти практическое применение технологии быстрого создания визуальных языков QReal. Среда QReal разрабатывалась на кафедре системного программирования СПбГУ в течение нескольких лет силами студентов и аспирантов 3 кафедры Системного программирования. QReal включает в себя средства описания визуальных языков и автоматической генерации графических редакторов. На данный момент система QReal:Robots позволяет создавать графические программы для роботов Lego Mindstorms NXT 2.0 и исполнять эти программы прямо на компьютере, посылая команды роботу через Bluetooth-интерфейс. Однако не во всех школах, как выяснилось, есть возможность управлять роботом по Bluetooth, и поэтому появилась потребность “общения” с роботом и посылки команд ему посредством USB. Таким образом задача заключается в следующем: ● реализовать соединение робота с компьютером посредством USB; ● научиться посылать роботу директ-команды; ● программа должна функционировать под управлением ОС семейства Windows. 4 Обзор существующих решений Libusb - это библиотека, которая дает пользовательским приложениям единый доступ к USB-устройствам в различных операционных системах. Последняя версия: libusb-0.1.12. Поддерживаемые операционные системы: Linux, FreeBSD, NetBSD, OpenBSD, Darwin, MacOS X; для семейства Windows (Windows 98 SE, Windows ME, Windows 2000, Windows XP, Windows Vista, Windows 7) - libusb-win32. Достоинства данной библиотеки: ● Предоставляет использоваться libusb в – драйвер качестве для устройств, обычного драйвера который для может устройств, которые не имеют стандартных драйверов, а так же в качестве замены существующего драйвера. ● Реализует все стандартные USB-запросы устройств. ● Поддерживает различные операционные системы. Недостатки: ● libusb – драйвер может затруднить работу определенных устройств, поэтому данная библиотека рассматривается как инструментарий для разработчиков и не рекомендуется в качестве использования обычным пользователям. Fantom - это специальная библиотека NXT, реализующая соединение NXT с персональным компьютером через USB. Существуют две версии данной библиотеки: Fantom for Windows (32 or 64 bit) и Fantom Driver for Mac. Данная библиотека является более специфичной, нежели библиотека libusb, проще в использовании, не требует навыков разработчиков, и так как задача заключалась в реализации соединения через USB только непосредственно робота NXT, то данная библиотека оказалось самой подходящей. 5 Реализация Итак, для того, чтобы поддержать управление по USB в QReal:Robots, была выбрана библиотека Fantom. Чтобы научить робота NXT взаимодействовать с компьютером посредством потребовалось USB, написать тестовое приложение, позволяющее определить: подключен ли робот к компьютеру или нет и позволяющее посылать роботу NXT команды на исполнение. Соединение Для непосредственного установления соединения, для начала необходимо задать значение порта, а именно передать в функцию setPort значение “USB”. Далее, запуская библиотечный метод nFANTOM100_createNXTIterator с соответствующими параметрами, мы создаем итератор, который понадобится нам для получения имени устройства. Потом в случае, если не произошло ошибок подключения, с помощью итератора и метода nFANTOM100_iNXTIterator_getName мы получаем имя подключенного устройства. Для этого нам еще понадобится метод nFANTOM100_iNXTIterator_advance. Он будет использоваться в качестве перехода к следующей итерации. Для удаления итератора используется метод nFANTOM100_destroyNXTIterator. Для того, чтобы получить устройство и чтобы в дальнейшем с ним можно было работать, используется метод nFANTOM100_iNXTIterator_getNXT. Чтобы проверить, удалось ли подключить робот к компьютеру, мы проверяем его наличие в списке подключенных к компьютеру устройств с помощью метода nFANTOM100_iNXT_findDeviceInFirmwareDownloadMode. Посылка директ-команд Посылка команд роботу NXT на исполнение происходит следующим образом: команда записывается в массив байтов, а потом вызываем метод nFANTOM100_iNXT_sendDirectCommand со следующими параметрами: 1. само устройство; 2. ожидается или нет ответ на команду; 3. сама команда, представленная в виде массива байтов. Например, команда для звукового сигнала будет выглядеть так: QByteArray command(5, 0); command[0] = 0x03; // direct command play tone command[1] = freq; command[2] = freq >> 8; command[3] = time; command[4] = time >> 8; command[5] = 0x00; 6 где параметр freq - частота, а time - время исполнения команды. 4. длина команды; 5. выходной массив для нашей команды; 6. длина выходного массива; 7. переменная статус, в которую будет записан результат выполнения нашей команды. Как видно, сама процедура передачи команд роботу проста, вся трудность заключается в представлении команды и передачи ее в соответствующем виде. 7 Результаты В результате работы было реализовано подключение и посылка команд роботу NXT посредством USB. Для этого были рассмотрены и изучены библиотеки для работы с USBустройствами, изучены их методы и способы взаимодействия с ними. Был проведен анализ существующих решений и выбор наиболее подходящего из них с учетом пожелания учителей школ и формулировкой задачи. После этого было реализовано приложение, позволяющее осуществлять соединение с роботом NXT и позволяющее посылать ему на выполнение директ-команды, такие как: ● подача звукового сигнала. В дальнейшем планируется встраивание поддержки управления робота NXT по USB в среду QReal::Robots. 8 Список литературы 1) Брыксин Т.А., Литвинов Ю.В., Среда визуального программирования роботов QReal:Robots // Материалы международной конференции "Информационные технологии в образовании и науке", Самара, 2011 2) Lego Mindstorms NXT 2.0. URL: http://mindstorms.lego.com/en-us/Default.aspx/ (дата обращения: 18.05.2011) 3) Библиотека libusb. URL: http://www.libusb.org/wiki (дата обращения: 18.05.2011) 4) Fantom Driver. URL: http://mindstorms.lego.com/en-us/support/files/Driver.aspx (дата обращения: 18.05.2011) 5) nFantom100::iNXT Class Reference. URL: http://me.clustur.com/data/oldcode/NXT++%20Built/doc/developers/fantom%20docs/cla ssnFANTOM100_1_1iNXT.html#a9 (дата обращения: 18.05.2011) 9