четверг, 31 июля 2008 г.

Модульные роботы

Любой робот состоит из нескольких частей - шасси, датчики, "мозг", и т.п. Но сейчас речь пойдет о другом. Есть категория роботов, которые состоят из одинаковых, равноценных модулей, способных соединяться друг с другом в единую систему.

Наиболее известный на сегодняшний день модульный робот называется SuperBot. Состоит любой Superbot из множества кубического вида модулей, которые могут соединяться с другими модулями любой из шести своих граней.

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

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

Впрочем, лучше один раз увидеть, чем сто раз услышать. Так что, смотрим репортаж FOX news о Superbot'е:

SuperBot заслуженно стал не только героем новостей, но засветился также и в статье на Популярной механике. Статья, хотя и обзорная, но все-таки достаточно познавательная, советую прочитать. Особенно интересно посмотреть ролик о том, как один SuperBot строит второго SuperBota, который сам, будучи маленьким, не может дотянуться до нужных ему дополнительных модулей.

Подобных SuperBot'у модульных роботов существует, на сегодняшний день, уже очень много. Например, наш российский модульный робот Змеелок, собранный в ЦНИИ РТК. Иностранных разработок в этом направлении - также великое множество. Например, очень интересен модульный робот YaMoR, модули которого обмениваются друг с другом информацией через Bluetooth. Или вот ссылка на описания сразу нескольких иностранных модульных проектов: http://www2.parc.com/spl/projects/modrobots

А вот еще один робот, модули которого умеют собираться вместе, если их отбросить друг от друга:

Как можно заметить, модульные роботы обладают рядом серьезных преимуществ. Надежность, способность преодолевать сложные препятствия, менять форму, делиться и соединяться вновь. Superbot'у, например, уже давно пророчат будущее исследователя иных планет.

Пока что такого рода роботы, конечно же, недоступны для рядового робототехника. Однако относительная простота конструкции каждого отдельного модуля позволяет надеяться, что и они скоро придут в жизнь рядовых жителей планеты Земля... :)

Хочется сказать несколько слов об алгоритме работы модульных роботов. Программное взаимодействие между модулями, на сегодняшнем этапе, не слишком сложное. Модулям, настроенным на единый алгоритм действия (например, на ползанье), часто требуется для успешной работы знать только лишь текущее состояние одного из соседних модулей...

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

Об идеологии распределенной работы хорошо написано в статье Кластеры, а текущие проекты распределенных вычислений в Интернет - освещены в другой статье, Распределенные вычисления.

Из этих статей видно, что современные распределенные вычисления - это не совсем то, что нужно модульным роботам. Таким образом недостаток алгоритмов - сейчас главная проблема направления модульности в робототехнике. Впрочем, работы по созданию новых алгоритмов ведутся уже полным ходом. В частности, пара подходов рассмотрена в документе Declarative Programming for Modular Robots (на английском языке).

Так что, могу с уверенностью сказать, индустрия роботов развивается семимильными шагами. Роботы копируют действия насекомых, животных, человека, или же оснащаются собственным поведением. Прогресс не стоит на месте. Каждый день появляются новые роботы, а иногда - даже новые типы роботов. И все это создается обычными людьми. И в который уже раз я намекаю на то, что пусть в России нет грамотной электронной базы, пусть роботы наши собираются на коленках, а компоненты бывает просто даже не купить... Но у каждого из нас есть мозги, и есть компьютер, и в программировании, в создании алгоритмов - препятствий нет. Так что, уважаемый читатель, может быть и лично Ваш вклад завтра приведет к революции в области робототехники :)... Кто знает!

среда, 30 июля 2008 г.

Будущее Wiimote

Представляю продолжение серии сообщений о Wii Remote.

Итак, шедевральный пульт управления от приставки Nintendo Wii, обладающий функцией обратной связи, о котором я неоднократно писал - Wii Remote, или просто Wiimote, прижился далеко не только в сообщениях моего блога.

Во-первых, нестандартных применений Wiimote становится все больше и больше. Благодаря фантазии Джонни Чэнг Ли и его "последователей", Wiimote уже может практически все... Заменять мышку в Windows, управлять роботами, например, Robosapien от Wowwee и Packbot от iRobot, даже в World of Warcraft играют с этим пультом!

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

Например, еще в мае этого года в СМИ можно было обнаружить краткие сообщения о патентовании корпорацией Apple аналогичного Wiimote пульта, причем пульт этот предназначался для Apple TV, телевидения нового поколения. Подробнее об этом можно почитать на британском сайте Pocket-lint.

Более того, еще один аналог контроллера Wiimote планируют изготовить в Microsoft. Причем, этот аналог будет очень и очень приближен к оригиналу, с целью обеспечения возможности простого портирования уже разработанных под Wiimote игр на Xbox 360. Сведения об этом стали доступны из неофициальных источников, оттуда же поступила и зарисовка будущего пульта:

Как видно из этой схемы, к функционалу пульта Wiimote добавлен аналоговый джойстик, что для робототехников просто прекрасно. Ведь именно аналогового датчика не хватает у Wiimote, на простейших датчиках в задаче создания робота на основе Wiimote - далеко не уедешь...

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

четверг, 24 июля 2008 г.

Наборы для роботостроения. Конструкторы роботов

Набор для роботостроения - это платформа, которую может использовать робототехник для построения различных вариаций роботов. Самыми известными наборами на сегодняшний день являются, пожалуй, iRobot Create и Lego Mindstorms NXT.

iRobot Create - это оригинальная вариация всемирно известного робота-пылесоса iRobot Roomba, причем почти такая же дешевая. Даже внешний вид модели Create - в точности такой же. На самом деле, из румбы просто вытащили оборудование для пылесосенья, и добавили дополнительных разъемов для подключения разнообразных приборов и датчиков. Ну и, конечно, создали SDK для управления получившейся машинкой :) Стоимость изделия на сайте производителя колеблется от 130 до 300 долларов США (примерно от 3000 до 7000 рублей), в зависимости от входящих в комплект дополнительно подключаемых модулей. Подробнее о наборе можно прочитать на сайте фирмы iRobot.

iRobot Create всецело поддерживается Microsoft Robotics Studio, поэтому писать под него можно сколько угодно.

Кстати, насчет iRobot Roomba. Во-первых, про него есть один очень интересный англоязычный ресурс Hacking Roomba, там, кстати, можно найти и обзор модели Create, даже с описанием ее внутреннего устройства.

Во-вторых, про робота-пылесоса Roomba сочинили песню, о чем буквально несколько часов назад написал на сайте RoboNews: Новинки техники. Новости Hi-Tech.

Одним из популярных концепций конструкторов роботов является «универсальное шасси». Иными словами, набор содержит только материалы для сборки шасси, а управление им осуществляется популярными сторонними средствами. Например, эту идею реализовал PC-bot, о котором я уже рассказывал в сообщении Роботы и mini-ITX (поскольку PC-bot построен с использованием платформы mini-ITX). Кроме того, очень известный пример - это PPRK.

Другой набор для роботостроения, последовавший в направлении создания «универсального шасси» - ER-1 фирмы Evolution Robotics. Смысл заключается в создании тележки для ноутбука, и управлению с ноутбука этой тележкой. Не правда ли, очень похоже на мой первый самодельный робот? :) Компания Evolution Robotics, видимо, думала о возможностях робота на основе ноутбука точно также, как я. Помимо функций, которые элементарно реализуются с помощью компьютера - у этого набора больше, в общем-то, ничего и нету(кроме заоблачной цены - 7500$ =~ 180 тыс. руб. !!). Подробнее о ER-1 читайте на сайте Evolution Robotics.

Отдельный вопрос вызывает проблема покупки наборов для роботостроения здесь, в России. На мой взгляд, наиболее серьезным российским магазином, торгующим роботами, сейчас является Robotronic.Ru.

Правда, наборов для роботостроения у них, пока что, единицы.

Впрочем, конструкторов роботов можно купить и в других местах.

Lego Mindstorms NXT (подробнее о них - на российском сайте Mindstorms.Su) можно купить в магазине Lego-Go.

iRobot Create в России, судя по всему, пока редкость. Я его нашел лишь в одном подозрительном месте (причем, там он назван роботом-охранником, странно, не правда ли?).

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

понедельник, 14 июля 2008 г.

Бумажные роботы

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

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

Конечно, особый интерес с бумажной точки зрения представляют самые известные роботы, из тех что "на слуху". Например:

  • R2D2 из Звездных Войн - однозначно самый известный робот. Проектов создания моделей, и даже реальных прототипов этого робота - очень много. Как-нибудь, я посвящу R2D2 целое сообщение в блоге, пока же ограничусь ссылкой на страничку с заготовками для изготовления бумажного аналога R2D2. Результат будет выглядеть примерно так:
  • Классный робот, очень интересный для сборки - WALL-E. Читаем пост на Хабрахабре, получаем вот такую прелесть:

Кроме того, бесспорно, очень известными роботами являются и боевые роботы вселенной Battletech. Между прочим, нахожусь сейчас в отпуске, и перед сном почитываю одну за другой книги по Battletech. К настоящему моменту прочитал уже более 10 книг из этой серии. Кто не читал еще - очень рекомендую, прекрасная сборка книжек по БатлТех есть на Lib.Ru. Кстати, о моделях роботов Battletech я уже однажды писал. Теперь же готов подкинуть еще две ссылки на ресурсы по созданию моделей мехов: MechLab от RDL_python и страничка ссылок на Battletech.Ru.

P.S. Кому интересна причина моего молчания - она та же самая, что в феврале. Квартиру покупал! Причем, в отличие от февральских стараний, на этот раз все успешно. Так что, принимаю поздравления :)

среда, 2 июля 2008 г.

Робот на основе Wiimote. Библиотека WiimoteLib

Итак, напомню, что Wiimote, или Wii Remote - это пульт дистанционного управления для приставки Wii фирмы Nintendo, обладающий широкими возможностями обратной связи (акселерометр + инфракрасная камера достаточно высокого разрешения). Вообще, о Wiimote я уже писал. Например, переводил статью Альберто Биетти об использовании Wiimote для управления роботом Lego NXT - с помощью Microsoft Robotics Studio.

И, если честно, на этом я остановился. Хотя девайс действительно очень классный, но на мой взгляд в робототехнике его особенно не поиспользуешь, особенно в любительской (а вот в 3D-игрушках - у этого пульта огромное будущее, как мне кажется). Ведь, по большому счету, это обычный дистанционный пульт управления с обратной связью, и все, что из него можно выжать - это какое-нибудь продвинутое управление манипулятором. Причем, скорее всего, более стандартные средства ДУ не будут сильно уступать творению фирмы Nintendo...

Впрочем, не все такие пессимисты, как я. Господин remrum высказал на Робофоруме другую идею переворота Wiimote «с ног на голову», и даже попытался воплотить эту идею в жизнь.

Вкратце: идея состоит в том, чтобы использовать Wiimote в качестве управляющего устройства для робота, при этом контакты от одиннадцати кнопок пульта будут служить датчиками данного робота, совместно с акселерометром и инфракрасной камерой. В качестве выходов устройства, для совершения управляющих воздействий, существуют контакты от 4х светодиодов и одного вибромотора. Конечно, запрограммировать пульт невозможно - однако логику можно реализовать на компьютере, ноутбуке или КПК, и соединяться с пультом по Bluetooth (такое соединение также уже предусмотрено возможностями пульта).

В принципе, достаточно простенький робот из всего этого вполне может получиться. И самое главное, управлять такой машиной можно с компьютера, с использованием всех самых современных средств программирования. Низкоуровневые драйвера для Wiimote уже давным давно написаны, и представлены в виде, например, библиотеки WiimoteLib, доступной в двух видах: на C# и на VB.Net (именно эту библиотеку использовал Альберто Биетти, ее подключение и использование описаны в упомянутой уже статье Wiimote и Robotics Studio).

Напомню, стоимость пульта составляет около 1500-2000 рублей, если покупать отдельно от приставки. Безусловно, это для многих покажется дороговатым приобретением. Спешу вас уверить - насколько мне известно, собрать подобную систему, оснащенную инфракрасной камерой и акселерометром, да еще и управляемую по Bluetooth, дешевле не получится точно.

Вообще, как я уже не раз говорил, роботы - удовольствие не только отнимающее много времени, но еще и очень дорогое...

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

Поэтому, в рамках помощи проекту remrum'а, я начал перевод справочного файла, поставляемого вместе с библиотекой. Переводить буду еще долго, и постепенно опубликую весь chm-файл, как в онлайн-варианте, так и для скачивания. Подписывайтесь на мой блог - и обязательно узнаете новости.

А пока что - обзорные сведения по библиотеке:

Библиотека WiimoteLib содержит одноименный нэймспэйс, основным классом которого является класс Wiimote. По сути, любая работа с пультом начинается с создания экземпляра этого класса:

Wiimote wm = new Wiimote();

После создания класса нужно подключиться к пульту с помощью метода без параметров Connect (после окончания работы с пультом, нужно разъединиться с ним, используя обратный метод Disconnect):

wm.Connect();

Очень просто с помощью библиотеки управлять светодиодами и вибромотором. Это важно, поскольку через светодиоды и вибромотор мы договорились осуществлять управление моторами робота:

wm.SetLEDs(false, true, true, false);
wm.SetRumble(true);

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

Что касается получения данных о состоянии кнопок, акселерометра и инфракрасной камеры - для этого у класса Wiimote существуют события, на которые можно поставить собственные обработчики. Делается это так:

wm.WiimoteChanged += new
    WiimoteChangedEventHandler(wm_WiimoteChanged);
wm.WiimoteExtensionChanged += new
    WiimoteExtensionChangedEventHandler(
        wm_WiimoteExtensionChanged);

На этом пока все, подробное описание класса, его свойств, методов и событий - будет, надеюсь, скоро готово.

P.S. Да, кстати, со следующего понедельника ухожу в отпуск, кто знает, может быть за отпуск удастся продвинуться в моих проектах роботов... Следите за новостями - подписывайтесь на RSS! (те, кто еще не подписан)