Литература для обратной кинематики: совместные пределы и не только

8

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

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

Джефф
источник

Ответы:

4

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

Лучший источник, освещающий CCD - это дипломная работа Криса Веллмана. Для минимального / краткого обзора вы можете прочитать этот источник, который упоминает большинство методов там.

Более математическая статья (для исследователя в вас: D) - это http://math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pd f.

Для хардкорного исследователя: http://matwbn.icm.edu.pl/ksiazki/amc/amc19/amc1941.pdf

Это похоже на гибридный метод, хотя это всего лишь слайды с наиболее знакомыми понятиями: http://cmp.felk.cvut.cz/~hlavac/TeachPresEn/55IntelligentRobotics/KjchoInverseKinematics.pdf Еще одна вещь, которую стоит прочитать: http: // www .cns.atr.jp / Эрато / DB / PDF / tevatia-icra2000.pdf

Так как вы сказали, что предпочли бы иметь бесплатные источники, я не буду упоминать о нескольких книгах, которые можно купить в Amazon для решения этой проблемы. Лично я доволен CCD. Для сверхточности я предпочитаю обратный якобиан (где я знаю, что система дает обратимую матрицу благодаря 6 степеням свободы роботизированной установки).

Как можно использовать ИК? В основном, когда вы хотите анимировать персонажа, указав только положение и ориентацию конечного эффектора определенной конечности. (YouTube для примеров). Если вы хотите начать карьеру в робототехнике, IK является обязательным, если вы имеете дело с шарнирными роботами. В мире игр это необходимо, когда вы используете обнаружение движения человеческих жестов с помощью камеры (например, http://www.youtube.com/watch?v=HSradQVj26E - мой упрощенный пример интерфейса wiimote и виртуального робота ccd рука).

teodron
источник
2

Оригинальная статья: Обзор обратной кинематики

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

Каковы виды использования IK?

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

Другой ключевой момент в IK заключается в том, что ваша цель / цель не ограничивается только позицией - ваша цель может быть определена как ротация. Например, если ваши ноги должны вращаться в зависимости от неровной местности, ваша цель вращения IK может быть определена на основе нормы пола. Таким образом, ваши ноги наклоняются вдоль пола, например, когда вы идете вверх по склону. Обратите внимание, что вы также можете использовать IK, чтобы ваша голова (или даже глаза) смотрела в определенном направлении. Если вы хотите, чтобы ваша голова следовала за объектом, вы можете использовать IK, чтобы голова следовала за объектом вокруг.

Как мне реализовать совместные ограничения?

Я обычно применяю совместные ограничения с помощью простого оператора if. Например, это будет работать для вращающихся суставов.

if (limb.rotation >  45.0f) limb.rotation =  45.0f;
if (limb.rotation < -45.0f) limb.rotation = -45.0f;

Он намного менее математичен, чем якобиан, и чрезвычайно прост в реализации, если у вас работает якобиан.

Луис Б
источник