Уже готов ринг. Правда, он немного меньше, чем должен быть по правилам, но
я не вижу ничего страшного 69 см против 77 см- для тренировки подойдет. Главное-
отработать сенсоры края и потренироваться на "кирпиче".
Робота я решил сделать на основе модифицированных сервоприводов Futaba (да
простят меня производители за такое глумление над их товаром). Дело в том, что
сервопривод практически идеально подходит для робототехники. Он небольшой, двигатель
там маломощный, ток потребления- от 80 мА (для модели S4003, которую я использовал).
Редуктор малошумящий, с хорошим КПД, установлен металлический шарикоподшипник.
Нужно всего-то отпилить пару выступов и припаять проводки непосредственно к
двигателю, потому что управлять им не так-то просто. Кто-то умный придумал стандарт,
а для его использования нужно много времени потратить на написание управляющей
программы. Я решил проблему просто- припаял проводки непосредственно к мотору.
Вот некоторые фотографии:
Постараюсь делать обновления почаще.
"Корпус" был сделан из куска листового дюраля. Толщина- где-то 1
мм, хорошо резался ножницами по металлу. Сверлился этот материал тоже хорошо.
Форму видно по фото. Я думаю, что можно сделать и проще. НО! Оказалось, что
вес робота далёк от 500 гр, которые разрешены соревнованиями. Поэтому я думаю,
что делать. Можно увеличить количество батарей до 8-и и сделать их параллельными
или же в схеме использовать еще 1 реле, которая переключала бы источники питания.
Это было бы неплохо, хотя время нахождения на ринге- 3 минуты... Но если представить
такой вариант- робот ищет соперника (использует батареи на 600мА/ч), находит
его и начинает толкать. В этот момент подключает более мощные батареи- на 2000мА/ч.
Или можно использовать 4 и 5 батарей блоки. Сервопривод может работать до 6
В (хотя это, я думаю, не предел), поэтому можно для "рывков" использовать
блок из 5-и аккумуляторных батарей по 1.2 В.
Колеса пока сделал из фанеры. Но уже купил на базаре резиновые кольца. Примерил-
отлично подходят в качестве колес. Нужно всего-лишь подсоединить к сервоприводу.
Пока я не сделал сенсоры края и не подключил микроконтроллер. Буду ли я использовать
ИК-бампер? Пока не знаю. Нужно хотя бы одного робота собрать.
С ним одна проблема- непросто его настроить. Подстроечные резисторы расположены
там же, где и оптоэлектроника. Прийдется настраивать так: покрутил, поставил,
провёл робота по рингу, потом к пункту 1 и опять. Немного неудобно, но, думаю,
решу эту проблему. Нужно еще сделать на плате кнопку для настройки и написать
часть
программы,
которая будет отвечать за настройку сенсора.
А лучше всего - написать отдельный код для проверки работоспособности всего
робота (самотестирование). Но это в планах. А пока нужно разработать новую
плату. Вот только не знаю, делать универсальную или специализированную плату?
По большому счету- вытащил МК из кровати- и плата "пустая". Нужно подумать...
Вот фото первого датчика (справа), который я испортил. Когда печатал разводку
на принтере, забыл про зеркало. Уже когда просверлил отверстия, то понял, что
ошибся. Бывает со всеми. Вот что значит делать несколько дел сразу...
Слева внизу- новая протравленная плата нижнего сенсора. Схема сверху, только
я использовал 2 канала (больше пока не нужно). В следующий раз использую SMD-микросхему,
потому что DIP слишком много места занимает.
Установил датчик края, вытравил специально для этого робота плату. На плате:
микроконтроллер AT90S2313, частота- 4МГц, драйвер двигателей L293D, без диодов,
также на плате ИК-передатчик и приемник TSOP1736.
Пока писал этот материал, робота уже собрал и он уже ездит по рингу и падает
:-) пока...
28.09.2004г. - робот уже может бороться с "кирпичами"
Да, увлек меня сумо-робот. Я, конечно, ожидал, что научить его борьбе будет
очень долго и трудно, а оказалось, что "тест кирпича" выполнить довольно легко.
Другое дело, что алгоритм поиска другого робота пока не совершенен и ИК-датчик
я пока не настроил, но успехи есть.
Я попытался заснять веб-камерой, но в комнате темно и вышло не очень.
Ну а теперь подробнее.
Сейчас у робота довольно простой алгоритм.
Я взял 2 регистра (память решил не использовать) reg_count- счетчик
обратного отсчета и reg_motor- собственно закодированный тип движения. После
старта мотор=2 и обратный отсчет тоже установлен в некое значение.
Программа идет по циклу. Опрашивает датчик пола, опрашивает ИК-сенсор. Если
они ничего
не
обнаружили, возвращается в начало и уменьшает reg_count. Когда значение уменьшается
до 0, изменяется значение мотора на 1 (было 2), загружается счетчик и управление
передается блоку датчика пола. Когда счетчик опять заканчивается и значение
мотора=1, оно опять меняется на 2 и загружается счетчик.
Пока что 2= движение вперед, 1= левый мотор вперед. Робот движется почти по
кругу. Это, конечно, минус, потому что он не всегда может обнаруживать "кирпич".
Надеюсь, что я придумаю случайное движение или что-то более прогрессивное использую.
Далее, если ИК-датчик "видит" возвращенный сигнал, мотор устанавливается
в 9 и робот движется только вперед. Счетчик загружается, но когда он обнуляется.
ничего не происходит- робот продолжает толкать предмет.
Блок отъезда. Пока для этого зарезервированы числа 5 и 6, но так как это блок
был написан самым первым, он работает "железно"- на это отведен кусок кода.
Двигатели включаются оба назад, а потом, в зависимости от того, какой датчик
сработал (правый или левый), включается соответствующий двигатель. В это время
робот не видит пола и не работает ИК- сенсор. Но и задача робота- побыстрее
покинуть опасную зону. Это- главное. Оказавшись в безопасности, он может продолжать
"искать добычу". Если робот "видит" противника, а тот внезапно исчезает (что
может быть в реальном бою), то программа проверяет, какое было состояние и
если был ответ от датчика а потом пропал, то в регистр мотор записывается 2
и робот начинает опять искать противника.
Тактика, конечно, "дубовая", и рассчитана на "кирпич", но... Не судите строго,
все только начинается. Правда, один коллега сегодня спрашивал в письме, "когда
же будут соревнования?". В России, имелось ввиду. Я не знаю, потому как для
меня Россия- заграница. Мне ближе Киев, но если будут соревнования в Москве
или Питере, то может быть я и соберусь поехать. Только нужно робота нормального
построить- этот все-таки слабоват.
У моего первого робота-сумоиста такие данные:
Длина- 10 см
ширина- 11 см
вес- около 250 грамм.
Аккумуляторы- описано ниже
Железо- было выше, 2313 + L293
Программа- ассемблер. Размер кода- 129 слов (из 500 возможных)
Ширину я планирую уменьшить до стандарта путем установки новых шин. заготовки
уже лежат, нужно только изготовить на их основе колеса. Вес тоже набрать несложно.
Конструкция робота позволяет установить 3 комплекта батарей (по 4 штуки). Я
испытывал с 2-я комплектами- 4xNiCd600mAh и 4xNiMh2100mAh. Аккумуляторы имеют
неприятную особенность- садится один из 4-х и соответственно ток резко уменьшается
и уменьшается тяга. Если заменить этот аккумулятор, то ток восстанавливается.
У меня и раньше была идея подключить несколько источников, а сейчас и подавно
я хотел бы так сделать. например, при поиске используются более слабые аккумуляторы
на 600 мА/ч, а если противник перед роботом, включить более мощные или даже
сразу 2 компалекта батарей. Вот идея! А? Вес ведь позволяет такое сделать.
Свободная память позволяет сделать еще очень много. Не искусственный интеллект,
но все-таки и МК один из самых простых. Можно было взять Мега8- это все-таки
намного круче! Но я решил начать с того, что есть в наличии.
Сегодня я потратил еще час времени, хотя у меня его и мало
НО! Что было...
Два робота схлестнулись на ринге. Новый Монстр пока не имеет глаз (ну не прикрутил
пока), но свободно перемещается по рингу.
Маленький да удаленький (нет почему-то имени, хотя нужно придумать) легко находит
на ринге противника, хотя скорость движения у него раза в 2 ниже, зато какая
мощь! 2 раза он спокойно сбрасывал Монстра с ринга. Первый раз когда тот ехал
передом к краю и Сумо-1 (пусть пока будет так) догнал и просто подтолкнул
Монстра- тот уже не успел отъехать, а свалился с ринга. Второй раз я нагрузил
роботов
сверху
грузом (чтобы было интереснее). Но и в этом случае Сумо-1 вытолкнул противника,
хотя толкал его в переднюю часть.
Очень много приколов даже в первой схватке. Хотя мне не нравится то правило,
что роботы стоят лицом к лицу. Тут проще простого- едь вперед и тот кто сильнее,
выигрывает. Как в крестики-нолики. Мне кажется, тупое правило. Нужно ставить
роботов зад-в-зад или бок-в-бок. Тогда будет интереснее.
Буквально завтра должны привезти видеокамеру Сони с выходом на USB, так что
я думаю, будет хорошее видео и фотки цифровые тоже будут.
А пока фото Монстра и Сумо-1
Вот и обещанные видеофрагменты, снятые камерой Сони.
Я осваиваю Abobe Premiere, так что если что-то не так, не обижайтесь. Самым
хорошим форматом для интернета оказался WMV. Надеюсь, что у всех есть чем посмотреть.
Файлы очень маленькие, расчитаные в том числе и на диалап 28.8к и 56к.
Фрагмент №2 (224 кб, 47 секунд) в формате WMV. Это более
длинный фрагмент (вариант фрагмента №1), на котором видно, как робот после
того, как
всех растолкал,
продолжает "рыскать"
по рингу.
Фрагмент №3 (103 кб, 22 секунды) в формате WMV. Это
поединок Сумо-1 с Монстром-1. К сожалению, Монстр-1 пока не имеет ИК-сенсора
для обнаружения противника- он
просто старается
двигаться и не выпасть за пределы ринга. В это время Сумо-1 охотится на него
(по сути слепого робота) и все-таки выталкивает его с ринга. Трудно себе представить,
что будет, если Монстр-1 обретет зрение (я пока работаю над датчиками), но
судя по всему, у него достаточно мощи, чтобы одолеть любого робота. Не хватает
веса, это правда, и ещё он не соответствует размерам роботов стандарта мини-сумо,
поэтому подходит пока что только в качестве спарринг- партнера для Сумо-1.
18.10.2004г. Добавлены фотографии приличного качества.
сенсоры края и нижняя часть робота (30кб)
практически
весь робот виден (90кб)
робот
на ринге (32кб)
01.11.2004г. Добавлены схема и печатная плата.
Как и у всех роботостроителей, катастрофически не хватает времени на оформление
документации, фото- и видеоматериалов. Схемы были сразу, хотел привести их
в порядок, но, видимо, будут так пока лежать.
Вначале планировалось двойное
питание схем управления и моторной части, но они нормально работали от одного
источника питания, и я сделал перемычку для питания всех схем от одной батареи.