Как мы проиграли на РобоФесте, но при этом выиграли нечто большее…

24.04.2016

В этом году мы впервые решили выставить свою команду на соревнования роботов на VIII Всероссийском робототехническом фестивале «РобоФест». Для нашей школы задача непростая, но, как жизнь показывает, осуществимая.
На фото ниже робот, который был создан специально для соревнований


Сейчас почему-то вспомнился тот момент, когда мне предложили вести информатику в этой школе. И были те, кто говорил — «Куда им информатику изучать, хорошо, если печатать научатся. Вы хотите учить работать этих детей в Excel? Не выдумывайте». С того времени прошло 18 лет. За это время дети доказали, что они могут не только Excel осилить, но и много больше. А я, как мог, старался помочь им в этом. И вот наступил тот момент, когда мы решили заявить о себе, собрали команду и начали готовится. Для чего мы съездили на разведку, в качестве зрителей, на Робофест в прошлом году. Смотрели-примечали: какие роботы, какие трассы, какие могут быть задания и т. п. Сразу скажу, что я своих учеников нацеливал на роботов, построенных на базе arduino. Данная поездка, как и ожидалось, дала нужный толчок, и мы уже тогда примерно спланировали, какого робота будем строить. 

Вдохновил нас Robot Zero, на которого мы буквально наткнулись в поисках комплектующих, а именно на сайте компании Pololu Robotics and Electronics
На фото ниже можно увидеть сразу несколько версий этого робота.



Этот робот был собран на плате Baby Orangutan (плата очень интересная, как раз подходит для таких роботов, так как на плате уже есть двухканальный драйвер двигателей TB6612FNG). Но она не программируется в Arduino IDE (одно из требований соревнований). Кто-то скажет — » Вот, незадача..» Но мы подумали и решили: хорошо, мы сделаем похожего, но своего робота. В Амперке приобрели Iskra Mini и начали плясать от нее. Выбрали эту плату не просто так. Первое — это маленький размер (идея была собрать максимально облегченную модель), второе — это наличие восьми аналоговых портов, которые нам были нужны для датчика линии Pololu QTR-8A (его я купил очень давно и наконец для него нашелся подходящий проект). 

Также были куплены:

Adjustable Boost Regulator 2.5-9.5V — 1шт.
Regulator U1V11F5 POLOLU 1
шт.
5:1 Micro Metal Gearmotor — 2
шт.
LP383450,
Аккумулятор литий полимерный (Li-Pol) 720мАч 3.7В в — 2 шт.
TB6612FNG Dual Motor Driver Carrier POLOLU -1
шт
URM37 V3.2 — 1
шт.
FR4 200х200мм 18/18 (1.5мм, 18мкм), Cтеклотекстолит 2-сторонний — 2шт.

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



Попытка была не совсем удачной, потом был другой вариант, тоже не идеальный и не без ошибок, но зато все это позволило сделать разводку печатной платы в программе Sprint-Layout 


6. Вот так выглядят сразу два слоя в этой программе. 



Далее нужно было изготовить саму плату. Выбрали технологию ЛУТ (Лазерно-утюжная технология), удалось это нам не с первого раза. Хорошо, догадались не сразу оригинал делать, а потренировались на небольшой платке… Которую мы утюжили, утюжили, а она не утюжилась… стирали с нее остатки рваного изображения и снова утюжили… Пробовали разную бумагу в том числе и из журналов (нет не из школьных, а глянцевых) И вот я нашел у себя в закромах фотобумагу lomond

Сначала мы пробовали обычную бумагу, изображение переносилось кусками. Мы конечно купили на всякий случай маркер для исправлений (дорисовать недостающие фрагменты), но хотелось бы обойтись без этого. Потом нашли идею печати на журнальных листах. Изодрав журнал CHIP, попробовали этот вариант, стало получаться лучше. Но учитывая то, что нам нужна плата двухсторонняя, этот способ не очень понравился (будет непросто совместить изображения двух слоев).

Наутюжившись вдоволь, решили попробовать другой способ — химический, который нашли здесь. Смешали, как положено, ингредиенты. Проделали все, как сказано в инструкции, и ничего не получилось. Возможно, проблема в ацетоне…
Следующая идея — это печать на фотобумаге для струйных принтеров (лучше lomond). Рекомендуют плотность 120-140 г\м2. У себя дома я нашел в закромах как раз lomond, но плотностью 230 г\м2. Почти в два раза плотнее, но решили попробовать и, наконец, получилось. И очень неплохо получилось…
А коли получилось — нужно скорее делать плату. Для этого отпечатали обе стороны на двух листах: на одной из сторон добавили контур будущей платы, а одну сторону перед печатью отзеркалили.



Затем нужно было сложить листы так, чтобы слои совместились. И тут пригодился стол для песчаной анимации, а чтобы листы не разъезжались и не сдвигались по краям, скрепили их степлером.


Потом обрисовали контур платы карандашом, 


чтобы было легче правильно расположить плату между листами. Все эти операции проделали все на том же столе…


Затем, естественно, прогладили утюгом, удалили бумагу, предварительно отмочив ее (держали под струей воды минут 10).
И вот, что получилось. В целом получилось хорошо, только контур пришлось маркером подправить.



Дальше плата была помещена в раствор хлорного железа (ванночки под рукой не оказалось… попытались найти в других кабинетах, поиски не дали положительных результатов… ждать следующего дня не хотелось, в результате оторвали крышку от аптечки… плата вошла идеально). Минут 30 ожидания… И, вуаля, снова получилось. 


Но пока мучил вопрос, как там дела со слоями, совместились или нет? Смыли тонер ацетоном (кстати, оттирался тонер плохо, видимо, ацетон уже не тот…). 


Просверлили отверстия и не поверили, что с первого раза — и так удачно. Все совпало идеально.



Можно было приступать к пайке, но для этого мне нужно было научить одного из учеников паять…

Вооружившись паяльником, приготовив припой и паяльную кислоту, мы приступили к лужению платы. Несмотря на то, что мой ученик этого не делал ни разу, проблем особых не возникло. Достаточно было показать один раз, как это нужно делать, и работа пошла. Мне оставалось только любоваться процессом и делать фотки  Хотя припаять что нибудь тоже хотелось


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


Затем перешли к пайке контактных колодок и разъемов под двигатели и аккумуляторную батарею. Также, показал ученику, как припаять пару ножек, а дальше он уже сам, я же выполнял роль третьей руки (то есть держал детали и саму плату… ну, и подсказывал, в какой последовательности припаивать радиодетали)
Однако выяснилось, что плата требует некоторых изменений, планируемый выключатель мы не нашли и решили его заменить на одиночный DIP-переключатель, пришлось сверлить еще одно отверстие для этого и недостающую дорожку потягивать проводом…
Вот так робот выглядел после пайки, оставалось установить платы на свои места, но мы решили не торопиться и это сделать на следующий день.



На следующий день мы припаяли к платам штырьковые соединители. Стали размешать их по местам и поняли, что совершили глупость, когда под Boost Regulator 2.5-9.5V и Regulator U1V11F5 5V мы припаяли контактные колодки. При установке эти платы зависли крыльями и при падении была угроза поломки. Стали выпаивать колодки и тут неудача — с обоих сторон оторвались дорожки. Пришлось наращивать проводом 
При этом решили повернуть на 90 ° DIP-переключатель (иначе его было не удобно включать/выключать). Для этого просверлили еще одно отверстие и опять дорожку потянули проводом, только уже более длинным.
Вот что в результате у нас получилось.

Теперь было нужно проверить, как оно все работает, остается залить программу, которая уже была к этому моменту готова, и погонять робота немного по линии…

Пайку в этот день мы закончили где-то около пяти часов вечера, но, я думаю, многие нас поймут, почему мы решили не останавливаться на этом, а сразу заняться проверкой работоспособности робота (иначе спать спокойно мы не смогли бы в этот день… ). 
Потому первым делом мы протестировали работу аналогового датчика (авто-калибровку) и, собственно, как осуществляется сопряжение с компьютером (у нас был довольно старый вариант платы USB- интерфейса FTDI, описанный в этом посте).

С USB- интерфейсом проблем не возникло: все определялось корректно — это стало понятно после первой же прошивки робота…
С проверкой датчика — тут тоже ничего сложного не было и времени практически не заняло, так как есть уже готовый алгоритм по работе с этим датчиком, описанный в этой статье (не обращаем внимание, что это для Arduino Mega 2560… в нашем варианте используется Iskra Mini, у которой также 8 аналоговых портов с той же нумерацией…, то есть даже в скетче ничего менять не надо).


Убедившись в том, что все работает, можно было, конечно, пойти по домам и на следующий день, с новыми силами и свежей головой, проверить уже код скетча, благодаря которому он находит линию и едет по ней. Но разве можно в такой момент останавливаться… 

Проверен только датчик, но остались еще вопросы.
А как работают остальные узлы? 
Поедет ли вообще, вдруг где-то что-то плохо пропаяли?
С хитрой улыбкой я спросил своего ученика: -«Ну что, по домам?» 
А в ответ услышал, то что на самом деле ожидал: — «Андрей Дмитриевич, а может попробуем по линии запустить?» 
Ну разве можно отказать в такой ситуации…  
Естественно я сказал: -«Ну что ж, пробуй».

Сам скетч был уже готов, мы его параллельно писали и опробовали на прототипе, собранным на макетке. Правда схема была построена на Arduino Uno. Потому нужно было чуть чуть подправить код. Чем и занялись: ученик мой кодил, я старался не влезать в процесс с поправками, дабы не сбить творческий настрой… Через некоторое время он объявил о готовности кода, прошил робота, и мы пошли проверять его на полях, доставшихся нам после посещения Робофест 2015. Крепежа батареи еще не было, потому примотали скотчем, предварительно заизолировав плату (провода у батареи укорачивать пока тоже не стали). 

И вот, что из этого получилось…

Да, он едет совсем не так, как это нужно, и пока едет медленно, но едет… и это еще одна маленькая победа моего ученика. Ну, а то, что перепутаны номера портов в скетче (к которым подключены моторы) — это все будет исправлено… Вот как он уже ездил на следующий день…
Если посмотреть на робота на этой стадии, то он еще непохож на того робота, которого мы выставили на соревнования. Еще предстояло немало работы и еще немало граблей было на пути нашем…

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

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

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


И само собой настало время садиться и продолжать кодить. Пора научить нашего робота мерить расстояния до всяческих вражеских преград.  Вот здесь нас ждал неприятный сюрприз — датчик ни как не хотел корректно работать. В прототипе все работало, а поставили на нашего робота-болида и ни в какую работать не хочет. Буквально перерыли весь интернет, на каких только порталах, форумах и блогах не побывали (благо с переводчиками информацию можно получить с любого ресурса) до самого дна достали и все безрезультатно. И самое главное, что информация из официального источника ни как не помогала, ни один пример не срабатывал… уже хотели поменять датчик причем кардинально на датчик от другого производителя. Ибо начитались, что мы не первые у кого проблемы… В общем, неделю убили точно на поиски решения.
Временами попадались идеи перекинуть все на другой порт, но нам как то это казалось не логичным, потому как на прототипе то работало. И уже отчаявшись, перед тем как закинуть этот датчик куда подальше на полку, все-таки решили попробовать. И что вы думаете? Все заработало, но веселья нам это не прибавило. Плата уже готова и дорожки ведут к другим портам а именно сопрягались они через ТХ и RX B и вот тут началось самое настоящее допиливание… Дорожки нужно было перерезать и впаять двухконтактный разъем, но как вы понимаете с этим мы справились…  Провод не пришлось тянуть через все шасси, обошлись коротким проводком все обошлось, но неприятный осадок остался. (лишние контакты — это все-таки не есть хорошо…)


Теперь робот соответствовал всем требованиям заявленным в регламенте, оставалось поработать со скорость прохождения трассы… Но мы рано радовались — это как оказалось было самым легким нашим испытанием.
н
Следующий этап нашей работы я бы назвал Тюнингом робота. 
Все началось с желания поменять колеса. Зачем? Когда мы прибавили роботу скорости, он стал уходить в занос на поворотах, потому решили улучшить сцепление колес с трассой. После разбора одного из списанных ксероксов, остались ролики подачи бумаги (пара штук).

У него хорошая цепкая резина, потому решили ролик располовинить (как раз две «покрышки»… ), снять с получившихся половинок резину и построить 3D модель колесного диска Затем распечатать диски на 3D принтере. С этим проблем не возникло. И вот что у нас получилось…

Правда, пришлось переставить моторы. До этого они крепились сверху, после установки новых колес снизу. Результат получился хороший — проблема с заносами в большей степени решилась…

Желтый цвет колесных дисков, заставил нас изменить цвет нашего робота, и он был покрашен…

А потом решили его слегка запачкать, будто бы он уже побывал в различных передрягах… и Робофест его не первая гонка. 
Из-за переноса моторов, он стал «клевать носом». Нам это не очень понравилось…

…. напечатали прокладку на 3D принтере для переднего колеса, корпус выровнялся, но линейка датчиков, считывающих линию, получилась высоковато. Решили эту проблему наращиванием разъема. Вот что из этого получилось…

Затем на сам датчик сделали короб для защиты от постороннего света…

На этом этапе все было хорошо, пошли последние прогоны и окончательные настройки. До соревнований оставалось 3 дня… Как вдруг случилось то, чего мы, собственно, совсем не ждали: сгорела плата повышающего преобразователя напряжения. Сначала наш робот стал нестабильно работать после калибровки (то ехал , то не ехал), а потом совсем перестал показывать признаки жизни.
Из-за лимита времени единственное, что смогли купить на замену — это плату от Амперки, которая довольно сильно отличалась по размеру…

На всякий случай заменили оба преобразователя, заменили драйвер двигателя…

… Но тут еще одна проблема… Робот ездить начал, но не всегда мог двинуться со старта. Моторы не тянули постепенно возросший вес тележки. Сначала пробовали утяжелить заднюю часть робота-тележки, это дало нужный результат. Но мы отказались от этой идеи и решили поменять моторы на менее скоростные, но более мощные. Благо, у нас была еще пара моторов от тележки из образовательного набора от Амперки.

До соревнований оставался день, а у робота время от времени проявлялся «синдром усталости». Потому решили выставить средние показатели, на которых он был более менее стабилен и на этом закончить основные приготовления к Робофесту, в надежде попасть хотя бы в десятку…

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

Из названия статьи понятно, что мы, конечно же, не победили на Робофесте, но для моих учеников это самая настоящая победа (тем боле, мы не на последнем месте… по баллам мы где то на 16 строчке).

…»И конечно, всё это нужно было совсем даже не для Робофеста. Робот тут выступал только как мотив, и то можно даже поспорить, что важнее: выступить на соревнованиях или же найти подходящую крышку от аптечки.
Это как раз та робототехника, которая не соревновательная, а исследовательская, развивающая, вдохновляющая, сподвигающая»…

Наталия Яникова

…хотя этот мотив был важной движущей силой. Ибо была вера в то, что создается робот, который уж точно обгонит все эти перегруженные бутербродные тележки… Что он просчитан и конструктивно для гонок, а не только программный код рулит… И это реально двигало, и потому этот робот построен… И самое главное, что мои ученики готовы и хотят строить нового робота для новых соревнований. Похожего, но абсолютно другого… Уже делаем небольшие проекты, которые помогут прийти заветной цели.
Но боюсь, все эти разговоры про мотивацию и движущую силу не имеют более смысла. По новым регламентам нашим детям так получается, что дорога на Робофест закрыта из-за возрастных ограничений… По определенным причинам наши ученики (учащиеся в нашем подразделении) не в любых соревнованиях, заявленных на Робофест, могут участвовать. Hello, Robot! ARDUINO в категории Шорт-трек подходило более всего (так как не требовал обязательных отборочных соревнований и ограничение было до 17 лет включительно) , но теперь Шорт-трек — это только младшая группа – возраст участников 9-11 лет. Так что нам дверку открыли, дали посмотреть и тут же захлопнули… 

Увы, но к сожалению на такой печальной ноте я вынужден завершить в этот раз свой пост.