Привет, разработал свой вариант балансирующего робота на ардуино, MPU6050 и шаговых двигателях.
Создавал для кайфа и своего ютуб канала Max Gear
Робот при хорошей настройке ПИД коэффициентов балансирует очень хорошо.
Алгоритм работы : Берём данные с MPU6050 с помощью библиотеки I2Cdevlib, вычисляем угол наклона к вертикальной оси, засовываем в два ПИД регулятора последовательно и получаем скорость вращения колёс. Затем по таймеру 32000 раз в секунду хитрым кодом идейно подсмотренным в прошивке GRBL для чпу станков делаем шаги. В итоге получаем плавно балансирующего двухколёсного робота, на воздействия извне реагирует очень бодро
Настройка : Заключается в подборе ПИД коэффициентов, Алекс писал на эту тему ролики, сложность в том что регулятора два, в самой прошивке я написал подробные комментарии ко ВСЕМУ коду. Я подобрал неплохие коэффициенты гадая на кофейной гуще и гороскопам, а затем подогнав все более точно.
Настройка ПИДов осуществляется изменением define значений в главном файле прошивки MaxGear_BalancingRobot.ino:
Реализация : Прикрепляю полную схему устройства и внешний вид, корпус напечатан PETG пластиком и представляет из себя простую раму для крепления всех компонентов винтиками да горячими соплями.


Что можно улучшить: Не реализовано дистанционное управление, изначально хотел взять esp8266 и сделать управление роботом через браузер любого устройства, столкнулся с проблемой - нельзя из javascript создать UDP соединение, если есть знатоки подскажите может я ошибаюсь и возможно сделать кроссплатформерное управление с минимальной задержкой.
Также питание от 3 банок лития получается 12.6 вольт максимум, что для шаговиков маловато
На подсевших батареях поведение робота постепенно ухудшается, легче вызвать пропуск шагов. Как вариант взять 4 банки и стабилизировать их чем-то импульсным, стабильное напряжение обеспечит одинаковое поведение робота вне зависимости от просадки банок.
Все файлы необходимые для реализации робота можно найти по ссылке ссылке
Примерная стоимость комплектующих 2800 рублей
Робот в действии, разъяснения как он устроен и процесс сборки и частично настройки:
Спрашивайте, предлагайте, надеюсь кому-то пригодятся мои наработки
Создавал для кайфа и своего ютуб канала Max Gear
Робот при хорошей настройке ПИД коэффициентов балансирует очень хорошо.
Алгоритм работы : Берём данные с MPU6050 с помощью библиотеки I2Cdevlib, вычисляем угол наклона к вертикальной оси, засовываем в два ПИД регулятора последовательно и получаем скорость вращения колёс. Затем по таймеру 32000 раз в секунду хитрым кодом идейно подсмотренным в прошивке GRBL для чпу станков делаем шаги. В итоге получаем плавно балансирующего двухколёсного робота, на воздействия извне реагирует очень бодро
Настройка : Заключается в подборе ПИД коэффициентов, Алекс писал на эту тему ролики, сложность в том что регулятора два, в самой прошивке я написал подробные комментарии ко ВСЕМУ коду. Я подобрал неплохие коэффициенты гадая на кофейной гуще и гороскопам, а затем подогнав все более точно.
Настройка ПИДов осуществляется изменением define значений в главном файле прошивки MaxGear_BalancingRobot.ino:
дефайны ПИД коэффициентов:
// коэффициенты ПИДов, определяют поведение робота
#define SPEED_KP 0.000015 // позволяет достичь целевой скорости
//#define SPEED_KI 0.0000008
#define SPEED_KI 0.0000000 // когда > 0, у робота появляется стремление сократить пройденный путь, посколько интеграл от скорости - путь
#define SPEED_KD 0.00000027 // позволяет с меньшими колебаниями достичь целевой скорости
#define ANGLE_KP 2100.0 // позволяет достичь целевого угла
//#define ANGLE_KI 8500.0
#define ANGLE_KI 300.0 // убирает статическую ошибку отклонения угла от целевого
#define ANGLE_KD 180.0 // позволяет с меньшими колебаниями достичь заданного угла


Что можно улучшить: Не реализовано дистанционное управление, изначально хотел взять esp8266 и сделать управление роботом через браузер любого устройства, столкнулся с проблемой - нельзя из javascript создать UDP соединение, если есть знатоки подскажите может я ошибаюсь и возможно сделать кроссплатформерное управление с минимальной задержкой.
Также питание от 3 банок лития получается 12.6 вольт максимум, что для шаговиков маловато
Все файлы необходимые для реализации робота можно найти по ссылке ссылке
Примерная стоимость комплектующих 2800 рублей
Робот в действии, разъяснения как он устроен и процесс сборки и частично настройки:
Спрашивайте, предлагайте, надеюсь кому-то пригодятся мои наработки