Разработка программного обеспечения роботов "Lego Mindstorms" на основе автоматного подхода (Проект "Isenguard")



© 2005 Б.М. Ярцев, А.А. Шалыто

Санкт-Петербургский государственный университет информационных технологий, механики и оптики

Проектная документация
Исходные тексты
Модели роботов для программы MLCAD

Аннотация

В 1998 году компанией Lego был создан конструктор Lego Mindstorms, являющийся одним из расширений базового комплекта Lego Technics. Этот конструктор отличается от предыдущих конструкторов этой фирмы наличием различных датчиков (сенсоров) и микроконтроллеров, программируемых пользователем. Каждый комплект этого конструктора содержит определенную комплектацию датчиков и один микроконтроллер.

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

Позднее появились энтузиасты (сотрудники различных университетов и IT-фирм), которые создали язык программирования NQC (not quite C), очень похожий на C. При помощи этого языка стало возможным программировать роботов Lego традиционным способом. Первоначально программа на этом языке пишется на персональном компьютере, компилируется и загружается в память микроконтроллера через инфракрасный порт. При этом отметим, что память микроконтроллера составляет всего 32 Кб, что резко ограничивает круг решаемых задач, и в частности даже ту, которая рассматривается в настоящем проекте.

Специализированная операционная система (ОС), которая была разработана для установки на роботе для исполнения программы на языке NQC, занимала 26 Кб — для прикладной программы памяти практически не оставалось. После этого, на сайте www.sourceforge.net появился проект legos — это ОС позволяет писать программы для указанного робота на языке C. Она занимает 18 Кб. Сейчас этот проект переименован в BrickOS, и работа над ним продолжается.

В проекте в качестве операционной системы выбрана leJOS. Она написана на языке программирования Java и занимает 16 Кб. В ней присутствует урезанный стандартный Java API, а также классы и интерфейсы для интерпретации команд программы и получения информации от датчиков.

Теперь о проекте Isenguard. Это название навеяно одноименной башней из романа Дж. Толкиена, так как робот-поставщик сконструирован из двух частей, одна из которых башня, содержащая микроконтроллер. В проекте предложена технология программирования рассматриваемых роботов на основе автоматного подхода.

По материалам настоящей работы подготовлен доклад Automata-Based Programming of the Reactive Multi-Agent Control Systems, который принят на конференцию International Conference Integration of Knowledge Intensive Multi-Agent Systems (KIMAS ’05): Modeling, Evolution and Engineering. 8—21 April 2005, Waltham, Massachusetts.