Войти
ФлеймФорумПрограммирование

множители Лагранжа (4 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4
#45
10:17, 23 июня 2019

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


#46
13:44, 23 июня 2019

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

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

#47
(Правка: 19:07) 19:06, 24 июня 2019

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

почитал пейперы, не нашел там упоминания лимитов но опять же попались двухэтажные формулы лагранжа / лагранжа эйлера.

#48
20:47, 24 июня 2019

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

Наверняка. как - открываем какие то учебники по робототехнике. Наверняка классическая задача из той области.

#49
5:34, 25 июня 2019

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

#50
9:30, 25 июня 2019

Suslik
> можно проецировать

Еще бы понять что такое это "проецировать".

Его задача укладывается формально в следующую:
есть система неравенств:
f1(x1, x2..xn) <= 0
f2(x1, x2..xn) <= 0
...
fm(x1, x2..xn) <= 0

m < n

Есть целевая функция:
L=L(x1...xn)

Задача - найти минимум L на множестве x1..xn так чтобы выполнялась система неравенств.

Беда ТС в том что

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

- эта задача, по моему, называется выпуклым программированием. Когда f1..fm, L - линейные - получаем классическую задачу линейного программирования.

Обо всем этом написано много хороших книг, их надо просто читать и понимать.

#51
11:31, 25 июня 2019

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

> f1(x1, x2..xn) <= 0
> f2(x1, x2..xn) <= 0
большинство самых типичных для IK солверов методов основаны на том, что удовлетворяют каждому из этих уравнений связей последовательно и независимо. когда я сказал
> можно проецировать сразу все ограничения в суставе как систему, это может улучшить сходимость.
это значит, что несколько функций f_i, относящихся к одному суставу, можно проецировать не независимо, а все вместе, используя геометрические особенности самого сустава. таким образом можно улучшить даже слабые солверы и сделать их более эффективными.

#52
11:38, 25 июня 2019

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

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

#53
11:47, 25 июня 2019

Suslik
> только нафига умничать

а что, можно только тебе? или ты априори глупости не несешь? )

>это в любом случае будет какой-то напальцевый итеративный метод

да сенсей.. и зачем же тогда так много книг написано, да дурачки они.

> можно проецировать не независимо, а все вместе

проецировать, да, я понял. Тут главное чтото куда то спроецировать.

#54
11:49, 25 июня 2019

Mira
> Если бы я знал решение,  кто нибудь пояснил на пальцах

пля.. ты такой простой прям.

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

#55
(Правка: 27 июня 2019, 21:21) 13:51, 26 июня 2019

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

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

+ Показать

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

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

Страницы: 1 2 3 4
ФлеймФорумПрограммирование