7 Декабрь 2007 г.

Робот и КПК

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

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

Для начала рассмотрим, какие основные преимущества дает КПК или коммуникатор:

  • Минимальные вес и размер - это на самом деле, одно из важнейших достоинств
  • Возможность использования мощи языка C++ для программирования поведения робота
  • Графический интерфейс для наладки робота
  • На новых моделях - возможность проигрывания звуковых сообщений, использования фото- и видеокамеры
  • На новых моделях - возможность использования современных технологий, как например SMS, GPRS, Wi-Fi, Bluetooth, GPS...

На самом деле робот на основе КПК - это реальность, причем достаточно «древняя». Например, существует иностранный проект создания простого робота на основе КПК Palm, с детальными описаниями процесса изготовления такого робота.
Проект называется PPRK - Palm Pilot Robot Kit, попросту говоря - это комплект готовых модулей для создания робота на основе КПК Palm. Привожу сразу же список необходимых для сборки проекта PPRK компонентов, с указанием примерных цен (цены взяты с сайта разработчиков, и скорее всего существенно отличаются от цен тех же компонентов в России):

Количество Компонент Производитель Цена
3 колесики диаметром 4см Acroname Inc.
или
MrRobot
$32
или
$29.85
3 сервомоторы MS492MH, модифицированные с помощью метода компании Mekatronix (производитель роботов) MrRobot $56
3 инфракрасные дальномеры Sharp GP2D12 Acroname Inc. $40
1 микросхема SV203 Pontech $59.99
1 кабель для синхронизации с Palm Pilot Palm Computing $19.99
1 плоская батарейка Hobbico HydriMax 6.0V 2000 4/5A (компонент #LXLX50) Tower Hobbies $31.99
2 Акриловый диск диаметром 15.24 см, и толщиной 32 мм (компонент #8581K26) McMaster-Carr $6
1 256 x 1 полиэтиленовые губчатые ленты (компонент #75785T87) McMaster-Carr $8.50
1 суперклей (цианоакриловый клей) Любой компьютерный магазин $2
1 Коннектор RS232 9-пин "папа" Любой магазин электроники $2

Всего получается порядка 260$ = 6500 руб. Еще прибавьте собственно КПК Palm III/V/m100, который конечно стоит копейки (думаю, такая б/у машинка стоит около 1000 рублей, я свой m505 покупал за 1500 рублей), но найти его трудновато.

Но дело даже не в цене.

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

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

Другим недостатком PPRK является очень ограниченное количество функций, которые может выполнять полученный робот, т.к. практически не используются алгоритмические возможности современных языков программирования. Снова, в который уже раз, объезд препятствий согласно показаниям дальномеров - это максимум, на что способны умы разработчиков. О своем отношении к такому безобразию я уже писал в статье «Робот и искусственный интеллект». Вкратце напомню - отношение у меня к этому безобразию не самое доброжелательное... Возвращаясь к PPRK - похоже, на написании драйверов запал разработчиков этого очень интересного проекта кончился.
Кстати, как раз создание драйверов - в данном случае наиболее весомая проблема. Мы можем, конечно, позаимствовать из проекта PPRK уже готовые тексты программ (и драйверов), благо они OpenSource. Однако проблема вырастает и здесь - ведь драйвера написаны специально под микросхему SV203, которую в России достать сложновато.

В случае использования более новых и более мощных КПК или коммуникаторов процесс немного упрощается и обрастает некоторыми "вкусностями". Например, такими "вкусностями" может стать применение в роботе технологий GPS, GPRS, Bluetooth, WiFi и т.д. Только представьте - как только у робота кончается зарядка, он пуляет вам SMS-ку... Внешние устройства также сейчас подключать проще, нежели чем в доисторических Palm-ах. В конце концов, уже есть USB host и некоторые готовые драйвера к нему.

Первыми идею об использовании современных КПК в качестве основы для роботов реализовала сама фирма Microsoft, сделав робота на основе КПК с ОС Windows Mobile на борту. Проект получил название WiMo, в честь названия операционной системы. Этот робот предназначен главным образом для тестирования новых интерфейсов голосового управления Windows - отсюда и его основная функция: робот понимает голосовые команды и просто обращенные к нему фразы. Кроме того, робот умеет шутить, петь, танцевать - ну и прочие приятные мелочи. Заинтересовавшимся рекомендую посмотреть видеопрезентацию WiMo.

В любом случае, хочется рассмотреть недостатки использования КПК, которые, на мой взгляд, имеют место быть! Я занимался этим вопросов вполне профессионально, и старенький КПК прикупил тоже неспроста. Итак, что я обнаружил из минусов:
  • КПК, их внутренняя структура и техника их программирования - документированы в десятки раз хуже, чем знакомая всем до боли структура настольных персоналок :(
  • КПК имеют совершенно другую элементную и процессорную базу, нежели обычные компьютеры и ноутбуки. Отсюда - невозможность использования наработок и многих библиотек, сделанных на компьютере, в программах для КПК.
  • Достаточно сложно отлаживать программы для КПК. Есть эмуляторы на компьютере - но частенько бывает, что одна и та же программа работает на компьютере прекрасно, а на КПК просто не хочет запускаться. Можно убить много часов, прежде чем поймешь, в чем собственно дело.
  • Сложность написания драйверов нестандартных устройств. Низкоуровневое программирование для КПК в несколько раз меньше документировано, и намного менее развито, нежели чем программирование низкого уровня (уровня "ядра") для компьютера. Например, подключение пульта дистанционного управления к компьютеру заключается в скачивании WinLIRC и калибровке пульта. Ни для Palm, ни для Windows Mobile - аналогов WinLIRC я не встречал. Так как все мы здесь - энтузиасты (по крайней мере, мои статьи и проекты - предназначены в основном для таких же как я - любителей робототехники), то наша главная задача - сосредоточиться на главном, а именно - программировании поведения роботов. А необходимость писать низкоуровневые и сложные в отладке драйвера - может очень сильно убавить энтузиазма.
  • Сложность при подключении дополнительных внешних устройств. У обычного компьютера, или ноутбука - гораздо больше периферии и внешних портов. В случае КПК приходится часто идти на своего рода "извращения", чтобы хоть что-то к нему подключить. Если же подключать много устройств - это вырастает в практически непреодолимую проблему.
  • КПК славятся тем, что достаточно долго живут без подзарядки. Реально - они живут долго когда нет нагрузки. Если же будет постоянно крутиться программа управления роботом, постоянно осуществлять связь с внешним миром, управлять двигателями, принимать показания датчиков - то максимальное время работы без подзарядки сразу же урезается до 2-5 часов, в зависимости от модели КПК. При управлении внешними устройствами через USB host это время сокращается еще в 2-3 раза.

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

Ссылки по теме:
  • Сборка PPRK не слишком сложна, ее процесс детально описан на сайте разработчиков. Если кому-то нужен перевод - пишите в комментариях, и в течение пары дней увидите пост с русским переводом. Хотя, на мой взгляд, из картинок итак все понятно.
  • Несмотря на простоту сборки - история о том, как собирали робота из комплекта PPRK (на английском). С фотографиями и видео. Если интересен перевод - опять же обращайтесь, сделаем.
  • Тема GPS-навигации освещается на сайте «Ты здесь!». Можно найти много интересных подробностей, в частности, и про использование GPS с коммуникаторами, и про возможности GPS-навигации, нy и так далее. Полезно, чтобы оценить, стоит ли использовать GPS и робота вместе.
  • PalmBot - проект домашней сборки робота на основе КПК Palm.
  • Книга Программируемый робот, управляемый с КПК (5Мб) - на самом деле книжка немного не по теме, но тоже полезно. Речь идет о дистанционном управлении роботами с помощью КПК, через ИК-соединение. На самом деле, сам не читал, но как представлю себя, бегающего за роботом с КПК... В общем, иначе чем сборником анекдотов, пока что книжка не воспринимается. Но - скачал, буду читать, результаты изложу в следующем выпуске «Чтива».
    К сведению: судя по собственному опыту, инфракрасник Palm-а в несколько раз хуже по части дальнобойности, чем любой пульт ДУ (ака лентяйка).

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

4 комментария(ев):

Evgolas комментирует...

Прикольно, интересная заметка и вообще блог. Даже сам загорелся сделать робота на основе старенкого компа. Как будет время - хочу заняться. Было бы здорово сделать что-нибуть с упралением через интернет, с веб-камерой и т.д. Посещаемость сайта с возможностью порулить чем-то и сразу видеть отклик мне кажется будет отличная ;-) Запчасти: старенький комп или КПК - не проблема, сервомоторы, вебкамера - это все недорого. Время только надо много на программирование и на сайте и на роботе - а времени нет пока к сожалению. Как будет возможность - займусь обязательно;-) Видел где-то давно в инете ссылку на проект - там роботизированная рука, ей можно управлять через инет. Есть банка с семенами, горшок с землей и емкость с водой. Этой рукой можно посадить семечко, потом ходить на сайт его поливать и т.д. - здорово. Когда я читал про этот проект, даже не рассматривал, что смогу сам что-то такое сделать. А ведь на самом деле, никаких неподьемных проблем нет. Запчасти как я уже говорил выйдут недорого, запрограммировать я это смогу. Я когда-то на на одной работе программировал ЦАП, ADAM-201 вроде бы назывался. Так вот его подключить к com-порту, а к нему уже сервоприводы. Паять я тоже когда-то умел. В общем спасибо за мотивацию, даже если сейчас забью, потом обязательно займусь когда будет время.

omlin комментирует...

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

Идея действительно очень интересная - насчет публичного управления через интернет. Вопрос в реализации. Для реализации этого понадобится, как минимум: сервер + выделенная линия с весьма хорошей пропускной способностью - в непосредственной близости от робота. У меня лично такой возможности, к сожалению, нет. Но москвичи и питерцы вполне смогут проделать такой финт.
Далее: неясно, что делать, если роботом захочет управлять 2 и более человека одновременно...
Ну и финальный вопрос - в отличие от роботизированной руки, у меня робот мобильный, он может максимум поездить, подудеть что-нибудь, помигать светодиодами... Это разве интересно? :)

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

Кстати, если что-то получится, сообщай обязательно.

Анонимный комментирует...

Интересная статья, уже месяц думаю из чего сделать "мышцы" для робота, робот на колесах это хорошо, но интересно как сделать "рукастого" =)

sonik комментирует...

кпк можно использовать для дистанционного управления мобильным роботом (домустим через wi-fi), который уже "тащит на себе" АСУ на базе того же самого ноутбука