CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Робоконструктор POP-BOT: обзор и улучшения

Хочу рассказать о моем опыте работы с робоконструктором POP-BOT таиландской фирмы Innovative Experiment. Они продаются в магазинах и вполне доступны по цене (5,5 тыс.р. — небольшая цена за робота). Однако информации про него в интернете очень мало.

image

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

История вопроса


Революция в любительской робототехнике происходит на наших глазах. Мы ещё 2 года назад собирали детали на помойках, разламывали танки и принтеры, покупали движки от стеклоподъёмников. Но сейчас мы узнали, что есть фирмы Innovative Experiment, Tamiya, Pololu, проект Arduino. Их становится всё больше и больше, проще купить, не только в спецмагазинах/через интернет, но и магазинах общего назначения (Вольтмастер, Чип и Дип).
Раньше было так — либо полностью самодельные конструкции (и головная боль — где достать моторы, датчики, питание, корпус), либо Лего-роботы (высокая стоимость, и самая главная моя претензия к Лего — крайне ограниченный микроконтроллер на 3 входа и 3 выхода).

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

В РГГУ в этом году профессор Павловский В.Е. начал читать спецкурс «Введение в робототехнику» на Отделении интеллектуальных систем. Если интересно, материалы можно взять со студенческого сервера. Мне было поручено вести практические занятия, и мы сразу решили, что у студентов должна быть практика с настоящими роботами. Мы остановили свой выбор на POP-BOT как на самом доступном по цене и простом для новичков, при этом с богатым функционалом. Рассматривался также вариант Pololu 3pi, но вскоре стало ясно, что этот робот уже для более «продвинутых» робототехников, и его сложнее расширять в силу маленького размера.

Обзор


Что в наборе

В коробке с роботом находится масса всего! Описывать содержимое не буду — это уже сделал уважаемый DiHalt — а только добавлю свои наблюдения.
image
Единственное, что вам потребуется, чтобы немедленно начать работу с POP-BOT — это питание. Аккумуляторов в наборе, разумеется, нет, так что подготовьте 4 штуки АА. Радует то, что практически все детали из комплекта можно купить по отдельности в «Терраэлектронике», а значит, испорченную часть легко заменить.
Прилагается хороший CD с программами, документацией, презентациями про Arduino и даже с видео. Подробнейшее (и полное опечаток) руководство пользователя на английском. Есть и на русском.
Сборка интересна и несложна. Небольшое разочарование случилось при попытке приделать ЖК-экран. В нем крепежные отверстия под 2,5 мм, а в наборе есть только 3 мм. Пришлось брать крепёж помельче, а что ребятам делать, у которых это первый робот? Кроме того, не нашлось крепежа, с помощью которого можно было бы по всем правилам закрепить сервомашинку. Для этого нужно вставить в отверстия сервомашинки вначале резиновые втулки, затем латунные, в которые уже продеваются винты. Но винтов такого размера тоже нет в наборе.

Программирование

На CD есть только дистрибутив Arduino 0017 под Windows. Если не хочется устанавливать уже устаревшую среду (самая новая — Arduino 0022), или нет возможности (например, если у Вас Linux), то нужно сделать всего 2 несложные манипуляции:
  1. Установить среду под wine и достать оттуда примеры (папка POP-BOT), положить в arduino/examples. Потом эту версию можно удалить

  2. Добавить в arduino/hardware/arduino/boards.txt дополнительный фрагмент.

Примеры программ, приложенные к роботу, оставляют смешанные чувства. Их много, они разнообразны и разной сложности — от «азбуки» вроде мигания светодиодом и управления сервомашинкой, до несложных алгоритмов обнаружения объекта и езды по линии. С другой стороны, написаны они немного на скорую руку, и в основном сделаны методом хардкодинга, то есть все повороты и отрезки записаны константами. Никаких калибровок, порогов — всё подобрано заранее. Поэтому ничего удивительного, что «сложные» алгоритмы из примеров у меня не заработали, и даже простую езду по линии пришлось редактировать и дописывать код. Кстати, хорошее упражнение было для студентов, мы устроили соревнование.

Любопытно устроено программирование робота: переходник USB-COM заканчивается обычным телефонным проводом! И на плате соответствующая ответная часть. Этот провод идет на TX и RX робота, так что потом можно подключать все устройства коммуникации через такой же провод (если распотрошить телефонный провод и спаять переходник, конечно) — ЖК-экран и Bluetooth (об этом далее).

Мне понравилось разделение на режимы программирования и работы. Удержанием кнопки BL мы переводим плату в режим программирования, в котором спокойно загружаем программу. И только после нажатия RESET робот начнет двигаться. Это очень удобно. Поймут те, у кого уже когда-либо был свой робот — после загрузки программы они постоянно норовят съехать со стола.

Устройство платы контроллера

В качестве платы используется POP-168. Если сравнить с Arduino Nano, то бросается в глаза немного другое расположение выводов, и «урезанность» платы: D10, D11, D12, D13 заняты под разъём ISP-программатора и не выведены сбоку. Но, как бы то ни было, все выводы можно использовать. Нет стабилизатора на 5В (он есть на «большой» плате) и 3.3В.

Выведены 7 аналоговых входов. К ним подключается через разъёмы JST (Japanese Solderless Terminal) вся периферия (датчики, экран). Разъёмы с ключами, так что при всём желании вы не вставите их неправильно. Расположение проводов немного странное — земля, сигнал, питание (как у SHARP-дальномера). Трудно их вынимать из гнезда, приходится подковыривать ногтями или щипчиками. На практике обжимка таких разъёмов достаточно сложна — уж очень они маленькие. Продаются, кстати, в «Кварце», если хотите подключить к роботу что-то своё. Для сервомашинок — два отдельных выхода, сделаны тоже с учетом стандартного расположения проводов у сервы. Экран (с встроенным контроллером, что очень классно) соединяется с основной платой по интерфейсу RS-232. На плате робота не выведен отдельно аппаратный UART, поэтому экранчик подсоединяется при помощи SoftwareSerial на свободном выходе.

Остальное: 2 кнопки (в режиме входа)/светодиода (в режиме выхода), ценный аналоговый вход А0 работает как выход и занят под "пищалку" (это странно). 4 выхода заняты для управления моторами, 4 выведены на программатор. Ещё 2 — RX и TX. Вот и всё. Выходит, подключить можно сразу всё, что есть в комплекте: сервомашинку, ИК-дальномер, 2 кнопки, 2 датчика полосы, экранчик, и ещё место останется!

К сожалению, заняты обе ножки с внешним прерыванием. Но проблема невелика. Не все знают, но почти на всех ножках микроконтроллера ATMega88/168/328 можно включить внешние прерывания по смене состояния (с высокого на низкое) — называется PinChangeInterrupt, есть библиотека PCInt. Зато, что гораздо важнее, свободны выводы SDA и SDL для подключения устройств с интерфейсом I2C.

А теперь займёмся тюнингом!

Улучшения


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

Энкодеры

image
Хорошо бы роботу обладать хотя бы примитивной системой одометрии. Очень часто для измерения пройденного пути используют оптические энкодеры, подобные тем, что есть в механической «мышке».
Мне удалось сделать энкодеры из входящих в набор ИК-отражателей. Бумажные круги нарисованы и распечатаны в AutoCAD. На каждом — по 20 чёрных и 20 белых полосок. На практике, если крутить колесо рукой и смотреть на счетчик полосок, и на левом, и на правом «пропадает» 2-3 полоски, то есть после полного оборота колеса датчик насчитывает около 37 переходов. То, что видят в данный момент датчики (черную или белую полосу), удобно выводить на встроенных светодиодах D2 и D4.
Скорости удалось выровнять при помощи ПИ-регулятора (Д-составляющая здесь была не очень критична).
В этом видео робот едет прямо только при помощи энкодеров и линию не видит. Я запускала его по линии, чтобы глазами видеть, насколько он отклонился от прямой.

До этого один мотор вращался заметно быстрее другого. На скорости примерно 1/5 от максимума мотор стоит.
И всё-таки, если хотите недорогую более точную одометрию — лучше купить моторы Gekko с энкодерами и колёсами Pololu. С таким люфтом и качающимся валом эти двигатели вместе с самодельным энкодером представляют собой разве что учебный вариант, «на попробовать», и для серьёзных экспериментов не годятся.

Компас

image
Компас HMC6352 подключается через интерфейс I2C. Куплен был в магазине 4robots.ru. Подключение не составило труда — Sparkfun даёт пример программы. Основную сложность составила пайка проводов и обжимка клемм, чтобы подключать к разъёмам на роботе. Устанавливать компас нужно строго горизонтально на мачте длиной около 20 см, чтобы не мешали магниты в двигателях.
На видео робот едет на север, как бы его не разворачивали. Это была одна из лабораторных работ у студентов.


Bluetooth

Вот самый дешевый и доступный вариант Bluetooth-модуля, который я нашла. Существует также «родной» IE-ZX-BLUETOOTH, но он дороже. Я использовала самодельный BT-модуль, любезно одолженный коллегой.
Для самого простого подключения нас в Bluetooth-модуле интересуют только выводы: TX, RX (шины передачи данных), VCC и GND (питание). Я подключила следующим образом: в качестве источника питания использовала разъём IDC-10 (так как всё равно ISP-программатор и Bluetooth никогда не будут использоваться вместе), а шины данных подключила через телефонный провод к разъёму программирования, получилось удобно и элегантно. Был очень большой соблазн и питание подавать через телефонный провод (в нём как раз 4 провода), но, увы, 4-й провод (через который должно идти питание на BT-модуль) оказался идущим в никуда (на плате робота к этому контакту не было ничего подведено). Можно было припаять проводок с +5V на этот контакт, но я не решилась вносить такие глобальные изменения в плату.
image
Кстати, в моих планах сделать подсоединение экранчика через тот же разъём, чтобы не занимать лишний вывод и не делать SoftwareSerial.

Заключение

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

Ссылки

Управление POP-BOT при помощи XBee-модуля (видео)

Благодарности

Спасибо заведующему отделением интеллектуальных систем профессору Финну В.К. за доверие и помощь в организации курса; спасибо РГГУ за покупку роботов; и отдельное спасибо Никите Федюшову, без поддержки которого этот процесс растянулся бы на неопределённые сроки.
Создано при поддержке Фонда молодых ученых компании Supreme

Комментарии (14)

RSS свернуть / развернуть
+
+1
отличная работа!
avatar

noonv

  • 14 июня 2011, 15:28
+
+1
Tamiya — хорощий выбор! А «мозги» какие будут? Явно не на микроконтроллере, раз видео.
avatar

robofreak

  • 14 июня 2011, 17:46
+
0
Собираюсь на Arduino. Есть же в сети какие-то примеры.
Жаль нету ещё «Camera shield».
avatar

universeroot

  • 14 июня 2011, 18:14
+
+1
Camera Shield, боюсь, никогда и не будет — не те вычислительные мощности…

Хотя вот забавная штука, всё хочу попробовать:
www.inexglobal.com/products.php?type=addon&cat=app_vision&model=ZXCCD
Видеокамера, передает изображение по Serial протоколу, уже вшито распознавание пятна.
avatar

robofreak

  • 14 июня 2011, 18:27
+
0
Будет видно. Может даже обойдусь фото.

Вот например такая камера: www.robotshop.com/4d-systems-microcam-serial-jpeg-camera-module-ttl-4.html
UART: up to 115.2 Kbps for transferring JPEG still pictures or 160x128 preview images with 0.75fps

Обрабатывает же всё сама как я понимаю только получить данные и отправить по XBee на компьютер, а там отобразить.
Вот видео с применением: www.youtube.com/watch?v=oGO1Uj8k1ao&feature=player_embedded
avatar

universeroot

  • 14 июня 2011, 18:46
+
0
Интересно, если взять это www.dealextreme.com/p/compact-flexible-neck-2-0mp-pc-usb-2-0-webcam-37574
Можно ли сделать Arduino абсолютным беспроводным посредником?

Например ПК посылает 0x123456789FFF, Arduino принимает, отдаёт камере, получает с камеры результат и отправляет на ПК.
avatar

universeroot

  • 14 июня 2011, 19:22
+
+1
Камера на шнуре симпатичная, как раз в глаза вставлять :)
avatar

robofreak

  • 14 июня 2011, 19:43
+
0
Мне просто беспроводная камера не кажется слишком красивым решением. Хотя это конечно универсально.
Так бы делал своего робота на б/у D-link DIR-320 c UVC камерой.

Мне нужно обрабатывать именно на ПК т.к. можно будет создать какую-нибудь обучаемую нейросеть, делать эксперименты, создать mini-skynet… :)
avatar

universeroot

  • 14 июня 2011, 19:52
+
+1
Тогда радиокамера, и вперёд! Или можно ноутбук на робота поставить, и тогда туда сразу Kinect, а то просто камера нынче не модно. :)
avatar

robofreak

  • 14 июня 2011, 19:55
+
+1
Kinect — всё же дороговато :) а вот ноутбук, или вернее нетбук/неттоп — это, на данный момент, почти идеальное решение для робота :)
avatar

noonv

  • 14 июня 2011, 20:32
+
0
Есть китайские android планштеты от ~70$
Я бы если мощность нужна выбрал бы beagle board либо альтернативное что-то.
avatar

universeroot

  • 14 июня 2011, 20:42
+
+2
noonv правильно говорит насчет ноута.
Китайские андроид-планшеты из dealextreme знаю, пробовала. Тормозит просто зверски! Даже почту проверить у меня заняло минут 10. Что уж говорить о видео. Надо записать видеоролик про этот планшет, чтобы развеять мифы. :)
avatar

robofreak

  • 14 июня 2011, 22:14

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