Собираем роботов-самоходов на Arduino — «Хакер»

Собираем роботов-самоходов на Arduino — «Хакер» Квадрокоптеры

Описание конкурса

Мы принимаем участие в конкурсе ”

” (

Краткое описание робота

Собираем роботов-самоходов на Arduino — «Хакер»

Просмотрев огромное количество видео соревнований роботов, мы поняли для себя основные характеристики робота, которые дают преимущества на поле брани:

  • Низкий центр масс
  • Низкий клиренс
  • Возможность повернуться в случае переворота
  • Возможность опрокинуть соперника
  • Геометрия корпуса как пассивная защита.

Так родилась идея создать робота в форме пирамиды с главным орудием в виде спаренного молота для возможности наносить удары в две стороны, двумя малыми молотами по бокам, и вилочным опрокидывателем.

Так же из фич: Отделяемая часть робота, и пилы.

Алгоритм движения

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

Для гексапода самой простой походкой будет такая: ноги делятся на две группы по три ноги, и одна из групп полностью на земле, другая — в воздухе, переставляется вперед. Это далеко не единственная возможная походка. Можно в воздухе держать только две лапы или даже одну, а остальные четыре или пять — на земле. Для октапода походок тоже множество. Мы возьмем самую простую, также с двумя группами по четыре ноги.

Итак, что нам нужно делать для работы с 16 сервоприводами и выбранной походкой? Правильный ответ — читать про инверсную кинематику (ИК). Объем статьи не позволяет развернуть тему широко, но материалов в интернете предостаточно. Вкратце, ИК решает задачу нахождения необходимых управляющих сигналов для того, чтобы система в пространстве заняла нужное положение.

Для ноги это значит, что по координатам точки, куда должна попасть стопа, следует определить углы сервоприводов, которые для этого нужно выставить. А управляя координатами стоп, можно управлять положением тела. У нас 2DOF-ноги, оси параллельны, поэтому стопа перемещается всегда в одной плоскости. Задача ИК в данном случае сводится к 2D-пространству, что сильно ее упрощает.

Пускай для каждой ноги локальным началом координат O будет вал верхнего серва, то есть бедра. И у нас есть координаты точки A, куда нужно попасть стопе. Тогда легко увидеть, что нужно решить задачу нахождения точек пересечения двух окружностей (см. схему ног одной стороны, там на самой правой ноге это проиллюстрировано).

float A = -2 * x;
float B = -2 * y;
float C = sqr(x)   sqr(y)   
sqr(hipLength) - sqr(shinLength);
float X0 = -A * C / (sqr(A)   sqr(B));
float Y0 = -B * C / (sqr(A)   sqr(B));
float D = sqrt( sqr(hipLength) - 
(sqr(C) / (sqr(A)   sqr(B))) );
float mult = sqrt( sqr(D) / (sqr(A)   
sqr(B)) );
float ax, ay, bx, by;
ax = X0   B * mult;
bx = X0 - B * mult;
ay = Y0 - A * mult;
by = Y0   A * mult;
// или bx для другой точки пересечения
float jointLocalX = ax;
// или by для другой точки пересечения
float jointLocalY = ay;
float hipPrimaryAngle  = 
polarAngle(jointLocalX, jointLocalY);
float hipAngle = hipPrimaryAngle - 
hipStartAngle;
float shinPrimaryAngle = polarAngle
(x - jointLocalX, y - jointLocalY);
float shinAngle = (shinPrimaryAngle - 
hipAngle) - shinStartAngle;

где x и y — координаты точки, куда нужно дотянуться стопой; hipStartAngle — угол, на который повернуто «бедро» изначально (при среднем положении серва), аналогично — shinStartAngle. Кстати, в этих расчетах углы, очевидно, в радианах, а в объекты Servo их передавать нужно уже в градусах.

Полный работоспособный код прошивки, включающий этот кусочек, выложен на GitHub, см. ссылку в конце статьи. Это кусок ИК, но кроме него нужно еще немного довольно простого кода, чтобы использовать эту ИК на всех ногах (см. функции legsReachTo(), legWrite()).

Также необходим будет код, который собственно реализует походку — движение одной группы ног «назад» (чтобы робот двигался вперед), в то время как другая группа ног приподнимается и переставляется вперед для следующего шага, см. функцию stepForward().

Теперь получение команд и их интерпретация. Добавим в программу состояние:

enum State
{
    STOP,
    FORWARD,
    BACKWARD,
    FORWARD_RIGHT,
    FORWARD_LEFT
};

И в главном цикле исполнения loop() будем смотреть на текущее состояние (переменная state) и дергать stepForward(), если движемся вперед (с поворотом или без), и опять же stepForward(), но с отрицательным аргументом xamp, если надо двигаться назад. Повороты при этом будут обрабатываться в legWrite(), и для поворота направо ноги с правой стороны будут стоять на месте (пока левые гребут).

switch (state)
{
    case FORWARD:
    case FORWARD_RIGHT:
    case FORWARD_LEFT:
        stepForward(h, dh, xamp, 
        xshift); break;
    case BACKWARD:
        stepForward(h, dh, - xamp, 
        xshift); break;
}

В остальных случаях — стоим. Далее здесь же, в loop(), будем вычитывать из последовательного порта команды и изменять state по ним:

char command;
while (Serial1.available())
command = Serial1.read();
switch (command)
{
    case 'w':
        state = FORWARD; break;
    case 's':
        state = BACKWARD; break;
    case 'd':
        state = FORWARD_RIGHT; break;
    case 'a':
        state = FORWARD_LEFT; break;
    default:
        state = STOP;
}

На этом основные моменты прошивки закончились, остальное — всякая мелочевка. Хотя есть еще один, пожалуй, важный момент — возможность точной подстройки сервов. Даже при самой аккуратной сборке, если всем сервам подать команду повернуться на 90°, все равно некоторые из них получатся чуть со сбитым углом.

Арена

Собираем роботов-самоходов на Arduino — «Хакер»

Бои будут проходить на специальной пуленепробиваемой сцене 10х10 метров со скошенными углами, т.е. фактически это восьмиугольник.

Другие роботы
Собираем роботов-самоходов на Arduino — «Хакер»

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

Батарея

Еще один важный вопрос — питание. Если у тебя продвинутая плата, которая позволяет снабжать всю систему по одной линии питания (и двигатели сервов не дадут помех в работу контроллера), то можно обойтись одним источником. Выбор огромен, лучше всего, конечно, Li-Ion/Li-Po брикеты для радиомоделек.

Но им нужны и соответствующие зарядные устройства. Если у тебя контроллер попроще (Uno/Due/Nano), то можно питать его отдельно, например 9-вольтовой «Кроной», а сервоприводы подключить к основной мощной батарее. Так сервоприводам точно хватит питания.

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

Видео

P.S.: Готовлю вторую часть, так же готовимся к конкурсу автономных роботов-газонокосилок.

P.P.S. (для тех, кто считает, что времени мало):

P.P.P.S.: Наша группа ВК

P.P.P.P.S.: Продолжение статьи

Все материалы сюжета:

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

Давай с чего-нибудь начнем? Главный вопрос — выбор контроллера. Существует множество ревизий Arduino, а также сторонних клонов, построенных на основе этих версий. Вот, пожалуй, два самых интересных для нас класса:

  • Arduino Uno — лучший выбор новичка, самая простая, бюджетная и распространенная плата. В основе — чип ATmega328 с тактовой частотой в 16 МГц, 32 Кб флеш-памяти, 2 Кб ОЗУ и 1 Кб EEPROM. В Uno 14 цифровых входов/выходов, которые могут использоваться для управления сенсорами и сервоприводами и другими устройствами;
Arduino Uno
Arduino Uno
  • Arduino Mega / Mega 2560 — плата, которая подойдет в случае, когда ты заранее знаешь, что проект будет сложным. Главное отличие — большее количество входов/выходов (48 в Mega, 54 в Mega 2560). Также тут намного больше памяти: 8 Кб ОЗУ, 4 Кб EEPROM, а флеш-памяти 128 и 256 Кб (в Mega и Mega 2560 соответственно). Между собой платы также отличаются чипом, скоростью USB и некоторыми другими характеристиками.
Arduino Mega 2560
Arduino Mega 2560

Разумеется, еще есть Arduino Pro, Arduino LilyPad и многие другие. Но сейчас давай остановимся на первых двух моделях. В нашем случае все довольно просто: Mega нужна для робота с большим количеством ног.

Двигатели

Собираем роботов-самоходов на Arduino — «Хакер»

У нас была очень большая надежда на шаговые двигатели Nema 43. По заявленным характеристикам они нам подходили, мы варили под них раму. При подключении оказалось, что справится с какой-либо нагрузкой они не смогут. В срочном порядке пришлось искать другое решение. Мы нашли двигатели 36В 500Вт и уже переделали раму под них.

Другая сторона bluetooth

Самый удобный способ подключения — это стандартные утилиты Linux. Для работы нам понадобятся утилиты sdptool, rfcomm (входят в состав пакета bluez в репозиториях Ubuntu), а также minicom (пакет так и называется). Инструкции по работе с этими утилитами можно найти в Сети.

Как создать боевого робота. краткое руководство

Привет, Пикабу! На связи Лига Боевых Роботов. Сегодня у меня для вас краткое руководство по созданию боевых ботов. Этот материал написан на основе статьи от наших зарубежных коллег, написанной на английском языке. С оригиналом можно ознакомиться по этой ссылке.

Это не точный перевод. Мы убрали откровенную «воду» и добавили полезную информацию по теме. В данной статье основное внимание уделяется именно основам создания роботов, а не их устройству.

Выбор типа робота

О существующих типах боевых роботов и о весовых категориях можно прочесть в нашей статье “Боевые роботы. Типы и весовые категории”. Там содержится вся информация, необходимая для выбора типа вашего первого робота. Настоятельно рекомендуем ознакомиться с ней перед прочтением этой статьи. Так же присоединяйтесь в нашему сообществу в ВК. Мы добавили несколько альбомов с фотографиями роботов в разных весовых категориях в качестве примеров.

Процесс проектирования

Теперь, когда вы выбрали тип робота, вы готовы начать проектирование и сборку!

Залог создания хорошего робота – это серьёзный подход и проектирование. Многие хотели бы сразу взяться за инструмент и начать что -то строить. Но если попытаться обойтись без создания проекта робота в программе САПР, то итоговый результат вряд ли будет достойным. Такой робот наверняка получиться неэффективным, особенно, если это ваш первый опыт в таком деле. Программа САПР позволяет создать 3D модели всех деталей и создать т.н. сборку – полностью собранный проект робота в виртуальной среде. Это позволит не только получить 3D модели всех деталей со всеми размерами, которые будут идеально подходить друг к другу, но и произвести анализ напряжений, например, и вычислить объём и вес каждой детали, что очень важно, т.к. каждый робот должен вписываться в определённую весовую категорию. Потому создание робота нужно начинать именно с проектирования, хотя это может быть и не так увлекательно, как работа с материалами и сборка. Всё время, которое будет потрачено на проектирование, окупится с лихвой, в этом можете не сомневаться.

Шаг 1: Мозговой штурм

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

· Найти и изучить все известные примеры таких роботов.

· Рассмотрите роботов с различными подвидами оружия, с разной бронёй и с различными системами привода.

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

· Обратите внимание на то, какие решения работают, а какие – нет.

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

Вещи, на которых нужно сосредоточиться во время мозгового штурма:

1. Тип оружия

2. Форма оружия

3. Система привода

4. Общая форма корпуса

5. Броня

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

Шаг 2: Эскиз

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

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

После того, как вы создали эскиз вашего бота, пора переходить к следующему этапу.

Шаг 3: Чертёж

Пора создать более подробные эскизы, или даже чертежи. Чтобы не создавать бота, в которого вы потом не сможете запихнуть желаемую начинку, на этом этапе желательно уже иметь на руках все основные комплектующие, такие как моторы, регуляторы и аккумуляторы, или хотя бы знать их размеры и вес. Тут всё взаимосвязано. К сожалению, мы ограничены стандартными моторами, редукторами и аккумуляторами. Да, их выпускается множество видов, самых разных размеров и форм, но очень часто, для определённой весовой категории, используется всего несколько типов моторов т.к. они подходят лучше всего. А производители аккумуляторов, например, не станут подстраиваться под нас, и делать на заказ несколько единиц аккумуляторной батареи нужного нам размера и веса. Это нам нужно отталкиваться от размеров и веса стандартных комплектующих.

На этом же этапе нужно определиться с материалами, из которых мы будем собирать робота. Как я уже говорил, каждый робот должен вписываться в выбранную весовую категорию, это основное требование. При создании роботов в различных весовых категориях используются множество различных материалов. В лёгких весовых категория, таких как «Жук» (1,5 кг.) и «Хобби» (5,4 кг.), часто используются алюминий, карбон, нейлон и пластиковые детали, напечатанные на 3D принтере. А в более тяжёлых категориях в основном используются износостойкие стали и титан. Подробнее о материалах мы будем рассказывать в наших статьях, посвящённых определённым весовым категориям.

Здесь я могу предложить использовать таблицу, которую я составил, основываясь на книге по созданию боевых роботов. Эта книга написана командой RioBotz в далёком 2009 году, создателями робота Минотавр, которого вы могли видеть на шоу «BattleBots». Книга доступна только на английском языке, но зато она распространяется бесплатно и её может скачать любой желающий. В этой книге просто уйма полезной информации. К сожалению, у нас пока нет ресурсов, чтобы перевести её на русский. Если вы владеете английским, или сможете осилить машинный перевод (который, к слову, вполне читабелен) то обязательно прочтите эту книгу. Книгу в оригинале можно скачать в нашей группе в разделе документы, или скачать с официального сайта.

Так вот, по поводу таблицы. Здесь представлены все основные весовые категории, ограничения по весу в каждой из них, а так же распределение веса по всем основным узлам. В книге это называется правилом «30,30,25,15». Подобное распределение веса между узлами позволяет собрать достаточно эффективного и сбалансированного бота. Обратите внимание, что в США и Англии максимальный вес для некоторых категорий отличается.

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

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

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

Шаг 4: Выбор моторов

При выборе мотора нужно учитывать 3 момента:

Характеристики мотора (ТТХ двигателя, которые заложены производителем, и которые нельзя изменить).

Дизайн вашего робота (форма и размеры вашего бота, которые вы можете изменить)

Желаемые характеристики (ТТХ собранного робота, такие как мощность оружия, скорость и маневренность).

Свойства мотора, от которых нужно отталкиваться:

KV (оборот вольт) – Это значение нужно умножить на напряжение аккумулятора, чтобы узнать максимальные обороты в минуту.

Мощность (W) – Это значение нужно знать, чтобы вычислить время раскрутки оружия до максимальных оборотов.

Максимальный ток (A) – От потребляемого тока зависит выбор регулятора. Чем больше потребляет двигатель, тем более мощный и тяжёлый регулятор оборотов потребуется для него.

Максимальное напряжение (V) – Максимальное напряжение, которое двигатель может выдержать, от него зависит выбор регуляторов и аккумулятора.

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

Вес. Здесь всё аналогично предыдущему пункту. Чем тяжелее моторы, тем меньше веса вы сможете выделить на остальные части робота.

Обратите внимание, что некоторые продавцы указывают вес упаковки с мотором, а не самого мотора.

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

Характеристики вашего бота, которые вы можете изменять:

Передаточное число – это соотношение межу диаметром шкива (шестерни, звёздочки и т.д.) установленного на двигатель, и диаметром шкива, установленного на оружие, к примеру.

Для привода оружия и колёс, как правило, устанавливаются понижающие редукторы. Чем больше разница в диаметрах, тем выше коэффициент редукции. От коэффициента редукции зависит максимальная скорость вращения оружия, и максимальная скорость, с которой робот сможет передвигаться.

Момент инерции (J): Эта величина нужна для расчёта времени, которое понадобится для раскручивания оружия до заданных оборотов, а так же для вычисления силы удара этого оружия.

Итоговые характеристики, которые вам нужно знать:

Скорость вращения оружия (обмин.).

Этот параметр является одним из основных для создания разрушительного оружия. Для вращающегося оружия сравнительно небольшого диаметра, например такого, как барабан, желательно использовать высокие обороты – от 8000 обмин. и выше. Для более крупного и тяжёлого оружия, например такого, как вращающееся лезвие горизонтального Спиннера, обороты должны лежать в диапазоне от 2000 до 5000 обмин. Тут всё зависит от массы и размеров оружия – чем больше скорость вращения тяжёлого оружия с большим радиусом, тем большую отдачу получит ваш робот при ударе. Это может повлечь за собой серьёзные структурные повреждения вашего робота. Разорвать вражеского бота пополам одним ударом – это здорово. Но какой в этом смысл, если от такого удара и ваш собственный робот разлетится на части.

Время разгона.

Это значение показывает, насколько быстро оружие раскручивается с нуля до максимальных оборотов. Первый удар в бою часто имеет решающее значение. Если вражеский бот столкнётся с вашим оружием до того, как оно наберёт максимальные обороты, то вы не нанесёте максимально возможный урон, а оружие будет снова раскручиваться с нуля, что даёт вражескому роботу время для манёвра. Потому очень важно, чтобы оружие раскручивалось до максимальных оборотов как можно быстрее. Для роботов в лёгких весовых категория, например, выход на максимальные обороты за 1 секунду считается хорошим результатом. Для ботов в более тяжёлых весовых категориях это могут быть 2 секунды. 3 секунды – это уже средний результат.

Кинетическая энергия (Дж)

Это значение представляет собой фактическую энергию, которую ваше вращающееся оружие будет производить и, следовательно, передавать другому роботу при ударе.

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

Так же для примерных расчётов силы удара оружия можно использовать вот этот простой калькулятор.

Шаг 5: Создание 3D моделей в программе САПР

Этот шаг нужно выполнять одновременно с подбором моторов и других комплектующих.

Помните, что большинство деталей для роботов, особенно тяжёлых, часто изготавливаются на заказ. Если вы создали деталь, которую можно изготовить из большого бруска алюминия, например, но большая часть материала ( 50% и более) при этом будет превращена ЧПУ фрезером в стружку, то такие детали будут обходиться довольно дорого. Иногда лучше пересмотреть подход и попробовать оптимизировать процесс изготовления или упростить саму деталь, чтобы для её изготовления требовалось как можно меньше материала.

Вот несколько советов по созданию 3D моделей:

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

Используйте готовые 3D модели стандартных частей, таких как моторы, регуляторы и прочее, для своих сборок. Модели типовых деталей, которые используются чаще всего, можно найти в сети и таким образом сэкономить время.

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

Шаг 6: Сборка проекта в программе САПР

Как только 3D модели всех деталей созданы, пора переходить к их сборке в единое целое. Важно создать полную сборку со всеми деталями, чтобы убедиться, что всё собирается и работает так, как и задумано. Далее небольшой список советов:

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

· Учитывайте вес деталей, которые могут отсутствовать в сборке. Это могут быть провода, разъёмы, винты и прочие мелочи.

· Создайте сборки отдельных узлов робота, чтобы вы могли работать над несколькими из них параллельно.

· Не назначайте деталям случайные цвета и текстуры. Это может усложнить восприятие цельного проекта. Например, если деталь должна быть изготовлена из стали, то у неё должен быть соответствующий цвет и фактура.

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

· Не вносите все поправки в одну единственную сборку, лучше сохраните несколько вариантов. Это позволит вернуться к старым версиям при необходимости.

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

· Размеры стандартных листов материалов, которые можно купить, и размеры листов, которые необходимы вам для изготовления тех или иных деталей.

· Список и количество всех типовых деталей необходимых для сборки (помимо электроники), которые можно купить, такие как винты, подшипники, ремни и прочее.

· Ссылки на источники, где можно приобрести все необходимые материалы.

· Все необходимые замечания, связанные с деталями и материалами, просто чтобы не забыть.

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

Шаг 7: Обзор проекта

Если вы создаёте робота в команде, а не в одиночку, то вероятно вам нужно будет продемонстрировать свой проект остальным товарищам, особенно, если вы новичок, а для создания бота будут использоваться материалы и оборудование, которые принадлежат всей команде. Ваши коллеги и наиболее опытные члены команды будут задавать вам вопросы по поводу вашего проекта, укажут на недостатки в конструкции и посоветуют, как их можно исправить. Критика вашего первого проекта может показаться излишне суровой, но не забывайте о том, что эти люди просто пытаются помочь вам создать лучшего бота. Проекты тяжёлых роботов обычно проходят 3-5 проверок до того, как они будут одобрены, т.к. тяжёлые роботы – самые дорогие в производстве, и любые ошибки в проектировании могут обойтись очень дорого. Так же важно делать заметки и записи во время таких проверок, просто чтобы не забыть все советы по устранению проблем.

Шаг 8: Постройка

Вот и всё, теперь вы готовы воплощать ваш проект «в металле». Во время сборки настоящего робота у вас может возникнуть необходимость внести небольшие изменения в конструкцию по тем или иным причинам. Очень сложно учесть все нюансы при моделировании на компьютере. Не забудьте внести эти изменения в вашу сборку в программе САПР, когда робот будет закончен.

Каркас, форма, сборка

Разрезаем профиль

Варим раму

Колеса со строительного рынка

Ключевой вопрос

А сколько, собственно, нам нужно ног? Определимся во множестве конфигураций шагающих роботов. По количеству ног:

  • biped — двуногий (прототип — человек);
  • quadruped — четвероногий (прототип — большинство млекопитающих животных);
  • hexapod — шестиногий (прототип — большинство насекомых);
  • octopod — восьминогий (прототип — пауки, скорпионы, крабы и другие членистоногие).

Кроме количества ног, важна и конфигурация каждой. Главной характеристикой ноги является количество степеней свободы, или dimensions of freedom (DOF). Степень свободы — это способность поворачиваться или изгибаться вокруг одной оси (реже — поступательно двигаться вдоль нее).

Очевидно, что если степень свободы одна, то на такой ноге далеко не уйдешь. Ноги с двумя степенями свободы (2DOF) уже позволяют двигаться многоногим роботам, хотя 2DOF дает возможность свободно перемещать кончик ноги только в одной плоскости. А 3DOF-нога перемещает «стопу» в 3D-пространстве (если, конечно, не все три оси параллельны). Есть и 4DOF-ноги, которые просто увеличивают гибкость и диапазон перемещения ноги. У насекомых чаще всего 4DOF-лапы.

Что это значит для нас? В дешевых любительских роботах каждую степень свободы реализует один двигатель, точнее, сервопривод, или серв. Конфигурация ног однозначно определяет, сколько таких сервов нужно. Так, 3DOF-гексапод потребует 18 сервов, а 4DOF-паук — уже 32.

Чтобы программировать сервоприводы, достаточно знать, что в них уже есть контроллер, который делает основную работу. И все, что нужно, — подавать питание и цифровой сигнал, сообщающий контроллеру, в какую позицию мы хотим повернуть вал привода. Об их конструкции легко найти информацию.

Протокол у них самый простой из всех цифровых протоколов связи: широтно-импульсная модуляция — ШИМ (PWM на английском). У всех простых сервов есть разъем с тремя контактами: земля, 5 В (вольтаж может отличаться в зависимости от размера и мощности) и сигнальный вход.

Arduino-контроллеры могут двумя различными способами генерировать такой сигнал. Первый — аппаратный PWM, который сам чип умеет выдавать на нескольких из своих цифровых I/O-пинов. Второй — программный. Программный позволяет получить одновременно больше различных PWM-сигналов, чем аппаратный.

Для него под Arduino предоставляется удобная обертка — библиотека Servo. Она позволяет использовать одновременно 12 сервоприводов на большинстве малогабаритных контроллеров (Uno, Due, Nano) и 48 сервоприводов на Arduino Mega и ему подобных. Сигнальный контакт серва подключается к цифровому выводу Arduino.

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

Servo myservo;
// Сервопривод на 9-м пине Arduino
myservo.attach(9); 
// Повернуть в положение на 90º
myservo.write(90);

Большинство сервов умеют вращать вал на 180°, и для них 90° — среднее положение. Для упрощения подключения сервов к плате Arduino существует ряд решений. Самое каноничное — это Sensors Shield. Установив его на Uno и подав на клеммы питание для сервов, можно их разъемы подключать прямо в него.

Набор

  • Контроллер Arduino Uno: 1150 р.
  • Три серводвигателя. Я использовал HXT500, 200 р. за штуку
  • Батарейный отсек для «Кроны» с выключателем: 50 р.
  • Батарейка «Крона»: 145 р.
  • ИК-приемник: 90 р.
  • Стальная проволока диаметром примерно 1,5 мм. Я, к примеру, использовал сломанный венчик для взбивания яиц

Итого: 2035 р.

Наша команда

Собираем роботов-самоходов на Arduino — «Хакер»

Каждый член команды делает все от него зависящее для достижения светлого будущего, но особо хочется выделить работу Саши и Андрея. Они вкладывают в робота все свое свободное время. То, что наш робот уничтожит всех остальных — это именно их заслуга!

  • Вячеслав Голицын
  • Александр Егоров
  • Андрей Такташов
  • Дмитрий Елисеев
  • Павел Поздняков

Орудия

Главный молот. Над дизайном главного молота-кирки думаем и спорим.

В качестве пил мы решили использовать двигатели кошения и ножи от Robomow. Во-первых ножи сделаны из прочной стали, а двигатели дают хороший момент и количество оборотов. Во-вторых Robomow согласились нас спонсировать ими.

Первый код

Для начала установим Arduino IDE (arduino.cc) — это кросс-платформенная бесплатная среда разработки. Теперь, если мы подключим наш Arduino, мы сможем попробовать написать первый код на самом простом примере: программе мигания светодиодом.

// Дадим этому пину имя LED:
const int LED = 13;
void setup() {                
  // Инициализация цифрового пина 
  // для вывода:
  pinMode(LED, OUTPUT);     
}
void loop() {
  // Подать уровень логической единицы 
  // на пин 13 (зажечь светодиод):
  digitalWrite(LED, HIGH);
  // Приостановить выполнение скетча 
  // на секунду:
  delay(1000);
  // Подать уровень логического нуля 
  // на пин 13 (потушить светодиод):
  digitalWrite(LED, LOW);
  // Снова приостановить выполнение 
  // скетча на секунду:
  delay(1000);
}

Обрати внимание на функции setup и loop. Они должны присутствовать в любом Arduino-скетче. Setup вызывается единожды при включении или после перезапуска контроллера. Если хочешь, чтобы код выполнялся только один раз, его следует размещать именно здесь.

После того как функция setup завершит свою работу, автоматически запускается замкнутый цикл, внутри которого будет вызываться функция loop. От нас требуется написать, что мы хотим там выполнять. А мы хотим подать на пин 13 уровень логической единицы (5 В), то есть зажечь светодиод, затем подождать одну секунду (1000 в миллисекундах), потом подать уровень логического нуля (0 В) и опять подождать одну секунду. Следующий вызов loop все повторит.

Теперь «заливаем» наш скетч в контроллер. Нет, нам не понадобится программатор. Контроллеры Arduino, кроме наших скетчей, содержат специальную программу — bootloader, которая, в частности, управляет загрузкой кода из компьютера. Так что для заливки скетча нам понадобится только USB-кабель и пункт меню File → Upload (Ctrl U) в Arduino IDE.

Пневмосистема


Пневмосистема в разборе:

Главной идеей было использовать для каждого двуходового цилиндра по 4 клапана, которые перекрестно соединены. Когда мы открываем клапан для наполнения цилиндра с одной стороны открываем для стравливания клапан с противоположной стороны.

Для управления клапанами решили использовать такой модуль с 8 реле, которых как раз хватает для 16 попарно-соединенных клапана, т.е. для 4 цилиндров.

Программирование робота

Для обучения робота нужно будет использовать платформу TensorFlow, которая включает в себя инструменты для тренировки нейронных сетей (можно сказать, для создания искусственного интеллекта). Звучит сложно, да и цена устройства Coral USB Accelerator и компьютера Raspberry Pi 4 может озадачить.

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

Представители Google считают, что робота можно научить выполнению самых разных задач. Самая простая из них — распознавание предметов. Если перед камерой робота поставить яблоко, он может поднять левую руку. А если поставить банан — правую. Это только самые банальные примеры, а на деле, полученные в ходе сборки робота знания, должны помочь в создании более навороченных устройств. Глядишь, кто-нибудь сможет даже разработать собственный робот-пылесос или создать охранную систему с распознаванием лиц.

Радиоуправление

Радиуправление происходит через 8-канальную радиоаппаратуру для основного оператора, 4 канальную аппаратура для оператора орудий и 2-канальную аппаратуру отделяемой части.

Обработкой ШИМ-сигнала с пульта занимается Arduino (Душа моего робота-газонокосилки). Проблема с обработкой заключалась в том, что на подсчет ШИМ-сигнала с 8 каналов уходит много времени. Выполняя это в основном цикле программы, оказывалось невозможно отправлять на драйверы двигателей адекватное количество пульсов для движения.

Решением было выведение работы с шаговиками в функцию запускаемую по таймеру и изменением параметров таймера в основном цикле. Сейчас уже оказывается все это не нужно, коллекторными двигателями мы управляем через драйвер, на который будем подавать ШИМ, который смело можно изменять в основном цикле программы.

Робожук своими руками

Набор

  • Контроллер Arduino Uno: 1150 р.
  • Три серводвигателя. Я использовал HXT500, 200 р. за штуку
  • Батарейный отсек для «Кроны» с выключателем: 50 р.
  • Батарейка «Крона»: 145 р.
  • ИК-приемник: 90 р.
  • Стальная проволока диаметром примерно 1,5 мм. Я, к примеру, использовал сломанный венчик для взбивания яиц

Итого: 2035 р.

DmitryDzz: Я хочу предложить тебе сделать небольшого дистанционно управляемого шестиногого робожука на базе контроллера Arduino Uno. Лапки будут иметь одну степень свободы, управление будет происходить с помощью обычного ТВ-пульта.

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

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

В этом же магазине есть раздел «Вики», где ты найдешь даже замечательные короткие видео­уроки, переведенные на русский язык. Обязательно посмотри их. И конечно, есть форум, где тебе наверняка постараются помочь.

Что понадобится из инструментов:

  • паяльник и все, что нужно для пайки. Паять много не придется, и особого мастерства не потребуется;
  • термоклеевой пистолет и стержни к нему;
  • пассатижи для работы с проволокой.

Если все собрали, приступим!

Робот с искусственным интеллектом своими руками

Конструктор был представлен подразделением Google Creative Lab. Робот называется ALTO, что является сокращением от «A Little Teachable Object» (маленький обучаемый объект). Проект создан для того, чтобы люди смогли собрать робота на дому и получили базовые знания о машинном обучении.

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

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

Схема для создания корпуса робота из бумаги и исходный код программы для его работы можно найти на сайте Experiments with Google (кнопка Get the code). Но это еще не все, потому что для создания робота нужна электроника, которую нужно купить:

Знаете ли вы, что роботов можно создавать даже изо льда? Посмотреть на такого робота можно по этой ссылке.

Робот-слейпнир

Набор

Итого: 4710 р.

*Компоненты покупались в разное время, и многие позиции можно оптимизировать

poconoco: Попробуем собрать нестандартную конфигурацию — восьминогого 2DOF-робота. 2DOF-ноги намного проще программировать, к тому же у меня есть в запасе куча неиспользованных сервоприводов. А главное, можно будет назвать его в честь восьминогого коня бога Одина Слейпниром (всегда мечтал!).

У нашего Слейпнира с каждой стороны будет по четыре ноги с двумя шарнирами. Каждый шарнир — сервопривод, значит, восемь сервоприводов на сторону. Для простоты все восемь шарниров одной стороны коня будут вращаться в одной плоскости. Хотя это вовсе не обязательно.

Схема ног одной стороны
Схема ног одной стороны

Сборка

Теперь давай соберем робота на доске для прототипирования и зальем скетч управления.

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

Прототип робота на макетке
Прототип робота на макетке

Теперь перейдем к самой сборке. Основной несущий элемент — это батарейный отсек. Я советую использовать отсек закрытого типа и обязательно с выключателем.

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

Контроллер проще всего приклеить к отсеку, но мне этот вариант не очень нравится, так как придется навсегда отдать Arduino Uno жуку. Поэтому можно усложнить себе жизнь и использовать разъемы Arduino для крепления батарейного отсека. На нижней части отсека приклей штырьковый разъем с шагом между штырьками 2,54 мм.

Провода, идущие от батарейного отсека, надо соединить с выводами Vin и соседним с ним GND. Не перепутай полярность! Плюс «Кроны» на Vin, минус на GND. Чтобы обеспечить надежный контакт проводов с Arduino-разъемами, можно просто облудить кончик провода потолще, я же как штекер использовал короткий отрезок скрепки. А место пайки закрыл термоусадочной трубкой.

Батарейный отсек
Батарейный отсек

Разъемы со шлейфов сервоприводов следует срезать, провода питания ( 5 В — обычно красный и GND — черный или коричневый) надо объединить и вывести к гнездам 5V и соседнему с ним GND на контроллере. Подключать будем чуть позже. Провода управляющего сигнала (обычно желтый) выводим на цифровые выводы контроллера: левый серводвигатель на пин 2, центральный на пин 4, правый на пин 7.

« » и «–» ИК-приемника можно просто вставить в разъем Arduino (5V и соседний GND). Правда, согнув пополам, удвоив их толщину. К этим же ножкам питания ИК-приемника припаиваем ранее подведенные провода питания серводвигателей. Выход сигнала ИК-приемника до аналогового входа контроллера А0 уже вряд ли дотянется, и тебе придется наращивать его проводом.

Несколько советов по изготовлению ног. Сначала подготовь левую и правую «передне-задние» ноги. Убедись в их симметричности (обрати внимание и на длины, и на углы изгибов). Начинай клеить ноги, только убедившись, что серводвигатели установлены в «нулевое» положение (90°).

Среднюю пару ног лучше устанавливай в последнюю очередь. Советую сначала сделать средние ноги длиннее, а затем после установки подрезать их до нужной длины. В «нулевом» положении все шесть ног должны стоять на поверхности. Качение средних ног с амплитудой 15° не должно мешать поворотам «передне-задних».

Www

Управление

Перейдем к первому шагу: нам надо научиться взаимодействовать с пультом ДУ и выведать коды нажатий на некоторые его кнопки. Эти коды потом пригодятся для скетча управления роботом.

На этом этапе понадобится еще ИК-приемник и хорошо бы иметь доску для прототипирования. Подавляющее большинство ИК-пультов работают на несущих частотах 36 кГц, 38 кГц или 40 кГц (Panasonic, Sony). Исключение составляют пульты Sharp (56 кГц), Bang &

Olufsen (455 кГц) и, может, кто-то еще более экзотический. Поэтому нам вполне подойдет любой ИК-приемник на 36, 38 или 40 кГц. Частота может точно не совпадать с несущей частотой сигнала. В таком случае чувствительность приемника будет снижаться, но на практике я не заметил дискомфорта, используя ИК-приемник TSOP2136 (36 кГц — последние две цифры — частота) и пульт ДУ Sony (40 кГц).

Итак, для большинства пультов подойдут ИК-приемники TSOP21xx, TSOP22xx, TSOP312xx. Две последние цифры могут быть 36, 37, 38 или 40. Перед включением ИК-приемника уточни разводку его контактов — их всего три: 5V (питание), GND (земля), Vs (выход). Соберем схему, как на иллюстрации (разводка для TSOP2136).

Схема подключения ИК-приемника
Схема подключения ИК-приемника

Как видишь, к аналоговому входу контроллера A0 мы подключили выход ИК-приемника.

Вот как выглядит код скетча:

#include "IRremote.h"
// Аналоговый вход контроллера, 
// к которому подключен ИК-приемник:
const int IR_PIN = A0;
// Создаем объект ИК-приемник:
IRrecv irrecv(IR_PIN);
void setup() {
  Serial.begin(9600);
  Serial.println("ready");
  // Начинаем прослушивание ИК-
  // сигналов:
  irrecv.enableIRIn();
}
void loop() {
  // Описываем структуру results, 
  // в которую будут помещаться
  // принятые и декодированные 
  // ИК-команды:
  decode_results results;
  // Если ИК-команда принята и успешно 
  // декодирована, то выводим
  // полученный код в последовательный 
  // порт контроллера:
  if (irrecv.decode(&results)) {
    Serial.println(results.value);
    irrecv.resume();
  }
}

Смотрите про коптеры:  3DBenchy — кораблик для калибровки 3D-принтера, подробное описание
Оцените статью
Радиокоптер.ру
Добавить комментарий