CRiS — Создавайте роботов в Севастополе! (Часть 1)


Здравствуйте!
Меня зовут Иван, Я представляю команду из Севастопольского государственного университета которая решила заняться созданием роботов.
На время написании статьи команда состоит из следующих человек:
Донцов Дмитрий — руководитель, организатор
Иваненко Александр — инженер, конструкция
Липко Иван — инженер, программирование
Кабанов Алексей — гуру, организатор

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

Часть 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.


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

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
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение