Инженеры из Disney Research разработали метод, позволяющий роботам или анимированным персонажам выполнять быстрые движения без остаточного раскачивания, которое обычно возникает после них. Для этого на этапе планирования движения алгоритм анализирует поведение модели и оптимизирует движения электромоторов так, чтобы погасить низкочастотные колебания, рассказывают авторы статьи в журнале ACM Transactions on Graphics.
Одно из отличий реального устройства от идеальной модели заключается в том, что при движении в нем неизбежно возникают деформации. В случае с быстрыми движениями и тяжелыми компонентами эти деформации приводят к достаточно сильным остаточным колебаниям. К примеру, если переместить висящий трос в другую точку, после остановки руки он еще долго будет раскачиваться из стороны в сторону, пока колебания окончательно не пропадут. Основных путей решения этой проблемы два: сделать детали как можно более жесткими, но это обычно подразумевает и увеличение массы, или сделать движения как можно более медленными, что так же не всегда приемлемо.
Есть и третий путь — заранее совершать помимо целевых движений дополнительные, призванные скомпенсировать будущие колебания. Инженеры под руководством Морица Бехера (Moritz Bächer) создали алгоритм, позволяющий оптимизировать движения анимированных персонажей, состоящих из жестких и гибких сегментов, таким образом, чтобы минимизировать остаточные колебания после быстрых движений.
Сначала необходимо создать модель анимируемого персонажа. Она состоит из жестких сегментов, соединенных между собой механическими соединениями, а также деформируемых сегментов, соединенных с жесткими. После этого алгоритм получает от пользователя движения модели в виде набора изменений углов поворота моторов. Затем алгоритм проводит квазистатическую симуляцию, в результате которой он получает набор промежуточных состояний модели без учета деформаций, возникающих во время быстрого движения. На их основе он затем меняет заданные пользователям движения таким образом, чтобы промежуточные состояния динамической модели были максимально близки к промежуточным состояниям модели во время квазистатической симуляции.
Авторы проверили работу алгоритма на пяти разных моделях, в том числе достаточно сложных, таких как человекоподобный персонаж, боксирующий или играющий на барабанах. Эксперименты на реальных персонажах из проволоки показали, что алгоритм достаточно эффективно гасит остаточные колебания, хотя и не полностью.
В прошлом году немецкие инженеры создали отчасти похожий алгоритм, предназначенный для дронов. Он позволяет им перемещать подвешенные грузы таким образом, чтобы погасить их остаточное движение после перемещение. Для этого дрон тормозит не в конце маневра, а чуть заранее, останавливая груз, а затем снова разгоняется и прилетает в конечную точку.
Кроме того, ранее мы рассказывали о другой работе группы Морица Бехера, касающейся роботов из проволоки. Разработчики создали алгоритм, позволяющей с помощью изгибов создавать из проволоки части тела анимированных персонажей, способных выполнять различные движения. Пользователь задает строение тела, состоящее из прямых сегментов, соединенных сочленениями, а также показывает целевые движения. После этого алгоритм автоматически заменяет прямые сегменты на изогнутые проволоки, форма которых подобрана таким образом, чтобы один и тот же набор проволок мог охватить все заданные движения.
Григорий Копиев