Благодарим за интерес к нашей работе.
Глобальный код обратной кинематики находится в папке attic
, потому что он использует RigidBodyTree
, который скоро будет устаревшим. У меня пока нет времени переписывать код для использования нового MultibodyTree. На данный момент, если вы хотите опробовать подход в глобальной статье по IK, не могли бы вы использовать код из папки attic
? Я попытаюсь переместить код из папки attic
, чтобы использовать MultibodyTree
.
ConstraintRelaxingIk не поддерживает предотвращение столкновений. С другой стороны, вы можете использовать класс InverseKinematics . Он формулирует IK как задачу нелинейной оптимизации и вызывает нелинейный решатель для поиска решения. В частности, для предотвращения столкновений вы можете использовать AddMinimumDistanceConstraint , чтобы наложить ограничение на минимальное расстояние между всеми парами геометрий. В качестве альтернативы вы можете вызвать AddDistanceConstraint , если вы хотите наложить ограничение расстояния между заданной парой c геометрий. Я бы на самом деле рекомендовал сначала попробовать класс InverseKinematics
, прежде чем вы попробуете глобальный подход IK, поскольку InverseKinematics
использует MultibodyPlant
и обычно работает быстрее, чем глобальный подход.
Кстати, формулировка, используемая в InverseKinematics
класс описан в разделах II.B и II. C данной бумаги