вторник, 18 декабря 2007 г.

Роботы и mini-ITX

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

  1. Готовая база для «шасси»
  2. Готовая база для «мозгов»

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

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

Еще один интересный вариант шасси недавно предложил мой давний знакомый falanger. Он предлагает использовать... инвалидное кресло. Судите сами: моторы, редукторы, колеса, аккумуляторы - там уже есть. Грузоподъемность - как минимум вес взрослого человека, а это более, чем достаточно. Водрузить на такую "тележку" ноутбук или компьютер, и еще кучу грузов - никаких проблем. Конечно, инвалидное кресло весьма громоздко для передвижения робота в домашних условиях, и вообще, не очень ассоциируется с робототехникой...

Собственно, почему делается такой упор на высокую грузоподъемность? - спросите Вы. Все очень просто. Лично я уже обжегся на использовании игрушечной модели. Она оказалась слишком малой, чтобы выдержать вес ноутбука и кучи аккумуляторов. В результате мой робот мог ездить автономно всего лишь 15-20 минут, и то - весь стонал под непомерной тяжестью и еле передвигал колесами :)

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

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

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

Одним из производителей таких материнских плат является компания VIA. В интернете можно найти множество обзоров материнских плат форм-фактора miniITX, например, oбзор минисистем VIA EPIA-M10000 и VIA EPIA-800. Привожу описания этих плат, взятые из обзора:

VIA EPIA M10000
Цена
  $138 (около 3600 рублей)
Процессор 
  VIA C3 1000 МГц
Чипсет
  VIA CLE266 North Bridge/VIA 
Память
  1 DDR266 DIMM до 1 Гб
Видеосистема
  VIA CastleRock
Порты ввода/вывода
  IDE UltraDMA 66/100/133
u PS/2 разъемы для подключения клавиатуры и мыши
  1 VGA выход
  1 S-Video выход
  1 параллельный порт
  1 последовательный порт
  1 RJ-45 LAN port 
  1 IEEE 1394 Firewire (опционально)
  4 разъема USB 
Разъёмы
  1 PCI слот

VIA EPIA 800

Цена
  $96 (около 2500 рублей)
Процессор 
  VIA C3 800 МГц
Чипсет
  VIA Apollo PLE133 / VIA 
Память
  2 разъема памяти 168-pin DIMM 
  поддержка PC100/133 SDRAM 
Видеосистема
  VIA CastleRock 
Порты ввода/вывода
  3 аудиогнезда - Line-out, Mic-in and Line-in
  4 USB порта 
  1 EPP/ECP 
  2 х PS/2 
  2 порта TV output (S-Video или опционально RCA TV out)
  1 S/PDIF out 
  1 RJ-45 LAN порт
  1 слот PCI
Разъёмы
  1 PCI слот

Также, дополнительную информацию по материнским платам от VIA можно получить на сайте www.via-c3.ru. От себя скажу, что интересны могут быть также карточки серии VIA EPIA EN, хотя, конечно, и дороже. Например, такую можно купить на сайте www.ret.ru. Помимо материнской платы, можно еще купить корпус, особенно если Вы будете использовать данный компьютер не только для робота, но и для просто домашней или офисной работы.

Что касается реальных цен (розничных, с учетом доставки и накруток магазинов), я интересовался у знакомого, который занимается поставкой компьютерного оборудования в г. Костроме (я там живу). Вот его ответ: мать стоила что то в районе 160-170, плюс корпус 70-80, в итоге выходило 240-250. Если перевести в рубли, получается максимум 6500 рублей. Не забывайте - ни ноутбук, ни компьютер не нужно покупать исключительно под использование в качестве мозгов робота! Вы можете в любой момент отключить и поставить «мозг» робота себе на рабочий стол.

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

Вообще, использовать miniITX в роботостроении не я первый додумался. Вот например, можно почитать статью о применении mini-ITX в роботах, в которой описывается коммерческий робот PC-BOT 904, построенный с использованием этой платформы. Описание, конечно, очень поверхностное, и каких-либо технических деталей не предоставляется. Кстати, заметьте, PC-BOT чудовищно напоминает R2D2 :)

Отмечу некоторые недостатки использования материнских плат форм-фактора miniITX в домашнем роботостроении:

  • Врядли такая материнка, в отличие от старого ноутбука или компьютера, завалялась у Вас на антресоли. Именно поэтому я так серьезно подошел к ценовому вопросу. Такую вещь наверняка придется покупать.
  • Если б/у компьютер или ноутбук можно купить буквально за бесценок, то старых карточек miniITX и корпусов к ним найти гораздо сложнее. Хотя, объявления встречаются.
  • Как показывает практика, корпуса тонких клиентов на карточках VIA EPIA очень любят стрелять статическим электричеством. Может быть, не совсем минус, но неприятно.

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

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

  1. Привет, Андрей! :)

    А в чём вы видите удобство для мобильного робота в использовании ноутбука? Мне кажется уж очень избыточное решение. Как по весу, энергопотреблению и пр., так и по функциям: зачем роботу полноразмерная клавиатура и дисплей?

    ЗЫ А вообще блог отличный, читаю с интересом =)

    ОтветитьУдалить
  2. Привет :)

    Ноутбук использовать очень удобно, именно удобно, но, возможно, и не слишком рационально.

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

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

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

    Конечно, все это - удобство именно для любителя, не для профессионала, наверное... Но лично мне именно использование ноутбука очень помогло в плане уменьшения трудоемкости.

    ЗЫ Спасибо, рад стараться :)

    ОтветитьУдалить
  3. Добавлю:
    Если сравнивать ноутбук с компьютером...
    Насчет веса - смотря какой ноут. Есть и такие, что меньше килограмма весят.

    А вот например я для своего 3-х килограммового друга сделал небольшую операцию - вытащил из него флоп и CD-ROM, для робота не нужные, вынимающиеся/вставляющиеся за полминуты. Он стал весить почти в два раза меньше :)

    Насчет энергопотребления - вообще не соглашусь. В ноуте все уже заточено под минимальное энергопотребление! Все запчасти сделаны так чтобы жрать поменьше энергии. Даже на порты (те же COM и LPT) питание не подается, пока они не активны, и даже когда подается - у меня например оно меньше рассчетных 5В.

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

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

    Насчет энергопотребления сказать пока ничего не могу т.к. не замерял, но думаю, что ноут проигрывает ненамного. Ведь никто не задумывал питание плат mini-ITX от батарейки, а питание ноута от батарейки - это естественно, соответственно и оптимизация под это имеется.

    ОтветитьУдалить
  4. Привет!
    Микроконтроллеры PIC (Microchip) имеют не такой уж и бедный функционал.
    Да и программировать их вовсе не обязательно на Ассме. Фирменая IDE оболочка MPLAB предлагает для этого еще и C (а со сторонним компилятором и C++).
    А экономичность МК данной фирмы является их сильной стороной.
    Сам сейчас балууюсь немножко с ними. И ношусь с идеей сделать на их базе робота :)

    ОтветитьУдалить
  5. К сожалению, почти не работал с микроконтроллерами, совсем чуть-чуть - и с доисторическими монстрами, даже модели точной не помню.

    Но в любом случае, я абсолютно уверен, что ни один, даже очень современный микроконтроллер не обеспечит работу со сложной разработкой, состоящей из сотен классов, компонентов, библиотек - банально не хватит ни производительности, ни объема памяти. Я подозреваю, что даже простейшую нейронную сеть реализовать на МК сложно, если не невозможно.
    Плюс к тому, подключение сложных и необычных устройств, к компьютеру подключающихся без проблем (картридеры, вебкамеры, bluetooth и wi-fi адаптеры, и т.п.) - здесь вполне может стать проблемой.

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

    ОтветитьУдалить
  6. А как насчет коммуникатора на ВинМобайл с камерой, с его Инетом и главное УСБ хостом. Можно без ущерба подключить не разбирая к контроллеру робота, который будет просто переводить все из УСБ на ввод-вывод. Также для простоты можно просто взять контроллер у которого на УСБ выведен КОМ-порт. Так что на КПК можно просто писать программку на С# которая будет работать с КОМ портом. Если у КПК есть блютус, то прогу можно сразу на компе отлаживать. Повозившись с ДиректШоу можно сделать передачу снимков с камеры :). А при наличии 3Г, как у меня, можно сделать видео в реальном времени :))). По инету его можно отправить куда угодно :)

    ОтветитьУдалить
  7. Я сам щас работаю над роботом на основе КПК. Согласен, идея перспективная, и все же ограничения есть у КПК.

    Да, USB host. Но USB host очень мощно кушает питание коммуникатора/КПК. А если к USB host на КПК подключить USB hub, и далее к нему 4 устройства - то такой вариант уже не будет работать (у меня не работало по кр. мере), хотя для компьютера это стандартное решение. Так что сопряжение с внешними устройствами все-таки по-прежнему слабое место КПК.

    К тому же в настоящее время все-таки еще есть глюки (различающиеся от конкретной модели девайса) - и с Bluetooth, и с Wi-Fi, и с интернетом даже, а особенно, если они работают все вместе.

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

    Наконец, стоимость. По стоимости гораздо выгоднее купить например материнскую карточку mini-ITX, она будет вполне удовлетворять требованиям компактности, при этом обладать гораздо большими возможностями, намного лучше документированными и под которые уже созданы десятки тысяч программ.

    КПК, а тем более коммуникатор - намного дороже, менее документирован, менее проработан по части готового софта, менее приспособлен для сопряжения с внешними устройствами робототехнического профиля.

    ОтветитьУдалить
  8. Ну я не собираюсь все питать от УСБ, просто УСБ позволит без порчи КПК подключить контроллер, зачем там кучу устройств?. Даже наоборот, КПК будут дополнительно запитан от внешней батареи.
    И там ни чего не глючит, с какой стати? От недостатка памяти не страдаю, 128Мб ОЗУ и 2Гб Флэш. Смысла в том, что комп в 1000раз мощнее не вижу, не ХДТВ видео через него же показывать.

    Большого смысла в нейронных сетях тоже не нашел. В свое время делал прогу для распознования рукописных (на КПК) иероглифов. Оказалось, что гораздо проще, быстрее и эффективней обойтись без нейронных сетей. Темболее, что нейронные сети не самообучаемые, какждый раз приходилось прогонять процесс обучения с нуля.

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

    ОтветитьУдалить
  9. Я просто описал ограничения КПК, то, как Вы будете что-то делать, зависит, естественно, только от Вас :)

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

    >Смысла в том, что комп в 1000раз мощнее не вижу

    Ну конечно, очередной робот из серии "тупые как пробки" - не требует совершенно никаких ресурсов... :) Объезд препятствий реализуется вообще обычной механикой - без электроники... Что еще нужно :) А судя по тому, что Вы хотите сделать - это вообще не робот, а мобильный, дистанционно управляемый коммуникационный пункт.

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

    ОтветитьУдалить
  10. посмотрите про picoITX - недавно вышли в продажу. Это второе после микроИТХ поколение micro-nano-pico. 10x7 см.

    ОтветитьУдалить
  11. РЕбята Вопрос Такой Есть Ноутбук с вайфаем веб камерой и т д хочю зделать робота который будет возить ноутбук и выполнять команды типа робот включи музыку и т д правда я не правильно изложил свою мысль кароче нужно зделать робота у которого будут замисть ног колёса и ноутбук ето мозг и голова причём с минимальныйм вложением возможно ли написать программу которая будет работать на оси виндовса хп или виста и которая полностью будет заменять нормальный мозг робота (Я представляю себе ноутбук на колёсах который ездит за тобой разгаваривает и выполняет твои команды)

    ОтветитьУдалить
  12. В качестве базы можно еще использовать недорогие нетбуки.
    Но Имхо все таки основная проблема это программное обеспечение AI.
    Именно "понимание" команд и алгоритмы их реализации.

    ОтветитьУдалить
  13. Есть идеи как запитать комп с mini-ITX? Ноут может работать на своем аккумуляторе, а для полноценного компа придется генерить 220 вольт переменного тока.

    ОтветитьУдалить
  14. drone:
    mini-ITX не требует 220 вольт. у них там свои блоки питания, насколько я помню они питаются от 19В или где-то рядом. блок питания с корпусом, правда, стоит стока же, скока сама карточка mini-ITX :)

    ОтветитьУдалить
  15. блок питания не нужен вовсе материнские платы питаются от 12V и могут быть подключены к автомобильному акумулятору

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

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