Робоконструктор 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


0 комментариев на «“Робоконструктор POP-BOT: обзор и улучшения”»

  1. Мне просто беспроводная камера не кажется слишком красивым решением. Хотя это конечно универсально.
    Так бы делал своего робота на б/у D-link DIR-320 c UVC камерой.

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

    • Тогда радиокамера, и вперёд! Или можно ноутбук на робота поставить, и тогда туда сразу Kinect, а то просто камера нынче не модно. 🙂

    • Есть китайские android планштеты от ~70$
      Я бы если мощность нужна выбрал бы beagle board либо альтернативное что-то.

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

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна конкурс манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение