Достоинства данной библиотеки

advertisement
Санкт-Петербургский Государственный Университет
Математико-механический факультет
Реализация управления роботом 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
Download