Как стать автором
Обновить

Комментарии 23

Отлично! Добротная инженерная разработка, стиль изложения и оформление тоже на высоте.

А нет мысли реализовать осциллирующий подвес? Была бы мегаинтересная платформа для экспериментов. Или энергозатраты не позволяют сделать такое на автономном источнике? Не пробовали прикинуть?

Спасибо, послушал Максима Ильяхова и выкинул половину слов :)

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

Технарь, читающий Ильяхова - редкое явление) Результат налицо.

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

Хорошая игрушка получилась. А насколько быстро оно ездить может? разонгать бы до десятков километров в час - было бы куда интереснее. Я тут не специалист, но чаще всего когда такие вот роботы в мультиках или кино (нарисованные короче) ездят - они наклоняются вперед а не стоят вертикально. Это "киношный эффект" всего лишь или реально при больших скоростях стабильное положение будет с наклоном вперед?

Не киношный эффект www.youtube.com/watch?v=WOVhm-JA-wg (не лучший ролик для демонстрации, но что-то найти можно)

Ну и за одно десятки км/ч. Правда не чисто от робота, но балансирует вперед-назад исключительно робот.

Тут робот сильно отклоняется: https://www.instructables.com/Brushless-Gimbal-Balancing-Robot/

Скорее нужно бесколлекторные моторы использовать и какой-нибудь отдельный контроллер типа ODrive (тоже в планах)

Но можно рассмотреть требования к железу, если разгонять до 10км/ч: это 2.7m/c, при диаметре колеса 72мм, угловая скорость ~12 оборотов в секунду. При микрошаговом режиме, 1600 пульсов на оборот, почти 20kHz только для того, чтобы вращать колеса, но надо еще надо учесть разрешение по скорости для плавной аппроксимации ускорения, т.е. частоту прерываний бы раз в 10 увеличить, итого 200kHz только на таймер. Но если взять контроллер побыстрее, например, ESP WROOM32, 240MHz, то вполне осуществимо, но надо еще учесть, как уменьшится момент мотора при такой скорости.

Вопрос, обратный предыдущему: каковы энергозатраты в случае если надо чтобы платформа не ехала, а стояла на месте (вертикально)?

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

А так, если поставить на ветру да ещё и на наклонной плоскости, то, конечно, затраты будут в разы больше. Правда, и вертикально он стоять не будет :)

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

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

А если моторами двигать противовесы?

Кажется, вы только что изобрели хвост

Классный проэкт. На GitHub есть отличный проэкт робота балансира на bldc моторах с применением векторного управления (FOC) на базе arduino.

https://github.com/simplefoc/Arduino-FOC-balancer

Класс! Вдохновляет! Обязательно попробую свою реализацию!

Отличное, ëмкое и понятное изложение без воды! Спасибо!

Небольшая ремарка насчёт matplotlib: вы уже указали label при вызове plt.plot(), поэтому достаточно вызвать plt.legend(), чтобы сгенерировать автоматическую легенду. Такое использование гораздо лаконичнее.

Ещё одна ремарка относительно PID: для контроллеров обычно используют целочисленную арифметику. Если уже считаете с плавающей точкой, то для накопительных переменных надо брать число с большей точностью для избежания переполнения, иначе малые приросты просто перестанут менять перменную.

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

я только за, если таймер может генерировать импульс в широком диапазоне частот, а у нас есть только делитель частоты и прерывание по переполнению счетчика. Плюс импульс на шаг выглядит как LOW->HIGH, подождать как минимум микросекунду, HIGH->LOW - уже какая-то логика, к тому же 2 двигателя - 2 таймера, а в Nano их три и не все можно программировать без последствий для измерения времени.

вам нужен таймер с выходом на ногу контроллера
большой диапазон достигается за счет того что можно менять и регистры таймера и делитель частоты
16-bit Timer/Counter1 with PWM вот этот раздел в reference manual

спасибо! попробую в след. версии

Интересно, а вот если увеличить масштам, обьем этого робота, то будет вопще супер. Кстати а именно только через Arduino Nano можно собрать или можно собрать из разных Arduino микрокотролеров? Нагрузка какая типо нужна ли подзарядка? потомучто этим роботам нужна подзардка, если конечно я неошибаюсь.

Прекрасная работа, @zjor!

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

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

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

Буду очень признателен, если кто в двух словах пояснит, где используются уравнения движения в связке с PID, или отправит в направлении источника знаний, с примерами))

спасибо,

это верно, PID-регулятору все равно чем управлять, но подгонять коэффициенты сразу на устройстве может быть очень дорого и долго, более того, не при всех коэффициентах система стабилизируется, а реальное устройство может сломаться. Поэтому все отлаживается на модели, а для этого нужны уравнения. Для подбора коэффициентов достаточно линеаризованной модели, тогда уравнения существенно упрощаются (sinx ~ x, cosx ~ 1, и т.д.), но я люблю посмотреть на картину в целом, поэтому моделирую полную систему. Могу посоветовать вот эти 2 канала: https://www.youtube.com/watch?v=Pi7l8mMjYVE&list=PLMrJAkhIeNNR20Mz-VpzgfQs5zrYi085m, https://www.youtube.com/user/ControlLectures/playlists

Шикарно!

А вот вопрос, как владеющему математическим аппаратом: насколько сложнее рассчитать и сделать робота BB-8 ? Я где то видел ролик с идеей, и где то спрашивал - почему китайцы до сих пор их не продают?... В общем - идея такова: нижняя часть - просто надувной шар (например - гимнастический) верхняя часть - "нашлепка" с электроникой и механикой. Механика - три колеса которые устанавливаются на нижний шар и собственно обеспечивают баланс.... китайцам то и надо - делать и продавать только верхнюю часть, а нижнюю покупатель пусть ищет в спортмастере...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации