Краткое руководство по использованию Lego Mindstorm с Linux

Luis Villa

Перевод: Станислав Рогин, ASPLinux

Аннотация

Система Создания Роботов (ССР) [Robotics Invention System (RIS)] Mindstorm от компании Lego Group, является на данный момент самым лучшим, доступным и дешевым комплектом. Тем не менее, стандартное программное обеспечение создано под MS Windows (что неудивительно). Но не отчаивайтесь - существуют несколько опций, которые позволяют пользователям Linux работать с Mindstorm под Linux. Данное Мини-Руководство предлагается как краткий обзор системы, опций для работы в Linux, и как сосредоточение ссылок на более подробную информацию.


Содержание
Вступление
Архитектура Mindstorm
Операционная система LegOS
программа Lego::RCX.pm
Не Совсем С [Not Quite C (NQC)]
pbForth
TinyVM и leJOS
TCL для ССР
Другие инструменты Linux
Дополнительные источники информации

Вступление

Если вы видели клевые комплекты Mindstorm от компании Lego, и были разочарованы, увидев большие наклейки "требует Windows" - не отчаивайтесь: есть еще надежда. Существует программное обеспечение, позволяющее вам настраивать ваш RCX в GNU/Linux, и даже, вероятнее всего, вы сможете делать это на вашем любимом языке программирования: C, Perl, Java или Forth. Данное руководство создавалось не как документация к работе с этими языками: я лишь надеялся обозначить основные моменты и дать контактные адреса для решения разных проблем при работе с Linux, так что этот документ можеть служить лишь отправной точкой для тех пользователей Linux, которые опрееляются с покупкой комплекта Mindstorm, или для тех владельцев Mindstorm, которые решили перейти на Linux, и сейчас находятся в недоумении по поводу того, смогут или нет они использовать свои самые дорогие игрушки :)

Очень важно отметить что, хотя я и стараюсь держать руку на пульсе текущих разработок Mindstorm, я не совершенство и не суперумник: вполне возможно, что данное руководство уже устарело или является неполным. Если вы знаете что-то еще о возможностях Mindstorm, используемых для Linux, пожалуйста вышлите мне сообщение на luge@users.sourceforge.net для того, чтобы я исправил и дополнил данный документ и поделился затем информацией с теми, кто сейчас думает о приобретении Mindstorm для использования его всемте с компьютерами GNU/Linux.


Подтверждения

Я хочу особо поблагодарить авторов, перечисленных ниже, за то что они сделали предварительные наброски и предоставили документацию для данного текста.

Steve Baker и Matt Miller, как и многие другие в Lugnet, обеспечили большое количество тезисов к ранним версиям этого текста. Их мысли присутствуют кое-где в тексте, и именно от них исходило большинство качественных идей в документе. :)

Наконец, несколько слов в адрес напрямую к нам сейчас не относящемуся - Michael Littman, сначала работавшему в Duke University, а сейчас в AT&T который, вообще говоря, платил мне за то чтобы я поиграл с LEGO прошлым летом. Без тех возможностей, что он мне предоставил, я не был-бы таким просвещенным в вопросах, касающихся Mindstorm, каким являюсь сейчас.


Предупреждения

Компания LEGO (http://www.lego.com/) очень, ОЧЕНЬ трепетно относится к своей торговой марке. Данный документ ни в коем случае не создавался LEGO, не имеет никакого отношения к компании LEGO, а я как автор заявляю, что не имею никаких отношений с компанией LEGO. Чтобы узнать больше о политике в области их торговых марок, обратитесь на http://www.lego.com/info/fair.asp, особенно к части (примерно в середине документа) с названием "Как Энтузиасты LEGO(r) Могут Обращаться к Продуктам LEGO по Интернет." Я пытался честно соблюдать указанные там ограничения; хотя если вы обнаружите какое-то нарушение, то пожалуйста дайте мне знать на , или напишите мне.


Copyright

This document is distributed under the LDP Copyright. You can find a copy of it here.


Авторские права

Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: , или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу


Архитектура Mindstorm

Основное оборудование

На случай, если вы еще не знаете: комплект Mindstorm от Lego - это конструктор роботов от "Lego Group", который сейчас продается примерно за 200 долларов США. За эти деньги вы получаете много Lego-деталей, большой блок, содержащий ЦПУ, жидкокристаллический дисплей, несколько кабелей и разьемов (называемых по тексту RCX), пару моторов, и несколько световых и тактильных сенсоров, которые позволяют системе взаимодействовать с внешним миром.

Сейчас выпусткается комплект RCX версии 1.5, который будет заменен весной 2001 года на версию 2.0. Далее, когда я говорю в тексте "RCX", я подразумеваю "RCX 1.x." Разница между версиями 1.0 и 1.5 незначительны, но изменения между версиями 1.5 и 2.0 могут быть существенны - точное содержание изменений пока еще неизвестно.

Если вы хотите знать больше о технической стороне дела (в смысле, помучить детальки, разобрать кабели и сенсоры, чтобы посмотреть, как они работают, и что заставляет их двигаться) - то для вас есть два важных сайта: Строение компонентов Mindstorm от Lego (автор Russell Nelson) и Строение компонентов сенсоров RCX (автор Kekoa Proudfoot). Без этих двух сайтов, вероятнее всего, и не было бы такого количество программного обеспечения, описанного далее по тексту.


Стандартное программирование RCX

Ключом к восприятию особенностей и параметров работы с Linux является понимание того, как комплекс Mindstorm работает с MS Windows. По умолчанию Lego поставляет программы для MS Windows, которые позволяют вам (или, например, 12-14 летнему ребенку) создать программу (в графической оболочке) для Mindstorm, используя мета-блочную структуру программирования кода. Как только программа таким образом "создана", программа компилирует и создает последовательность байтов. Эти последовательности - код - затем передается роботу, и его микропрограммы RCX обрабатывают этот код и руководят машиной на основе инструкций программы. Кроме анализа кода, программа RCX имеет много похожего с операционной системой: он контролирует работу аппаратных средств, ресурсов и, некоторым образом, управляет ИК [IR] портом, который используется для связи с роботом. Также он имеем возможность воспринимать отдельные специфичные команды (в противоположность закоченной программе) по ИК порту или через специальное устройство дистанционного управления, и управлять роботом на основе этих команд.

Программное обеспечение комплекта ставится, как в версии 1.0 (даже если вы приобретете RIS версии 1.5). У него есть несколько достаточно серьезных ограничений - например, так-как каждая переменная сохраняется в регистрах, а не в ОЗУ, то возможно существование только 32 переменных. Но тем не менее, можно делать достаточно клевые вещи и с такими органичениями, а в версии 2.0 микропрограммы комплекта (которая доступна сейчас в виде бета-версии на LEGO) эти ограничения будут, в основном, сняты, при этом должна остаться полная совместимость с версией 1.x.


Как применять инструментарий Linux

Разные программы под Linux для Mindstorm работают, как замена разных частей последовательности программирования (о которой только-что говорилось). Некоторые полностью заменяют программу, установленную по умолчанию некой своей ОС-подобной системой с языковым интерпретатором. Другие генерируют коды, которые совместимы с стандартным кодом Lego, и затем используют стандартное обеспечение для загрузки кода. Наконец, некоторые просто генерируют коды для дистанционного доступа, которые позволяют управлять роботом с PC-компьютера-хоста, без предоставления возможностей программирования. Эти программы также используют стандартныое Lego-обеспечение.


Необходимые комплектующие для Linux хоста

Так-как большинство инструментариев основаны на простых последовательных командах, требования к железу минимальны - в общем, любая машина с Linux может быть хостом.

Единственное исключение - это последовательный порт, который ДОЛЖЕН быть и который может не присутствовать на некоторых последних новинках "без тяжкого наследства прошлых лет". Вся связь с RCX осуществляется через ИК-утройство, которое присоединяется к машине через последовательный порт. Поэтому, если у вас нет последовательного порта, то вы не сможете использовать RCX до тех пор, пока не приобретете переходник, соответсвующий вашей системе. Более того, в дальнейшем с такой системой могут возникнуть проблемы (конфликты с прерываниями или портами). Такое часто случается, когда вы используете модем как устройство /dev/ttyS0. В таком случае есть три решения: во-первых, попытайтесь использовать второй последовательный порт для ИК-устройства. Во многих случаях это помогает 8-). А если это не помогает, то попробуйте просто не использовать ваш модем и ИК-устройство одновременно. Если это неприемлемо, то загляните в опции компиляции вашего ядра (в раздел "расширенные опции последовательного порта") в пункт "поддержка разделения системных прерываний". Убедитесь, что эта опция включена, и пересоберите ядро.

Так-как Макинтоши [Macs] не имеют стандартного последовательного порта, то пользователи LinuxPPC, вероятнее всего, должны будут достать переходники и произвести модификацию, для того, чтобы пользоваться системой. Dave Baum, автор NQC и пользователь Mac, создал инструкции о том, как это сделать.


Кибермастер [CyberMaster] и Скаут [Scout]

Кроме данной ССР, Lego выпускает еще две другие робосистемы - Кибермастер (доступна только в Европе) и Скаут. К сожалению, мне кажется, что только один из инструментов (NQC, обсуждаемый в Разд. Не Совсем С [Not Quite C (NQC)]) будет работать с этими системами. В общем, если вы собрались покупать Скаут, и имеете к этому еще немного денег, то лучше приобретите ССР - те немногие (дополнительно вложенные) средства себя оправдают.


Важное примечание об установочном компакт-диске MS Windows

Так-как многие из программ, обсуждаемых далее, используют программы и официальную марку Lego, вам, вероятно, потребуется ваш установочный компакт-диск с MS Windows. Вам, возможно, и не потребуется даже загружать MS Windows- ваше рабочее время останется при вас :) Тем не менее, (если вы запукаете NQC или RCX.pm, среди прочих программ), вам (вероятно) придется подключить компакт-диск, чтобы перезагрузить программу в систему, когда там закончатся батарейки. Если вы не хотите постоянно делать это, то тогда найдите файл firm0309.lgo на компакт-диске и скопируйте его в надежное место в разделе Linux.


Операционная система LegOS


Автор

Markus L. Noga


Тип

Смена программ в комплекте.


Язык

C с некоторой поддержкой для C++.


Платформы

Разработано на x86 GNU/Linux и протестировано на PPC Linux. Также были созданы для Cygwin и DJGPP для MS Windows. Порты для Solaris и Irix попытались сделать, но, возможно, они не будут работать в некоторых приложениях.


Описание

Операционная система LegOS - это многозадачная (с предварительной обработкой данных, pre-emptive) ОС POSIX для ССР. Программы написаны в стандартном C, скомпилированы на PC с использованием gcc (встроенный кросс-компилятор [cross-compiler]), затем они загружаются в систему (RCX), где и исполняются. Проще говоря, все что вы сможете написать на C, можно создать и в legOS. Из интересных функций там есть такие, как: random(), работа с числами с плавающей точкой, связь с семафорами POSIX, возможность сохранять несколько разных программ. Также в ОС включена возможность передачи и приема данных с Linux и MS Windows компьютеров. Такую мощность (а legOS определенно одна из наиболее мощных из программных систем для ССР) вы получаете, но со следующим (незначительным) минусом: так как legOS использует gcc, то legOS является одной из самых сложных систем в плане настройки под Linux-систему, и требует наибольшей загрузки программами-инструментариями.


программа Lego::RCX.pm


Автор

John C. Quillan


Тип

Библиотека для удаленного контроля.


Язык

Perl.


Платформы

GNU/Linux, MS Windows, и Solaris.


Описание

Прогамма Lego::RCX.pm - это простая библиотека на языке perl, предназначенная для удаленного контроля над роботом через ИК-устройство. По ИК-связи оно передает команды роботу, в котором стандартное ПО может интерпретировать их и исполнять. Если у вас уже установлен perl (а интересно у кого он все еще не установлен?), то это очень быстрый и простой способ управления роботом. Не нужно ничего инсталлировать - просто скопируйте файлы в правильный каталог (с вашими библиотеками), и добавляйте "use RCX.pm" в начале вашего скрипта на perl. Я не знаю, делал уже это кто-нибудь или еще нет, но это до смешного простой способ управления роботом - через скрипт CGI.


Не Совсем С [Not Quite C (NQC)]


Автор

Dave Baum


Тип

Компилятор байтового кода для ССР.


Язык

Язык очень похож на C, называется соответственно - Не Совсем С. Любой, кто имеет самые минимальные представления о программировании, с легкостью овладеет им.


Платформы

GNU/Linux, MS Windows, Macintosh.


Описание

NQC - это компилятор байтового кода, обрабатывающий программы на С-подобном языке, и компилирующий (на стандартном ПК) код, который воспринимается ССР от Lego. Такой подход имеет свои плюсы и минусы: например, стандартное ПО для ССР может иметь только 32 переменные, что накладывает на НСС некоторые ограничения. Хотя и с ними можно сделать достаточно много серьезных программ. Программа установки очень проста, а весь проект в целом отлично документирован. Данный язык является одним из наиболее популярных альтернативных языков программирования систем, так что в случае проблем с изучением НСС, вы найдете большое количество людей, желающих и способных помочь вам в этом.

Как уже упоминалось выше, НСС - единственное (на данный момент), что поддерживается Кибермастером и Скаутом под Linux. Более того, бета-версия НСС работает с программами, встроенными в комплекты версии 2.0, являясь, таким образом, первой альтернативной программной системой, поддерживающей функциональность новых продуктов.


pbForth


Автор

Ralph Hempel


Тип

Замена основного ПО.


Язык

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


Платформы

GNU/Linux, MS Windows.


Описание

pbForth попросту полный интерпретатор Forth, который заменяет стандартное ПО ССР. Как только вы установите его, то можно начинать загружать в робота скрипты на Forth, а интерпретатор затем обработает и исполнит их. Нет ограничений по количеству переменных, а также существует ряд "библиотек", которые поддерживают работоспособность системы (подобно интерактивной отладке). Это одна из наиболее простых систем для управления: все, что вам надо сделать, это только загрузить систему, а затем писать программу(команды) и загружать ее в робота. Никаких посторонних программ, инструментариев, компиляторов, интерпретаторов на ПК. Говоря о простоте, существует еще кросс-платформа TCL GUI, обеспечивающая почти такую-же простоту загрузки скриптов и работы с ПК.


TinyVM и leJOS


Автор

Jose Solorzano


Тип

Замена основного ПО.


Язык

Java.


Платформы

GNU/Linux, Win32


Описание

Как понятно из названия , TinyVM - это малая Виртуальная Машина Java [Virtual Machine], которая загружается в ССР для замены стандартного ПО. Затем на ПК создаются программы на Java, перекомпилируются и загружаются в ССР. Программа TinyVM использует стандартные библиотеки Java, а также библиотеки для контроля сенсоров, двигателей и всего, тому подобного, что есть в комплекте Mindstorm. TinyVM требует уже установленный и работоспособный комплилятор java.

leJOS - это похожий проект (фактически, ветвь того же проекта) того-же автора. По размеру он гораздо больше (около 5K дополнительно), но зато он включает в себя существенные дополнения, в том числе и операции с плавающей точкой и строковыми константами. Еще планируется создать коллекцию этих программ, а также и возможность последовательной загрузки нескольких программ.


TCL для ССР


Авторы

Laurent Demailly и Peter Pletcher


Тип

Компилятор кода и библиотека дистанционного управления.


Язык

TCL.


Платформы

GNU/Linux, Win32


Описание

Компилятор TCL для ССР имеет улучшенную функциональность: он может и компилировать скрипты на TCL в кодовые последовательности для ССР, а также может дистанционно управлять роботом через скрипты или интерактивную оболочку TCL. Если ваш выбор среди всех языков - TCL, то это самое оптимальное решение. Существуют две версии (по авторам), и версия от Laurent (на demailly.com) похоже, является основой для второй. Тем не менее, никакая из них не обновлялась с 1998 года.


Другие инструменты Linux

Эти программы, возможно, не относятся напрямую к Mindstorm, но они могут представлять интерес для поклонников Linux/Lego.


LeoCAD

LeoCAD - это (как ясно из названия) CAD-программа для конструирования и просчета Lego моделей. Существует порт GTK, который можно посмотреть на http://leocad.gerf.org/linux.htm. Автор примечает, что он еще не полностью отлажен и работоспособен, так что использовать его пока можно только для смеха.


POVRAY

Наборы от Lego для использования вместе с популярной программой POVRAY (для 3-D обработки). ЕЕ можно найти по адресу http://www.kawo1.rwth-aachen.de/~witte/projekte/lego/lego.html, а программу POVRAY - http://www.povray.org.


Дополнительные источники информации

Так как вы уже прочитали данный документ, то позвольте предложить вам еще несколько точек в сети для дальнейшего исследования и изучения Mindstorm. Большинство из них не предназначаются специально для Linux, но тем не менее почти везде есть группы и конференции, где вы наверняка найдете несколько пользователей Linux. Надеюсь, я убедил вас и настролил на дальгейшее изучение. Наслаждайтесь!


LUGNET

Сайт LUGNET [the Linux User Group NETwork - сеть пользователей Linux], http://www.lugnet.com/, давно уже является центром для онлайн-вселенной Lego. Там есть много групп новостей с огромным количеством пользователей. В частности, форум по роботам посещают очень много образованных читателей и участников. К тому же, некоторые разделы, затронутые выше, имеют свои собственные группы новостей в иерархии robotics/rcx/.


Официальный сайт Mindstorm

Официальный сайт Mindstorm на http://www.legomindstorms.com/ содержит много интересного, включая исходники НСС для общего пользования и распространения. Однако, не ожидайте там гигантского количества информации для Linux.


Сайты по оборудованию

Я уже упоминал ранее, но можно и повториться. Подробный и детальный обзор со всех сторон структуры ССП и RCX доступны для всех, кто пока не является инженерами LEGO. "Настоящий" сайт на http://www.crynwr.com/lego-robotics/ и второй на http://graphics.stanford.edu/~kekoa/rcx


Обзор роботов от Lego и "Справочник по Конструированию"

Как вы, вероятно, знаете, ССР стали создаваться изначально в MIT. Создатели знаменитого "класса Lego" в MIT имеют домашние страницы, которые включают в себя не только ссылки на класс (где содержится много крутого и великолепного!), но и на "Справочник Создателя Роботов", в котором содержится много замечательных предложений по созданию роботов для исполнения всех тех крутых программ, писать которые учили вас в этом тексте.