Мои практические шаги в робототехнике

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

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

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

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

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

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

***********************************

Rug Warrior Pro

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

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

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

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

http://www.acroname.com/index.html

http://www.lynxmotion.com/

http://www.robotbooks.com/

http://www.evolution.com/

Я не буду долго останавливаться на ассортименте- его изучить Вы сможете самостоятельно. По совокупности характеристик и требуемой «мощности» я выбрал набор Rug Warrior Pro (RWP) на сайте robotbooks.com. Он, кстати оказался одним из самых дорогих и серьезных комплектов. Заказать товар оказалось делом нетривиальным. Этот, как впрочем и многие остальные магазины не принимают платежи по пластиковым картам из России и др. «банановых» стран (типа Африки и Латинской Америки...). Помогла компания www.pregrad.net , занимается такой товаров поставкой. Классный и очень нужный сервис!

Набор Rug Warrior Pro

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

Дополнительно я заказал плату расширения количества IN/OUT портов и ультразвуковой сонар.

Данный набор привлекателен тем, что он имеет достаточно мощный 8-бит контроллер на базе 2МГц Motorola MC68HC11, который может работать в многозадачном режиме! Обладает оперативной статической памятью 32Кб, достаточной для загрузки интерпретатора «С» и больших прикладных программ, имеет большой набор сенсоров: два ИК излучатель/приемник, два фоторезистора, микрофон, динамик, два датчика частоты вращения колес, три датчика касания. Кроме всего прочего, набор имеет небольшой LCD ч/б дисплей на 32 символа, что ОЧЕНЬ полезно в работе. Робот питается от 6 батареек (аккумуляторы лучше!) размера “С”. Напряжение- 7.5 Вольт.

Сборка электроники не составила труда, руководство хоть и на английском, но составлено проще некуда. Если все делать как написано, то проблем не будет. Те, кто умеет паять микросхемы и дружат с паяльником, запаяют все за пару дней. Механика тоже очень проста- два ведущих двигателя и один задний опорный ролик. Снаружи всю схему защищает пластиковый кожух. Одна моя знакомая удивилась и сказала: «Ой! Что это у тебя за кастрюлька по квартире бегает L»... Как показала практика, емкости обычных батареек хватает на неделю дней неинтенсивной работы и до 8 часов постоянной. Понятно, что основную энергию отбирают двигатели.

Совет: обычно для снижения уровня электрических помех между контактами моторчика припаивают конденсатор на 47-120 пикофарад. В комплекте они не предусмотрены, а жаль...

Они, кстати, «туповатые». Во-первых, непомерно тяжелые для 6-вольтовых, а во-вторых, обладают слабой тягой, при том, что с помощью редуктора их скорость вращения снижена до 1.5 оборота/сек. В итоге получаем низкую скорость, плохую проходимость из-за низкого клиренса, большой вес и прожорливость. Именно это и стало препятствием для более широкого применения робота! Вместо реальной автономности, приходилось каждые 5-10 минут бежать к пищащей кастрюльке и вытаскивать ее из западни в виде брошенных носков, высоких порогов, провода утюга и т.д.

Отчасти из-за отсутствия этих конденсаторов и большого значения силы тока при старте тяжелого двигателя, при слабых батареях вся схема срывается в Reset- недостаток питания. Для устранения этого эффекта в схеме питания разумно предусмотрена возможность раздельной запитки двигателей и платы контроллера. Для моторов можно применить отдельные батареи повышенной емкости. Схема управления двигателями очень продумана и построена на базе двух полных Н-бриджей. Реализовано это на одной микросхеме для двух двигателей. Как результат, максимальный ток пиковой нагрузки не должен превышать 1А на канал. Спасибо Texas Instruments, микросхема имеет Thermal Shutdown на уровне 90 градусов по Цельсию. Опытные люди могут поставить радиатор...

Программное обеспечение

В пакете с RWP поставляется интерпретатор С, оболочка для написания и отладки программ на С, библиотеки, примеры. В качестве программатора будет выступать обычный ПК под Windows. Для связи с ПК контроллером используется последовательный RS-232 порт, гнездо которого в виде телефонной RJ-11 розетки имеется на плате. Программа готовиться на ПК и затем закачивается в память контроллера. Если в программе имеется функция main(), она автоматически стартует после нажатия кнопки Reset.

Проблемы возникли сразу же. Дело в том, что в комплекте идет широкий 25- штырьковый переходник RS-232. У меня на ПК таких нет- только DB-15. Идеально было бы купить DB-25 на DB-15 переходник и все дела. Но во-первых его поди найди в век USB... а во-вторых опять не работает- ПК не видит плату! Через несколько дней отчаянья оказалось, что контакты Send/Receive разъема ПК «упираются» в такие же контакты Send/Receive разъема платы L, а надо как раз наоборот! Send на ПК должен заходить на Receive на плате и наоборот... Черт! Перепаял- все заработало.

Следуя инструкциям, необходимо сначала загрузить так называемый p-code (небольшая 256 байт загрузочная программка), а затем сам интерпретатор. По разным оценкам, пользователю остается никак не меньше 16Кб памяти. Это не много, но и не мало! Я помню на Спектруме этого объема хватало для отличной шахматной программы со всей графикой!

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

Я не первый, кто так подробно описывает этого робота. На Yahoo даже существует целое сообщество любителей RWP. Вы можете посмотреть побольше картинок и описаний (на английском языке) тут: http://www.geocities.com/alanmcdonley/pogo.html

Что хочу сказать, конечно все это в принципе уже вчерашний день. Такие роботы были бы актуальны во времена Спектрумов, году эдак 1990. Однако необычайная гибкость набора RWP и возможность его адаптации к другой исполнительной механике, для других нужд- например для реализации модной сегодня идеи «умный дом», или установки на автомобиль- охрана, парк-троник, управление голосом и прочая автоматика, плюс большой опыт и глубокое понимание как все работает, делает этот набор очень полезным!

***********************************************************

Rug Warrior превращается в RoboJeep

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

Посетив однажды магазин радиоуправляемых моделей, я понял, что лучшего шасси для продвинутого RWP не найти. Скорость и проходимость! Кроме того, у меня в рукаве оставался еще один козырь- ультразвуковой сенсор Polaroid (такой ставится, например, на фотоаппараты), который мог заменить собой ВСЕ имеющиеся сенсоры. Данный прибор легко стыкуется с платой контроллера RWP и позволяет измерять расстояние до 10 метров с хорошей точностью. Навешивая на излучатель различные /\ и \/ горны-насадки можно добиться узкого или широкого ультразвукового луча. Кроме того в схеме предусмотрено применение шагового моторчика, который может поворачивать излучатель из стороны в сторону, сканируя местность. При этом программа будет знать на какой угол от оси движения повернут в данный момент сенсор!

Также в схеме с механикой RoboJeep, будем так его называть, можно применить более дополнительные батареи и реализовать схему раздельного питания контроллера и двигателей. В итоге, помимо 1.2Ач батареи для платы, я применил 6 аккумуляторов размера «С» общей емкости 3.5Ач, что позволило значительно увеличить автономность работы робота. Конечно, также были оставлены и другие сенсоры: ИК, фоторезисторы, микрофон и датчик вращения колес, оценивающий пройденное расстояние.

Программное обеспечение

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

У RoboJeep имеются внутренние часы, ночью он спит (в перспективе хочу реализовать механизм самопарковки для ночной подзарядки), днем бодрствует. Если долго нет никаких звуков, то опять впадает в спячку. Он отслеживает время моего прихода с работы домой (прежде чем войти, я звоню в звонок), анализирует: «Ага! Около 19:00, каждый день я слышу звонок, а затем идентифицирую хозяина. Значит, можно предположить, что и завтра хозяин придет в это же время, а значит его надо ждать возле двери, карта комнаты уже имеется в памяти и тд».

Хочу также попытаться «научить» RoboJeep приносить (приталкивать) мне теннисные мячи на корте, когда я играю в теннис. Благо теперь у него и скорости хватает и радарные возможности имеются. Трудность, я думаю, будет заключаться в поиске и распознавании на корте маленького мячика... Хочу также на летнее время оснастить робота дополнительной солнечной батареей

+++

***********************************************************

ER1 от Evolution Robotics и Манипулятор от Lynxmotion



01.05.2004 Оба набора были получены почти одновременно еще зимой 2004 через компанию Pregrad.Net. Однако бесконечные праздники, горные лыжи и вообще упадническое состояние в отсутствии Солнца (в 17 часов уже темно- пора спать), отодвинули сроки реализации проектов. Первым был собран робот от Evolution Robotics, для чего у знакомого был куплен за 300 дол старенький ноутбук 700Мгц Celeron- ведь управляется он программным обеспечением под Windows. Набор, надо сказать, очень практичный и позволяет сделать практически любую конструкцию- и как показана на рисунке выше или, например, такие: в Word файле с дополнительной информацией на англ. и русском языках.
Основная задача была сделать конструкцию компактной и маневренной, а также с учетом размещения ноутбука в раскрытом состоянии и камеры на достаточной высоте. В итоге, поломав правда голову над этим конструктором, получился весьма симпатичный представитель семейства:

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

Собственно датчиков в ER1 не так уж и много. Основной из них, конечно, VGA камера, через которую робот (как и человек!) получает до 80% всей информации. Основа процесса- это распознавание заложенных в базу данных фото-образов или цвета и соответствующая реакция. Поэтому, вначале необходимо натренировать робота и наполнить базу образов. Делать это нелегко. Например, необходимо заложить изображение теннисного мячика (опять эта навязчивая идея!:). В руководстве написано, что достаточно поднести мячик к камере, зафиксировать фото, дать полученному файлу имя и ввести расстояние от камеры до мячика в данный момент. В последствии, камера "увидев" мячик, пороется в базе, сравнит, распознает и будет знать, что это за объект и на каком расстоянии он находиться. Остается лишь дать команду моторам приблизиться к мячику на расстояние, скажем, 20 см.

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

Я проявил "чудеса" изобретательности и напечатал крупным размером (1/4 листа А4) различные символы- черным, жирным по белому. Потренировал робота, заложив эти образы ему в память. Например, крест в кружке- означал "стоп, дальше дороги нет", стрелка вправо или влево- соответствующий поворот, писающий мальчик- дверь в туалет и тд. Получилось забавно: показываешь роботу стрелку вправо- он немного подумав, делает разворот нвправо на 90 градусов (ну или на 45- как запрограммируете). Короче, алгоритм понятен. Какая еще проблема? Их несколько:

- переодически программа теряет контроль и робот начинает вращаться на месте, как будто ищет чего

- извечная проблема питания. Встроенной кислотной 12-ти вольтовой батареи может и хватит на 2-3 часа работы- зависит от интенсивности движения аппарата, а вот ноутбук столько времени врядли протянет! Ноутбук у меня старенький, поэтому работает от батареи едва ли не 30 минут максимум :-( Может воспользоваться солнечной батареей?

- скорость процессора. Выяснилось, что слабенького 700Мгц Селерона не хватает! Размер кадра real-time камеры определяется пользователем. При 320х240 качество и дальность распознавания еще приемлимы, меньшее разрешение сильно отражается на качестве снимка и как следствие ошибки распознавания. Большее разрешение -лучше, но теряется скорость. Робот не успевает "зафиксировать" внимание на объект, а тот уже ушел из поля зрения. Картинка получается размазанной. Надежда только на технологию Centrino. Обещают и скорость и "долголетие".

На сегодня работы по ER1 из-за отсутствия нормального ноутбука пока приостановлены, хотя безусловно этот набор интересен и таит в себе не мало возможностей!

А пока хотел бы презентовать новую, взамен неудачного RoboJeep, разработку с применением руки-манипулятора от Lynxmotion и солнечной батареи от магазина Десси.ру. Проект называется TOBEX-CD. Почему неудачный RoboJeep и более удачный Tobex- читайте.

***********************************************************

Пишите и обращайтесь с вопросами, консультациями, а также с предложениями о совместных разработках
Дополнительные статьи и мысли, возникшие в процессе работы
J



Hosted by uCoz