пятница, 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-а в несколько раз хуже по части дальнобойности, чем любой пульт ДУ (ака лентяйка).

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

12 комментариев:

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

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

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

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

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

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

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

    ОтветитьУдалить
  5. насчет публичного управления через интрернет.. неплохо бы наблюдать процесс управления со стороны.. и от первого лица

    ОтветитьУдалить
  6. Андрей! Ты просто молодец!
    Сам я только начал читать твой сайт. Много не пойму - я инженер-конструктор, немного радиолюбитель. Но брата 17 лет наставлю на твой сайт ... идти по стопам )))
    Удачи тебе во всем и твоей семье!!!!
    Когда будет чем поделиться - обязательно напишем!

    ОтветитьУдалить
  7. ОЧЕНЬ интересный блог. Автору спасибо, впредь буду читать регулярно.
    Про КПК хотел сказать, что на него можно поставить linux. И будет полностью полноценная операционная система, только библиотеки надо перекомпилить под arm процессор. А ядро, да и вообще готовые дистрибутивы можно найти в интернете.
    P.S. На моем palmTX стоит linux (спасибо hackndev.com)

    ОтветитьУдалить
  8. Может пишу не совсем по теме. Точнее по программированию. Собственно занимаюсь программированием когда-то паяльником ваял. На данный момент хочу подключить джойстик к КПК через COM порт (вроде есть он у меня в стандартном разъеме). чтобы эмулировать кнопки КПК. Соответственно нужно писать драйвер. НО! Немогу найти никакую инфу про то как это реализовать. Даже свой КПК разобрал думаю напрямую запаять если ничего не найду. Но хочеться все-таки через драйвер. Да и реализовав такой подход можно поключать к КПК очень много всего полезного )). КПК у меня IPAQ 2490. Результаты могу выложить здесь, если автор разрешит ).

    ОтветитьУдалить
  9. Управление через Инет реализовать несложно. Главное хороший хостинг с поддержкой серверных скриптов. Некоторые провы продают чистое "железо" на стойке. То есть можно свою ОС поставить.
    Как несколько пользователей смогут рулить роботом? Скорее всего только поочереди. То есть один ждёт пока другой порулит.
    А вообще лучще начинать с простого, радиоуправляемые роботы, потом когда смастеришь несколько штук, можно и к программируемым переходить.

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

    ОтветитьУдалить
  11. http://www.jbprojects.net/projects/wifirobot/

    ОтветитьУдалить
  12. Вот здесь реализовывается именно то что вы хотите в итоге - управляемая тележка с руками. Правда на базе мощного компа под убунтой :)
    http://www.ros.org/wiki/
    ROS идет на основе Player как слоя драйверов и OpenRave как симулятора. Последний включает в себя кучу всего интересного. Не Microsoft Robotics Studio, но тем не менее очень прилично. Зато опен-сорс.
    Я тоже хочу заняться этой темой (и уже немного занимаюсь), но я думаю что больше толку будет, если делать робота так, чтобы на него установилась без проблем ROS. Тогда подойдут драйвера Player и нашщей задаей будет только программировать поведение, чего собственно мы и хотим добиться.

    ОтветитьУдалить

Внимание! Реклама и прочий спам будут беспощадно удаляться.