пятница, 26 декабря 2008 г.

Роботы-ходуны

Роботы-ходуны, или Walkers, как их называют в англоязычных странах - это один из типов BEAM-роботов. Они производят очень классное впечатление, несмотря на то, что построить их на самом деле не так уж и сложно. Я сам сейчас по-тихоньку делаю самого простенького робота-ходуна, которого, надеюсь, под силу будет соорудить любому (потому что механик из меня никудышный, и уж если я смогу, то сможет каждый). Есть некоторые недочеты, и есть желание многие вещи переделать. Пока прогресс таков:

Видите, шестерни разъехались? Нужно скрепку менять на более толстую... Да и еще там несколько недостатков есть. К примеру, мощности одной батарейки не хватает, чтобы переключатель сдвинуть, его тоже нужно менять. Впрочем, я вообще с этим ходуном не спешу, много что делаю помимо... :)

Дак вот, пока я делаю этого ходуна, вообще роботами класса ходунов заинтересовался не на шутку. И там есть, ЕСТЬ, чем интересоваться! Для примера, приведу трех замечательных ходунов:

Под первым номером - робот-паук от Vovan'а с РобоФорума. К самому Vovan'у я отношусь прохладно, однако проект у него прекрасный. Достаточно посмотреть короткое видео:

Быстрый паучок, классный, не правда ли? Так и хочется улыбнуться при его виде:) Для исполнения нужны всего лишь: пара одинаковых моторов, десяток шестерней, материал для корпуса типа пластика, оргстекла, или тонкого железа, инструмент для обработки - распилки, резки, сверления и т.п. данного материала. Батарейки. Проводки. Всякие там болтики-гаечки, уголки... Вроде, и все. Уверен, для такой красоты эти материалы вполне можно попытаться достать. Схемы, фотографии, обсуждение, возможности усовершенствования конструкции, и т.д. - вы найдете в его теме на форуме. Тема была создана еще в ноябре 2007 года, поэтому содержит массу интересного. Да, кстати, в случае, если шестерней у вас не хватает - всегда можно изготовить сколько угодно копий уже имеющихся (а там шестерней я разглядел всего два вида - одна большая, одна маленькая), для этого нужно просто прочитать тему от Grover'а на том же РобоФоруме.

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

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

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

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

среда, 24 декабря 2008 г.

Microsoft Robotics Studio. Sumo-робот

Продолжаю серию статей про Robotics Studio.

В этой статье я расскажу, как сделать собственного Sumo-робота для соревнований симуляций сумо-роботов от Microsoft. Для этого, помимо установленной Robotics Studio (у меня - версия 1.5), необходимо скачать проект сумо-симуляции с сайта Microsoft.

Скачав, распакуйте zip-архив, и запустите файл Sumo Competition for Microsoft Robotics Studio (1.5).exe. В конце быстрой и простой установки откроется html-инструкция по использованию данного продукта.

Инструкцию можете закрывать, я вам итак все расскажу. Сначала нужно запустить командную строку Robotics Studio (эта "функция" доступна через меню Пуск). Затем выполните команды cd bin (переход в каталог [bin]), и makesumoplayer /name:имя-вашего-сумо-робота /forse:true. Я своего назвал просто: MySumo. В имени должны присутствовать только английские буквы и цифры - без пробелов. Вы, наверное, сможете придумать что-нибудь более оригинальное :) Вот что видим в ответ:

Итак, новый проект создан. Путь, где его можно отыскать, указан. Идем туда, открываем файл проекта. В моем случае этот файл называется MySumo.csproj.

Мне потребовалось сконвертировать проект под 2008-ю студию, т.к. создан он под какую-то более древнюю версию. Но это пара кликов мышью, ничего сложного... В итоге видим:

Итак, проект открыт - и теперь начинается самое интересное. Для начала, просто запускаем проект, нажимая F5. Выбираем в качестве соперника стандартную симуляцию (sumoplayer):

Между прочим, у вас наверняка возник вопрос: как сделать своему роботу особенную картинку? Все очень просто: нужна BMP-картинка 64х64 пиксела. Скопировать ее нужно в папку [Resources] внутри проекта, заменив файлик PlayerImage.bmp.

Несколько матчей подряд я смотрел, как ведут себя роботы. И пришел к выводу, что у них есть 2 достаточно большие проблемы:

  1. Если один робот, оказывается к другому роботу задом, - все, первый почти гарантированно проигрывает.
  2. Иногда робот сам усугубляет свое положение, оказываясь близко к линии в момент атаки. Логично было бы держаться центра ринга как можно дольше.

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

Как только понимание сути изменений достигнуто - можно приступать к следующему этапу: разбору кода. Код сгруппирован в несколько групп с помощью директив #region и #endregion. Нас будут интересовать только две группы: Sensor Handlers to be copied, и Timer Handler to be copied.

Как не сложно догадаться, первая группа отвечает за обработку событий от сенсоров, в то время как вторая - это таймер. В первой группе задается ПЕРВАЯ реакция робота. Например: увидел линию? - развернись на 130 градусов. Или: увидел соперника через камеру? - начни сближение.

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

Сложно? Да нет! Это только так кажется. В любом случае, привыкайте, такова стандартная событийная модель программирования.

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

  • _state.SumoMode == SumoMode.Contact - состояние, когда роботы столкнулись друг с другом и находятся в противоборстве. Основная проблема этого состояния состоит в том, кстати, что робот физически не может определить касание сзади - у него там нет датчика касания.
  • _state.SumoMode == SumoMode.AvoidBoundary - состояние, в котором робот старается избежать попадания за границу ринга.
  • _state.SumoMode == SumoMode.Tracking - робот засек противника камерой и едет за ним.
  • _state.SumoMode == SumoMode.Wander - режим свободного поиска противника.

Есть также и некоторые другие состояния робота, не столь критичные. Если вам понадобятся их описания, весь список присутствует в файле MySumoTypes.cs (ИмяВашегоСумоистаTypes.cs), при описании enum'а SumoMode.

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

Начнем с простого: как заставить робота держаться центра ринга? Очень просто. Надо заставить его просто крутиться на месте, не давая при этом двигаться вперед. В таком случае, качество поиска измениться не сильно, зато подставляться наш "боец" будет меньше.

Очевидно, что нам необходимо изменить действия робота в режиме свободного поиска. Поискав "SumoMode.Wander" в коде (Ctrl-F в MS Visual Studio), находим процедурку SetWanderDrive(), для которой написано в комментариях: This is the default drive configuration for wander mode. То есть, эта процедура назначает действия по умолчанию для робота, переходящего в режим свободного поиска.

Она состоит всего из двух строк, в первой изменяем текущее состояние робота на Wander, а вот во второй вызываем пока непонятную процедурку InternalDrivingMilliseconds().

Что же, жмем по названию этой процедуры правой кнопкой, выбираем в меню Go to definion. Смотрим заголовок процедуры:

public void InternalDrivingMilliseconds(int left, int right, double ms)

Что же, все понятно. Эта процедура задает скорости для двух моторов - левого, и правого - на определенное число миллисекунд (которое тоже задается). Скорости моторов, насколько я понял из кода, варьируются от -500 до +500, а число миллисекунд можно задать какое угодно, лишь бы больше нуля, естественно :)...

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

Вот что получилось у меня в итоге:

private void SetWanderDrive()
{
   _state.SumoMode = SumoMode.Wander;
   InternalDrivingMilliseconds(0, 400, 250.0);
}

Запускаем, смотрим: все именно так, как нужно. Наш робот вертится на месте, а его противник бегает туда-сюда. Правда, для весомого преимущества этого недостаточно.

Давайте попробуем воплотить вторую мою мысль.

Нам необходим фрагмент кода внутри процедуры RobotUpdateFloorSensorsHandler, содержащий текст "SudoMode.AvoidBoundary". Этот фрагмент отвечает за реакцию робота на засечение им линии впереди. Поскольку сам собой наш робот не движется, то если он засек линию - это может означать только лишь тот факт, что его толкает сзади враг. А значит, нужно срочно на всех парах мчаться назад! Ничего особенного, кроме уже известной нам процедуры InternalDrivingMilliseconds, в этом фрагменте нет. Вот что получилось у меня в итоге:

if (_state.Sensors.LineDetected)
{
  _state.SumoMode = SumoMode.AvoidBoundary;
  LogVerbose(LogGroups.Console, "Sumo Mode: AvoidBoundary");
  if (_state.Sensors.LineLeft && 
     !_state.Sensors.LineRight && 
     !_state.Sensors.LineFrontRight)
    InternalDrivingMilliseconds(-100, -400, 200.0);
  else if (_state.Sensors.LineRight && 
          !_state.Sensors.LineLeft && 
          !_state.Sensors.LineFrontLeft)
    InternalDrivingMilliseconds(-400, -100, 200.0);
  else
    InternalDrivingMilliseconds(-500, -500, 400.0);
}

Запускаем, лучше всего штуки три матча подряд. У меня статистика трех матчей получилась такая: 2 раунда проиграно, 1 ничья, 6 раундов выиграно. Думаю, комментарии излишни :)

P.S. На написание данной статьи меня сподвиг Дмитрий Калинин (kalisha), за что ему огромное спасибо. Он прислал собственную статью, на тему создания робота для соревнований Microsoft ImagineCup, однако эта статья потребовала настолько глобальной переделки, что я ее полностью переписал, полностью сам разобрался в коде, адаптировал его под стандартную сумо-арену, ну и т.д. Очень надеюсь, что следующую статью Дмитрия я смогу выложить в менее "отредактированном" варианте :)

воскресенье, 21 декабря 2008 г.

Робот и микроконтроллер. COM-порт

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

Такая связка, как правило, производится через COM-порт. Все, кто с этим когда-либо связывался, наверняка знают, что у COM-порта компьютера, и у UART микроконтроллера - разные уровни сигналов логических "0" и "1". Для их согласования используют микросхему MAX232, или ее аналоги. У меня в городе микросхем продается крайне мало, да и лишней пайки всегда стараюсь избежать - поэтому я сразу же пошел по альтернативному пути. А именно, использовал для согласования дата-кабель от мобильного телефона.

После недолгих поисков оказалось, что у меня есть только лишь дата-кабель от телефона Fly SL200. К разъему этого телефона напрямую подцепиться просто невозможно, т.к. расстояние между контактами там меньше миллиметра. Отрезать разъем тоже не хотелось - телефон-то рабочий, и его иногда синхронизировать не помешает. Пришлось подпаиваться. Результат очень порадовал, поэтому размещаю фоторепортаж с места событий.

Итак, вот что у нас есть вначале:

Ясно, что внутри компьютерного разъема запаян MAX232 или его подобие. Я даже проверять не стал, тем более вычитал этот факт из документации в интернете. Подпаиваться же надо ко второму разъему - телефонному. С помощью тонкой отвертки поддел защелки на разъеме и снял его крышку. Внутри обнаружилось 4 очень аккуратно подпаянных проводка. Мне такой пайки не повторить:

Путем поиска в интернете удалось обнаружить, что два проводка посередине - это как раз нужные мне TxD и RxD. К одному подпаялся прямо на разъеме, а ко второму - на небольшом отдалении, зачистив изоляцию на проводке:

Затем, с помощью маленьких пассатижей, я завязал узлом подпаянные провода - чтобы они не боялись дерганий, и ножом вырезал выемку в пластиковом крепеже для приходящих в разъем проводов:

Закрыл крышку, получилась вот такая вот красота:

Теперь кабелем можно пользоваться как для синхронизации телефона, так и для связи компьютера или КПК с микроконтроллером. Осталось немногое - прикрепить к концу выведенного нами двухжильного провода какой-нибудь разъем, с помощью которого этот провод можно было бы легко подключать к плате микроконтроллера. Я сделал просто, отрезав этот разъем от старенького блока питания. Скрутил провода и пропаял их немного, вот что получилось:

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

Думаю, данный рецепт вполне подойдет и для большинства других дата-кабелей. Главное, проверить, что кабель для подключения к COM-порту использует сигналы ttl-логики со стороны разъема телефона.

Напоминаю: нулю в TTL-логике соответствует напряжение до 0,4В, единице от 2,5В. В то же время в стандарте RS232 ноль - это от +5В до +15В, единица - от -15В до -5В, причем от -5В до +5В считается неопределённым состоянием.

Программирование COM-порта, как со стороны КПК/компьютера, так и со стороны микроконтроллера, обсудим в следующий раз. До скорых встреч!

суббота, 20 декабря 2008 г.

Старый добрый самодельный робот

Напомню: моему первому роботу посвящен сайт Самодельный робот, делал я этого робота несколько лет назад, и сдавал в качестве диплома при выпуске из университета. Однако, сам по себе робот был первым блином, а первые блины, как известно, всегда получаются комом. Неверно было выбрано шасси, да и реализован был только лишь базовый функционал. Хотя, спроектировано и продумано все было гораздо дальше.

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

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

Система датчиков робота: ИК-приемник, совмещенный с датчиком обратной связи (обыкновенной компьютерной мышкой). Подключаются через COM-порт. Все вполне работоспособно, пробовал - нормально подключается к компьютеру и воспринимает сигналы пульта ДУ, и даже мышка ползает по экрану :)

Базовая модель ("раздетая" игрушечная машинка).

А вот и старенький i80486, который я планировал использовать в качестве "мозгов" робота (в альтернативу ноутбуку). До сих пор не хочется его выбрасывать, или распаивать на составляющие. Жаль, штука громоздкая, и ее достаточно сложно запитать от аккумуляторов или батареек, потребуются достаточно сложные блоки питания. В итоге я сам использовал вместо этого компьютера - ноутбук уровня Pentium I, который, кстати, жив и работает до сих пор.

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

пятница, 19 декабря 2008 г.

Вибробот - это примитив?!

В недавнем сообщении про BEAM-искусство я упомянул вибро робота, на что немедленно в комментариях получил ответ, мол, да стоит ли такого робота вообще считать роботом... Стоит, господа, еще как стоит! И вопрос даже не в определениях. Видимо, вы просто не видели более крутых вариаций вибробота, основанных на абсолютно том же самом принципе - моторчике с эксцентриком, выдранном из мобильника (ака виброзвонок).

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

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

Идем дальше. Может быть, кто-то из уважаемых читателей еще не знает, что робот, оснащенный двумя вибромоторчиками, может и поворачивать, и прямо ползти. На основе этого "феномена" управляемости делают люди бимов-виброботов, которые умеют ползти на свет. Делается все крайне просто: два фотодатчика крест-накрест, и два вибромотора. Укрепляем на той же самой щетке - и вперед, поехали. Согласитесь, движение на свет - это очень даже характерная BEAM-особенность.

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

Наконец, хочется рассказать о том, что на Instructables назвали вибро роботом следующего поколения. Все дело в том, что этот робот управляется через фотоприемник с помощью обычного пульта управления. Конечно, потребуется небольшая микросхема, и все-таки, робот остается очень миниатюрным (помещается на монетку в 50 копеек), и, при этом, полностью дистанционно управляемым. Смотрите сами!

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

четверг, 18 декабря 2008 г.

Новое и старое в робототехнике

nVidia аннонсировала выход новой материнской платы Ion, умещающейся на ладоне. На такой штуковине вполне может крутиться Windows Vista, и, как они утверждают, должны пойти даже игрушки вроде SOD 4. В общем, по производительности платка супер. Как и по миниатюризации. Вскорости будут выпущены нетбуки на ее основе.

Все больше и больше возникает альтернатив миниатюрным материнским платам компании VIA. И это не может не радовать, поскольку у VIA уж слишком блоки питания дорогие... :) А конкуренция рождает удешевление.

В частности, упомяну еще, например, про плату форм-фактора mini-ITX (17х17 см) от компании ZOTAC - nForce 630i-ITX. Весьма даже мощная, чуть ли не игровая плата. И вместе с тем - миниатюрная.

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

Между прочим, пока искал даташиты для своих ATmega16, наткнулся на классную статью про изготовление автомобильной сигнализации своими силами. Действительно, трудозатраты совсем небольшие, одна схемка на микроконтроллере, один старенький сотовый телефон. И по мелочам: сирена, концевые выключатели, кнопка, светодиод... А по возможностям такую систему вполне можно сравнить с современными серьезными сигнализациями, которые стоят ой каких денег! Вот вам, кстати, и толковое применение робототехнического хобби...

понедельник, 15 декабря 2008 г.

BEAM-искусство

Я сам роботостроение делю как минимум на 4 больших части:

  • BEAM-роботы, примитивные роботы, логика работы которых реализуется механическими или же простейшими электронными средствами.
  • Роботы на микроконтроллерах. Почти все, что может сделать робот на микроконтроллере, запросто может сделать и BEAM-робот. Лично для меня это наиболее непривлекательная часть роботостроения, ведь реализовать что-либо серьезное только на микроконтроллере все равно скорее всего не получится, а если и получится - то это будет гораздо более трудоемкая задача, чем в роботах других типов...
  • Роботы на основе компьютера или КПК/мобильника/коммуникатора. Наиболее перспективная часть робототехники для любителя. И сами устройства - доступны, и функционал у робота можно реализовать очень немаленький.
  • Более сложные роботы - манипуляторы, андроиды..., реализующиеся промышленными средствами (специально созданными контроллерами, и т.д.). Не для любителей.

Классификация сугубо условная. Да даже бог с ней, с классификацией! Сегодня нам важны только бимы.

Конечно, про BEAM-роботов я уже писал. Это - то, с чего здорово начинать новичку. Это - то, что можно сделать за 1 день. Это красиво, здорово, забавно. С недавнего времени я начал относиться к созданию BEAM-ов даже как к своего рода творчеству, искусству...

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

По-моему, практически гений бим-роботостроения - это MegaBIZON с РобоФорума. Посмотрите его темы, у него куча очень оригинальных роботов. Правда, не всегда простых :)

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

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

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

Вкратце расскажу о процессе изготовления. Все вместе заняло около часа - поиск необходимых деталей, сборка, "тестирование" (нормальным вышел лишь 3й вариант). При наличии нормального "сырья" можно уложиться в 5 минут.

Еще в предыдущем посте привел рецепт. У меня он несколько отличался. Во-первых, вместо коробки использовал маленькую пенопластовую подложку. Из-под цукатов, по-моему. Сам я сладкое не люблю, так что не разбираюсь. Нашел на кухне, в общем :)

Проделал в этой подложке дырку обычным ножом для бумаги, дырка по центру и по размеру чуть меньше кулера. Если отверстие сделать не по центру, при включении кулера подложку начнет скорее всего закручивать (у меня было так). Приладил кулер. Залепил края скотчем, им же прикрепил кулер к подложке. Кстати, сначала пытался использовать клей (Момент), но оказалось, что он разъедает пенопласт. Проел дырки насквозь...

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

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

Собственно, вот и все. Элементарно, из материалов - скотч, подложка, кулер. Более чем доступные детали. Может и бестолково, но забавно. Пяти минут стоит:)

Сейчас - вознамерился сделать очень простенького робота-ходуна. Базируется идея на проекте из Instructables, однако вместо сервы используется обычный моторчик, а вместо специализированной микросхемы - один хитрый переключатель. В общем, по идее, все гораздо доступнее. Никаких электронных компонентов совершенно... Если все получится, обязательно продемонстрирую видео, и собственно инструкцию по сборке. Пока что процесс вот на такой стадии:

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

На фотке - дочка наблюдает за простейшим вибро-роботом.

пятница, 12 декабря 2008 г.

Интернет о роботах. Контроллеры МК

Хорошие сайты про роботы, безусловно, появляются. Причем, достаточно часто. Жаль, что робототехникой интересуется не так уж много народу. Банальный пример: на форуме моего родного города, хотя и живет там всего лишь 250 тысяч человек, статистика превышает статистику крупнейшего и лучшего робототехнического форума страны - в 10 раз! Почти всем пунктам.

С другой стороны, статистика посещаемости сайта, например, Самодельный робот - стабильно растет, хотя при этом сайт почти не обновляется, и уже давно на первых местах в Гугле и Яндексе по всем нужным запросам. В начале года на сайт ходило порядка 2000 уникальных посетителей в месяц, а сейчас - уже 7000. И каждый месяц идет прибавка в 500 человек...

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

Прежде всего, речь пойдет об очень интересном блоге - Androidov.Net. Его владелец - программист, который работает в том самом знаменитом ЗАО "Андроидные роботы", Константин Ковшенин. Поскольку компания профессионально занимается и созданием собственных, и дистрибьюцией зарубежных моделей андроидных роботов, то Константин имеет ко всем этим роботам самый настоящий доступ, и размещает материалы о них "из первых рук". Конечно, вроде бы как, андроиды - это слишком сложно для наколенного домашнего изготовления. Не спорю. Я бы даже сказал - нереально. Однако, отдельные решения могут использоваться и любителями.

Например, контроллеры серии МК (МК-65, МК-66, МК-67), на основе которых сделаны все роботы фирмы. Это серьезные контроллеры для роботов, которые позволяют управлять широкой гаммой внешних устройств, обеспечивают серьезную производительность, и хорошую надежность. Для программирования этих контроллеров разработан соответствующий язык, и создана документация. В том числе, примеры программирования контроллеров имеются и в блоге Константина.

Стоимость контроллеров - очень даже приемлимая. У нас в стране Arduino стоит чуть ли не дороже, а ведь Ардуино, по сравнению с контроллерами МК - это детская игрушка! Судите сами, описание и цена на МК-65/МК-66 представлены на сайте ЗАО "Андроидные роботы". Там же, если интересно, можно скачать инструкции по программированию этих контроллеров.

Кроме роботов AR, Константин также пишет и о Robotics Studio, и о различных соревнованиях, выставках, освещает новости компании и робототехнического мира вообще, и т.д. Я очень рад, что в категории робототехнических блогов появились достойные новички!

И еще один блог, о котором хотелось рассказать сегодня - это блог Easy Electronics. Очень грамотный блог по электронике. Приемы пайки, выбор инструмента для работы, создание печатных плат, программирование AVR, и многое другое. Иногда автор пишет о собственных коммерческих задачах, что придает блогу особенную серьезность, поскольку демонстрируются способы зарабатывания реальных денег.

среда, 10 декабря 2008 г.

О сайте "Самодельный робот"

Заметили наверное? Не работал сайт про моего первого робота. Домен paccbet.ru был не делегирован - вот и не работал.

Причина - в том, что оплатил недостаточно вовремя. Именно так, недостаточно вовремя! Домен был оплачен вплоть до 6го декабря (включительно). 6го декабря я его и продлил. И даже выслал в доменную службу хостера информацию с квитанции об оплате. 7го ночью домен перешел в состояние NOT DELEGATED, и 3 с половиной дня пребывал в этом состоянии. Вот вам, господа, и все роботы...

А ведь, вроде бы, и не придерешься: в договоре прописано, мол, платеж считается проведенным только после фактического поступления денег из банка. К тому же, домены они покупают у регистратора R01, а это все-таки уже чужая лавочка, и свои деньги за нерасторопных клиентов туда вкладывать большого желания нет - даже если эти деньги невелики. Вроде бы не придерешься, да... Только вот, почему-то, сам не знаю почему, впервые за последние несколько лет набрал в Google слово "хостинг"...

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

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

понедельник, 1 декабря 2008 г.

Самоделки и робот на воздушной подушке

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

И главное, что привлекло внимание - это видео простейшего робота на воздушной подушке... Я приведу немного другое видео, нежели чем на сайте, но суть та же. Рецепт в данном случае следующий: аккумуляторы от ноубука Lenovo/IBM, коробка от Cisco, и вентиляторы от SuperMicro и выключатель от блока питания InVin. Любой компонент можно заменить. К примеру, вместо картонной коробки можно использовать обычную подложку из-под конфет из магазина. Проще не бывает, а дети - гарантированно будут в полном восторге!

среда, 26 ноября 2008 г.

Пара самодельных роботов

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

Перед этим, между прочим, хочется сказать большое спасибо человеку под ником AMuHb, за разработку нового дизайна для сайта о моем первом роботе. Абсолютно бесплатную и, как мне кажется, очень удачную разработку. Спасибо! :)

Дак вот, вернемся к роботам. На форуме Winglion'а я обнаружил крайне интересную ветку про изготовление робота на основе вай-фай точки доступа. Идея примерно такая же, как и в случае изготовления робота на основе Wiimote, т.е. робот управляется компьютером через вайфай.

Однако, возможности вай-фай точки доступа, как оказалось, намного шире. В частности, у нее присутствуют абсолютно стандартные порты USB и COM, благодаря чему ее не только можно поставить на колеса, но можно даже присоединить к ней вебкамеру. Еще точку доступа можно прошить linux'ом в минимальной конфигурации, и придать роботу некоторую минимальную самостоятельность даже при отсутствии Wi-Fi сигнала. В общем, читайте сами. Мне лично идея понравилась чрезвычайно.

И еще, в блоге Виталия Клебана обнаружилось описание робота под названием kipmandroid, изготовленного Василием Костровым, знакомым Виталия. Видео, фотки. Полезно посмотреть, и вдохновиться на создание такого же или даже лучше :)

вторник, 11 ноября 2008 г.

Кубок по робототехнике в Красноярском крае.

Собственно, прошел этот кубок давненько - в начале ноября, однако написать об этом событии получилось только сейчас.

Конкурсов, событий, соревнований, - множество. Чем же интересен именно этот? Во-первых, что мне бросилось в глаза, когда я увидел фотографии, это невероятное для России количество собранных вместе Lego-роботов. И действительно, конкурс проводится именно среди комплектов Lego Mindstorms NXT. Причем, занимались разработкой роботов школьники.

Все участники были разбиты на три группы по возрасту: младшие, средние и старшие. Задачи вертелись вокруг следования по линии, чем старше участники, тем сложнее задача. Младшие должны были представить робота, который бы просто мог ездить по линии. А робот из старшей категории должен был, помимо этого, еще убирать с дороги препятствия, уметь забираться на возвышенности, и проезжать через тоннели.

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

Фотографии с кубка прислала Александра, за что ей отдельное спасибо. Как всегда, кликаем для просмотра полноразмерных изображений:

четверг, 6 ноября 2008 г.

И снова: Robotics Studio

Продолжаю серию статей про Robotics Studio.

Во-первых, хочется рассказать об известном глюке Microsoft Robotics Studio, который мне некоторое время не позволял запускать симуляционную среду. Дело в том, что при установке движка AGEIA PhysX, требуется установить DirectX. Если его установить не в полном объеме, либо понадеяться на то, что он уже установлен, либо не дать инсталлеру стянуть необходимые файлики из сети - симуляционная среда скорее всего не будет запускаться, выдавая следующую ошибку:

System.TypeInitializationException: The type initializer for 'Dss...' threw an exception. ---> System.IO.FileNotFoundException: The specified module could not be found. (Exception from HRESULT: 0x8007007E)

Лично мне пришлось переустановить Robotics Studio, загрузив дополнительно из сети аж целых 36Мб "DirectX Optional Runtime Components". Наверняка эти компоненты можно загрузить отдельно в виде оффлайн-инсталлера, но откуда - мне разобраться не удалось. Может, кто-нибудь из читателей знает? Отметьтесь в комментариях :)

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

Напомню, этот проект организован Microsoft'ом, в рамках поддержки Robotics Studio. Регулярно проводятся разнообразные соревнования, победители этих соревнований получают весьма существенные призы. Данный проект хорош тем, что вам не требуется настоящий робот, не требуется куда-то ездить... Просто напишите хорошую программу - и есть шанс получить немаленькую сумму денег (и войти в анналы Microsoft)...

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

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

Напоминает DARPA Urban Challenge, не правда ли? Все так и есть! Задание простое: требуется заставить беспилотную машину ездить по вполне оживленной модели города. Спонсором соревнования выступила компания KIA, главный приз - автомобиль KIA Soul. Между прочим, в том самом наборе файлов для выполнения задания - детальные модели некоторых автомобилей KIA...

среда, 5 ноября 2008 г.

Программирование. Среды разработки для роботов

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

Тема, сами понимаете, крайне интересная. Поэтому, я постараюсь здесь привести данные из статьи - в переводе на русский, и добавлю собственных мыслей...

Итак, ситуация сегодня такова, что среды робототехнической разработки появляются, словно грибы после дождя. Причем, в качестве дождя - выступила инициатива Microsoft в виде их знаменитой Robotics Studio.

Сама же Microsoft, выпуская робототехническую среду разработки, руководствовалась фактами повального внедрения роботов в нашу жизнь. Может быть, кстати, поводом стало то, что какому-нибудь из топ менеджеров корпорации подарили на день рождения робота(что, кстати, часто бывает)... Или же это было серьезнейшее исследование из серии "Куда вложить деньги?". Не знаю.

Зато знаю, что статистику по роботам можно свободно посмотреть на сайте IFR Statistical Department (на английском). Очень познавательно, и главное - сразу понятно, чем руководствовался Microsoft :)

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

  • Во-первых, это потенциальная работа. Сегодня пишут: требуется программист со знанием Ajax, C#, ASP.Net. Завтра - кто знает, может быть на кругленькие суммы будут требоваться знания Microsoft Robotics Studio?
  • Во-вторых - это готовые драйвера для различных робототехнических устройств и для наиболее распространенных роботов-конструкторов.
  • В-третьих - это готовые к использованию, мощные библиотеки алгоритмов и решений. Например, поиск пути, распознавание образов, голосовое управление и т.д.

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

При этом, конкуренция очень важна. Microsoft, они возьмут завтра, и сделают Robotics Studio платной (кстати, для коммерческого использования она платная уже сейчас). Да и вообще, всегда приятно, когда есть альтернатива. Ведь кто пользуется Windows Media Player? Правильно, те, кто ни разу в жизни не видел Winamp :)

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

Skilligent - эта фирма является лидером в области технологий обучения роботов и их взаимодействия с окружающей средой. Философия Skilligent - отказаться от жесткого программирования функций робота, и сосредоточиться на предоставлении интерфейса для обучения робота любым функциям (между прочим, помните про робота, которого научили готовить яичницу?). Основной продукт фирмы называется Robot Learning and Behavior Control System, и в его составе поставляются следующие модули:

  • Система машинного зрения, позволяющая распознавать и отслеживать объекты, описания которых берутся из соответствующей базы данных.
  • Система навигации, которая берет на себя функции ориентирования в знакомых помещениях. Знакомыми помещения становятся после обучающей сессии...
  • Урезанная версия отказоустойчивой системы управления (Fault-Tolerant Control Framework), служащей для координации работы всех остальных модулей.

Robot Learning and Behavior Control System на самом деле не является самостоятельной средой разработки, зато представляет из себя прекрасный сборник решений. Силами специалистов Skilligent она была интегрирована в Microsoft Robotics Studio.

Полнофункциональная система разработки Urbi, детище компании Gostai, по функционалу стоит очень близко к Microsoft Robotics Studio. Urbi использует симуляционную среду Webots, и имеет готовые интерфейсы для роботов Aibo, iRobot Create, LEGO Mindstorms NXT. Интерфейсы для других роботов находятся в разработке.

Большим преимуществом Urbi является ее кроссплатформенность: система работает под Windows, Linux, и Mac OS. Также, благодаря модульности продукта, по весу Urbi получается гораздо меньше, чем MSRS.

Urbi имеет неплохой набор графических утилит разработки. Например, urbiMove - позволяет записывать последовательность действий робота, и затем воспроизводить их. Управляются роботы с помощью скриптового языка urbiScript.

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

В сообщении Наборы для роботостроения. Конструкторы роботов я уже описывал (немного гневно) набор ER1 от компании Evolution Robotics. Программное обеспечение для вышеупомянутого конструктора - продукт ERSP, является на самом деле серьезной средой разработки ПО для роботов, и состоит из трех основных частей: модуля визуального распознавания, модуля ориентирования (также с использованием веб-камеры), и операционной системы робота. Именно этому продукту, судя по всему, система ER1 обязана своей немаленькой ценой.

OROCOS (Open RObot COntrol Software) - это, как видно из названия, открытое программное обеспечение для управления роботами. К сожалению, у OROCOS отсутствуют как графические инструменты разработки, так и симуляционная среда; по сути дела это всего лишь набор библиотек для работы с роботами. Впрочем, иногда, чисто программистский подход - это намного лучше концептуально новых, и оттого непонятных, графических сред...

Общие данные по перечисленным выше системам собраны в таблице:

  MSRS 1.5 Skilligent Urbi ERSP OROCOS
Открытый исходный код Нет Нет Частично Нет Да
Бесплатно Edu/hby Нет Частично Нет Да
Windows Да Да Да Да Нет
Linux Нет Да Да Да Да
Распределенная архитектура
(сервисы)
Да Да Да Нет Нет
Отказоустойчивость Нет Да Нет Нет Нет
Стандарт JAUS Нет Да Нет Нет Нет
Графический контрольный
интерфейс
Да (Web) Да Да Да Нет
Графическое Drag-n-Drop IDE Да Нет Да Да Нет
Встроенный контроль
манипулятора робота
Нет Да Нет Нет Да
Встроенная система
распознавания изображений
Нет Да Нет Да Нет
Встроенная система
ориентирования
Нет Да Нет Да Нет
Обучаемость Нет Да Нет Нет Нет
Симуляционная среда Да Нет Да (Webots) Нет Нет
Система реального времени Нет Нет Нет Нет Да

пятница, 31 октября 2008 г.

Хэллоуин и роботы

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

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

Все страшности и ужасности на Хэллоуине приветствуются. В том числе - и приведения. Вот такое привидение из конструктора LEGO Mindstorms NXT сделал один паренек с ником Simon:

К сожалению, видео этого робота автор так и не выложил. Однако, есть словесное описание его действий, несколько фоток, и даже готовая программа. При включении внутри робота загорается красная лампочка, сам робот начинает медленно подниматься вверх, при этом шевелит руками, и издает звуки - что-то вроде зловещего хохота. Подробности - на странице проекта внутри mindstorms.lego.com.

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

Автономные роботы. Генераторы

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

В любом случае, идеальный робот-помощник, это тот, которого не заботят проблемы с питанием и который их умеет решать. Хотя бы - подъезжать к розетке и пищать - мол, "Подзарядите меня!". А лучше всего - добывать эту энергию самостоятельно. Особенно, если робот работает на природе - например, является газонокосильщиком, или роботом-кладоискателем.

Поэтому, в этом сообщении я постараюсь описать интересные генераторы, которые могут использоваться в роботах.

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

Классика генераторов энергии - солнечные батареи. Тема замыленная и давно раскрытая, поэтому упомяну ее только как пункт. Подробнее можно посмотреть, к примеру, в моей статье про BEAM-роботы.

Теперь - более интересное. Виброгенератор - это генератор, который получает электрическую энергию из вибраций прилежащих к нему материалов. Очень актуально - на крупном производстве, где внутри цехов и гул, и вибрация - там этот генератор разгуляется на славу. Принцип действия следующий: внутри генератора расположена некая свободно подвешенная инерционная масса (например, тоненькая силиконовая пластинка), колебания которой преобразуются в электрическую энергию одним из двух способов: либо пьезоэлектрическим, либо электромагнитным. А в движение пластинка приводится воздействием внешних вибраций любого типа - в простейшем случае источником электроэнергии может выступать даже громкий звук. Подробности можно посмотреть на официальном сайте проекта VIBES (аббр. от Vibration Energy Scavenging).

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

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

четверг, 30 октября 2008 г.

Как научить робота чувствовать

Наткнулся тут на сайте Instructables на интереснейшую заметку про создание сенсоров, реагирующих на изгиб, и сделанных в виде тряпичных полосок. Чрезвычайно полезная вещь - она может использоваться как для каких-то простейших домашних приспособлений, входящих в концепцию "умный дом", например, так и для того, чтобы научить роботов чувствовать, когда их кто-то или что-то начинает перегибать... Технология изготовления этих сенсоров очень проста, и детальнейшим образом описана на вышеупомянутом Instructables. А вот каковы они в действии (короткое видео, 11 секунд):

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

Итак, для того, чтобы чувствовать прикосновения, нажим, удары - робот должен иметь чувствительную кожу. Здесь на помощь могут придти достаточно модные ныне тряпичные клавиатуры. Например, у меня есть одна, купил в свое время за 500 рублей для КПК Palm, в каком-то московском интернет-магазине. Вполне неплохо работает...

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

P.S. На том же Instructables есть простенькая инструкция по изготовлению тряпичного USB-провода. Лично мне было очень интересно почитать :)

среда, 29 октября 2008 г.

Вести от роботов из космоса

Наконец-то руки добрались до новостей, которых целая куча пришла на RSS, и все никак не мог прочитать... Попробую сделать маленькую подборочку по космическим роботам, о которых, что-то, давненько не писал... К делу!

Помните, было сообщение про марсианские бури, и возможность применения ветрогенераторов для обеспечения роботов питанием в то время, когда пыль закрывает солнце?

Оказывается, проект Phoenix Mars Lander еще в сентябре буквально нос к носу столкнулся со знаменитыми "песчаными демонами" - небольшими смерчами, часто появляющимися на Марсе, и связанными с тамошними ураганами. Феникс зафиксировал как минимум 6 разных смерчей - диаметром от 2х до 5ти метров, и заснял их с довольно близкого расстояния. Кроме того, как я рассказывал, на Фениксе установлено метеорологическое оборудование, которое позволило определить, что в день появления демонов зафиксирована высокая скорость ветра - более 5 м/с.

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

Тем временем, в Питере прошли соревнования Eurobot, посвящененные освоению Марса. Фотографии - на сайте ЦНИИ "РТК".

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

вторник, 30 сентября 2008 г.

Новости от RoboOne: роботы покупают

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

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

Как известно, сейчас идея и концепция роботов-помощников очень широко распространена и проработана. Простейший пример - это роботы-пылесосы, которые просто заполонили... :)

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

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

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

P.S. Кстати, полный список событий в сфере соревнований роботов, можно посмотреть на сайте Robots.Net. Там кратко описывается каждое событие и даются ссылки на нужный сайт.

пятница, 12 сентября 2008 г.

Игра: программирование робота

Рекомендую поиграть в забавную игру про роботов, в которой вы должны запрограммировать робота, имея строго ограниченное число элементарных команд управления им. Что самое серьезное - ограничена "память" робота. Таким образом, имея две функции и один основной метод, игрокам предстоит проявлять свое программистское искусство, чтобы выполнять разнообразные задания.

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

P.S. Извиняюсь, что долго не писал. К сожалению, был (да и сейчас остаюсь, впрочем) очень занят: бесконечный ремонт, переезд в новую квартиру, и т.д.

понедельник, 8 сентября 2008 г.

Робототехника и полезность ненужных дел

Наткнулся на интересную новость: сделали робота, представляющий из себя солнечные часы. Насколько я понял принцип его действия, робот поворачивается вокруг своей оси до тех пор, пока тень от закрепленной на нем длинной планки не упадет на фотодиод, установленный в определенном месте. Градус поворота сравнивается с показаниями встроенного компаса. Вычисленное таким образом текущее время выставляется на обычном табло с "нормальными" часами:

Оригинал статьи находится в англоязычном блоге «The NXT STEP», а сам робот, как нетрудно догадаться из названия блога, сделан из робототехнического конструктора LEGO Mindstorms NXT.

Теперь посмотрим, для чего этот робот может пригодиться на практике. Даже если предположить его применимость и полезность в дальнем походе, ну скажите честно, не проще ли взять гораздо примитивнее устроенные (и следовательно более надежные) обыкновенные часы? Если есть теоретическая вероятность выхода часов из строя - можно взять 10 часов :). Робот, даже если его размеры значительно уменьшить, в любом случае будет габаритнее и менее надежным, чем часы. Просто потому, что он сложнее устроен, содержит движущиеся части и т.д.

Де факто, этот робот был сделан энтузиастами просто для галочки. Что, мол, это реально. Что, скажем прямо, Lego Mindstorms NXT, это как бы здорово, и какой только фигничто только с его помощью не сделаешь!

Итак, робот бесполезен. Вопрос: зачем люди тратили время (а время, как известно - это потенциальные деньги)? Дак вот, зачем же люди тратили деньги? Зачем все это?

Расскажу другую историю, на этот раз лично про меня. Буквально пару дней назад сидел и адаптировал код бэйсиковской игрушки "Hamurabi" (Хаммурапи) для собственного интерпретатора языка tiny Basic. Интерпретатор этот был написал на придуманном мною языке XM, и скомпилирован в обычный exe-шник с помощью собственноручно написанного компилятора этого моего языка...

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

Как сейчас помню, целый месяц ушел на создание компилятора, два месяца - на создание и последующую доработку операционки...

Снова позволю себе поставить перед вами тот же самый вопрос: оно нужно? Оно полезно? Компиляторов самых различных языков существует на сегодняшний день просто масса. Их сопровождают мощные среды программирования, в том числе такие монстры, как Microsoft Visual Studio. В то же время я, кроме редактора Notepad++, или какого нибудь самодельного редактора с встроенным компонентом SciLexer - предложить ничего не могу... Да, придуманный мной язык позволяет писать программы как на высоком, так и на очень низком уровне, благодаря чему можно избежать в теле программы обращений к функциям специфической операционки, заменив их на функции другой (моей собственной) операционки. Но на самом деле, благодаря ассемблерным вставкам - такой же фокус можно провернуть, например, и в Pascal/Delphi, и в C/C++...

Да, мой компилятор генерирует чудовищно компактные exe-шники, главным образом благодаря тому, что не использует множество ненужных библиотек. Но вот вопрос: при современных объемах жестких дисков, есть ли разница между программой размером 1Мб, и программой размером 10Кб? Разницы этой - пшик...

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

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

Да, моя ОС загружается и работает при отсутствии Windows... Умеет работать с файловыми системами FAT12, FAT16, FAT32, и ограниченно - с ext2. Умеет выполнять специально под нее написанные программы. Но какая в этом польза? В принципе, можно бы сделать компактную, умещающуюся на дискетку операционку для управления роботом. Ведь в роботе это очень практично, - использовать вместо жесткого диска или USB-флэшки, - старенький флоповод, никому уже не нужный и стоящий копейки. Вся проблема состоит в том, что операционка такая уже есть - это, например, QNX. И если поискать - можно найти еще пару таких же крохотных операционных систем. Наконец, всегда есть возможность подработать некоторые особенно компактные дистрибутивы Linux...

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

Во-первых, приобретен опыт. Во-вторых, получено удовольствие (по этому поводу я уже писал статью Хобби и робототехника). В-третьих, что бы значила для нас сейчас фамилия Энштейн, если бы один молодой парень в свое время не пытался сделать то, что уже вроде бы давным давно уже сделано?!

Всегда можно и всегда нужно пробовать, пытаться. Лучше, конечно, чтобы Вы пытались сделать что-то действительно полезное. Но как минимум это должно быть интересным лично для Вас. А уж полученные навыки никогда не поздно применить!