пятница, 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. Любой компонент можно заменить. К примеру, вместо картонной коробки можно использовать обычную подложку из-под конфет из магазина. Проще не бывает, а дети - гарантированно будут в полном восторге!