четверг, 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! (те, кто еще не подписан)