Рубрики
Проекты на ESP32

Проектирование и управление роботом-пауком с помощью ESP32

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

Робот-паук — это четвероногий шагающий робот, вдохновленный бионической копией паука, который использует свои ноги для передвижения. Его ноги устроены таким образом, что позволяют им двигаться различными способами, включая ходьбу, бег и лазание. Неотъемлемым компонентом этого проекта является интеграция микроконтроллера ESP32, который обеспечивает беспроводное управление и улучшенную координацию движений. ESP32 служит идеальной платформой для робота-паука, повышая его маневренность, универсальность и способность эффективно перемещаться по сложной местности. Благодаря своей исключительной маневренности, универсальности и способности преодолевать сложную местность, роботы-пауки обладают огромным потенциалом в различных областях, включая поисково-спасательные операции, исследования и даже помощь по дому.

Механизм робота-паука

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

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

Одно фундаментальное различие между колесными и ножными роботами заключается в их степенях свободы (в англ. degrees of freedom, DOF). Колесные роботы имеют только одну степень свободы, тогда как роботы на ногах могут совершать более сложные движения.

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

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

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

Четвероногие походки для движения вперед

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

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

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

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

Для обеспечения устойчивости робота крайне важно, чтобы его центр масс (в англ. center of mass, COM) оставался в пределах опорного многоугольника. Под опорным многоугольником понимается воображаемый многоугольник, если внутри которого находится центр масс, робот может сохранять равновесие. Однако если центр масс выйдет за пределы опорного многоугольника, робот станет неустойчивым и может опрокинуться. Эта концепция изображена на рисунке ниже, где робот остается сбалансированным пока его центр масс находится внутри опорного многоугольника. Это служит важнейшим принципом поддержания стабильности и предотвращения сбоев в работе робота.

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

  • Микроконтроллер ESP32 (купить на AliExpress).
  • Серводвигатель с пластиковой шестерней SG90 — 8 шт. (купить на AliExpress).
  • LM2596 — понижающий преобразователь постоянного тока в постоянный (купить на AliExpress).
  • Литий-ионный аккумулятор 12 В.
  • Выключатель.
  • Соединительные провода.
  • Макетная или печатная плата.
  • Винты, гайки, проставки.

Файлы для изготовления деталей робота-паука

Эти файлы можно скачать по следующей ссылке.

Авторы проекта спроектировали акриловые детали четвероногого робота-паука с помощью SolidWorks. Файлы .dxf вы можете найти по ссылке выше. Если вы хотите внести какие-либо изменения, вы также можете найти файл .svg . Эти детали также легко доступны на многих веб-сайтах электронной коммерции: просто введите в поиск «Четвероногие роботы-пауки» в Google, и вы найдете множество ссылок.

Сборка робота-паука

Регулировка положения серводвигателей

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

Для начала прикрепите рычаг сервопривода к серводвигателю, тщательно выровняв и закрепив его на месте. Мы можем вручную откалибровать и отрегулировать угол серводвигателя, но иногда ручная калибровка неточна или может оказаться невозможной. Таким образом, вы можете откалибровать свои серводвигатели, используя предоставленный код №1 (приведен в конце статьи). Обратитесь к приведенной ниже принципиальной схеме и подключите серводвигатели к контактам 21, 19, 33, 25, 27, 14, 12 и 13 соответственно. Загрузите предоставленный код № 1 в свой модуль ESP32, что облегчит процесс калибровки. Невыполнение этого шага может привести к нестабильной работе вашего робота.

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

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

Этапы сборки ног робота

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

Шаг 2: Теперь прикрепите еще один одиночный рычаг сервопривода к стоящему рычагу сервопривода. Для этого вставьте крепежный винт сервопривода с задней стороны рычага сервопривода и закрепите его в одинарном рычаге сервопривода. Убедитесь, что соединение прочное и стабильное.

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

Шаг 4. Затем прикрепите часть ножки к сервоприводу ножки с помощью винта M3x10 мм и оптоволоконной гайки M3.

Шаг 5: Вставьте еще один сервопривод в держатель сервопривода.

Шаг 6: Поместите верхний конец второго сервопривода в слот для сервопривода на подставке.

Шаг 7. Прикрепите держатель сервопривода к гнезду сервопривода на ножке с помощью двух винтов M3x12 мм и двух оптоволоконных гаек M3.

Шаг 8. Теперь присоедините параллельную пластину опоры к другому концу опоры с помощью винта M3x10 мм и оптоволоконной гайки M3.

Шаг 9: Когда оба сервопривода находятся в центральном положении, а параллельное соединение ног выровнено по горизонтали, прикрепите рычаг сервопривода ноги к первому сервоприводу с помощью прилагаемого винта рычага сервопривода.

Шаг 10. Наконец, присоедините узел опоры, который был выполнен на предыдущих этапах, к нижней шарнирной пластине опоры с помощью двух винтов M3x10 мм и двух гаек M3.

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

Корпус в сборе

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

Список деталей схемы 1 и 2:

  • 1- Верхняя пластина корпуса
  • 2 — Винт M3x10MM
  • 3 — Серводвигатель
  • 4 — Гайка М3
  • 5 — Гайка волокна M3
  • 7 — Винт M3x12MM
  • 8 — Проставка
  • 10 — Держатель сервопривода

Шаг 1: Начните сборку, прикрепив четыре проставки штока к нижней пластине штока. Используйте четыре винта M3x10 мм и четыре плоские гайки M3, чтобы надежно закрепить прокладки на месте.

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

Шаг 3: Для каждого сервопривода прикрепите сверху держатель сервопривода. Правильно выровняйте держатель и закрепите его на месте.

Шаг 4. Прикрепите каждый держатель сервопривода к верхней пластине корпуса с помощью винтов M3x12 мм и оптоволоконных гаек M3. Убедитесь, что они надежно затянуты.

Шаг 5: Теперь приступайте к прикреплению каждой части ножки к нижней пластине выноса. Используйте винт M3x10 мм и гайку M3 для каждой ножки. Будьте осторожны и не затягивайте винты слишком сильно, так как это может привести к неисправности сервопривода.

Шаг 6: Соедините нижнюю и верхнюю пластины корпуса. Используйте четыре винта M3x10 мм и гайки M3, чтобы надежно соединить эти два компонента.

Шаг 7: Установив сервоприводы и части ножек на место, осторожно поверните каждую ногу на угол 45 градусов, как показано в инструкциях. Установите верхнюю поворотную пластину опоры и прикрепите ее к каждому сервоприводу шарнира и опоре с помощью двух винтов M3x10 мм и двух гаек M3 для каждой опоры.

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

После сборки это будет выглядеть следующим образом:

Схема робота-паука

Схема четвероногого робота-паука на основе модуля ESP32 приведена на следующем рисунке.

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

Робот состоит из четырех ног, каждая из которых соединена с двумя серводвигателями. Один сервопривод отвечает за вращение оси (известный как сервопривод поворота), а другой сервопривод управляет подъемным движением ноги (известный как сервопривод подъема).

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

ESP32 и серводвигатели :

  • Назначьте контакты с поддержкой ШИМ (широтно-импульсной модуляции) на ESP32 для управления сервоприводами. Эти контакты будут генерировать необходимые сигналы ШИМ для регулировки положения каждого серводвигателя.
  • Подключите сигнальный провод (обычно желтого или белого цвета) от каждого серводвигателя к отдельному контакту с поддержкой ШИМ на ESP32.
Серво1 Контакт 21 Серво5 Контакт 27
Серво2 Контакт 19 Серво6 Контакт 14
Серво3 Контакт 33 Серво7 Контакт 12
Серво4 Контакт 25 Серво8 Контакт 13

Как видите, эти соединения достаточно несложны.

ESP32 и источник питания:

  • Подключите положительную клемму источника питания к контактам VCC каждого серводвигателя.
  • Подключите клемму заземления источника питания к контактам заземления (GND) всех серводвигателей.
  • Подключите контакт заземления (GND) ESP32 к клемме заземления (-) вашего источника питания.
  • Подключите вывод Vin ESP32 к положительной клемме (+) источника питания с помощью переключателя.

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

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

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

Объяснение кода четвероногого робота-паука на ESP32

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

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

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

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

Код №1

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

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

Далее в программе объявляем восемь объектов Servo — от «myServo1» до «myServo8». Каждый объект представляет собой серводвигатель и связан с определенной функцией (например, поворотом или подъемом) и определенной ногой робота-паука.

Функция setup выполняется один раз при запуске микроконтроллера. В ней мы прикрепляем каждый объект Servo к соответствующему выводу ESP32 с помощью метода Attach(). Функция center_servos() вызывается для установки всех серводвигателей в центральное положение, а для стабильности добавляется задержка в 2 секунды.

Следующий блок кода содержит функцию loop(), которая выполняется непрерывно в программе. Она состоит из нескольких циклов for, каждый из которых контролирует количество шагов для определенного движения. На каждой итерации вызывается соответствующая функция движения (‘moveLegServos_Forward()‘, ‘moveLegServos_Backward()‘, ‘moveLegServos_Right()‘, ‘moveLegServos_Left()‘, ‘pushup()‘, ‘dance()‘) . После каждого движения вызывается функция center_servos() для сброса всех серводвигателей в их центральное положение. Между каждым движением вводится задержка в миллисекундах FUNCTION_DELAY.

В следующем фрагменте кода представлена функция moveLegServos_Forward(), которая управляет действиями сервоприводов, позволяющими роботу-пауку двигаться вперед. Она вызывает функции moveLeg_Left_Forward() и moveLeg_Right_Forward() для управления движением каждой ноги. Функция постепенно регулирует углы сервопривода для достижения желаемого положения ног для движения робота вперед.

Следующий блок кода определяет функцию moveLegServos_Backward(), которая управляет действиями сервоприводов, позволяющими роботу-пауку двигаться назад. Он вызывает функции moveLeg_Left_Backward() и moveLeg_Right_Backward() для управления движением каждой ноги. Функция постепенно регулирует углы сервопривода для достижения желаемого положения ног для движения назад.

В следующем блоке кода функции moveLegServos_Right() и moveLegServos_Left() управляют сервоприводами, позволяющими роботу-пауку двигаться вправо и влево соответственно.

Эти функции координируют движения сервомоторов ног для достижения желаемого движения робота-паука вправо или влево. Каждая функция вызывает соответствующую функцию moveLeg_Right() или moveLeg_Left() для каждой ноги робота, передавая соответствующие сервообъекты в качестве аргументов.

Следующий блок определяет функции pushup() и dance(), которые управляют сервоприводами робота-паука для выполнения отжиманий и танцевальных движений. Они чередуют углы сервоприводов от 0 до 180 градусов для выбранных сервоприводов (myServo1, myServo3, myServo5, myServo7) для достижения эффекта танцевального движения и (myServo2, myServo4, myServo6, myServo8) для эффекта отжимания.

Следующий блок кода включает четыре функции moveLeg_Left_Forward(), moveLeg_Right_Forward(), moveLeg_Left_Backward() и moveLeg_Right_Backward().

moveLeg_Left_Forward(): эта функция отвечает за перемещение левой ноги робота-паука вперед. В качестве параметров он принимает три сервообъекта: LiftServo, PivotServo и противоположный PivotServo. Функция сначала перемещает LiftServo от 90 до 180 градусов с шагом в 2 градуса. Затем он перемещает поворотный сервопривод от 90 до 0 градусов с тем же приращением. Наконец, он перемещает LiftServo назад со 180 до 90 градусов. Каждое движение сопровождается задержкой в ​​10 миллисекунд с использованием оператора задержки delay(10).

moveLeg_Right_Forward(): эта функция отвечает за перемещение правой ноги робота-паука вперед. Она имеет структуру, аналогичную moveLeg_Left_Forward(), но с добавлением дополнительного перемещения. После перемещения LiftServo и PivotServo, как описано выше, противоположный PivotServo перемещается от 0 до 90 градусов. Целью этого дополнительного движения является координация движений ног для движения вперед.

moveLeg_Left_Backward(): эта функция отвечает за перемещение левой ноги робота-паука назад. Она имеет структуру, аналогичную moveLeg_Left_Forward(), но с некоторыми изменениями в приращениях углов и направлениях. PivotServo перемещается с 90 на 180 градусов, а LiftServo со 180 на 90 градусов. Эти изменения приводят к тому, что нога движется в противоположном направлении.

moveLeg_Right_Backward(): эта функция отвечает за перемещение правой ноги робота-паука назад. Она имеет структуру, аналогичную moveLeg_Left_Backward(), с добавлением дополнительного перемещения. После перемещения LiftServo и PivotServo , как описано выше, противоположный PivotServo перемещается с 90 до 0 градусов.

Этот блок кода включает две функции moveLeg_Right() и moveLeg_Left().

moveLeg_Right(): эта функция отвечает за перемещение правой ноги робота-паука в правильном направлении или поворот. В качестве параметров он принимает три сервообъекта: LiftServo, PivotServo и oppositePivotServo. Функция начинается с перемещения LiftServo от 90 до 180 градусов с шагом 2 градуса. Затем он перемещает поворотный сервопривод от 90 до 0 градусов с тем же приращением. Далее он перемещает oppositePivotServo от 0 до 90 градусов. Наконец, он перемещает LiftServo назад со 180 до 90 градусов. Каждое движение сопровождается задержкой в ​​10 миллисекунд с использованием оператора задержки delay(10).

moveLeg_Left(): эта функция отвечает за перемещение левой ноги робота-паука в левом направлении или поворот. Она имеет структуру, аналогичную moveLeg_Right(), но с некоторыми изменениями в приращениях углов и направлениях. PivotServo перемещается с 90 на 180 градусов, а oppositePivotServo со 180 на 90 градусов. Эти изменения приводят к тому, что нога движется в противоположном направлении.

Следующий блок определяет функцию center_servos(), которая устанавливает все серводвигатели в их центральное положение, записывая угол 90 градусов для каждого сервопривода.

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

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

Код №1

Код №2

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

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

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