пятница, 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. Блог, между прочим, тоже умеет восставать из мертвых :)