Здравствуйте!
Меня зовут Иван, Я представляю команду из Севастопольского государственного университета которая решила заняться созданием роботов.
На время написании статьи команда состоит из следующих человек:
Донцов Дмитрий — руководитель, организатор
Иваненко Александр — инженер, конструкция
Липко Иван — инженер, программирование
Кабанов Алексей — гуру, организатор
Несмотря на то, что специальность позволяла нам начать работать в этой сфере раньше, начали мы только недавно. И у нас уже есть успех.
В данной серии статей я расскажу вам о том, как мы создавали своего первого робота. Здесь я напишу о том, почему этим решили заниматься, о текущих результатах, а дальше уже о технических подробностях.
Часть 1 — О проекте
Часть 2 — Описание программной части робота
Ни у кого из нас не было практики создания подобного, только опыт программирования, математики и теории автоматического управления (ТАУ). В нашей команде сейчас 5 человек. Проще сказать о тех ролях, которые мы выполняем нежели о распределении: программирование, математика, координация, формирование целей и плана действий, публичные выступления, участие в конкурсах, создание статей, плакатов, пайка и разводка, проектирование корпуса, создание чертежей. На пятерых может и не много, но в отсутствии опыта это было иногда очень мучительно.
Отправной точкой послужил конкурс стартап-идей в нашем университете. Получив грант на небольшую сумму мы смогли начать достаточно большую работу. Одними из результатов являются то, что мы смогли сделать первый прототип, выступить на конкурсе ИТ-Планета 2015 и занять 3-е место в финале, выступить на IX Всероссийской юношеской научно-практической конференции «Будущее сильной России — в высоких технологиях» в Санкт-Петербурге. Мы надеемся что развивая проект сможем передать наш опыт другим студентам кафедры, заинтересовать школьников в нашей специальности — «Управление в технических системах».
CRiS — это аббревиатура Create robots in Sevastopol, “Создание роботов в Севастополе”.
CRiS — это мобильный робот с возможностью всенаправленного движения, что достигается за счёт расставленных под углом 120 градусов всенаправленными (omni) колёсами. Всенаправленное колесо — такое колесо, которое отличается от обычного тем, что вместо резиновой покрышки имеет много роликов. При смещении робота перпендикулярно своей оси ролики прокручиваются. Если же крутить колёсами в определённых направлениях то получается движение боком или под углом (strafe).
Основные тактико-технические характеристики робота.
Ширина: 168мм
Длина: 139мм
Высота:92мм
Масса: 0,5кг
Тип движения: всенаправленный, 3 omni-колёса
Скорость: 0.7 м/с
Питание: 9В (Крона)
Материалы: акрил, алюминий
Моторы: 3 шт, 298 RPM, 6,5 кгсм
Управляющая плата: Arduino Uno R3 на базе ATMega 328р
Драйвер двигателей: TB6612FNG
Датчики линии: 2 шт QTR-1A.
Концепты по ещё не созданному тогда роботу.
Мы решили отойти от классической схемы с двумя ведущими колёсами и «колёсами тележки», т.к. рассчитываем на решение других задач управления. Для решения текущих задач (участие в конкурсе ИТ-планета) мы используем только два колеса, применив известную схему управления (о ней чуть позже).
Проектирование. Задачи, выбор железа.
Вот мы собрались, и обдумываем, как же нам делать робота. Изначально перед нами стояла задача — собрать робота, который сможет проехать по трассе РобоГонок (Roborace). Кто не знает — это формула 1 для роботов. Используется круговая трасса с черными линиями, по которым двигаются роботы. Кто первый пришёл на финиш после заданного количества кругов — тот победил. В процессе езды роботы могут переходить с одной линии на другую и, тем самым, изменять свои траектории в сторону уменьшения или увеличения пройденного пути.
Почему-то в голове у нас был именно образ трёхколёсного робота. Почему не знаю. Мы поискали, решал ли кто-нибудь до нас эту задачу в такой конфигурации — не нашлось. По линии все ездят с двумя колёсами. Мы думали ставить какой-нибудь сенсор, который будет крутиться как танковая пушка перед роботом для того, чтобы следить за линией, а моторами выстраивать траекторию движения. Но в итоге поставили датчики с одной стороны и обозначили «перед» робота. Платформа передвигается за счет использования двух моторов, а третье не задействовано.
Хочу сказать, что перед сборкой мы провели относительно большой поиск статей, уроков, информации по сборке, т.к. опыта в этом не хватало, а денег было немного. Но нам повезло, т.к. всё железо которое мы использовали не являлось редкостью у других роботостроителей — информации по сборке и программированию было достаточно. Оставалось выбрать только ту информацию которая действительно подходила нам.
Поиск компонентов. Магазины.
Намного хуже дело обстояло с поиском нужного железа. Мы искали моторы с обратным валом для крепления энкодеров, но либо не было с такой мощностью, либо были без вала. Время нас поджимало — делать было нечего и мы взяли без обратных валов. С этого момента мы не могли присоединить энкодеры, хотя на плате место под соединения было уже готово.
Плату Arduino UNO R3 мы взяли в известном интернет-магазине «Электронщик». Там же брали и датчики и моторы. А вот нужные колёса мы заказали аж из под Урала. В общем можно сказать — с поиском комплектующих мы работали напряжённо.
Сборка
Корпус
Вид корпуса взят из реальной жизни — это здание одного из наших институтов. Если посмотреть сверху, то это трёхлестник. Корпус выполнен из прозрачного акрила. Снизу вверх в виде «пирога», каждый уровень которого предназначен для вставки разных компонентов.
Первый уровень — плата для подключения моторов, датчиков и другой периферии. Мы создали возможность выводить с управляющей платы (УП) выводы на нашу плату, если они будут недоступны. Здесь же размещаются моторы с колёсами, стойки крепления верхних уровней.
Второй уровень — уровень УП. Изначально мы рассчитывали на то, что может быть подключена любая плата, будь то самоделка на PIC или Arduino, может быть что-то русское. Отсюда по шлейфу (или по проводам, в нашем случае) идёт соединение с платой первого уровня.
В целом конструкция получилась относительно прочная. Такой она стала потому что до этого мы раза два или три сломали предыдущие варианты пластин крепления верхнего уровня.
Железо
Здесь я напишу о сложностях которые у нас возникли, как мы их решили. А как этими устройствами пользоваться — в блоке «Программирование».
Нам встречались схемы подключения TB6612FNG когда выходной каскад схемы снабжался диодами для предотвращения влияния обратного тока. У нас схема работает без диодов и радиатора.
Изначально моторы мы не снабдили параллельными конденсаторами. Это давало очень сильные помехи, в несколько порядков большие чем уровень сигнала. Если моторы выключены показания датчиков давали 7-15 на белом фоне и 70-80 на чёрном, а при включении значения датчиков показывали 300-400, а иногда 700-800 не зависимо от цвета фона.
Для слежения за положением робота относительно линии используется пара аналоговых датчиков QTR-1A, расположенных рядом друг с другом. Здесь наш инженер исследовал конструкцию ScratchDuino и доработал крепления датчиков. Доработка заключалась в возможности ставить датчик под определёнными углами к роботу, что отсутствует на ScratchDuino.
Для расчета мощности моторов использовался сайт http://www.robotshop.com/blog/en/drive-motor-sizing-tool-9698 . На практике оказалось примерно также как и в расчётах. Однако в нашем случае необходимо было учитывать и то, что моторы находились под углом к направлению движения «вперёд».
Плата периферии. Мы решили поставить большую шину для соединения с УП. От неё уже делали разводку на датчики линии (по углам) и моторы. Осталось много незадействованных пинов. Как мы и предполагали, будем их использовать позже для других датчиков.
И напоследок видео из ВК. Здесь мы полностью проговариваем о том, что есть наша разработка, описание конструкции, деталей и много другого.
http://vk.com/video-86618881_170963540
К сожалению никак не могу добавить ни в страницу, ни в youtube.