如何更新 PositionConstraint 的边界?

how to update bound of PositionConstraint?

我们想加快 IK 求解过程,所以我们想更新 IK 约束的边界,而不是每次求解 IK 问题时都创建约束。

我们注意到 set_bounds() 等 API 可以更新 BoundingBoxConstraintLinearConstraint 等中的边界。但是 PositionConstraint 的边界无法更新方式。

这是气馁,还是有一些方法可以更新 PositionConstraint 的边界?

谢谢!

PR #16631 刚刚合并到 Drake 中。现在您可以在 PositionConstraint 中使用 set_bounds、UpdateLowerBound 和 UpdateUpperBound。

PositionConstraint.set_bounds documentation

        constraint = ik.PositionConstraint(
            plant=variables.plant,
            frameA=variables.body1_frame,
            p_AQ_lower=[-0.1, -0.2, -0.3],
            p_AQ_upper=[-0.05, -0.12, -0.28],
            frameB=variables.body2_frame,
            p_BQ=[0.2, 0.3, 0.5], plant_context=variables.plant_context)
        constraint.UpdateLowerBound(new_lb=np.array([-2, -3, -0.5]))
        constraint.UpdateUpperBound(new_ub=np.array([10., 0.5, 2.]))
        constraint.set_bounds(new_lb=[-1, -2, -2.], new_ub=[1., 2., 3.])