Балансирующий робот на ардуино своими руками

Содержание

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

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

image

Робот собран из конструктора fischertechnik ROBO TX учебная лаборатория (арт. 505286). Конструкция состоит из прямоугольной рамы, на которой закреплены следующие узлы: в нижней части — двигатели и датчик наклона, в средней части — бортовой управляющий контроллер, и в верхней части — аккумуляторная батарея.

Первые конструкторы fischetechnik появились в Германии в середине 1960-х годов. Первоначально это были механические конструкторы, которые состояли из пластиковых строительных блоков и соединялись друг с другом с помощью зацепления «ласточкин хвост». Постепенно перечень деталей увеличивался, в составе конструктора появились простые электронные блоки, а затем и микропроцессорные блоки управления. Первые наборы fischertechnik с программируемыми контроллерами появились во второй половине 1980-х годов.

Вес робота — 600 г. Диаметр колес — 90 мм. Для измерения угла наклона используется плата с трех-осевым акселерометром ADXL335 и двухосевым гироскопом IDG500, которая подключается напрямую к бортовой системе управления на базе микропроцессорного блока Arduino. На плате Arduino установлен микроконтроллер ATmega328P, работающий на частоте 16 МГц. Объем flash-памяти микроконтроллера — 32 кБ. Программное обеспечение написано на языке Wiring с расширениями для Arduino. Для стабилизации робота в вертикальном положении используется стандартный ПИД-регулятор. Частота работы регулятора 100 Гц.

Для вращения колес используются двигатели (135484 Encoder Motor) из конструктора fischertechnik. Максимальная скорость вращения двигателей 300 об/мин. Двигатели получают питание от платы расширения Arduino, на которой установлен драйвер L293. Управление скоростью двигателей с помощью ШИМ.

ПАКПАК в Томске »—← Балансирующий роботПАКПАК в Томске →

imageИгровой набор Bondibon Робот-акробат… / 5 Интерактивная игрушка Fisher-Price Бибо… 5 / 5 Трансформер TOBOT EVOLUTION Y SHIELD-ON 301011… / 5 Трансформер TOBOT EVOLUTION X с наклейками и ключом-токеном 301008… / 5 Трансформер Тобот D 301015… / 5 Трансформер TOBOT EVOLUTION X SHIELD-ON 301009… / 5 Трансформер мини Тобот Z 301030… / 5 Мини Робот Робосапиен V2 (Mini Robosapien V2) 8191… 2 / 5 Мини Робот WowWee (Робосапиен) 8085… 1 / 5 Мини Робот WowWee Трайбот 8152… 5 / 5 Робот-трансформер Happy Well Hummer HX 54020… / 5 Робот-трансформер Happy Well Lamborghini 54040… / 5 Робот-трансформер Happy Well Jaguar 55020… / 5 Трансформер MINI TOBOT X с наклейками 301020… / 5 Робот Играем вместе на батарейках 194649… / 5 Робот Wowwee RoboRover Исследователь 8515… / 5

Октябрь 14, 2017

Нам понадобится:

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

Размер боковин балансира указан на фото:

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

С вертикальными частями разобрались, теперь нужно сделать 3 горизонтальных. Я их склеивал тоже между собой, поэтому сделал вот таких частей 6 шт.:

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

Моторредукторы я крепил на стяжки к боковинам получившейся “лесенки”

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

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

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

ВАЖНО: Гироскоп нужно расположить ровно в плоскости, иначе роботу будет тяжело держать равновесие.

Ну и сами аккумуляторы прикрепил на стяжки в самом верху конструкции.

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

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

Ну и собственно сам скетч:

Для корректной работы скетча нам еще понадобятся две библиотеки kalman и PID_v1

Ну и собственно демонстрация работы:

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

Сигвей от англ. Segway – двухколесное средство передвижения стоя, оснащенное электроприводом. Еще их называют гироскутерами или электрическими самокатами.

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

Как работает балансировка?

Чтобы сбалансировать робота, двигатели должны противодействовать падению робота. Это действие требует обратной связи и корректирующих элементов. Элемент обратной связи – гироскоп-акселерометр MPU6050, который обеспечивает как ускорение, так и вращение во всех трех осях (основы MP26050 I2C). Ардуино использует это, чтобы знать текущую ориентацию робота. Корректирующим элементом является комбинация двигателя и колеса.

В итоге должен получиться примерно такой друг:

Схема робота

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

Читайте также: В экселе не печатаются цифры в ячейке

Продолжайте подключать остальные компоненты, как показано выше. Модуль L298N может обеспечить +5В, необходимый для Ардуино, если его входное напряжение составляет +7В или выше. Тем не менее, мы выбрали отдельные источники питания для двигателя и схемы.

Создание робота

Корпус робота изготовлен в основном из акрилового пластика с двумя редукторными двигателями постоянного тока:

Основная печатная плата, состоящая из Arduino Nano и MPU6050:

Модуль драйвера двигателя L298N:

Мотор редуктора постоянного тока с колесом:

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

Завершенный вариант самостоятельно балансирующего робота можно посмотреть на рисунке выше. В верхней части находятся шесть Ni-Cd-батарей для питания печатной платы. В промежутках между моторами используется 9-вольтовая батарея для драйвера двигателя.

Теория

В теории управления, удерживая некоторую переменную (в данном случае позицию робота), требуется специальный контроллер, называемый ПИД (пропорциональная интегральная производная). Каждый из этих параметров имеет «прирост», обычно называемый Kp, Ki и Kd. PID обеспечивает коррекцию между желаемым значением (или входом) и фактическим значением (или выходом). Разница между входом и выходом называется «ошибкой».

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

PID требует, чтобы значения Kp, Ki и Kd были настроены на оптимальные значения. Инженеры используют программное обеспечение, такое как MATLAB, для автоматического вычисления этих значений. К сожалению, мы не можем использовать MATLAB в нашем случае, потому что это еще больше усложнит проект. Вместо этого мы будем настраивать значения PID. Вот как это сделать:

  1. Сделайте Kp, Ki и Kd равными нулю.
  2. Отрегулируйте Kp. Слишком маленький Kp заставит робота упасть, потому что исправления недостаточно. Слишком много Kp заставляет робота идти дико вперед и назад. Хороший Kp сделает так, что робот будет совсем немного отклоняться назад и вперед (или немного осциллирует).
  3. Как только Kp установлен, отрегулируйте Kd. Хорошее значение Kd уменьшит колебания, пока робот не станет почти устойчивым. Кроме того, правильное Kd будет удерживать робота, даже если его толькать.
  4. Наконец, установите Ki. При включении робот будет колебаться, даже если Kp и Kd установлены, но будет стабилизироваться во времени. Правильное значение Ki сократит время, необходимое для стабилизации робота.

Поведение робота можно посмотреть ниже на видео:

Читайте также: Бесплатные приложения для записи разговоров на айфон

Код Ардуино самобалансирующего робота

Нам понадобилось четыре внешних библиотеки, для создания нашего робота. Библиотека PID упрощает вычисление значений P, I и D. Библиотека LMotorController используется для управления двумя двигателями с модулем L298N. Библиотека I2Cdev и библиотека MPU6050_6_Axis_MotionApps20 предназначены для чтения данных с MPU6050. Вы можете загрузить код, включая библиотеки в этом репозитории.

Значения Kp, Ki, Kd могут работать или не работать. Если они этого не делают, выполните шаги, описанные выше. Обратите внимание, что наклона в коде установлен на 173 градуса. Вы можете изменить это значение, если хотите, но обратите внимание, что это угол наклона, которым должен поддерживаться роботом. Кроме того, если ваши двигатели слишком быстры, вы можете отрегулировать значения motorSpeedFactorLeft и motorSpeedFactorRight.

На этом пока всё. До встречи.

Опубликовал: Константин Александров / 17.04.2018

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

Сигвей от англ. Segway – двухколесное средство передвижения стоя, оснащенное электроприводом. Еще их называют гироскутерами или электрическими самокатами.

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

Как работает балансировка?

Чтобы сбалансировать робота, двигатели должны противодействовать падению робота. Это действие требует обратной связи и корректирующих элементов. Элемент обратной связи – гироскоп-акселерометр MPU6050, который обеспечивает как ускорение, так и вращение во всех трех осях (основы MP26050 I2C). Ардуино использует это, чтобы знать текущую ориентацию робота. Корректирующим элементом является комбинация двигателя и колеса.

В итоге должен получиться примерно такой друг:

Схема робота

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

Продолжайте подключать остальные компоненты, как показано выше. Модуль L298N может обеспечить +5В, необходимый для Ардуино, если его входное напряжение составляет +7В или выше. Тем не менее, мы выбрали отдельные источники питания для двигателя и схемы.

Создание робота

Корпус робота изготовлен в основном из акрилового пластика с двумя редукторными двигателями постоянного тока:

Основная печатная плата, состоящая из Arduino Nano и MPU6050:

Модуль драйвера двигателя L298N:

Мотор редуктора постоянного тока с колесом:

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

Завершенный вариант самостоятельно балансирующего робота можно посмотреть на рисунке выше. В верхней части находятся шесть Ni-Cd-батарей для питания печатной платы. В промежутках между моторами используется 9-вольтовая батарея для драйвера двигателя.

Читайте также: Имена в инстаграме для девочек на английском

Теория

В теории управления, удерживая некоторую переменную (в данном случае позицию робота), требуется специальный контроллер, называемый ПИД (пропорциональная интегральная производная). Каждый из этих параметров имеет «прирост», обычно называемый Kp, Ki и Kd. PID обеспечивает коррекцию между желаемым значением (или входом) и фактическим значением (или выходом). Разница между входом и выходом называется «ошибкой».

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

PID требует, чтобы значения Kp, Ki и Kd были настроены на оптимальные значения. Инженеры используют программное обеспечение, такое как MATLAB, для автоматического вычисления этих значений. К сожалению, мы не можем использовать MATLAB в нашем случае, потому что это еще больше усложнит проект. Вместо этого мы будем настраивать значения PID. Вот как это сделать:

  1. Сделайте Kp, Ki и Kd равными нулю.
  2. Отрегулируйте Kp. Слишком маленький Kp заставит робота упасть, потому что исправления недостаточно. Слишком много Kp заставляет робота идти дико вперед и назад. Хороший Kp сделает так, что робот будет совсем немного отклоняться назад и вперед (или немного осциллирует).
  3. Как только Kp установлен, отрегулируйте Kd. Хорошее значение Kd уменьшит колебания, пока робот не станет почти устойчивым. Кроме того, правильное Kd будет удерживать робота, даже если его толькать.
  4. Наконец, установите Ki. При включении робот будет колебаться, даже если Kp и Kd установлены, но будет стабилизироваться во времени. Правильное значение Ki сократит время, необходимое для стабилизации робота.

Поведение робота можно посмотреть ниже на видео:

Код Ардуино самобалансирующего робота

Нам понадобилось четыре внешних библиотеки, для создания нашего робота. Библиотека PID упрощает вычисление значений P, I и D. Библиотека LMotorController используется для управления двумя двигателями с модулем L298N. Библиотека I2Cdev и библиотека MPU6050_6_Axis_MotionApps20 предназначены для чтения данных с MPU6050. Вы можете загрузить код, включая библиотеки в этом репозитории.

Значения Kp, Ki, Kd могут работать или не работать. Если они этого не делают, выполните шаги, описанные выше. Обратите внимание, что наклона в коде установлен на 173 градуса. Вы можете изменить это значение, если хотите, но обратите внимание, что это угол наклона, которым должен поддерживаться роботом. Кроме того, если ваши двигатели слишком быстры, вы можете отрегулировать значения motorSpeedFactorLeft и motorSpeedFactorRight.

На этом пока всё. До встречи.

Опубликовал: Константин Александров / 17.04.2018

  • />
  • />

Чтобы начать изучение Arduino самостоятельно можно купить набор Arduino Starter Kit и воспользоваться онлайн-уроками для начинающих. В такой набор входит плата Arduino UNO и другие электронные компоненты: светодиоды, резисторы, сервопривод, двигатель, кнопку, жидкокристаллический экран, пьезоэлемент, датчики и прочее. Стартовые комплекты выпускаются разными производителями, состав может быть разным. Любой вариант подойдет для первого знакомства. Очень удобны для освоения и при этом дешево стоят наборы производства Maker Studio:

  • Arduino Starter Kit базовый стоимостью $22;
  • Arduino Starter Kit расширенный стоимостью $59;
  • Arduino Starter Kit Premium стоимостью $78;

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

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

Такие роботы состоят из элементов корпуса, платы, датчиков и других компонентов. В разобранном виде — это тоже своеобразный стартовый набор. Стоимость готовых роботов часто сопоставима с ценой на наборы Arduino Starter Kit.

Робот-автомобиль, управляемый по Bluetooth

В предыдущий обзор готовых Arduino-роботов был включен 4WD-автомобиль. 2WD-модификация дешевле. Такая машинка, управляемая по bluetooth, стоит $59. Производство Maker Studio.

2WD робот-машинка с управлением по Bluetooth. Фото Aliexpress.

Фото робота-машинки в разобранном виде:

2WD робот-машинка с управлением по Bluetooth в разобранном виде. Фото Aliexpress.

В наборе есть все для сборки корпуса, включая отвертку, колеса, зарядное устройство для аккумуляторов, электронные компоненты: плата аналог Arduino UNO, плата прототипирования, драйвер моторов, ультразвуковой дальномер, датчик линии, Bluetooth-модуль.

Гусеничный робот (танк)

Классический ардуино-робот на гусеничном шасси компании Dagu Electronics идеально подходит для любого небольшого робототехнического проекта. Ардуино-танк поставляется в 4 различных конфигурациях. Шасси имеет отверстия и слоты, позволяющие легко крепить дополнительное оборудование. В наборе кроме деталей корпуса,кронштейнов и гусениц: плата-аналог Arduino, ультразвуковой датчик расстояния, датчик Холла.

Робот-танк Dagu. Фото Aliexpress.

Видео с этим роботом:

Робот-танк Dagu можно купить на Aliexpess за $160.

Шестиногий робот-паук

Этот робот-гексапод производства Dagu Electronics имеет 12 степеней свободы. Шасси простое, сделано дешево, насколько это только возможно. Управление может осуществляться, например, при помощи пульта дистанционного управления от телевизора. Основа корпуса выполнена из акрилового листа. Для управления ногами используются 12 сервоприводов. Обратите внимание, что плата c контроллером, изображенная на фотографии, не входит в комплект. Ее нужно покупать отдельно.

Можно использовать различные платы, но производитель рекомендует специализированный контроллер DAGU-паук (ATMEGA 1280 16 мГц). Его стоимость $65.

Робот-гексапод Dagu. Фото Aliexpress.

Шестиногого робота-паука можно купить на Aliexpress за 150 долларов.

Робот рука-манипулятор

Роботизированная рука — автоматизированное механическое устройство, в настоящее время наиболее широкий применяемое в различных областях: промышленное производство, конвейеры, лечение, развлекательные услуги, военная разведка, космос и т.д. Этот алюминиевый манипулятор имеет 6 степеней свободы. Коготь позволяет захватывать предметы. Для управления используется плата-аналог Arduino.

Роботизированная рука-манипулятор. Фото Aliexpress.

Роботизированная рука может быть установлена стационарно или на шасси (не включено в комплект). Если закрепить манипулятор на шасси, получится такой робот:

Робот шасси с рукой-манипулятором. Фото Aliexpress.

Видео:

Стоимость роботизированной руки на Aliexpress $218.

BalanBot — балансирующий робот

Балансирующий ардуино-робот — интересная образовательная игрушка. Что подарить ребенку? Возможно, BalanBot производства Maker Studio — отличная идея.

Балансирующий arduino-робот. Фото Aliexpress.

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

Балансирующий arduino-робот в разобранном виде. Фото indiegogo.com.

Помимо деталей корпуса, двигателей, платы аналога Arduino Uno R3 в набор входит специализированная плата расширения (шилд). Шилд содержит модуль MPU6050 — 3-х осевой гироскоп и 3-х осевой акселерометр, а также драйвер L298P — для подключения моторов.

Дополнительно можно приобрести Bluetooth-модуль и модуль Wi Fi. Это позволит управлять роботом со смартфона. Производитель придерживается принципов Open Source, предоставляет исходный код и приложение для мобильных устройств.

Балансирующий робот стоит $129 на Aliexpress.

Готовый робот или каркас для робота

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

Где еще купить готовых роботов

В обзоре мы выбрали наиболее дешевых и интересных на наш взгляд готовых Arduino-роботов из китайских интернет-магазинов. Если нет времени ждать посылку из Китая — большой выбор готовых роботов в интернет-магазинах Амперка. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Список рекомендованных магазинов здесь.

Возможно вас также заинтересуют наши обзоры проектов на Arduino:

  • Arduino робот-художник;
  • arduino-робот Sparki;
  • деревянный робот-машинка KAKU.
  • робот-насекомое.

Обучение Arduino

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

Учебный курс “Arduino для начинающих”: главная страница.

Посты по урокам:

  1. Первый урок: “Светодиод “ .
  2. Второй урок: “Кнопка “ .
  3. Третий урок: “Потенциометр“.
  4. Четвертый урок: “Сервопривод“.
  5. Пятый урок: “Трехцветный светодиод“.
  6. Шестой урок: “Пьезоэлемент“.
  7. Седьмой урок: “Фоторезистор“.

Все посты сайта “Занимательная робототехника” по тегу Arduino.

Список рекомендованных магазинов.

Все цены приведены на дату публикации поста.

Автор: Александр С. Гагарин.

image

Ранее мы рассказывали о других нестабильных роботах. Например, недавно американские инженеры представили автономную версию одноногого робота Salto. Его стабилизация — еще более сложная задача, потому что он не может стоять на месте и вынужден постоянно подпрыгивать, корректируя свою траекторию в короткий момент, когда его нога касается пола. А британский инженеры создал нестабильного робота с четырьмя колесами Илона, что позволяет ему двигаться в любую сторону, несмотря на то, что колеса статично закреплены и не поворачиваются. Григорий Копиев


Источник: bfm-nn.ru