Рубрики
Схемы на Arduino

Biped Catbot: Шагающий и танцующий робот на Arduino

Добро пожаловать мир робототехники чтобы сконструировать небольшого двуногого робота, способного ходить и танцевать. Познакомьтесь с Кэтботом (Catbot), нашим харизматичным двуногим роботом, и присоединяйтесь к нам в этом инновационном эксперименте, сочетающем в себе 3D-печать, технологию Arduino и серводвигатели .

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

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

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

Catbot, звезда нашего проекта, — замечательный двуногий робот, построенный на базе Arduino Nano. Он использует пять серводвигателей, два из которых предназначены для каждой ноги, а один управляет движениями головы. Кроме того, он использует ультразвуковой датчик для обнаружения препятствий и их обхода.

Теперь давайте окунемся в увлекательный мир создания и программирования Catbot, вашего собственного двуногого робота. А если это не тот робот, который вы ищете, то у нас на сайте есть целый раздел «Робототехника», где вы можете найти множество видов роботов,  таких как робот, следующий вдоль линиипожарный роботроботизированная рукасамобалансирующийся робот и т. д.

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

Проектирование и сборка двуногого робота

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

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

Для создания этого робота мы использовали акриловые детали, вырезанные лазером. Однако, если у вас есть доступ к 3D-принтеру, вы также можете использовать его. Если вы выберете путь 3D-печати, вам необходимо будет загрузить формат файла .stl по той же ссылке выше.

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

Двуногий котбот Arduino Nano, как и многие другие роботы, оценивается по его гибкости. Это часто измеряется так называемой «степенью свободы» или DOF (degrees of freedom). Представьте себе степень свободы как количество способов, которыми робот может сгибать и перемещать свои части. Это похоже на подсчет различных движений в танце.

Этот робот поставляется в плоской упаковке, и вам не нужно много паять (плавить металл для соединения деталей), чтобы собрать его вместе и заставить работать. У него есть 4 специальных двигателя, называемых сервоприводами SG90, которые позволяют ему передвигаться четырьмя разными способами. Он может двигаться вперед, назад, вправо и влево.

Движения каждой части:

  • «Голова» может вращаться на угол до 180°, в зависимости от типа сервопривода, используемого для вращения головы.
  • «Бедра» на левой и правой сторонах могут наклонять робота вертикально вправо и влево.
  • «Нога» на левой и правой сторонах перемещает ступни вверх и вниз, позволяя роботу двигаться вперед.

Компоненты, необходимые для сборки робота

  • Плата Arduino Nano (купить на AliExpress).
  • Серводвигатели SG90 с металлической передачей (5 шт.) (купить на AliExpress).
  • Ультразвуковой датчик HC-SR04 (купить на AliExpress).
  • Лазерная резка акриловых деталей робота.
  • Литий-ионный аккумулятор 7,4 В.
  • Выключатель.
  • Соединительные провода.
  • Макетная или печатная плата.
  • Винты, гайки, проставки

Сборка двуногого робота

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

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

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

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

Схема проекта

Схема шагающего и танцующего робота на основе платы Arduino представлена на следующем рисунке.

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

Примечание: всегда выключайте питание Arduino при загрузке кода.

Подключение цепей:

Подключите плату Arduino Nano к макетной плате или печатной плате. Обязательно подключите контакты питания и заземления.

Подключите литий-ионную батарею 7,4 В к выводу Vin Arduino Nano через переключатель. Этот переключатель позволяет включать и выключать Arduino от внешнего источника питания.

Подключите ультразвуковой датчик к Arduino Nano:

  • VCC (питание) датчика — к 5 В на Arduino.
  • GND (земля) датчика — к GND на Arduino.
  • Вывод TRIG (триггер) датчика — к аналоговому выводу на Arduino Nano, например, A5.
  • Вывод ECHO (эхо) датчика — к другому аналоговому выводу на Arduino Nano, например, A3.

Подключите серводвигатели SG90 к плате Arduino Nano для управления движениями робота: каждый серводвигатель имеет три провода: питание (красный), заземление (коричневый) и сигнальный (оранжевый). Подключите провода питания к положительной клемме источника питания (батареи), заземляющие провода к отрицательной клемме, а сигнальные провода к определенным цифровым контактам на Arduino Nano.

  • Серводвигатель 1: движение головы (например, цифровой контакт 3)
  • Серводвигатель 2: левая нога (например, цифровой контакт 5)
  • Серводвигатель 3: правая нога (например, цифровой контакт 9)
  • Серводвигатель 4: левая нога (например, цифровой контакт 7)
  • Серводвигатель 5: правая нога (например, цифровой контакт 11)

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

Объяснение кода программы

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

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

Код  программы №1

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

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

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

Первым делом в коде программы подключим необходимые библиотеки. Библиотека Servo.h обеспечивает функции управления серводвигателями, а библиотека NewPing.h облегчает взаимодействие с ультразвуковым датчиком.

Затем зададим осмысленные имена для используемых контактов. ECHO_PIN и TRIGGER_PIN назначены на эхо-контакты и триггерные контакты ультразвукового датчика соответственно. Контакты LEFTLEG, RIGHTLEG, LEFTFOOT, RIGHTFOOT и HEAD используются для серводвигателей, управляющих различными частями робота. MAX_DISTANCE устанавливается как максимальное расстояние, которое может измерить ультразвуковой датчик.

Далее создадим экземпляр класса NewPing с именем sonar, который используется для связи с ультразвуковым датчиком. Он инициализируется номерами триггерных и эхо-контактов, а также максимальным расстоянием.

Экземпляры класса Servo создаются для каждого серводвигателя, управляющего различными частями робота. Этим экземплярам дадим названия Lleg, Rleg, Lfoot, Rfoot и Head.

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

Следующие переменные хранят различные настройки углов и скорости, используемые для управления движениями робота. TAngle хранит угол наклона, uAngle хранит угол поворота, sAngle хранит угол качания, а Speed ​​сохраняет задержку между движениями сервопривода.

Функция Forward предназначена для того, чтобы заставить робота идти вперед. Она принимает два аргумента: Steps (количество шагов) и Speed ​​(задержка между движениями сервопривода). Функция использует различные подфункции для создания шаблона ходьбы: SwingRight, TiltRightUp, TiltRightDown, TiltLeftUp, SwingRcenter, SwingLeft, TiltLeftDown и TiltRightUp. Эти подфункции вызываются последовательно для создания шагающего движения.

Функция TurnLeft предназначена для того чтобы заставить робота повернуть налево. Для выполнения поворотного движения он использует комбинацию подфункций: TiltLeftUp, LeftLegIn, TiltLeftDown, TiltRightUp, LeftLegIcenter, RightLegOut, TiltRightDown и TiltLeftUp.

Функция TurnRight предназначена для того, чтобы заставить робота повернуть направо. Она использует подфункции в последовательности, аналогичной функции TurnLeft, но с движениями в противоположную сторону.

Следующие функции управляют движением головы робота. HeadRight и HeadLeft поворачивают голову вправо и влево соответственно, регулируя угол сервопривода головы. HeadCenter центрирует голову, устанавливая сервопривод головы на угол по умолчанию.

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

Аналогично, следующие функции управляют подъемом и опусканием ног робота, регулируя углы сервоприводов.

Следующие функции управляют покачиванием ног робота. Функции SwingRight и SwingLeft перемещают ножки наружу, а SwingRcenter и SwingLcenter перемещают их обратно в центр.

Следующие функции управляют движением правой ноги робота. RightLegIn и RightLegOut перемещают ногу внутрь и наружу соответственно. RightLegIcenter и RightLegOcenter перемещают ногу обратно в центральное положение из соответствующих позиций.

Следующие функции управляют движением левой ноги робота аналогично функциям RightLeg. Эти функции определяют подробные движения и закономерности движения двуногого робота. Они используют углы сервоприводов и время задержки для создания определенных движений, таких как ходьба, поворот и наклон. Поведения создаются путем соответствующей последовательности этих подфункций в функциях движения более высокого уровня, таких как Forward, TurnLeft и TurnRight.

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

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

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

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

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

https://circuitdigest.com/sites/default/files/other/biped-catbot.mp4

Заключение

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

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

Исходный код программы (скетча)

Код №1

Код №2

Видео, демонстрирующее работу проекта

Источник статьи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *