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

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

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

Вместо полинома лучше использовать разложение частотной характеристики объекта управления на биквадратные секции. Тогда контроллер можно строить как инверсию нулей в полюса и наоборот. Кроме того, биквадратное предсталение (SOS в Матлабе) позволяет решить проблему стабильности вычислений.

Расскажите, пожалуйста, о данном методе. Возможно можете посоветовать литературу?

Я плохо знаю терминологию на русском языке в этой предметной области, так что не судите строго :)

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

В Матлабе есть функция преобразования State Space модели (A,B,C,D) в SOS - ss2sos. SOS модель можно импортировать и визуализировать в fvtool. Основной смысл SOS - разбить полином на более простые элементы, делая процесс вычислений устойчивым и предсказуемым. Реализация вычислений с помощью SOS секций на PC или FPGA особых затруднений не вызывает.

State Space модель может также быть конвертирована в zero/pole/gain модель. Это позволяет построить идеальный feedback контроллер путём использования в контроллере полюсов на местах нулей объекта и нулей на местах полюсов. Добавив в котнтроллер интегратор получаем идеальный feedback контроллер. Это справедливо, конечно, если наш объект (plant) является минимально-фазовой системой, т.е. не имеет нулей вне единичной окружности.

Попробуйте поискать литературу по ключевым словам типа "book Digital Signal Processing MATLAB". Наверняка и на русском языке это есть, может кто ещё из читающих эту тему вам посоветует.

Это, по сути, синтез по желаемой ЛФЧХ. Но не стоит так делать в системах, где ожидается парирование регулятором возмущений - там сокращения нулей/полюсов может не произойти. ;)

Не очень понял ваш комментарий, но наверно вы говорите о System Identification. Это случай, когда мы измерили АЧХ и ФЧХ объекта и хотим представить его в виде набора нулей/полюсов. Тогда, конечно, полной компенсации за счет взаимного уничтожения нулей/полюсов не получится. В данной статье другой случай. У нас есть аналитическое выражение для State Space, котрое мы можем аналитически-же разложить на нули/полюса и построить совершенно идеальный feedback контроллер.

Чаще всего модель заметно отличается от реальной системы, но в данной статье, по-моему, рассматривается идеализированный точный вариант.

Я хотел сказать, что описанная вами процедура в советской литературе, как мне кажется, более всего соответствует синтезу по желаемым ЛАФЧХ.

Не совсем понял про " мы можем аналитически-же разложить на нули/полюса и построить совершенно идеальный feedback контроллер". Насколько я понимаю, данная система в пространстве состояний может быть представлена в виде четырех (по количеству состояний) передаточных функций с полюсами и нулями, где входом будет задание силы/скорости, а выходом одна из переменных состояния. И Вы имеете в виду, что к каждой это передаточной функции можно было бы сделать "идеальный feedback контроллер"? Ну пусть не к каждой, а, например, к двум, которые интересуют: угол и позиция/скорость

Если мы имеем систему с несколькими степенями свободы (например угол/позиция) и таким же количеством наших элементов воздействия, то сначала надо выполнить decoupling. После этого можно управлять независимо по каждой из степеней свободы. Decoupling - отдельная большая тема, я не хотел бы смешивать всё в одном флаконе :)

Если я понял правильно, здесь мы имеем систему с одним элементом воздействия. Далее не важно, сколько внутренних переменных состояния имеет наш объект, т.к. для линейной системы у нас будет только одна АЧХ/ФЧХ. Если мы знаем полином для этой ЧХ, то можем разложить полином на нули/полюса и так далее.

Очень интересно, обязательно почитаю и попробую. Спасибо большое!

Без линеаризации не получится решить данную задачу. По поводу углов, можете посмотреть, к примеру, на график разложения синуса в ряд Тейлора. Из рисунка видно, что до значения pi/6 угол отклонения можно считать малым. В нашем случае получилось 2 градуса.

Вы считаете, что у стандартной задачи маятника на тележке нет нелинейных регуляторов?

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

Нормально нелинейные системы пишутся в пространстве состояний, \dot x = f(x,u) это тоже пространство состояний. А вот для записи в линейной A,B форме надо линеаризировать.

А разве на основе нелинейной записи в пространстве состояний можно потом придти к какому-то регулятору, синтезировать его и найти параметры? Думал для того и линеаризуют, чтобы разработать регулятор, так как математика, вроде бы, с линейными системами гораздо лучше умеет обращаться

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

А не могли бы Вы привести пример такого регулятора? Это как если бы тележка могла развивать только максимальную (в обе стороны) скорость или стоять на месте?

Это вы имеете ввиду sliding mode? Раз у вас управление это сила, то именно она должна принимать крайние значения, а не скорость.
А вообще надо смотреть литературу по cart-pendulum nonlinear control. Там наверное и какие-то feedback linearization есть, backstepping.

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

Да, sliding mode тоже первым в голову пришел, но думал может еще какие есть.

Спасибо за рекомендацию по литературе

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

Не очень понял, почему в цифре можно об этом не париться? Можно поподробнее? Есть какие-то примеры подобного подхода?

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

Я тоже так думал, пока не пришлось реализовывать систему с обратной связью (feedback control, FBC). Для FBC принципиально иметь минимальную задержку в петле обратной связи, поэтому FIR, FFT и прочие прелести сильно вредят устойчивости. Гораздо больший запас по фазе получается в цифровыми фильтрами типа IIR. Что касается аналоговых фильтров, то им соответствуют биквадратные цифровые IIR фильтры (Second Order Section, SOS).

Так есть реализация FIR вообще без задержек, и в устойчивости они наоборот в приоритете. Также есть алгоритмы для преобразования произвольных фильтров с линейной фазой к каузальному виду, то есть минимизирующих задержку отклика к максимально возможной, пересчитывая фазы в зависимости от амплитуд. IIR же не зря разбивают на биквады — потому что даже на не особо больших порядках они очень быстро теряют численную устойчивость. А у FIR таких проблем нет по определению.

FIR без задержек должен не иметь нулей на единичной окружности или вне её. Т.е. он фактически превращается в комбинацию минимально-фазовых SOS IIR фильтров. Поэтому не умаляя общности можно говорить, что всё реализовано на IIR фильтрах.
А вообще хотелось бы посмотреть на ваш пример FIR фильтра, который при заданной амлитудной частотной характеристике имеет такую же минимальную задержку, что и минимально-фазовый IIR фильтр :)

FIR без задержек ничего не знает про нули. Это просто комбинация прямой реализации со сложностью O(n^2) и быстрых реализаций со сложностью O(log(n)) опираясь на тот факт, что свёртку можно распараллелить. Хотите больше конкретики — ну так давайте конкретную АЧХ, сделаем оба варианта.

Пример минимально-фазового IIR фильтра 2-го порядка (Fs = 48 kHz):

Numerator:
0.56999999999999995115018691649311222136
-0.208009478672987219161072403039725031704
0.064150573886480918850416799159575020894
Denominator:
1
-1.553554502369669521044670545961707830429
0.981811953909393464456911715387832373381

---------------------------------------------------------------------------------------

Рассчитайте, пожалуйста, FIR с разумно-близкой АЧХ и меньшим чем у IIR набегом фазы:

Не понял вопроса. Это же не произвольная АЧХ, это АЧХ конкретного минимально-фазового фильтра. Понятно, что минимально-фазовее него быть уже не может. А чтобы переделать его в FIR думать вообще не надо — достаточно просто импульсную характеристику замерить.

Вот так она выглядит

А это её спектр через FFT


Тут из полезного разве что фазу обнулить:
так

Или фазу развернуть, а обнулить амплитуду:
так




Произвольная АЧХ потому и произвольная, что её можно нарисовать любую, в зависимости от задачи,
например


Можно сравнить их импульсные характеристики на одном графике
вот

Второй вариант затухает даже быстрее.

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

  • Минимально-фазовыми могут быть только IIR фильтры.

  • Если фаза минимальна, то и задержки минимальны.

  • Поэтому IIR фильтры исключительно популярны в системах управления с обратной связью.

Интересно было бы посмотреть на публикацию, где излагается feedback контроллер, построенный на FIR или FFT.

Что, если я скажу вам, что для произвольной АЧХ, определённой до бесконечно высоких частот, существует только одна минимально-фазовая ФЧХ? По работе, я вычислял эту ФЧХ для любой заданной АЧХ. И эта минимально-фазовая ФЧХ может быть апроксимирована с произольно высокой точностью набором минимально-фазовых SOS IIR фильтров (их количество просто будет расти с ростом требований по точности совпадения АЧХ).

Минимально-фазовыми могут быть только IIR фильтры
Разве мои пример выглядит не достаточно убедительно? IIR имеет бесконечную длину только в теории. На практике она заканчивается как только доходит до шумовой полки или eps.

Интересно было бы посмотреть на публикацию, где излагается feedback контроллер, построенный на FIR или FFT
Навскидку

Что, если я скажу вам, что для произвольной АЧХ, определённой до бесконечно высоких частот, существует только одна минимально-фазовая ФЧХ?
А как, по-вашему, мой вариант фильтра получился? Я же не вручную ФЧХ рисовал. ФЧХ посчитался через кепстр. Причём даже без матлаба и прочих маткадов, кодом на си-шарпе.

Для контроллеров нелинейных систем все средства хороши, включая FIR и FFT :)

Я делал системы с FIR в обратной связи для компенсации вибраций. Это позволяло динамически подстраивать параметры при вариации частот вибраций.

А насколько далеко частота вибраций была от частот, на которых работала система? Можете что-то сказать по этому поводу https://habr.com/ru/post/724006/#comment_25362626 ?

Вибрации гуляли в диапазоне 50-95 Гц. Задача системы - гасить колебания, то есть стоять в точке.

И FIR успешно справился с задачей?

Это была адаптивная система, параметры FIR подстраивались в реальном времени. На прототипе работало хорошо.

Для контроллеров нелинейных систем все средства хороши, включая FIR и FFT :)

А не подскажите какой максимально резкий спад амплитудной характеристики без существенного изменения фазовой характеристики можно получить с помощью подобных фильтров? С учетом того, чтобы это еще потом смог обсчитывать контроллер (например, какой-нибудь Siemens) в реальном времени. Была задача, где в системе управления в обратной связи был паразитный упругий элемент, резонансная частота которого была довольно близко к полосе пропускания двигателя, что мешало повысить быстродействие системы. Например, если у двигателя была полоса пропускания около 25 Гц, то собственная частота колебаний упругого элемента была около 50Гц. Добавление фильтров с довольно крутым спадом АЧХ, увеличивало задержку в обратной связи, а меньшие порядки фильтров не особо срезали ненужную частоту упругого элемента по причине его близости к полосе пропускания движка

Да, ваша задача это практически идеальный пример, когда использование IIR фильтра с нулями/полюсами обратными резонансу на 50 Гц было бы верным решением. Мы работали с системами, где подрбных резонансов в полосе пропускания было 3-5 штук. Чем точнее мы их измеряли, тем точнее была компенсация набором IIR фильтров, тем более высокую полосу пропускания можно было получить для feedback loop.

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

Даже классический PID контроллер является частным случаем минимально-фазового IIR фильтра :)

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

Сейчас стали появляться контроллеры, позоляющие реализовать практически любую архитектуру управления. Это делается путём компиляции вашей Simulink модели прямо в код, исполняемый в процессоре контроллера. В этом случа мы можем достроить достаточное количество универсальных IIR фильтров с произвольным набором нулей/полюсов.

Спасибо. Надо будет поизучать подробнее про IIR фильтры. Может быть подскажете хорошую литературу по этой теме?

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

Скачайте все книги по ЦОС, которые сможете найти, выберите ту, в которой больше картинок. Рекомендую начать с этой.

Спасибо за рекомендации

Согласен, что в цифре можно не париться, если вы имеете в виду, что регулятор, реализуемый внутри контроллера, может иметь любую произвольную функцию. То есть да, не надо подбирать схемы с резисторами, конденсаторами и индуктивностями, чтобы его реализовать. Но насколько я понял из статьи, нули и полюса (которые определяют поведение системы в целом, а не только регулятора) там используются, чтобы выбрать коэффициенты для регулятора, то есть не надо их подбирать вручную или экспериментально. Если я правильно Вас понял, то Вы предлагаете модель системы записать в виде нелинейных уравнений, а уж само регулирование подбирать вручную, экспериментально? Поправьте, если ошибся

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


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

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

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


image


Введем следующие обозначения


image
(внешнее воздействие представляется в виде линейной функции от времени),


и перепишем уравнения в виде (следите за руками)


image


Теперь можно вручную поизменять параметры


График зависимости угла отклонения alpha от времени

Подвигаем ползунки


image


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


Все это, конечно, является методом "грубой силы", но зато не требуются довольно сложные рассуждения об управлении. Здесь все просто — справится даже крановщик. Разумеется, я мог где-то ошибиться (например, в преобразовании системы к явно зависящей от старших производных), но принципиально задачу можно решить исключительно численными методами

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

Вы правы, перепутал, вот улучшенный вариант


Исправленный график зависимости угла отклонения alpha от времени

image


Заметно, что принципиально график изменился не сильно, видимо, угол со скоростью связан как-то примерно пропорционально

Попробовала ваш метод, задала воздействие по формуле f=c1*t+c6 с полученными коэффициентами, действительно колебания маятника минимальны. Но тележка едет бесконечно, а нам необходимо, чтобы она пришла в конечную заданную точку за меньшее время.
Благодарю за ваши комментарии и решения!

Система нелинейная и надо это исправить, потому что иначе не выйдет далее перейти к нормальной форме Коши

image


Строго говоря, это не так — вторая производная от alpha входит во второе уравнение линейно, её можно выразить через все остальное, потом подставить выражение в первое уравнение, решить его относительно второй производной от X, потом полученное выражение подставить в выражение для второй производной от alpha. В результате возникнет система двух уравнений второго порядка, разрешенных относительно высших производных. Но выражения там получатся пугающие

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

Не очень понял, как эту систему можно считать линейной, когда там синусы и косинусы от одной из переменных (а также её квадрат). Линейность по вторым производным дает возможность выписать уравнения явно, но сами эти уравнения в матричном виде уже не запишешь

В матричном виде тоже относительно вторых производных. M(q)\ddot{q} +C(q,\dot{q}) + G(q) =f, где q - обобщенная координата.

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

(из практики) Постановка задачи (для разработки математического алгоритма решения и вытекающих электро-механических требований к приводным механизмам и кинематической конструкции):

Выполнить захват/перемещение/освобождение/возврат_пустого SingleCargoUnit из позиции LoadPoint в позицию ReleasePoint (аналогично для MultiCargoUnits = = план погрузки)

  • за время, менее заданного лимита, без превышения максимального ускорения для Груза;

  • с нахождением минимальной полной стоимости Погрузки (Энергия + Расход ресурса агрегатов => будут несколько оптимумов, для разных кобинаций приводных агрегатов и вариантов кинематики);

Что в итоге приводит к набору Траекторий и динамике по траектории, для перемещения Груза. После чего математический аппарат и алгоритм, будут существенно отличаться от предложенного выше, а с учетом "посадки на заданную вычислительную архитектуру" - измениться еще больше и поменяется до неузнаваемоти.когда опора крана, точка места взятия груза, точка места освобождения груза - будут подвижны + ветер + охлаждение/перегрев/изменение темпа работы агрегатов (в частности перегрузка судно-судно в открытом море).

Итого: рекомендую разрабатывать controlAlgorithm, когда на входе заданы для Груза: сплайн Траектории, сплайн(ом) Ориентации, сплайн(ом) Скорости, смещение точки захвата относительно центра масс (опционально).

На выходе алгоритма 2D экономайзер (то что видит Оператор или Робот), KWt*hr vs Money (расход ресурса агрегатов). Задача оператора или Робота управлять "джойстиком / api command", удерживая точку слежения экономайзера в заданной 2D области.

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

Касательно вашего алгоритма: как вы рассчитывали траектории движения? Считали потребляемую энергию для всех траекторий и использовали какой-то алгоритм подбора минимального значения? А как в этом расчете учитывали необходимость обеспечить минимальное раскачивание?

для абсолютного большинства случаев, принцип расчета оптимальной траектории (картинка выше) - достаточен.

Стационарные положения в начале и на завершении траектории, плюс известные значения cargoMass, cargoVelocity, cargoWindDrag, windVelocityVector - jпозволяют однозначно рассчитать число Джоулей, для перемещения cargo из одной точки в другую по траектории с заданной динамикой.и ориентацией.

Правила безопасности при подъеме / перемещении грузов - требуют наложения ограничений на положение груза в каждой точке траектории. Управляющий (приводами) алгоритм, работает от обратного (на каждом шаге) - берет на вход текущие значения инерционных характеристик груза + будущую позицию и ориентацию груза, далее по классике высчитываем потребную для шага энергию, под заданную "кинематическую матрицу".

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

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

(Траектории) Синий (подъем) -> ::Желтый (перемещение) -> Фиолетовый (опускание) участки траекторий, представляют собой кубические сплайны, 3-ий порядок сплайна достаточен для всех видов тросовых подъемных систем. Большие порядки, спиральные формы применяются для жесткой кинематики и систем с электрической рекуперацией, где более важна гладкость второй и более производных (каждый разгон и торможение Груза = затраты энергии, F(t)=m*a(t) ).

Вращайте плоскости (показаны специально, угол вращения есть параметр; также как угол наклона сплошного Зеленого отрезка) на которых построены Синии и Фиолетовый сплайны, задавайте предельное отклонение Желтого сплайна от Зеленого отрезка => :Желтый сплайн будет иметь единственную наивыгоднейшую форму.

Синий сплайн имеет "экспоненциальную" форму (перед началом подъема, уже точно известо в какую сторону вести груз), Задавая/измеряя профиль скорости подъема и подъемную силу (энкодер и сила тока тягового двигателя, как минимальный вариант) -> получите массу Груза. Ваша цель - разогнать Груз в заданную сторону, чтобы Каретка на Стреле двигалась линейно (паралелельно и в плоскости сплошной Зеленой линии), тогда Груз отклониться и пойдет по Желтому сплайну (инерционная оттяжка).

Фиолетовый сплайн, имеет форму "гашения инерции" (контрольная точка обращение в ноль горизонтальной Скорости и Ускорения). При дальнейшем опускании, существует единственный профиль темпа перемещения Каретки и Стрелы, когда горизонтальный колебания Груза переходят во вращательные колебания относительно центра Масс Груза (де факто в прецессию вокруг Z оси). Нужно успеть опустить Груз на опору за время пока накопленная Инерция Груза переходит "из одного состояния в другое". При необходимости зависания Груза, профиль темпа перемщения Каретки и Стрелы имеет несколько вариантов для сохранения колебания/прецесии вокруг центра масс груза (собственные частоты колебаний систкмы Груз/Захват/Подвес), то есть минимальные отклонения в горизонтаьной плоскости.

(Алгоритм и математические преобразования) - пишите в личку.

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

Полная Задача (antiSway) - математически должна быть разделена на две части:

a) удержание Груза в заданной 3D области, бесконечно долгое время, без превышения лимита затрачиваемой энергии на такое удержание (maxEloop - прямая производная от доступной динамики "Приводов" + нелинейная реакция "кинематики" при одновременном воздействии Приводов и инерции Груза).

Если maxEloop < maxEexternal (внешние воздействия за тот же период), то решение по траектории удержаниея - существует и де факто сводится к вариациям бесконечной 3D восьмерке, образованной пересечением области удержания (сфера, эллипсоид, итп) и области движения кинематики (цилиндрическая область для боьшинства случаев), то есть включая перемещение Груза по вертикали (переход потенциальной энергии в кинетическую).https://ru.wikipedia.org/wiki/Кривая_Вивиани

б) удержание Груза на заданном удалении от расчетной траектории, за конечное время, без превышения лимита затрачиваемой энергии на компенсацию "инерционной оттяжки" (maxEtime - прямая производная от перемещения Массы по траектории с известной переменной скоростью).

Если maxEtime < maxEexternal + maxEdrive, то решение существует и траектория движения Груза, может быть описана для минимум трех участков, для кривых минимум трего порядка).

б1) для любого момента времени когда известна накопленная инерция Груза, возможно построение траектории подъема или опускания (половина 3D воьмерки), когда кинетическая энергия переходит в потенциальную - за минимальное время и далее переход к случаю а).

Итого. Если траектория не может быть выстроена заранее (задан лимит времени на перемещение, известны координаты начала и завершения), то требуется на каждом шаге решения знать накопленную инерцию Груза (subroutineCargoInertia) и выстраивать для каждого следующего шага решения компенсационную траекторию (subroutineSwayToZero).

Тогда время для трех шагов решения - есть минимальный цикл компенсации. Изменяя темп расчета (до пределов возможностей приводов и кинематки) - получается более длинный или более короткий "отлет" Груза в плане (начало и завершение фиолетового участка), аналогично для набора инерции Груза (синий участок).

То есть исходно необходимо иметь матмодель "подъемника" (включая прогиб ферм, растяжение тросов, проскальзывание итп) и захвата (свободно вращающийся крюк в простейщем варианте), после чего определить сколько возможно потратить на набор датчиков (precision / dataRate vs lifeCycleCost), достаточных для расчета инерции Груза (начните с пустого захвата, в качестве Груза).

Если решается обратная задача Cargo + Sway + environment => Crane/Lift design requirements, то исходно необходимо иметь набор траекторий и грузов (сценарии применения + статистика перемещений).

В матричном виде проще записать такие уравнения

Все с чего то начинают. )

В Вашем примере думаю несколько другая задача, где основная цель это удержание маятника в равновесии. А в статье скорее основная цель придти в заданную точку или набрать нужную скорость без колебаний маятника. То есть больше похожа на что-то такое https://www.youtube.com/watch?v=UqyZW6F7eWY

И там и там колебания. Задача несколько другая конечно, но крутость моего варианта перевешивает разницу имхо

Наша модель тоже может работать быстрее, но углы раскачивания больше и высокая скорость, у движка может не хватить мощности реализовать ее. Также на том видео тележку двигает ременная передача, а у нас колеса, которые могут проскальзывать при больших ускорениях https://disk.yandex.ru/i/MLiPlK0T3faFaQ


Тележка крана имеет ограничения, которые мы учитываем, поэтому такие результаты. https://disk.yandex.ru/i/wmxeO8Z5RdoG2g

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

Ну тут я не знаю, мож вместо сложной системы управления стоит саму конструкцию усовершенствовать? Например шо приходит в голову: чтобы груз болтался не на одном тросе, а на трёх например? Как вышки сотовые тросами закрепляют, чтобы от ветра не свалились...да, возможно габариты увеличится, но мож оно стоит. так мож и скорости можно увеличить, а мож вообще можно придумать такое, чтобы грузы не требовалось перемешать вообще) Инженер должен фантазировать! А не идти на поводу у сложившихся состояния дел

Интересный у Вас взгляд на теорию управления - костыли. Получается как советские луноходы, так и американские астронавты добрались до Луны на "костылях" :) И ведь это только один из многочисленных примеров, не говоря уже о том, что даже заставить двигатель крутиться с заданной скоростью при меняющейся нагрузке без ТАУ у Вас вряд ли получится.

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

У сложности вроде есть математические определения, по Колмогорову например.

Разве исключение раскачивания груза только лишь за счет изменения кривой разгона без какого-либо механического вмешательства в конструкцию не является улучшением системы, упрощением работы с ней?

Ну толку от этой системы, ты на графики посмотри, с параметры 3.

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

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

Ну толку от этой системы, ты на графики посмотри, с параметры 3.

А что не так с графиками? Система достигает как заданного положения, так и нулевого угла маятника

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

Автор же сам выше и пишет...

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

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

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

А насчет пары команд в матлабе, Вы ж сами говорили, что "все гениальное просто" :) Кстати, рекомендую погуглить авторство этой фразы в такой формулировке

А у рабочих через пару лет нейросети отберут работу, будут вместо грузчиков грузить быстро и эффективно... ))

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

На счёт простоты могу порассуждать, в меру своих сил. Точных определений я конечно не помню, видел но не помню, не пользуюсь, пока не нужно, но их вроде там несколько, а значит скорее это все не универсально.. и действительно получается: что для одного хорошо, то для другого смерть. Простота и сложность должно быть связаны со сжатием данных, а сжатые данные без знания базиса фиг поймёшь потом. То есть и отправитель и получатель должны иметь согласованный базис... Например базис Фурье, когда картинки там сжимают или подобное. Вот и идёт пересылка коэффициентов вместо кучи оригинала... А базис будет набором матриц например эн на эн. И при себе нужно их носить, и где тут простота.. можно и сжато сам базис носить на бумажке записанный в виде косинусов, но и они как бы сжатые данные представляют... Нужно знать что такое косинусы и как их вычислять.....

Да, Гебельс натворил делов. Что пришлось в итоге себя убить, и детей своих. Судить я его не буду, был ли он Божией рукой, или рукой дьявола, или просто сам. Я не знаю ни того времени, ни евреев тех времён ничего не знаю, обрывки обычно могут к противоречиям приводить.. и заблуждениям. Я верю токо в то, что Бог мой может указать мне истину и я начинаю в нее верить...

Желаю всем добра и прощения. Милосердие и любовь выше всего написано.

Получается как советские луноходы, так и американские астронавты добрались до Луны на "костылях" :

Ну добрались и что? )) Круто. Потом не добрались. Не нужны костыли оказались... Потому шо они костыли.

А про двигатели промолчу.

Та ты и посчитать то наверное не сможешь... Не понял даже как три троса расположены мои ) треугольником, в плане, тетраэдром в пространстве ) основной... Нема такого, он у тебя токо иза неправильной интерпретации моих слов. А мысль инженера она не останавливается, она течет.. ну хочешь основной элемент вставь, который будет на сжатие работать. Укладка у него на барабане...

Бот наверное, или просто человек тоскующий за советами.... Че, не нравится шо я с Украины и пишу как есть? Ну нравится-ненравится терпи моя красавица, ЗСУ вероятно побывают в Москве и придется кому то смиряться. Уже скоро ребята, я с добрыми намерениями пишу, война это не шутки. Но в душе буду видимо радоваться, не совру, как и вы видимо глубоко где-то в душе радовались, в самом начале.... Но радость моя в отличии от вашей будет праведная.

Телескопически будет складываться элемент со сжатием, например, это шоб не до-бывались, но все равно этот элемент там кажется не нужен. Два троса пускай будет, если в плоскости токо нравится работать...

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

Демоны мешают. Сеять добро.

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

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

Может и не смогу, но буду благодарен, если поможете мне в этом, потому что, видимо, моя мысль недостаточно "течет".

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

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

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

Подъезжает тележка по потолку и одним своим концом становится напротив груза, приводы крутятся, кран опускается, трос как бы один, но с каждой стороны имеет привод. Груз зацепился и тросы его тянут вверх и в сторону движения. На момент начала трос имеет в пространстве форму прямоугольного треугольника, где один конец троса вертикальный, который над грузом... Блин устал набирать. На "ты" не обижайся, я просто хочу по дружески.

Короче будет 3 независимые переменные: перемещение тележки и два двигателя. Тут уже можно оптимизировать управление и мне интуитивно очевидно что колебаний быть не должно.

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

Про радость это общие фразы ни к кому конкретному..

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

"хакнул" хабр ) вставил картинку в конец своей первой статьи, если что..

За это отдельное спасибо, посмотрел

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

Публикации