А ты построил собственного балансирующего робота?


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

Прогресс в развитии микроэлектромеханических систем (MEMS) привел к тому, что к началу 10-х годов XXI века гироскопы и акселерометры уменьшились до размера булавочной головки и стоят в розницу пару долларов. Чем не преминули воспользоваться разнообразные гики, создавшие устройства с недостижимыми ранее характеристиками — висящие на одном месте как влитые квадрокоптеры, «чувствующие» свое перемещение в пространстве игровые контроллеры, летящие точно в цель самодельные баллистические ракеты способные сохранять вертикальное положение транспортные средства типа Segway.
Последний в свое время произвел фурор и породил армию почитателей, которые возжелали построить если не его полный аналог, то хотя бы действующую модель.

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

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

модуль для Arduino с распаянным чипом MPU6050, представляющим из себя трехосевой гироскоп и трехосевой акселерометр;

коммутатор нагрузки типа «H-мост». Мощность для маленьких моторчиков явно избыточна, но пускай будет. Может когда придется применить для привода мощного шагового двигателя;

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

Уже имелись в наличии:

— Arduino Nano были куплены с запасом еще в те времена, когда вода была мокрее USB-UART преобразователи в них делались на FT232, а не на CH340;

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

Программная часть и немного теории.

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



Желающие досконально разобраться в математике процесса без проблем найдут поиском в сети статьи о фильтре Калмана и PID-регулировании.
В нашем же случае будем пользоваться готовыми библиотеками в качестве «черных ящиков», целиком полагаясь на то, что авторы библиотек свою работу сделали хорошо.
В этом и заключается главная особенность Arduno, за которую она любима нубами и ненавидима труъ-эмбеддерами: поделки можно собирать из программных модулей как из кирпичей, вообще не догадываясь об их внутреннем функционировании.

Код: drive.google.com/open?id=0ByfpVoSE6ehYem4tVG45MW5kZ3M

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

Аппаратная часть.

Отрезаем нижнюю часть оргстекла, подогрев изгибаем ее на 90 градусов, и прикручиваем винтами с другой стороны. Это будет полка для «приборного отсека» робота.



Прикрепляем электромоторы к нижней части и припаиваем к ним провода.



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



Собираем на макетке управляющую часть.



Паяем «подсистему питания». Напряжений питания будет два: стабилизированные 5 вольт для питания логики и прямой выход с батареи для питания моторов.



Собираем все вместе.



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



Ну и самый волнующий вопрос: заработало ли устройство? Да, заработало практически сразу:

Видео


Конечно, по сравнению со «взрослыми» устройствами (с энкодерами, бесколлекторными моторами, продвинутыми алгоритмами и тщательным подбором коэффициентов) устойчивость оставляет желать лучшего, но для демонстрации возможностей сойдет.
+
avatar
-39
+
avatar
+74
Демонстрации возможности поддержания устойчивости неустойчивых систем. Хоть температуры в инкубаторе, хоть ракеты в полете. С помощью копеечных деталек из хозмага.
+
avatar
-30
+
avatar
+31
А при чем здесь механика? Алгоритм универсален: датчик видит отклонение параметра от желаемого — исполнительное устройство прикладывает усилие к его исправлению.
+
avatar
  • flamik
  • 02 декабря 2016, 10:48
+2
Вы серьезно? Инкубатор использует тоже ПИД регулятор.
+
avatar
  • vanenzo
  • 02 декабря 2016, 10:50
+5
Системный подход, есть такое понятие
+
avatar
  • vittorio
  • 02 декабря 2016, 13:04
0
Причем тут механика? Речь о регулировании по отклонению.
+
avatar
  • Bazili0
  • 02 декабря 2016, 11:26
0
Теперь ждем от Вас Шаробота
+
avatar
+2
Боюсь, что тема ТАУ для меня уже не интересна. Думаю в скорости описать самодельное устройство из ардуины и палок немного иной направленности. Следите за анонсами )
+
avatar
  • danilaz
  • 02 декабря 2016, 16:14
+3
тема ТАУ для меня уже не интересна
заблуждающийся, ты не веришь в Высшее Благо?
+
avatar
  • flymouse
  • 03 декабря 2016, 08:03
0
Ну нееет! Одной страничкой Википедии там не отделаться!
более 10 лет назад собирали в институте таких работов, и у нас не было такой штуки как Motion Processing Unit и библиотек в интернетах.
Но автору всё равно зачёт! Взял и сделал!
+
avatar
  • Bazili0
  • 02 декабря 2016, 10:37
+31
Видимо примерно такой же вопрос задавали люди Копернику, Ньютону, Энштейну по поводу их открытий.
+
avatar
  • Zhenya88
  • 02 декабря 2016, 11:10
+4
Можно поставить на него fpv-камеру и «руку» на сервоприводах и гонять его до холодильника во время футбола
+
avatar
  • AlesX
  • 02 декабря 2016, 10:34
+9
Всегда восхищался такими людьми! Ваши руки не для скуки :)
+
avatar
  • serg_mur
  • 02 декабря 2016, 10:48
+7
Ну здорово же! Делайте ещё! Плюсую.
+
avatar
  • GermanM
  • 02 декабря 2016, 15:22
0
Действительно, занятная поделка.
Плюс за труды.
+
avatar
  • Mikotka
  • 02 декабря 2016, 10:49
+1
Я не совсем понял из обзора, есть ли управления движением. Если есть, то сколько он у вас выдерживает непрерывных циклов движения вперед-назад (стандартная проверка ПИД)? Скажем, майдстормовский у меня завалился после 12-го цикла.
+
avatar
0
Если честно, не очень понял, о чем вы. Нет, никаких дополнительных проверок не проводится, но при тестировании он у меня стоял порядка минуты практически на одном месте, если так можно сказать об отрезке порядка метра.
+
avatar
  • pulp
  • 02 декабря 2016, 10:52
+8
Центр тяжести высоковато. Если переместить батарейки пониже, то ему будет проще балансировать. В остальном — отличная поделка. Спасибо за обзор. Это я вам как наездник электрического моноколеса говорю ))
Кстати, можно пойти дальше, оставить одно колесо в центре, а балансировку в поперечной плоскости сделать с помощью двух рычагов с грузиками с разных сторон (на манер рук), которые поднимаются, чтобы сместить баланс влево-вправо. Тогда можно сделать отличного циркового робота ))
+
avatar
+3
Как раз чем выше центр тяжести, тем легче балансировать. Медленнее заваливается. Попробуйте удержать вертикально пальцем за донышко сначала пятисантиметровый болт, а потом метровую спицу.
+
avatar
  • pulp
  • 02 декабря 2016, 11:09
+2
Вам виднее, вы это сделали, но всё же, мне кажется, если сместить батарейки ближе к оси, оно будет меньше ёрзать. Высота всей конструкции останется та же.
А про циркового робота всё же подумайте ))
Блин… а я может быть и сам подумаю. Идея прямо нравится. Вместо рук просто повесить по центру маятник с грузом, который будет отклоняться влево-вправо. Так даже лучше ))

А если сделать возможность отклонять маятник еще и вперед-назад, то можно будет создать управляемую игрушку. ПОшел заказывать компоненты ))
+
avatar
  • a16ert_f
  • 02 декабря 2016, 17:36
+1
чем выше цт, тем мощнее нужны моторчики
+
avatar
0
Вот блин. Сам года два назад начинал с такого же. Шасси правда было другое, использовал машинку-перевертыш. Отпилил половину )
Движок один, на оба колеса сразу.
Аккумы у меня внизу получились,6050 на самом верху. Так и не поехал… При интесивном регулировании ардуина просто висла и мотор на полную врубался. Грешил на отсутствие помехоподавительного кондера на моторе, внешний ситуацию не спас. Так и не добил. Потом заказал аналоговые гирик и акселерометр, собрал, подключил и, все… Время свободное куда то испарилось…
+
avatar
  • flamik
  • 02 декабря 2016, 11:07
0
Некорректное сравнение. Человек как желе, туда сюда плюхается и еще сильнее все раскачивает.
+
avatar
  • pulp
  • 02 декабря 2016, 11:11
0
Человек, который плюхается как желе никуда на одном колесе не уедет. Чтобы на нем передвигаться нужно с точностью до милиметра контролировать положение ног и общего центра тяжести относительно точки опоры.
+
avatar
  • WHALE
  • 02 декабря 2016, 10:54
-4
А если бы сами написали фильтр Калмана то ваш авторитет поднялся бы еще выше у противоположного пола, а то что вы сделали делают на уроках труда в школе. )
+
avatar
+12
Я и не претендую на фундаментальность моего труда. Это и есть работа из серии «радиокружок дома пионеров райцентра». И фильтр уже к сожалению Калман изобрел до меня.
+
avatar
+1
Это где такая школа, где такое делают? В кетае, что ли?
+
avatar
  • KisK
  • 02 декабря 2016, 13:30
+1
В Китае =)
SHENZHEN I/O
+
avatar
0
Есть штука интереснее — Scratch for arduino, или s4a. И для школ/детей она больше подходит, кмк
+
avatar
  • OkeaH
  • 02 декабря 2016, 13:34
+6
Да, там с утра дети делают зарядку, а вечером продают ее на ebay.
+
avatar
  • WHALE
  • 02 декабря 2016, 13:46
-1
Я на уроках труда делал метоискатель в 5 классе еще при ссср и не из кирпичей а из рассыпухи и все работало.
Здесь нужно уметь только соединить проводки и залить чужую прогу.
+
avatar
+1
А что это такое было в ссср, — метоискатель? Чужие проги для заливки тоже можно было найти? Я почему-то думал, что в то время самым крутым эл.компонентом был транзистор КТ-315А
+
avatar
+3
Чтобы собрать металлоискатель из рассыпухи не нужно понимать как это работает. Спаять по готовой схеме может и первоклассник, если ему это интересно будет. Что значит написать фильтр Калмана? Реализовать его или снова изобрести? У нас на трудах пятиклассники на токарных станках с деревом работали и всего-то нужно заготовку обработать нужным образом и елозить резцами. Пытаюсь понять что вы делали со своим авторитетом среди противоположного пола в пятом классе, но судя по всему у вас и сейчас этим проблемы: для такого авторитета не нужен фильтр Калмана.
+
avatar
  • WHALE
  • 02 декабря 2016, 15:19
0
Самым крутым был П416 а писать фильтр Кулмана я детей не заставляю читайте внимательнее мой пост, хотя пид они осилят точно.
Как раз спаять это не главное, главное — понять как работает и настроить.
+
avatar
0
П416 — это все потому что он германиевый?
+
avatar
  • vovadpua
  • 02 декабря 2016, 10:58
+3
Поставить моторы мощнее, колеса чуть побольше, плюс добавить пару датчиков например датчик приближения и штук пять направленных ик приемников, на пояс повесить ик излучатель, и робот будет таскать за вами ящик пива.
+
avatar
  • Aloha_
  • 02 декабря 2016, 11:07
+26
Все бы хорошо, но датчик приближения не даст вам подойти к роботу= ) так и будет он за вами с пивом ходить, но не даст =))))))))))))))))))
+
avatar
  • AlesX
  • 02 декабря 2016, 11:13
+18
Лето, жарища. Мужик идет из бани и несет канистру с пивом. Идет и мечтает,
как придет домой и будет пить пиво. В раздумьях идет и пинает все, что под
ногу попадется. Пнул бутылку, она об камень и разбилась. Из нее вылетел джинн:
— Загадывай любое желание!
Мужик подумал-подумал:
— Хочу, чтобы в этой канистре пиво никогда не кончалось!
Джинн поколдовал и исчез.
А мужик четвертый год канистру открыть не может.
+
avatar
  • angryman
  • 02 декабря 2016, 13:43
0
Было бы неплохо еще звуковое сопровождение добавить. Так и будет он за вами с пивом ходить, говорить «а пивка не желаете ли?», но не даст.
+
avatar
+2
просто назовите его Алёной, Аллёна даст!!!
+
avatar
  • SEM
  • 02 декабря 2016, 11:37
+1
Поставить моторы мощнее, колеса чуть побольше
… и получится «Сигвей»…
+
avatar
  • OkeaH
  • 02 декабря 2016, 13:37
0
+
avatar
0
о_О Робота из фаллаута сделали :)
+
avatar
  • -VOL-
  • 02 декабря 2016, 11:05
0
Однозначно плюс
+
avatar
  • Demz
  • 02 декабря 2016, 11:06
+1
так.
Шасси есть.
Электроника есть.
Инструкция теперь тоже есть.
Осталось кудато деть лень и я повторю эту конструкцию))))
+
avatar
+1
Как счастливый обладатель платформы-донора рискну утверждать, что драйвер H-моста на L298N для ее двигателей это не перебор, а самый минимум.

Двигатели платформы имеют сопротивление 3.2 Ом.
При напряжении питания платформы порядка 6 Вольт (4 батарейки х 1.5 Вольт) получаем стартовый ток одного двигателя платформы — 1.8 Ампер.

L298N держит 4А суммарно (по 2А на канал), так что самое оно. Иначе бы драйверу плохело бы при стартах, а на обратном маятнике режим работы самый для драйвера тяжелый — приходиться постоянно дергаться туда-сюда.

У «народного» и более дешевого H-моста L293D — 1А на канал, этого маловато будет.

А как Вы логику питаете? Через Step-Down? Мне так и не удалось добиться устойчивой работы логики совместно с двигателями. Логика висла опять же на стартах/стопах двигателей.

UPD. А, сообразил. Вернее вспомнил. У мне Step-Down не получалось использовать, потому что это тварь двигатель в момент старта просаживает напряжения с батареек до уровня ниже 5 Вольт. А у Вас в качестве питания аккумы, по идее они легче отдают большие токи без просадки напряжения.
Ваш робот токи на двигателях или хотя бы напряжение питания в процессе работы не меряет? Было бы интересно на просадку посмотреть.
+
avatar
0
А как Вы логику питаете?
Да, через Step-down. Копеечный LM2596. Еще выход +5В есть на Н-мосте, там линейный стабилизатор. Но я что-то побоялся с него запитываться.
+
avatar
  • flamik
  • 02 декабря 2016, 11:16
+5
L298N — далеко не молода. L293D — тоже в преклонном возрасте. Очень большие потери в тепло.

Ориентируетесь на мосты с полевиками aliexpress.com/item/DRV8833-2-Channel-DC-Motor-Driver-Module-Board-1-5A-3V-10V-H-Bridge/32752844339.html
+
avatar
0
У этого ток для такой платформы маловат…

А, нет, 1.5 А это на канал, и 2А в пике. Как раз то что надо.
Красава.

О, ему чего, защитные диоды внешние не нужны? Точно, красава…
+
avatar
  • flamik
  • 02 декабря 2016, 12:44
0
Мосфеты появляются на свет с диодами :)
Прошу еще учесть мизерные потерь энергии.
При питании от одного элемента lipo через L298N или L293D потери составят 30%-50%. Для отвода тепла на L298N и лепят такой радиатор.
+
avatar
0
Ну на обычных то мосфетах диоды рекомендуют таки подстраховывать внешними.
+
avatar
  • flamik
  • 02 декабря 2016, 11:12
+2
Очень радуют такие посты. Спасибо!

После такого в небо тянет? Летающее крыло?
+
avatar
0
Хотелось бы небольшую ракету. Но боюсь не потяну механическую часть.
+
avatar
  • flamik
  • 02 декабря 2016, 11:21
0
На карамельном топливе все очень просто, мне кажется даже проще вашего проекта.
А вот шум при взлете, динамика, уффф класс.
+
avatar
0
Клеить корпус, придумывать крепеж для рулевых машинок, бороться за каждый грамм веса. И искать ее потом. Хорошо если целиком и в поле в случае удачного запуска. Или по частям и в лесу в случае неудачного.
+
avatar
  • AlesX
  • 02 декабря 2016, 11:36
0
Ракетостроение всегда было рискованным делом… Что моделирование, что «взрослые» ракеты
+
avatar
+1
Не могу не согласиться. Маршал Неделин много бы нам рассказал по этой теме. Если бы мог.
+
avatar
  • flamik
  • 02 декабря 2016, 11:41
0
Там время полета ~10 секунд, двигатель работает ~ пару секунд.
Рулить не придется, все рули на скорости звука отпадут. Достаточно придать небольшое вращение и проект по прямой уйдет прямо в небо…
А вот собрать альтиметр и радио маяк придется :)
+
avatar
0
Рулить не придется, все рули на скорости звука отпадут.
А газодинамические рули? А поворотное сопло? )
+
avatar
  • flamik
  • 02 декабря 2016, 11:50
0
Сопло из кошачьего туалета не поворотное :))))))))
+
avatar
  • rx3apf
  • 04 декабря 2016, 13:30
0
Погуглите на тему «water rocket». Была у меня где-то ссылочка (но так просто не найду уже) на страничку, где мужик их делал и двухступенчатыми, и с дополнительными «ускорителями». С записью высотомера, с видеосъемкой с борта. Материалы — у любого мусорного контейнера, топливо из-под крана. 200 метров — не предел. До лета еще много времени…
+
avatar
  • vasilio
  • 02 декабря 2016, 11:50
+2
То же самое без ардуинства
www.myrobot.ru/news/2008/09/20080910_1.php
+
avatar
+1
Как-то он уж очень эпилептично балансирует )
Если уж хочется совсем без программирования, можно найти аналоговый акселерометр. А пропорциональную, дифференциальную и интегральную компоненты реализовать операционными усилителями и подстроечными резисторами. Уверен, что в первых ракетах так и было.
+
avatar
  • abyrwalg
  • 04 декабря 2016, 04:23
0
реализовать операционными усилителями и подстроечными резисторами. Уверен, что в первых ракетах так и было.
вобщем-то, в Фау обошлись механикой)
+
avatar
0
Надеюсь, вы про Фау-2, а не Фау-1? Где бы про это почитать? Википедия радостно рассказывает про турбонасосные агрегаты, перекись водорода, этанол и жидкий кислород, но про инерциальную систему наведения молчок. Наверно даже сегодня лишние знания в этой области умножают скорбь.
+
avatar
  • uyka60
  • 02 декабря 2016, 12:10
0
молодец… плюсую… думаю такую конструкцию повторить для подрастающего поколения (вместе с ними конечно)
+
avatar
0
Любопытный обзор!
Заказал себе подобное шасси пару недель назад чуть дешевле, за 8.55 вот здесь, но оно походу чуть меньше обозреваемого… Жду когда посылка придет, и будем с сыном роботов мастерить))
+
avatar
  • kn_dima
  • 02 декабря 2016, 12:51
0
Похожие конструкции

Этот на шаговиках и ардуинке, умеет сам вставать:
www.youtube.com/watch?v=038e2j9nE3M

Этот — на шаговиках и малинке с камерой — распознаёт «дорожные знаки», ездит по линии:
www.youtube.com/watch?v=7ZKRFJymi3M
www.youtube.com/watch?v=O6XkH84JYjU
www.youtube.com/watch?v=3BJFxnap0AI
+
avatar
  • OkeaH
  • 02 декабря 2016, 13:26
+3
По названию обзора подумал речь про такого:
+
avatar
  • flamik
  • 02 декабря 2016, 14:09
+1
Эта игрушка намного примитивнее, а смотрится гораздо круче :)
+
avatar
-4
Прикольно но как сказал первый комментатор смысла в данной поделке никакого, разве что самоудовлетворение от сделанного.
+
avatar
  • diews
  • 02 декабря 2016, 13:56
+2
То есть все, что нельзя использовать не имеет никакого смысла?) Дизайнеры, музыканты, режиссеры и прочие деятели искусств бросайте все свои поделки и пиздуйте в поля и на заводы.
+
avatar
-2
Имеет если это потом внедряется. Как будто автор поста что то новое изобрел ей богу.
+
avatar
+4
Не то что карабинчики по долляру и прочее, уж оно то куда полезнее для прогрессивного человечества.
+
avatar
  • gloin37
  • 02 декабря 2016, 18:41
0
Очень интересно! Спасибо за обзор.И я думаю, что показатель интересной конструкции и отличного обзора это количество коментариев( положительных и отрицательных)
+
avatar
  • Onegin45
  • 02 декабря 2016, 19:07
0
Отличная поделка. Позитивная. Жаль, больше половины постов — махание писюнами от зависти ввиду невозможности сделать также.
+
avatar
  • zamig68
  • 02 декабря 2016, 20:14
0
при применении UNO вместо NANO, в скетче надо что-то менять?
+
avatar
0
Надо смотреть, на каких ногах у UNO аппаратный i2c, а какие умеют ШИМ.
+
avatar
0
Глядя на схему подключения — должно пойти.

i2c — ноги A4, A5
10 и 11 нога — ШИМ есть. Но можно и другие выбрать.

foros.giltesa.com/otros/arduino/fc/docs/pinout/uno.jpg

+
avatar
  • panama
  • 02 декабря 2016, 21:56
0
Как я завидую таким самоделкиным… У самого руки не из туловища.
Обожаю такие обзоры.
+
avatar
  • snows93
  • 03 декабря 2016, 02:54
-2
Опять реклама ардруно.
+
avatar
  • Dimon_
  • 04 декабря 2016, 02:07
+3
Вы так говорите, как будто это что-то плохое.
+
avatar
  • kiv69
  • 09 декабря 2016, 04:38
0
и что тут плохого? Пусть человек лучше на ардуино делает, чем никак. Я лично на пиках делаю, так как с них начал и мне хватает, avr и stm давно валяются в загашнике с надеждой, что когда-нибудь придёт и их время. Хотя у атмелов шансы нулевые, скорее всего кому-нибудь подарю