среда, 17 августа 2011 г.

Идеальный робот-вратарь

Неплохо, да?)

В довесок, вот вам интересное чтиво: Описание алгоритма предсказания движения мяча для робота-вратаря на Robocup'е.

воскресенье, 22 мая 2011 г.

Древний вездеход

Интересно, что за зверь такой... Никто, случайно, не знает? :)



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

вторник, 19 апреля 2011 г.

Lego NXT-фабрика

Ну вообще!! Бывают же манчкины, да? :)

понедельник, 7 февраля 2011 г.

Интернет о роботах

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

Очень хорошая статья Челночный алгоритм обхода 2D области обнаружилась на сайте донецкого Университета информатики и искусственного интеллекта, автор - Сергей Магазов. Алгоритм может использоваться для роботов-пылесосов, роботов-газонокосилок, и так далее. Очень полезно иметь такой алгоритм в своем арсенале. Кстати, я даже когда-то пытался алгоритм обхода помещения написать самолично, но не получилось из-за недостатка времени и геометрического образования :)

А на сайте журнала "Хакер" обнаружилась, между прочим, неплохая статья Дверной замок на Arduino. Автор предлагает запереть дверь на электронный замок и в качестве ключа пользоваться флэшкой. Не ожидал, честно сказать, увидеть в этом журнале статьи такого профиля. Оригинально!

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

Давно я не печатал ссылки на dxdt.ru, а там, между прочим, не так давно были опубликованы две отличнейших статьи на тему упрощения задачи распознавания образов:

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

Всвязи с этим, также хочется вспомнить про робота LegoNXT, который производил арифметические операции над числами, причем распознавание производилось не камерой, а с помощью 4х оптопар.

четверг, 3 февраля 2011 г.

Робот Lego NXT играет в крестики-нолики

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

понедельник, 31 января 2011 г.

Блог про Lego NXT

Конструкторы Lego NXT появляются все в большем количестве школ и ВУЗов нашей страны. Этот факт не может не радовать. Естественно, что количество ресурсов по роботам Lego NXT растет.

Совершенно недавно, наткнулся на очень добротный сайт по этой теме - NiNoXT (Lego Mindstorms NXT: робототехника для школ и ВУЗов Нижнего Новгорода).

Блог содержит, по большей части, описания конструкций роботов Lego NXT, и будет чрезвычайно полезен для преподавателей любых школ и ВУЗов, в которых наборы Lego Mindstorms уже закуплены.
За 2010 и 2011 годы в этом блоге опубликовано уже около 170 статей и заметок, некоторые из которых весьма любопытны. Например, мне очень понравился шагающий Lego-робот NXTAPOD:



Между прочим, разворот робота обеспечивается механически, без всякой программной логики. Подробнее читайте в заметке в блоге NiNoXT.

P.S. Вспомнился клавиатурный робот-Спам :)

пятница, 28 января 2011 г.

пятница, 21 января 2011 г.

Механика в робототехнике

В последнее время все чаще замечаю, что значение механики в робототехнике крайне велико. Иногда, разбирая игрушки, поражаюсь, насколько можно удешевить и упростить конструкцию игрушки, если хорошо разбираться в механике. К примеру, одно время я увлекся BEAM-роботами именно по этой причине - ведь при ближайшем рассмотрении оказалось, что функционал большинства роботов на микроконтроллерах довольно легко воспроизвести в бимах (т.е., без использования микросхем вообще). Я видел BEAM-роботов, которые: объезжают препятствия, следуют по линии, движутся на свет, реагируют на прикосновения... Да и что тут говорить, чего только стоят великолепные роботы-ходуны, а также другие "немобильные" бимы - ползающие, прыгающие и т.д.

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

Чтобы показать, насколько сложные устройства можно создать только на основе механики, предлагаю посмотреть вот такое замечательное видео про полностью МЕХАНИЧЕСКУЮ бесполезную машину (useless machine):

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

Например, вот парочка видеозаписей про необычные зубчатые механизмы:

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

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

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

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

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

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

среда, 19 января 2011 г.

Плата... Марсоход!

Нет, ну надо же! Я был уверен, что довольно хорошо разбираюсь в робоконтроллерах. Много читал про линейку Arduino, изучал Orangutan'ы, пытался спаять MRC-28, завидовал контроллерам МК, ну и в конечном итоге приобрел плату Freeduino - и собираюсь использовать в своем марсоходе.

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

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

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

Особенно меня впечатлила модель фуникулера. Ознакомьтесь обязательно! На мой взгляд, задумка прекрасная. Мои дети будут гарантированно в восторге (обязательно постараюсь соорудить что-то подобное на основе Freeduino).

В общем, создателям платы желаю всяческих успехов. Молодцы!

P.S. Вот еще полезная ссылка с хабра напоследок: Плата "Марсоход" в сравнении с Arduino.

суббота, 15 января 2011 г.

Марсоход Curiosity

Из живых марсоходов остался лишь один - Opportunity. Поэтому, NASA в этом году планирует запулить на Марс нового поселенца - марсоход Curiosity (проект Mars Science Laboratory). В общем, хотелось бы начать популяризацию этого проекта, и обратить внимание уважаемых читателей на конструкторские решения инженеров, которые этот новый марсоход создают.

Итак, запуск запланирован на ноябрь этого года, а в августе 2012го аппарат уже должен будет совершить посадку на красную планету. Общий бюджет проекта составляет 2.3 миллиарда долларов (~69 миллиардов рублей). Марсоход Curiosity имеет очень внушительные размеры, заметно больше Opportunity и Spirit, и представляет собой передвижную химическую лабораторию. Помимо функций передвижения колесно-шагающим способом, Curiosity также имеет роботизированную руку, на которой установлены камера, бур и приспособление для забора проб грунта.

Сейчас проект находится на этапе доделки и тестирования. К примеру, вот видео, показывающее первые «шаги марсохода» :)

Что же, будем надеяться, что NASA сделает выводы и постарается исправить все недостатки уже потерянных на Марсе аппаратов. А чтобы понять, что именно нужно исправить - давайте быстренько вспомним о выбывших из строя марсоходах, и проанализируем их слабые стороны.

Брат-близнец выжившего Opportunity, Spirit, потерявший еще в 2009 году способность к передвижению и переименованный в стационарную станцию по изучению Марса, очевидно, плохо пережил марсианскую зиму, и вот уже 9 месяцев не выходит на связь. Несколько зим до этого он пережил удачно (ведь Spirit совершил посадку на Марс еще в январе 2004го года!), однако из-за его стационарного положения, солнечные батареи оказались повернуты под неверным углом к Солнцу, и поэтому не могли вырабатывать столько энергии, сколько в предыдущие зимовки. Отсутствие энергии повлекло за собой переохлаждение аппарата, и это могло послужить причиной его выхода из строя.

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

Другой недавний проект, Феникс (Phoenix Mars Lander), также был потерян в ходе марсианской зимы, судя по снимкам орбитальной станции - из-за повреждений солнечных батарей (на снимках отсутствует отблеск от одной из панелей). Феникс, напомню, не являлся марсоходом, это стационарный спускаемый аппарат, однако же у него имелась роботизированная рука, поэтому в блоге я не раз о нем писал.

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

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

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

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

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

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

  1. Автономные источники энергии. Тут имеются в виду, безусловно, атомные батареи.
  2. Попытка добычи энергии из окружающего мира. На марсе источников энергии немного. Пустыня же голая, из привычных нам источников - разве что ветер... Но в свете наличия пылевых бурь с чудовищной скоростью ветра, этот источник очень опасен (при чересчур большой скорости, ветряк может даже взорваться).
  3. Химическая переработка (или сжигание) топлива, которое можно получить прямо на Марсе. Однако, пыль, камни и песок - не слишком подходят на роль топлива, а что-то другое в марсианской пустыне найти удастся едва ли...

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

Именно такой путь избрали и ученые NASA. Более того, на этот раз они вообще не стали заморачиваться с солнечными батареями. Питание Curiosity полностью автономное!

Для питания марсохода, учеными был разработан особый радиоизотопный генератор (multi-mission radioisotope thermoelectric generator, MMRTG). Топлива в нем - около 5 килограмм, по большей части, диоксида плутония-238. Этот генератор очень неплохо обогревает окружающую его среду, благодаря чему Curiosity теперь может переносить температуры вплоть до -127 градусов по Цельсию! Помимо обогрева, он также генерирует 120Ватт электрической энергии, этого марсоходу должно хватить для выполнения собственных функций. Вообще, MMRTG - это довольно старая разработка, и документация по этому генератору (на английском языке) уже давно присутствует в интернете.

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

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

четверг, 13 января 2011 г.

Робот: ракетка для пинг-понга

Классно! Особенно с двумя шариками.

пятница, 17 сентября 2010 г.

Интернет о роботах

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

Парочку сайтов хочется упомянуть отдельно.

Прежде всего, это ЖЖ Олега Данишевского, а точнее его часть, посвященная виртуальному клубу юных техников (ВКЮТ), и замечательному проектом Бастер-2010. Конечно, детали там будь здоров, мне таких не достать, но всё равно Олег огромный молодец, хотелось бы, чтобы таких рукастых мастеров-энтузиастов у нас было побольше! А то вот я - болтать умею, а делать... то некогда, то сложно. Бардак :(

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

Ну и наконец, это очень радостная новость... майкрософтовцы наконец-то соизволили опубликовать грамотный туториал в MSDN magazine, причем на русском (!), на тему использования симуляционной среды в Robotics Studio. Создание объектов и манипуляции с ними, программная модель, наследование от DifferentialDriveEntity (я давно хотел про это написать, недописанная статья до сих пор валяется на диске). В общем, раскрыто по большей части всё что нужно, а как создавать модель робота с помощью Blender и SketchUp - я уже писал.

P.S. Кстати, я завел еще один блог. Посвященный тому, чем я занимаюсь постоянно - программированию на C#, ASP.Net, SharePoint, и не только... Писать в него очень легко и приятно, т.к. по сути пишу про то, чем живу, с чем постоянно имею дело. Всегда есть темы для постов. Не нужно ломать голову над тем, где достать материал - нащелкал скриншотов, навыдирал реального кода из проекта, вот и статья готова. В общем, удобно :) Такие дела!

пятница, 3 сентября 2010 г.

Изменения в блоге

Разработчики Blogger-а - большие молодцы. Совершенствуют сервис. Из того, что хотелось бы, осталась нереализованной разве что панель "Related topics" под постом. Раньше было больше "дыр". Но благодаря свежим и не очень усовершенствованиям системы, мне удалось произвести в блоге следующие изменения (оглашаю список специально для читателей, которые подписаны на RSS):

  1. Поменял шаблон дизайна. Страница теперь более широкая, хоть и по-прежнему осталась с фиксированной шириной. Но - уже лучше.
  2. Создал страницы "С чего начать" и "Самое интересное". Это то, чего я давным-давно ждал. Благодаря этим страницам, удалось значительно упорядочить самое часто запрашиваемое содержимое и оформить в виде отдельных статей. Главное, эти страницы не попадают в RSS, а значит я могу их постоянно обновлять и держать в актуальном виде. В будущем страниц будет больше, безусловно. В общем, супер.
  3. Добавилась панель лучших комментаторов. Правда, это не стандартная панель блоггера, но тоже пойдет... Надеюсь, комментариев теперь прибавится!
P.S. Негоже обойтись без роботов, поэтому нате: энтузиасты собрали из множества комплектов Lego NXT вот такой вот Monster Chess!!

понедельник, 30 августа 2010 г.

Пара слов про RoboML

Когда-то давно я писал статью на моем сайте "Самодельный робот", про RoboML. Перспективный, базирующийся на XML язык для описания роботов, разработанный в свое время нашим соотечественником, Максимом Макачёвым, совместно с S. K. Tso. Язык этот позволяет задавать как трехмерный внешний вид робота, так и описывать его внутреннюю структуру, и даже определять логику его поведения, в виде математического описания в виде MathML-вставки. Подробнее - написано в самой статье, "RoboML - язык описания структуры робота".

Дак вот, совсем недавно, с удивлением обнаружил ссылку на свою статью в сборнике материалов всероссийской научно-технической конференции Информатика и вычислительная техника - 2010, в списке использованной литературы проекта "Автоматизированная система конструирования моделей мобильных роботов". Проект, по правде говоря, не очень серьезный. Ребята пытаются создать очередной аналог симуляционной среды Microsoft Robotics Studio на Java, с использованием RoboML в качестве языка для хранения собственно моделей. Причем, в качестве одной из причин создания собственной симуляционной среды указывается, что мол, физика недостаточно хорошо симулируется в существующих средах. Ну даете, ребята! А то, что в RoboML физика вообще не учитывается, это нормально, да? :)

Ведь понимаете, что обидно... Разобраться с этой темой - всегда полезно. 3D-моделирование, робототехника, да и вообще проектирование и польза проектирования. Это очень важные, нужные и полезные темы, на каждой из которых можно "во взрослой жизни" здорово заработать. Но настолько явные ляпы свидетельствуют, во-первых, о том, что системы еще нет даже в зачаточном виде. Во-вторых, о несерьезном подходе и невнимательном чтении материала. И это обидно. Да даже не обидно, просто грустно.

Что же касается RoboML, то, если бы передо мной сейчас встала задача создать подобный язык, или доработать собственно RoboML, я бы самым первым делом поставил бы из схемы ссылку на VRML или подобный ему язык, вместо использования своих средств для описания внешнего вида робота. Потому что, руками, в XML-виде, описать трехмерную модель среднего по сложности робота - это, наверное, пара лет :). И писать конвертер форматов тоже смешно. Зачем делать лишнюю работу? Конвертеры уже написаны - для VRML.

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

Да, и еще. На будущее. RoboML - хороший язык. С хорошей идеей. Но этот язык - теоретический. Хотите увидеть, как выглядит практический язык, который реально можно применять? Нет ничего проще. Загляните в Microsoft Robotics Studio  :)

пятница, 16 июля 2010 г.

Марсоход: выбор комплектующих

Заработал я немного лишних денег, и решил вернуться к проекту создания марсохода. Если вдруг кто не знал или забыл, вкратце освещу историю этого проекта...
Итак, когда-то давным давно СССР успешно приземлило на Марс спускаемый модуль космического аппарата Марс-3. Связь с модулем прервалась через несколько секунд, скорее всего из-за воздействия марсианской пылевой бури. Для нас важно, что в составе этого спускаемого аппарата (задолго до Spirit'а и Opportunity) на Марсе оказался также и первый в мире достигший поверхности планеты марсоход, скромно называемый ПРОП-М (ПРибор Оценки Проходимости - Марс). Собственно, примерную копию именно этого марсохода я вознамерился создать.
Изготовив корпус, приобретя КПК ("мозг" робота) и довольно хорошо спроектировав программную часть будущего марсохода, я пока еще не обзавелся, на самом деле, всеми необходимыми комплектующими. И благодаря "экстра" деньгам, мне-таки удалось эту проблему решить, по большей части. В этом сообщении я постараюсь изложить соображения, которыми я руководствовался при выборе комплектующих, а также осветить современные возможности по приобретению этих компонентов.

Расчет веса робота

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

Однако, важно отметить тот факт, что благодаря необычному шасси, марсоходу придется поднимать собственный корпус на высоту около 5-10 сантиметров над землей. Поэтому, чтобы определиться с используемыми моторами, совершенно необходимо правильно рассчитать будущий максимальный вес аппарата.
Основная нагрузка марсохода - это сами моторы и аккумуляторы, необходимые для их питания. В настоящем ПРОП-М аккумуляторов не было, поскольку питание подавалось по проводам. Однако, проводной робот кажется мне не слишком интересной целью. Поэтому, в нашем проекте аккумуляторы будут.
Кроме аккумуляторов и моторов, львиную долю веса робота составляет наш самодельный корпус из оцинкованного железа. Также, нельзя забывать и об электронике - КПК и микроконтроллере, и некотором минимальном наборе дополнительных датчиков, которые нередко помогают диагностировать неисправности в таком вот, "слепом", роботе.
Общие сведения о предполагаемых (или точных, если компонент уже выбран/изготовлен) весах каждой из комплектующих будущего робота я представил в виде таблицы:
КомпонентаВес (г.)
Корпус1000
Моторы и редукторы (пока неизвестные)300-400 x 2
Аккумулятор (пока неизвестные)500-600
КПК Palm m105124
Батарейки Duracell для КПК11.5 x 2
Микроконтроллер/робоконтроллер20-50
Дополнительные датчики100
Провода, крепления, изоляторы100
Итого~2800
Как видно из таблицы, робот будет весить, максимально, около 3 кг.

Выбор моторов

Давайте попробуем рассчитать, какие минимальные параметры должны иметь моторы, чтобы беспрепятственно поднимать 3 килограмма массы? Устройство лыжно-шагающего шасси подразумевает использование рычага, т.е. точка приложения силы находится на некотором расстоянии от вала двигателя.
Если измерить это расстояние на существующем шасси, получим значение 5,5 см.
Таким образом, нам нужно выбрать моторы, суммарный крутящий момент которых больше либо равен 3*5,5 кг*см, т.е. 16,5 кг*см, по 8,25 кг*см каждый мотор. В пересчете на Н*м, получаем значение 0,81 Н*м.
Примечание: В англоязычной литературе крутящий момент обозначается как torque.
Между прочим, спасибо за подсказку по физике Виталию Клебану, ведущему блога Искусственный интеллект и робототехника, а то я сам школьный курс совершенно забыл (благо, через пару лет мои дети уже в школу пойдут). Если у вас, вдруг, тоже проблемы с физикой, загляните на сайт с учебником по физике PhysBook.
К моторам также есть несколько требований иного рода:
  • Корпус имеет высоту 4 сантиметра, поэтому выезжать за эту высоту нельзя ни мотору, ни редуктору.
  • Номинальное напряжение мотора не должно быть выше 12В, а потребляемый на холостом ходу ток - не более 0,5А, т.к. иначе довольно сложно найти приемлемый по весу, размеру и цене аккумулятор достаточной емкости.
  • Желательно, чтобы с помощью редуктора, число оборотов в минуту было снижено до 30, максимум 60-90. Иначе, подозреваю, появятся удары лыжами о грунт.
Требуемый крутящий момент очень сильно сужает круг подходящих моторчиков. Где же найти такой?
Первым делом, я тщательно исследовал интернет-магазины радиолюбителей и моделистов, и обнаружил, что большинство имеющихся изделий характеризуются крутящим моментом всего лишь 0,01-0,5 кг*см.
Единственный найденный мною приемлемый вариант - это мотор от фирмы Pololu, причем наиболее мощный (и дорогой) в линейке - Metal Gearmotor 37Dx57L mm, с редуктором 122:1, номиналом в 12В и крутящим моментом 18 кг*см. Цена такого мотора - около 990 рублей, с доставкой получается больше 2000 рублей за два мотора.
Поскольку номинал мотора совпал с номиналом напряжения автомобильного аккумулятора, отсюда несложно предугадать следующее место поиска.
Моторы от стеклоочистителя, стеклоподъемника, моторы регуляции фар, мотор насоса омывателя стекла, и др. - в автомобиле этих моторов очень много. Однако, здесь нас тоже ждет немало препятствий.
Дело в том, что большинство из этих моторов довольно специфичны. Например, моторы омывателей стекол рассчитаны на кратковременное включение (чаще всего не более 10 с., с периодичностью не менее 60 с.), и ориентированы для кручения только в одну сторону.
Последнее место, которое я посетил - это аукцион Молоток, раздел Электродвигатели. Однако, моторчики там нередко продают по одному, да и мощные минимоторы не слишком распространены.
В конечном итоге, именно на Молотке нашел подходящие мотор-редукторы, с крутящим моментом 13,5 кг*см, выдающие 60 оборотов в минуту, и имеющие номинал 12В. Купил две штуки (+ доставка по почте) за 1750 рублей.
Шли они долго, почта России как это периодически бывает - сглючила. Но наконец-то пришли:

Кстати, вес купленных мной мотор-редукторов - 96 г. каждый. А значит, из рассчетных 2800 г. веса марсоходика, можно смело вычитать аж целых 600 г...

Выбор источника питания

Выбрав используемый мотор, пора переходить к аккумуляторам. Выбор аккумулятора довольно прост:
  • лучше всего использовать литий-ионные или литий-полимерные аккумуляторы: они очень легкие и надежные, и кстати именно литий-ионные аккумуляторы используются в современных марсоходах
  • напряжение аккумулятора должно максимально соответствовать номинальному напряжению мотора, а лучше - быть немного выше: при разрядке аккумулятора, напряжение на его выводах постепенно падает
  • необходимая емкость аккумулятора рассчитывается исходя из потребления тока мотором (эта величина, как правило, указана в спецификации), и желаемого количества часов возможности непрерывного передвижения робота
Для начала вспомним, где в быту встречаются аккумуляторы желаемого типа (Li-Ion). Думаю, всем первым делом пришли на ум аккумуляторы из мобильных телефонов и коммуникаторов/КПК, ведь простенький мобильник можно купить очень дешево, а у многих дома старые телефоны бесплатно валяются...
Однако, 90% аккумуляторов от сотовых телефонов имеют выходное напряжение 3,6В, что конечно слишком мало и для марсохода не подходит.
Еще обязательно нужно обратить внимание на аккумуляторы для ноутбуков. Чаще всего они выдают 11,1-14,4В, при этом имея порядочную емкость. Жаль, но ноутбука с рабочей батарейкой у меня пока нет...
Поискав в Google фразу "аккумулятор 14.4V", я обнаружил, что подходящие аккумуляторы присутствуют также в шуруповертах. Однако, здесь имеем проблему с габаритами, в 4см высоты корпуса аккумулятор от шуруповерта явно не влезет...
В быту - сплошные неудачи! Что же, может быть, повезет в интернет-магазинах.
Но и в интернет-магазинах, аккумуляторы Li-Ion или Li-Pol с номиналом напряжения 14,4В найти непросто. Зато свинцовые, с номиналом 12В - встречаются довольно часто, к тому же стоят значительно дешевле. Думаю, для большинства робототехнических целей свинцовые аккумуляторы вполне достаточны. И несмотря на их немаленький вес, в марсоход они вполне влезают - и по габаритам, и по весу.
Кроме собственно аккумулятора, требуется еще зарядное устройство, чтобы этот аккумулятор заряжать.
Конкретные аккумулятор и зарядное устройство я решил приобрести немного попозже.
Кстати, еще один классный источник аккумуляторов - UPSы. Стоит самый простой UPS около тысячи рублей, а это на самом деле очень дешево, поскольку в нем есть и сам аккумулятор (да еще какой, как правило от 7Ач!!), и зарядное устройство к нему. Проблема у этого решения тоже, конечно, имеется. Средний аккумулятор от UPS-а весит килограмма 2, не меньше. Да подходящие габариты найти непросто, если вообще реально... А вот для каких-то других проектов, особенно на колесной базе, вполне может подойти.
Помимо аккумулятора, для него нужно запастись зарядным устройством, так что на самом деле задача немного усложняется.
В итоге, аккумулятор пока не куплен, ищу какие-то более дешевые варианты.

Выбор микроконтроллера

Еще в начале проекта, я выбрал в качестве "мозгов" будущего робота Palm КПК. Во-многом из-за того, что вдобавок к хорошим возможностям программирования, монохромные батареечные КПК Palm имеют огромный ресурс безостановочной работы - около 40 часов.

Однако, между КПК и непосредственно внешними устройствами, совершенно необходимо промежуточное звено. Дело в том, что старенький Palm оснащен ИК- и COM-портами, и более ничем. Управлять с него двигателями напрямую - просто не получится.
Довольно стандартное решение в этом случае - использование микроконтроллера, например AVR, в связке с очень популярным драйвером двигателей L293D и микросхемой MAX232, использующейся для преобразования TTL-логики к логике компьютерного COM-порта (именно компьютерный вариант используется и на КПК Palm).
Можно даже немного облегчить себе задачу, поскольку подобные связки сейчас можно найти в виде готового решения. Конечно, я имею в виду контроллеры Arduino и все совместимые с ними.
Как выяснилось, сейчас довольно легко приобрести такие контроллеры, что я и сделал, заказав на сайте Freeduino.Ru контроллер Freeduino MaxSerial (кстати он уже пришел). Его вес 30 г., габариты более чем скромные, и с помощью обычного кабеля синхронизации Palm он спокойно подключается к КПК.

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

понедельник, 1 марта 2010 г.

Живучие космические роботы

Главное для любого космического аппарата - его живучесть. И способность "восставать из мертвых".

Прошло около полутора лет с тех пор, как я последний раз упоминал о проекте Феникс (Phoenix Mars Lander) - марсианском стационарном спускаемом аппарате с манипулятором, который успешно работал на Марсе более 5 месяцев, с 25го мая 2008го года по 2е ноября 2008го года.

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

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

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

В конце февраля снег вокруг Phoenix'а практически полностью растаял, и орбитальный аппарат Mars Odyssey приступил к внимательному прослушиванию эфира, в поисках сигналов, предусмотренных программой Феникса в случае его восстановления. На снимках с орбиты на картинке ниже явно виден процесс исчезновения снега около аппарата (снимки сделаны в начале и в конце февраля).

Для весьма бюджетного проекта, на который было потрачено всего 457 млн. долларов (чуть больше 10 млрд. рублей), будет действительно сказочным везением, если он, несмотря на весь этот углекислый лед и чудовищные температуры (до -145 градусов), оживет...

А пока чуда не произошло, отмечу, что марсоходы Spirit и Opportunity в свое время удачно пережили пылевые бури, оставаясь долгое время без питания, поэтому команда Phoenix'а не просто так надеется на успех.

P.S. Блог, между прочим, тоже умеет восставать из мертвых :)

четверг, 16 июля 2009 г.

Всеядный робот EATR

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

Я уже писал о различных источниках энергии для роботов в сообщении Автономные роботы. Генераторы. А на днях один из читателей, скрывающийся под ником Shred, скинул отличную ссылку на очень интересную статью на SecurityLab. Речь идет о проекте робота, который может получать энергию для своего существования, добывая ее из окружающей среды. Цитирую:

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

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

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

А вот это уже явно военное применение... Действительно: военные роботы в идеале должны работать в плохо освещенных местах (например, лес), на больших расстояниях от ближайших «розеток». Так что для них явно не подходят солнечные батареи или ветряные генераторы. А вот питание биомассой для такого робота - решение идеальное. Как вы уже наверное догадались, DARPA в этом проекте учавствует по полной программе!

Давайте рассмотрим поближе конструкцию данного робота:

Механизм «питания» осуществляют следующие компоненты робота:

  • Бензопила (а точнее, как я подозреваю, электропила) - отделяет от целевого объекта небольшие куски, пригодные для «питания».
  • Манипулятор с захватом - помещает готовые куски в емкость для топлива, внутри которой происходит извлечение энергии.
  • Стерео камеры - предназначены для распознавания объектов питания, и позиционирования манипулятора.
  • Поворотная башня - позволяет избежать «подруливания» к объекту, благодаря чему возможно эффективное функционирование робота в лесах и других захламленных большим числом препятствий пространствах.

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

Кроме того, поворотная башня в принципе может нести оружие, например пулемет. А бензопила может использоваться как прекрасное оружие для «рукопашного» боя.

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

Робот-шахматист и пара мыслей об ИИ

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

А вот это видео видели, наверное, далеко не все! Настоящий андроидный робот, который играет в шахматы. Смотрим:

Видео не ново, просто впервые попалось на глаза... На youtube есть еще даже лучшее: youtube.com/watch?v=chyR1ZxoiA4 - здесь роботы играют друг с другом, а один из них одновременно играет еще и с человеком.

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

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

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

Напоследок, анекдотик с башорга:

Разговор с чат ботом A.L.I.C.E
(вроде один из лучших)
Human: All robots are stupid
ALICE: I don't think so.
Human: you have another opinion?
ALICE: What makes you think I have it?
Human: you don't believe that all robots are stupid
ALICE: Do you believe that all robots are stupid?
I can't say I believe it, but I believe you.
Human: are you robot?
ALICE: How did you know I am a machine?. Really.
Human: all robots are stupid and you are a robot,
that means you are stupid
ALICE: Hey, I'll tell my other robot friends you
called me stupid.
Human: I still think robots are stupid.
ALICE: I will remember you said that when robots
take over the World.
Human: O_o

P.S. Я сам играю в онлайн-шахматы на сервере FICS, хэндл - omlin. Сервер очень хороший, активный и вполне играбельный. Желающим присоединиться, предварительно нужно будет скачать клиент BabasChess, и, конечно, зарегистрироваться на FICS'е.

пятница, 10 июля 2009 г.

Robotics Developer Studio 2008 R2

Компания Microsoft, пока я был в отпуске, выпустила новую версию студии: Microsoft Robotics Developer Studio 2008 R2. На днях я ее скачал, по-тихоньку тестирую.

Кстати, как и предполагалось, Билл Гейтс по-тихоньку переводит свой робототехнический проект на коммерческие рельсы. Есть уже различные вариации студии, часть из них стоит денег. Кто знает, может быть версию 2009го года придется уже "крякать" :(

Скачать новую студию и почитать про нее можно на обновленном сайте Microsoft: www.microsoft.com/robotics.

Из нововведений отмечу, прежде всего, добавление поддержки некоторых весьма полезных датчиков в Simulation Environment. В частности, это:

  • Сонар
  • Датчик света (яркости)
  • Датчик цвета
  • Компас
  • Инфракрасный дальномер
  • GPS

Еще в симуляционную среду добавились новые примеры (Simulation Tutorials).

Другим интересным нововведением стал DSS Log Analyser. Напомню: в основе работы студии лежит взаимодействие множества сервисов. Теперь можно будет взглянуть, как же это все работает изнутри... Предполагается, что такая система облегчит отладку.

суббота, 27 июня 2009 г.

Собственный робот в Robotics Studio. Создание 3D-модели

Каждый, кто имел дело с Microsoft Robotics Studio, наверняка задавался вопросом: как же подключить к этой мощнейшей среде разработки собственного робота? Этот вопрос был одним из первых и для меня, ведь в России не так-то просто - да и далеко не дешево, купить готовый комплект для роботостроения, даже самые популярные, такие как Lego Mindstorms NXT или iRobot Create.

Задача, нужно признать, на первый взгляд кажется практически неразрешимой. Лишь поизучав как следует Robotics Studio, и разобравшись в ее «внутренностях», почти через год после первого знакомства - мне удалось эту задачу решить. Конечно, нужно будет немножко попотеть, но зато потом все разнообразие и мощь средств MS RS можно будет использовать в собственном роботе!

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

Один из способов создания собственных 3D-моделей роботов описан на форумах Microsoft (на английском). В этой заметке я постараюсь пересказать и проиллюстрировать данный способ.

Итак, прежде всего, потребуется Google SketchUp. Это программа для создания 3D-зарисовок, распространяемая абсолютно бесплатно. Самая свежая на момент написания заметки версия - 7.0, весит 32.7Мб. Иногда, если вы работаете через прокси-сервер с определенными настройками, скачать эту программу не получится - я столкнулся с такой проблемой и не смог скачать SketchUp с работы. Проблема, впрочем, касается вообще всех Google-программ. Это называется "перемудрили" :)

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

После создания 3D-зарисовки необходимо ее экспортировать в требуемый формат. Для этого необходимо скачать специальный плагин для экспорта в Wavefront obj-файл. В обсуждении на форуме предлагается скачать плагин от Jim Foltz, он нам как раз подходит. На всякий случай я выложил его и на собственном сервере: http://robot.paccbet.ru/download/obj_export_1.1.rb.

Копируем этот файл в каталог C:\Program Files\Google\Google SketchUp 7\Plugins\, или соответствующий, если SketchUp установлен в каком-то другом месте. После перезапуска SketchUp в его меню появится новый пункт:

Перед экспортом не забудьте нажать на свою модель правой кнопкой мыши и выбрать во всплывающем меню пункт Explode.

К сожалению, возможности данного плагина довольно скромные. Многого он не экспортирует. Поэтому, если нужно, чтобы модель была цветной, нужно подкорректировать ее в программе Blender. Она тоже бесплатная. Версия для Windows 32bit весит около 10Мб. Импортируем наш obj-файл в Blender:

Далее добавляем цвета, и снова экспортируем в obj-файл. Файлов в итоге получается два: .obj и .mtl, последний содержит материалы и цвета для нашей модели.

В общем-то, на этом процесс почти закончен: осталось лишь скопировать эти два файла в <путь к MS Robotics Studio>\store\media, и можно использовать в качестве файла механики наш obj-файл. После этого студия сгенерирует еще bos-файл, который также можно будет использовать.

Как именно использовать созданные модели в студии - я расскажу в одной из следующих заметок. А пока попробуйте хотя бы разобраться со SketchUp и Blender: это тоже потребует времени. В общем, Google вам в помощь, и до скорых встреч!