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

Еще разок: киборги

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

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

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

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

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

воскресенье, 30 марта 2008 г.

КПК Palm. Программирование COM-порта

Очень напряженная и загруженная (но вместе с тем плодотворная) была рабочая неделя, а в выходные развлекались так, что дух захватывало. В общем, насыщенные 7 дней наконец-то кончились, пора и вспомнить об уважаемых читателях, которыми я очень дорожу :)
Выкраивая буквально по 10-15 минут, написал-таки я статью «Palm. COM-порт (RS232). Программирование. IDE CodeWarrior» - про тестирование работы COM-порта, и программирование этого порта применительно к КПК Palm. Статья, написанная в рамках серии статей по созданию марсохода, правда, получилась слишком большая для блога, поэтому я выложил ее на еще не до конца готовом сайте моего нового проекта RobotLab.Ru.
Пара слов о RobotLab.Ru. Проект «Лаборатория робототехники» будет посвящен практике и только практике! Он будет иметь намного более общую направленность, нежели чем сайт «Самодельный робот», но в определенном отношении будет является продолжением и развитием идеи этого моего старого сайта. Кратко темы, которые я буду стараться на сайте осветить:
  • Эффективные конструкторские и электронные решения
  • Организация рабочего места робототехника
  • Где достать материалы, компоненты, платформы
  • Программирование поведения роботов
  • Описания готовых проектов, в основном в виде пошаговых руководств
  • С чего начать? Выбор направления, проектирование
Кстати, кратенько поделюсь успехами и достижениями по другим моим проектам:
  • «Самодельный робот» установил 21го марта скромный рекорд по посещаемости - 150 человек в сутки! Месячная посещаемость стремительно приближается к порогу в 3 000 уникальных посетителей.
  • Блог «Роботы и робототехника» - количество подписчиков наконец-то превысило пять десятков!
В общем и целом, такие дела!

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

Оригинальные конструкции роботов

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

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

Еще одна оригинальная затея описана в другой теме РобоФорума - энтузиаст пытается изготовить робота из компьютерной мышки :)

Очень оправдывающий свой никнейм MegaBIZON паяет из скрепок очень замысловатых роботов!

Кстати, изготовлением обычного (по сравнению с MegaBIZON'овским) шасси для микро- и нанороботов занимается, например, европейская компания Robot Maker.

Ну и наконец, хочу привести видео с YouTube - о том, как робототехники любят собак :)

пятница, 21 марта 2008 г.

Реализация марсохода. Диаграмма развертывания

В рамках серии статей «Изготовление аналога марсохода ПрОП-М».

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

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

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

От механическо-электронной основы робота зависят способы и возможности реализации программной части.

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

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

  1. Двигательная система
  2. Система датчиков
  3. Система управления

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

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

Система управления, напомню, должна обеспечивать следующие возможности: ведение логов состояний и выдача их по запросу, дистанционное проводное управление роботом, автономный объезд препятствий. Ограничения при выборе реализации системы управления: соблюдение заявленного общего веса марсохода в 4.5 кг, и указанных размеров - 22х25х4см. Компьютер в качестве системы управления отбрасываем сразу - слишком громоздко. Есть, правда, вариант с mini-ITX, такая карточка бы в наш корпус влезла, но карточки mini-ITX у меня нет, а я поставил задачу обойтись имеющимися средствами. Конечно, почти идеально подошел бы для описанных функций микроконтроллер. Он, помимо всего прочего, имеет больше всего шансов пережить креш-тесты. Однако, микроконтроллера у меня тоже нет. Зато, есть КПК Palm m505...

В статье «Робот на основе КПК» я рассказывал о преимуществах и недостатках использования КПК в качестве «мозгов» робота. Но, несмотря на сделанные выводы, все-таки попробую. Основная проблема, напомню - сопряжение КПК с внешними устройствами. Подсчитаем, сколько внешних устройств будет иметь система, и сколько входящих и исходящих сигналов потребуется обработать - минимум, максимум, и ожидаемо.

  • Минимум - 2 кнопки в бампере, 2 кнопки для датчиков обратной связи, итого 4 датчика (4 входящих бинарных сигнала); 2 мотора, каждый может вращаться в двух направлениях - итого 4 исходящих бинарных сигнала.
  • Максимум - 2 кнопки в бампере, 4 кнопки и две ИК-пары для датчиков обратной связи, термометр, датчик давления, 4 фотодатчика, фотокамера (управляющие исходящие сигналы на включение/выключение/съемку + сложный входящий сигнал на получение фотографии), видеокамера (аналогично фотокамере), 4 управляющих исходящих бинарных сигнала для моторов.
  • Ожидаемо - 2 кнопки в бампере, 4 кнопки для датчиков обратной связи, фотокамера, 4 управляющих исходящих бинарных сигнала для моторов.

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

На КПК Palm, и на многих других КПК, в том числе и современных - реализован, как минимум частично, интерфейс RS232, обеспечивающий последовательную передачу данных. Программно COM-порт на Palm управляется достаточно тривиально, почти как на компьютере. Это - как раз то, что нам и нужно!

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

Такие схемы есть в готовом виде, например, комплект PPRK (Palm Pilot Robot Kit) использует одну из них - SV203. Но здесь важно вовремя остановиться! Наша цель - всего лишь построить диаграмму развертывания, а в детали реализации углубляться можно бесконечно...

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

Вот диаграмма, которая получилась у меня:

Пакет «Система управления»:

Пакет «Двигательная система»:

Пакет «Система датчиков»:

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

Продолжение следует...

четверг, 20 марта 2008 г.

Обоснование выбора проекта робота

В рамках серии статей «Изготовление аналога марсохода ПрОП-М».

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

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

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

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

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

Вот что пишет А.Л. Кемурджиан в книге «Планетоходы» об особенностях проектирования передвижных аппаратов для использования на иных планетах:

«самым характерным качеством планетохода является его способность перемещаться по поверхности планеты»

«Характерным для конструкции узлов планетохода является применение легких сплавов, ажурность конструкции, оптимальность форм отдельных узлов, позволяющая весь материал конструкции включить в силовую систему нагружения.»

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

Вот, например, какие условия рельефа могут ждать подобный аппарат на других планетах (фото с официального сайта NASA, получено в рамках экспедиции Mars PathFinder):

А вот камешек по имени Yogi в сравнении с марсоходом Sojourner (который малявки ПрОП-М-а больше во много раз):

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

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

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

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

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

среда, 19 марта 2008 г.

«Чтиво» - 2

Представляю второй выпуск «Чтива» - серии статей о том, что можно почитать о роботах, робототехнике и по смежным тематикам.

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

Первая и очень серьезная книга, о которой хотелось бы сказать - «Планетоходы» А.Л. Кемурджиана. Эту книгу я прочитал «от корки до корки», и вам рекомендую. Книга написана очень грамотно, хорошо освещены технические аспекты, и при этом большая часть книги читается буквально как художественная литература. Рассказывается о характерных особенностях среды пребывания планетоходов, расписаны наиболее важные их характеристики, большое внимание уделено рассмотрению достоинств и недостатков устройства шасси различных планетоходов. Приведены формулы расчета планетоходов. Описаны методы и средства для испытания (отработки) готовых аппаратов на Земле. Скачать можно с AstoLib.Ru, копия выложена на моем сайте (DJVU; 6,44 Mb). Просмотрщик DjVu-файлов прилагается.

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

Еще одна книга, которую я прочитал за последнее время - это справочник Барсукова А. П. «Компоненты и решения для создания роботов и робототехнических систем». В первой части книги подробно рассматривается применение солнечных батарей - преимущества и недостатки, схемы их подключения, варианты использования, типы и характеристика существующих батарей. Вторая глава книги посвящена описанию подводных роботов. Третья, и последняя глава называется «Видеоконтроль в системах дистанционного управления», и повествует о видеоизображениях, интерфейсах, типах дисплеев и экранов. Не скажу, что книжка привела меня в безумный восторг, однако почитать стоит, особенно интересна лично мне была первая глава. Скачать можно с моего сайта (PDF; 3,83 Mb).

Очень много полезной и научной информации в простом для понимания виде часто предоставляют всем известные научно-популярные журналы. Моя мама работает в библиотеке, поэтому сам я очень много читал журналы, особенно «Науку и жизнь», «Юный техник», и некоторые другие. Совсем недавно наткнулся на группу В Контакте, где нашел список ссылок на электронные архивы и официальные сайты большинства наиболее известных научно-популярных журналов. Список был собран в основном Артемием Трапезниковым, также свой вклад внес Александр Королев. С удовольствием привожу этот список здесь:

Кстати, са-амый первый «робот», которого я пытался собрать, описан как раз в журнале «Юный техник», в номере, который можно скачать по адресу http://jt-arxiv.narod.ru/DjVu/ut8906.djvu, статья называется «Жук-усач, почти что настоящий».

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

Создание аналога марсохода ПрОП-М. Изготовление корпуса

В рамках серии статей «Изготовление аналога марсохода ПрОП-М».

Во-первых, хочу обратиться к читателям данного блога: присоединяйтесь! Параллельные поделки очень интересны сами по себе и имеют больше шансов на успех. Пишите в комментарии, пишите мне в ICQ и на e-mail - обязательно подскажу, обсудим любые моменты по реализации. Я сам любитель, и любой совет, любое мнение - имеют для меня большую ценность.

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

Первым делом необходимо достать где-нибудь листового железа. Оно потребуется для изготовления лыж и корпуса будущего робота. Размер требуемого листа - 75х30 см. Листовое железо продается в строительных и хозяйственных магазинах. Мне повезло - один мой родственник занимается ремонтом, и у него нашелся для меня лист оцинкованного железа требуемого размера бесплатно.

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

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

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

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

Размеры здесь аналогичны размерам марсохода - 22х25х4 см. Вырезать заготовку не составит труда. Результат будет примерно таким:

Теперь заготовку нужно согнуть. С первыми тремя загибами (по краям) справиться достаточно легко, это делается примерно так: лист зажимаем между двумя брусками, загибаем сначала руками, затем подбиваем молотком.

Последние два загиба мне дались не так легко, т.к. мешали предыдущие. В крайнем случае, если у Вас не будет получаться загнуть заготовку, просто выпилите брусок, который заполнил бы внутреннее пространство создаваемой коробки (т.е. 22х25х4 см) - тогда задача решится очень просто.

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

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

Принимаемся за лыжи, беря самый большой обрезок. Вырежьте две заготовки, как показано на рисунке (они обязательно должны быть зеркальными, не ошибитесь!):

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

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

Вернемся к корпусу. Давайте закрепим его и замажем щели. Лично я сделал вот что: вырезал из обрезков нашей заготовки импровизированные уголки размером 4х3 см каждый, согнул их вдвое под углом в 90 градусов, далее накернил гвоздем и просверлил дырки в заготовке и в уголках, ну и наконец скрутил уголки с заготовкой короткими саморезами - по 4 самореза на каждый уголок. Если дрели под рукой нет - то дырки можно даже не сверлить, а просто пробить гвоздем.

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

Продолжение следует...

суббота, 15 марта 2008 г.

Создание аналога марсохода ПрОП-М. Проектирование

В рамках серии статей «Изготовление аналога марсохода ПрОП-М».

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

Итак, конечной целью всех моих будущих действий в рамках проекта создания аналога марсохода ПрОП-М будет являться создание достаточно простого робота, передвигающегося лыжно-шагающим методом, и умеющим объезжать препятствия по схеме - отъезд назад, поворот на 45 градусов, движение вперед. Этот робот будет максимально похож на свой прототип - первый марсоход в мире, ПрОП-М (Прибор оценки проходимости - Марс). Подробно сам марсоход ПрОП-М я уже описывал.

Отличия создаваемого робота от оригинала следующие:

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

Прежде всего, рассмотрим, кто и что будет взаимодействовать с роботом, и как это взаимодействие будет происходить. Для описания функций системы используется стандартная диаграмма UML (так называемых прецедентов, или use cases):

Отсюда понятны основные функции и возможности робота:

  1. Движение по командам оператора: Стоп, Назад, Вправо, Влево, Вперед
  2. Ведение лога состояний, и передача оператору списка своих состояний, начиная с заданного шага
  3. Обратите внимание! Возможность замены прошивки робота. Важный пункт, реализуемый почти на всех космических аппаратах и планетоходах
  4. В процессе движения - объезд препятствий, определенных с помощью тактильного бампера
  5. Включение/выключение с помощью проводного пульта дистанционного управления
  6. Подача питания по проводу

Исходя из функций и возможностей, определяем, что потребуется для физической сборки робота:

  1. Корпус, лыжи, крепления лыж.
  2. Два мотора с понижающими редукторами, способные поднять вес робота.
  3. Передний бампер с двумя датчиками касания.
  4. Устройство размотки провода и 15 метров провода.
  5. Устройство управления, реализующее алгоритм объезда препятствий, и возможность дистанционного управления.
  6. Пульт дистанционного управления по проводу.
  7. Блок питания, обеспечивающий подачу нужного напряжения для питания робота по проводу.

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

В свою очередь, робот состоит из аппаратной и программной частей.

Что касается программной части, то поведение нашего робота можно описать простеньким конечным автоматом (о конечных автоматах я писал, например, в статье «Робот и искусственный интеллект»). Для описания конечных автоматов существует специальная диаграмма UML - диаграмма состояний. Я создал такую диаграмму для нашего робота:

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

пятница, 14 марта 2008 г.

Язык VRML

Язык VRML предназначен для описания векторных 3D-моделей. Почему я заговорил об этом? Все очень просто, я постепенно движусь в направлении создания генератора RoboML-файлов. Генератор будет использоваться мной для создания раздела Модели роботов моего каталога Robotics.Ru, а также для кое-каких еще целей (об этом позже). И часть RoboML-файла, ответственная за описание геометрии робота - очевидно, должна с легкостью импортироваться и экспортироваться в наиболее распространенные форматы файлов. VRML - первый кандидат.

Вообще на VRML модели я впервые наткнулся на практике совсем недавно - когда искал схемы или хорошие фотографии первого марсохода ПрОП-М - на страницах Виртуального Музея Космонавтики (именно эта модель представлена на рисунке вверху).

Из браузеров я предпочитаю Opera, поэтому не сразу удалось посмотреть эту модель. А вот Internet Explorer 7 открыл файлик без проблем, самостоятельно установив нужный плагин. На экране я увидел вот такую 3D-модель, которую можно вращать и осматривать с любого ракурса:

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

Вернемся к VRML. Язык не XML-серии, несмотря на характерное "ML"-окончание. Спецификация мне показалась не самой доступной, однако возможностей у языка немало. Например, очень интересная возможность - интеграция с Java и JavaScript, что позволяет создавать интерактивные и презентационные модели. Примеры VRML-кода можно посмотреть на том же сайте.

Вообще, следует сказать, что главное преимущество VRML - в том, что этот формат открытый, и существует много наработок для него. Например, есть веб-интерфейс генератора VRML, хотя он мне очень не понравился, т.к. там все наполовину на японском. Есть обычные оффлайн-редакторы, например, RenderSoft (бесплатный) и Spazz3D (30-ти дневный Trial). Есть также библиотеки для работы с VRML, которые я обязательно буду использовать при создании конвертера.

четверг, 13 марта 2008 г.

Настоящее и будущее

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

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

А что, собственно, есть сейчас?

Блог «Роботы и робототехника» - это мое творение меня очень порадовало. Начиная вести его, я никак не ожидал, что блог станет более менее популярным, и что мне удастся собрать такое количество полезной и занимательной (как мне кажется) информации по робототехнике.

На настоящий момент в данном блоге публикуются сообщения по следующим основным направлениям:

  1. Роботы и человеческие чувства
  2. Существующие модели роботов
  3. Создание робота своими руками
  4. Программное обеспечение для роботов
  5. Искусственный интеллект и общение с роботами
  6. Интернет о роботах и робототехнике
  7. Обсуждение и новости собственных проектов автора (т.е. меня)
  8. Раскрутка и продвижение вашего сайта о роботах

Будущее блога я вижу проходящим под лозунгом «Больше практики»! Теорию, оффтопиковые сообщения, обзоры интернет сайтов никуда конечно я не дену, но упор все равно будет на публикацию грамотных практических статей. Если статья получается серьезной - буду выкладывать ее на каком либо сайте со статическим содержимым, а в блог помещать ссылку и краткое описание. Под практикой, надо отметить, я понимаю конструкторские решения + описания создания программ или реализации алгоритмов. И именно последнему - программированию - постараюсь отныне посвящать достаточно много времени и сил, так как тема пока не слишком освещена, а опыт в программировании имеется серьезный.

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

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

Да, кстати, зарегистрировал тут доменное имя RobotLab.Ru, это будет мой новый проект, о нем подробно расскажу чуть позже, в отдельном сообщении. Хотя, в общем и целом, название домена само за себя говорит... :)

Такие пироги, господа читатели! Оставайтесь, как говорится, с нами :)

среда, 12 марта 2008 г.

Необычные разработки шасси для роботов.

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

  • мобильные
  • шагающие

И вроде как все... А вот и нет! Типов шасси - десятки.

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

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

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

Робот ездит на велосипеде.

Робот прыгает. Обратите внимание, как сделаны его ноги. Очень серьезная разработка - на мой взгляд.

вторник, 11 марта 2008 г.

Первый марсоход (ПрОП-М). Устройство шасси

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

Я затронул эту тему, но она оказалась еще более интересной, чем на первый взгляд. Во-первых, на сайте Space-Ru.Com я нашел детальное описание аппарата Марс-2, особенно хорошо описан состав научных приборов и сведения, собранные КА Марс-2 во время полета. Во-вторых, сайт Austronaut.ru предоставил очень хорошее описание спускаемого модуля аппаратов Марс-2 и Марс-3, вместе с его подробной схемой. Между прочим, в прошлом сообщении я совершил досадную ошибку, о чем уже написал в комментарии - ведь спускаемый модуль Марса-3 на самом деле все-таки достиг поверхности Марса, успешно приземлился, и даже начал передавать оттуда картинку (с очень хорошего сайта Teddy Stryk'а) - но через 20 секунд вышел из строя, предположительно, из-за сильной пылевой бури.

Марсоходы ПрОП-М

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

Здесь я натолкнулся на ряд проблем. А конкретно - не смог найти четкой схемы ПрОП-М. Только несколько не самых детализированных изображений и немножечко информации... Отправил запрос во «ВНИИтрансмаш», где были разработаны эти марсоходы - но ответа пока не получил. Но, все по порядку - и вы поймете, почему я так заинтересовался этими марсоходами!

История

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

Вот фотография устройства для спуска аппарата ПрОП-М:

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

После завершения миссий КА Марс-2 и Марс-3, когда два марсохода были безвозвратно потеряны, неожиданно нашли третий - на Земле. Ведь стоили эти аппараты не так много, и произвести третий экземпляр для каких-либо проверочных нужд не представляло труда. Этот самый, третий экземпляр - находится поныне в музее ГДЛ Петропавловской Крепости в Санкт-Петербурге. Так что, кто будет в Питере - не забудьте заглянуть в этот музей, и полюбоваться на аппарат собственными глазами, потом мне расскажите :)

Устройство шасси

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

В книге Александра Леоновича Кемурджиана «Планетоходы» я нашел пару слов о преимуществах данного вида шасси (с. 318-319, доступна для скачивания, например, с AstroLib.Ru): «лыжно-шагающий движитель обеспечивает высокие тягово-сцепные свойства на сыпучих грунтах». Также, я подозреваю, подобный аппарат может ползти по очень тонкому льду и не проваливаться. Главный недостаток аппарата - бесспорно, малая скорость.

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

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

  • Микроконтроллер
  • Приемник устройства связи для управления марсоходом (связь производилась по кабелю спускаемого аппарата)
  • Приемник блока питания (тоже по кабелю) - питание шло как минимум на три схемы: схему управления и 2 схемы двигателей
  • Двигатели - по одному на каждую лыжу, причем, как видно на рисунке - лыжа крепилась к корпусу в трех местах. Я думаю, что только к двум передним креплениям были подведены редукторы двигателя, а заднее крепление было «холостым». Также хочу отметить, что моторчики должны были быть достаточно мощными, чтобы приподнимать и переносить всю массу марсохода.

Микроконтроллер был настроен на объезд препятствий и плюс выполнение команд либо последовательностей команд оператора. А вот как я представляю крепление лыжи и механизм ее присоединения к мотору:

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

пятница, 7 марта 2008 г.

Своими руками

Попался на глаза интересный блог Lobzik, побудивший, собственно, написать это сообщение.

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

Кратко пройдусь по другим источникам информации по самодельному изготовлению чего-либо:

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

среда, 5 марта 2008 г.

Модели роботов: космические роботы

Прежде всего, небольшое отступление о моделях роботов вообще.

А дело вот в чем: никак не могу отыскать нормального материала для заполнения предположительно одного из самых больших в будущем разделов каталога сайтов по робототехнике Robotics.Ru - раздела Модели роботов! Нет русскоязычных сайтов и все тут. Английских, бесспорно - навалом, а вот русских практически нет.

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

Из всех найденных мною сайтов очень малая часть сгодилась под помещение в рассматриваемый раздел каталога. Поэтому я вынужден вернуться к идее формирования собственных страниц с описаниями роботов, и храниться эти данные будут скорее всего в формате... правильно, RoboML! Так что, дай бог, скоро вновь обрадую упоминавшийся в предыдущем посте XMLHack очередной новостью, на этот раз, о создании генератора файлов на RoboML...

Таким образом, раздел «Модели роботов» также будет превращен в особый, наравне с разделами «Люди» и «Новости»... Что, впрочем, не может не радовать, так как будет лишь свидетельствовать о хорошем качестве создаваемого каталога.

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

А если по порядку, то первым, на мой взгляд, более менее серьезным космическим роботом был... правильно, Луноход-1! На Википедии есть замечательная про него статья, читаем и ностальгируем :). Если вкратце, то Луноход-1 имел восемь колес, каждое - на индивидуальной эластичной подвеске и с индивидуальным приводом; блок автоматики для управления шасси; аппаратуру связи и комплекс измерительных приборов. Система питания включала солнечные батареи в сочетании с буферными серебро-кадмиевыми аккумуляторными батареями. Весило все это безобразие 756 кг.

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

Более интересное начинается уже в эпоху освоения Марса. Первыми марсоходами, кстати, были совершенно миниатюрные дистанционно управляемые шагающие роботы, называемые в советском стиле сокращений - ПрОП-М (Прибор оценки проходимости - Марс). К сожалению, до Марса они так и не добрались - космический аппарат Марс-2 разбился при подлете, а Марс-3 вышел из строя, не успев даже достигнуть поверхности. Более подробно об аппаратах Марс-2, Марс-3 и марсоходах ПрОП-М хорошо рассказано в статье на LaSpace.Ru. Подробное описание ПрОП-М дано в статье на InFuture.Ru Здесь приведу только описание и фото первых марсоходов:

  • Масса — 4,5 кг
  • Размеры корпуса (д*ш*в) - 25см х 22 см х 4 см
  • Способ передвижения — шагающее шасси с датчиками обнаружения препятствий.
  • Скорость передвижения - 1 метр/час. (После перемещения на 1 метр, марсоход останавливался для получения команд управления с Земли).
  • Управление — дистанционное, по кабелю от спускаемого аппарата АМС. Длина кабеля - 15 метров.

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

А вот аппарат Mars PathFinder и марсоход на его борту под названием Sojourner, работавшие на Марсе в 1996-1997 гг., порадовали в этом плане больше. В частности, управление Sojourner осуществлялось с помощью 8-разрядного процессора Intel 80C856, и было полностью автономным. Вот схема этого марсохода:

Вес марсохода включая все снаряжение был очень небольшим - всего 15,5 кг, во время операций на поверхности Марса — 10,6 кг; размеры — 0,65×0,48×0,3 м. По этим марсоходам информации достаточно много: есть небольшой сайт на русском языке, статья в Википедии, официальная страничка НАСА.

Сага о космических роботах - долгая и очень интересная. И она еще далеко не закончена...

Немножечко роботизированного SEO

Вчера ночью грянул апдейт PR, принесший неплохую в общем-то новость: сайт о том, как сделать робота получил PR=4(!)

Также хочу здесь привести краткую статистику этого моего сайта за прошедший месяц, так скажем, подведение итогов.

Итак, февраль был месяцем достаточно коротким, однако и он успел принести моему основному сайту 2500 уникальных посетителей, которые совершили более 3000 визитов на этот сайт. Рекорд посещаемости был зафиксирован 14 февраля и составил 129 человек за сутки. Видимо, робототехники предпочитают не тратить время на ерунду в день всех влюбленных и занимаются роботами! :)

Средняя посещаемость в сутки составила около 105 человек. Больше всего заходов обеспечил мне дядюшка Google - 1011 штук. Яндекс, где я лидирую по многим хорошим на мой взгляд запросам отстал почти на три сотни заходов. На третьем месте Rambler (255 заходов), вклад остальных поисковок - очень незначителен.

Что касается "не поисковок" - то больше всего заходов мне приносит этот самый блог, который Вы сейчас читаете (более 300 заходов). Кроме того, в конце января новость о статье RoboML была наконец-то опубликована на xmlhack.ru, который, соответственно, занимает второе место (66 переходов). Также хочу отметить, что «кольца сайтов» также приносят неплохую пользу - порядка 50 переходов за месяц я получил именно с их помощью. Остальные реферралы - сайты форумов, каталоги сайтов, а также сайты, с которыми я осуществлял обмен ссылками - радуют, к сожалению, гораздо меньше - чего, впрочем, и следовало ожидать...

Первые дни весны в отношении статистики радуют безмерно - принося более 120 заходов каждые сутки. Приятно, что в списке реферральных сайтов (исключая поисковки) на третьем месте гордо красуется каталог сайтов по робототехнике Robotics.Ru...

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

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

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

Игры про роботов и не только

Подсказали оригинальную онлайн-игру на Flash - RoboBrawl (букв. "драка роботов"). Вкратце - это аркадная игра с видом сверху, где на небольшом ринге сражаются 5 роботов. Возможна даже сетевая игра. С удовольствием потратил 20 минут на изучение, но когда понял, что вещь хорошая, и можно бы поиграть и больше - заводить аккаунт и начинать качаться с нуля уже не хотелось. Так что не повторяйте мою ошибку, и после одного-двух боев зарегистрируйтесь! Интерфейс - на английском, но интуитивно все очень понятно.

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

Вот видео самой игры с YouTube:

Не правда ли, шикарно!? Рисуешь что-то - и оно оживает... Обычно такие игры очень сложны в реализации либо в управлении. Здесь проблемы с управлением нет (ведь нужно только рисовать), а реализацию - увидим...

Да, к сожалению, на сегодняшний день игра Crayon Physics Deluxe еще не готова. Зато можно скачать ее урезанную версию и дополнительные уровни к ней. Кроме того, советую подписаться на уведомление о выпуске игры, этим Вы добавите автору энтузиазма и стремления закончить такую замечательную задумку.

Открытие Robotics.Ru

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

Без ложной скромности могу отметить, что представляемая новая версия сайта Robotics.Ru была реализована полностью мной. Дизайн, верстка, программный код, концепция, содержание... Лично я результатом весьма доволен. Посмотрим, понравится ли людям.

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

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

Лично я, будучи редактором международного открытого каталога DMOZ, перенял оттуда много, как мне кажется, полезных принципов и требований к сайтам каталога. Например, требования к аффилированности, к уникальности содержимого сайтов, удобству интерфейса и т.п. Однако, ничто универсальное не может быть идеально, а DMOZ - именно универсальный каталог, предназначенный для сайтов всех типов. Поэтому данный специализированный каталог получил также ряд важных преимуществ перед разделом DMOZ «Робототехника».
Например, каталог гораздо более структурирован. Навигация проще. Присутствуют специальные ссылки на все сайты каждого раздела верхнего уровня. Поиск каталога работает не только по самому каталогу, но и по содержимому сайтов каталога - и реализован с помощью технологии Google Custom Search Engine. Ссылки даются чаще не просто на сайты, а на разделы сайтов (соответствующие тематике текущей категории каталога) - благодаря чему посетителю не придется искать информацию внутри сайта, ведь у него есть прямая ссылка на то, что он хочет...

Также хочу сказать вкратце о перспективах развития описываемого каталога.

1. Хочется сделать различные типы добавляемых сайтов, например, в раздел «Модели роботов» можно встроить аннотированные странички, хранящиеся в формате RoboML.
Особым разделом является раздел, посвященный новостным сайтам. Мне кажется, очень логично показывать в описании таких сайтов их последние новости, которые автоматически получать через RSS.
Еще один очень интересный раздел - Разное » Люди, я постараюсь поместить туда ссылки на все имеющиеся странички популярных на ниве робототехники людей, а для тех, у кого собственных страничек нет - сделать какие-то простые анкетные страницы внутри сайта Robotics.Ru.
И т.д.

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

Эх, было бы время, были бы помощники - и я бы, может быть, сдвинул бы Землю... :-)