Хочу рассказать о моем опыте работы с робоконструктором POP-BOT таиландской фирмы Innovative Experiment. Они продаются в магазинах и вполне доступны по цене (5,5 тыс.р. — небольшая цена за робота). Однако информации про него в интернете очень мало.
Далее я опишу впечатления от использования и сделанные мною улучшения (энкодеры, компас, bluetooth), которые превращают этого робота в удобную для экспериментов машину.
История вопроса
Революция в любительской робототехнике происходит на наших глазах. Мы ещё 2 года назад собирали детали на помойках, разламывали танки и принтеры, покупали движки от стеклоподъёмников. Но сейчас мы узнали, что есть фирмы Innovative Experiment, Tamiya, Pololu, проект Arduino. Их становится всё больше и больше, проще купить, не только в спецмагазинах/через интернет, но и магазинах общего назначения (Вольтмастер, Чип и Дип).
Раньше было так — либо полностью самодельные конструкции (и головная боль — где достать моторы, датчики, питание, корпус), либо Лего-роботы (высокая стоимость, и самая главная моя претензия к Лего — крайне ограниченный микроконтроллер на 3 входа и 3 выхода).
Готовый робот дает возможность быстрого старта в робототехнику. Он находится между этими двумя полюсами. В нем больше возможностей, чем в Лего, потому что вы можете подключить не только части из комплекта, но и любые другие сторонние. Раньше только Лего предлагал возможность простого, быстрого программирования на достаточно высокоуровневом языке. Но теперь есть проект Arduino, идеально подходящий для новичков.
В РГГУ в этом году профессор Павловский В.Е. начал читать спецкурс «Введение в робототехнику» на Отделении интеллектуальных систем. Если интересно, материалы можно взять со студенческого сервера. Мне было поручено вести практические занятия, и мы сразу решили, что у студентов должна быть практика с настоящими роботами. Мы остановили свой выбор на POP-BOT как на самом доступном по цене и простом для новичков, при этом с богатым функционалом. Рассматривался также вариант Pololu 3pi, но вскоре стало ясно, что этот робот уже для более «продвинутых» робототехников, и его сложнее расширять в силу маленького размера.
Обзор
Что в наборе
В коробке с роботом находится масса всего! Описывать содержимое не буду — это уже сделал уважаемый DiHalt — а только добавлю свои наблюдения.
Единственное, что вам потребуется, чтобы немедленно начать работу с POP-BOT — это питание. Аккумуляторов в наборе, разумеется, нет, так что подготовьте 4 штуки АА. Радует то, что практически все детали из комплекта можно купить по отдельности в «Терраэлектронике», а значит, испорченную часть легко заменить.
Прилагается хороший CD с программами, документацией, презентациями про Arduino и даже с видео. Подробнейшее (и полное опечаток) руководство пользователя на английском. Есть и на русском.
Сборка интересна и несложна. Небольшое разочарование случилось при попытке приделать ЖК-экран. В нем крепежные отверстия под 2,5 мм, а в наборе есть только 3 мм. Пришлось брать крепёж помельче, а что ребятам делать, у которых это первый робот? Кроме того, не нашлось крепежа, с помощью которого можно было бы по всем правилам закрепить сервомашинку. Для этого нужно вставить в отверстия сервомашинки вначале резиновые втулки, затем латунные, в которые уже продеваются винты. Но винтов такого размера тоже нет в наборе.
Программирование
На CD есть только дистрибутив Arduino 0017 под Windows. Если не хочется устанавливать уже устаревшую среду (самая новая — Arduino 0022), или нет возможности (например, если у Вас Linux), то нужно сделать всего 2 несложные манипуляции:
- Установить среду под wine и достать оттуда примеры (папка POP-BOT), положить в arduino/examples. Потом эту версию можно удалить
- Добавить в 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.
А теперь займёмся тюнингом!
Улучшения
Я старалась использовать то, что было в коробке, и поменьше паять. Вся паяльная часть свелась к изготовлению проводков для дополнительных компонентов.
Энкодеры
Хорошо бы роботу обладать хотя бы примитивной системой одометрии. Очень часто для измерения пройденного пути используют оптические энкодеры, подобные тем, что есть в механической «мышке».
Мне удалось сделать энкодеры из входящих в набор ИК-отражателей. Бумажные круги нарисованы и распечатаны в AutoCAD. На каждом — по 20 чёрных и 20 белых полосок. На практике, если крутить колесо рукой и смотреть на счетчик полосок, и на левом, и на правом «пропадает» 2-3 полоски, то есть после полного оборота колеса датчик насчитывает около 37 переходов. То, что видят в данный момент датчики (черную или белую полосу), удобно выводить на встроенных светодиодах D2 и D4.
Скорости удалось выровнять при помощи ПИ-регулятора (Д-составляющая здесь была не очень критична).
В этом видео робот едет прямо только при помощи энкодеров и линию не видит. Я запускала его по линии, чтобы глазами видеть, насколько он отклонился от прямой.
До этого один мотор вращался заметно быстрее другого. На скорости примерно 1/5 от максимума мотор стоит.
И всё-таки, если хотите недорогую более точную одометрию — лучше купить моторы Gekko с энкодерами и колёсами Pololu. С таким люфтом и качающимся валом эти двигатели вместе с самодельным энкодером представляют собой разве что учебный вариант, «на попробовать», и для серьёзных экспериментов не годятся.
Компас
Компас 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 на этот контакт, но я не решилась вносить такие глобальные изменения в плату.
Кстати, в моих планах сделать подсоединение экранчика через тот же разъём, чтобы не занимать лишний вывод и не делать SoftwareSerial.
Заключение
Я считаю, что данный робот может быть неплохой заменой Лего-роботам в деле обучения началам робототехники. Если из Лего Вы уже выросли, этот робот для вас!
Если Вы чувствуете себя скорее программистом, нежели «железячником», не любите паять и хотите опробовать алгоритмы — это тоже для вас!
Ссылки
Управление POP-BOT при помощи XBee-модуля (видео)
Благодарности
Спасибо заведующему отделением интеллектуальных систем профессору Финну В.К. за доверие и помощь в организации курса; спасибо РГГУ за покупку роботов; и отдельное спасибо Никите Федюшову, без поддержки которого этот процесс растянулся бы на неопределённые сроки.
Создано при поддержке Фонда молодых ученых компании Supreme
0 комментариев на «“Робоконструктор POP-BOT: обзор и улучшения”»
отличная работа!
Мне просто беспроводная камера не кажется слишком красивым решением. Хотя это конечно универсально.
Так бы делал своего робота на б/у D-link DIR-320 c UVC камерой.
Мне нужно обрабатывать именно на ПК т.к. можно будет создать какую-нибудь обучаемую нейросеть, делать эксперименты, создать mini-skynet… 🙂
Тогда радиокамера, и вперёд! Или можно ноутбук на робота поставить, и тогда туда сразу Kinect, а то просто камера нынче не модно. 🙂
Есть китайские android планштеты от ~70$
Я бы если мощность нужна выбрал бы beagle board либо альтернативное что-то.
noonv правильно говорит насчет ноута.
Китайские андроид-планшеты из dealextreme знаю, пробовала. Тормозит просто зверски! Даже почту проверить у меня заняло минут 10. Что уж говорить о видео. Надо записать видеоролик про этот планшет, чтобы развеять мифы. 🙂