使用 >= 约束抛出 RuntimeError(请使用 pydrake.common.containers.EqualToDict)
Using >= for constraint throws RuntimeError (please use pydrake.common.containers.EqualToDict)
我正在尝试使用直接转录来解决涉及一些三角函数的轨迹优化问题。
我有以下变量类型
a[i] = array([<Expression "(state_0(0) + 0.001 * state_0(4))">,
<Expression "(state_0(1) + 0.001 * state_0(5))">,
<Expression "(state_0(2) + 0.001 * state_0(6))">,
<Expression "(state_0(3) + 0.001 * state_0(7))">,
<Expression "...omitted...">,
<Expression "...omitted...">,
<Expression "...omitted...">,
<Expression "...omitted...">], dtype=object)
b[i] = array([Variable('state_1(0)', Continuous),
Variable('state_1(1)', Continuous),
Variable('state_1(2)', Continuous),
Variable('state_1(3)', Continuous),
Variable('state_1(4)', Continuous),
Variable('state_1(5)', Continuous),
Variable('state_1(6)', Continuous),
Variable('state_1(7)', Continuous)], dtype=object)
我正在尝试创建如下约束
mp.AddConstraint(b[i] <= a[i])
但是我得到以下错误
RuntimeError: You should not call `__bool__` / `__nonzero__` on `Formula`. If you are trying to make a map with `Variable`, `Expression`, or `Polynomial` as keys (and then access the map in Python), please use pydrake.common.containers.EqualToDict`.
似乎必须为每个元素指定约束,即
for j in range(8):
mp.AddConstraint(b[i][j] <= a[i][j])
没错。尽管您也可以使用 eq(a,b)
这样的函数名称
https://github.com/RobotLocomotion/drake/issues/8315
我正在尝试使用直接转录来解决涉及一些三角函数的轨迹优化问题。
我有以下变量类型
a[i] = array([<Expression "(state_0(0) + 0.001 * state_0(4))">,
<Expression "(state_0(1) + 0.001 * state_0(5))">,
<Expression "(state_0(2) + 0.001 * state_0(6))">,
<Expression "(state_0(3) + 0.001 * state_0(7))">,
<Expression "...omitted...">,
<Expression "...omitted...">,
<Expression "...omitted...">,
<Expression "...omitted...">], dtype=object)
b[i] = array([Variable('state_1(0)', Continuous),
Variable('state_1(1)', Continuous),
Variable('state_1(2)', Continuous),
Variable('state_1(3)', Continuous),
Variable('state_1(4)', Continuous),
Variable('state_1(5)', Continuous),
Variable('state_1(6)', Continuous),
Variable('state_1(7)', Continuous)], dtype=object)
我正在尝试创建如下约束
mp.AddConstraint(b[i] <= a[i])
但是我得到以下错误
RuntimeError: You should not call `__bool__` / `__nonzero__` on `Formula`. If you are trying to make a map with `Variable`, `Expression`, or `Polynomial` as keys (and then access the map in Python), please use pydrake.common.containers.EqualToDict`.
似乎必须为每个元素指定约束,即
for j in range(8):
mp.AddConstraint(b[i][j] <= a[i][j])
没错。尽管您也可以使用 eq(a,b)
这样的函数名称
https://github.com/RobotLocomotion/drake/issues/8315