Drake “如何解决问题”;以下环境没有变量x的条目;?

Drake “如何解决问题”;以下环境没有变量x的条目;?,drake,Drake,我发现Eric Boehlke问题前面的答案无法解决我的问题。 当我尝试对包含符号变量的矩阵求逆时(该变量是manufactorDynamics()的输出),会发生运行时错误“以下环境没有变量x的条目”。 我测试的是一个简单的例子,错误是一样的。这是代码。 请告诉我如何解决,非常感谢 from pydrake.all import Variable from pydrake.all import MultibodyPlant from underactuated import Manipulat

我发现Eric Boehlke问题前面的答案无法解决我的问题。
当我尝试对包含符号变量的矩阵求逆时(该变量是manufactorDynamics()的输出),会发生运行时错误“以下环境没有变量x的条目”。 我测试的是一个简单的例子,错误是一样的。这是代码。
请告诉我如何解决,非常感谢

from pydrake.all import Variable
from pydrake.all import MultibodyPlant
from underactuated import ManipulatorDynamics
import pydrake.symbolic as sym
import numpy as np

plant = MultibodyPlant(time_step=0)
parser = Parser(plant)
parser.AddModelFromFile(FindResource("models/double_pendulum.urdf"))
plant.Finalize()

# Evaluate the dynamics symbolically
q = [sym.Variable("x"), sym.Variable("y")]
v = [sym.Variable("xd"), sym.Variable("yd")]
(M, Cv, tauG, B, tauExt) = ManipulatorDynamics(plant.ToSymbolic(), q, v)
p = sym.inv(M)

为什么要取M的倒数?(这可能适用于双摆,但对于更复杂的系统来说,这不是一条通往幸福之路)如果您想用操纵器动力学编写约束,我建议以隐式形式编写:例如Mvdot+Cv=tauG+B*u+tauExt,而不是vdot=inv(M)*[tauG+…].我尝试将iLQR示例应用于多体系统。iLQR示例为欠驱动/运动/trajopt/iLQR_驾驶。它需要推导动力学的雅可比矩阵(f_x,f_)。然后我需要Xd的显式形式。是的,反转8x8矩阵(尚未完成)已经需要几个小时。我将保存/加载反转矩阵结果以减少运行时间。这有意义吗?要使iLQR工作,不需要动力学的符号形式。您只需要雅可比矩阵的数值。直接计算数值中的雅可比矩阵(在这种情况下,可能是通过自动微分),几乎总是比先计算符号形式,然后计算符号形式快得多。非常感谢!我想这在我的情况下是可行的。你为什么要取M的倒数?(这可能适用于双摆,但对于更复杂的系统来说,这不是一条通往幸福之路)如果您想用操纵器动力学编写约束,我建议以隐式形式编写:例如Mvdot+Cv=tauG+B*u+tauExt,而不是vdot=inv(M)*[tauG+…].我尝试将iLQR示例应用于多体系统。iLQR示例为欠驱动/运动/trajopt/iLQR_驾驶。它需要推导动力学的雅可比矩阵(f_x,f_)。然后我需要Xd的显式形式。是的,反转8x8矩阵(尚未完成)已经需要几个小时。我将保存/加载反转矩阵结果以减少运行时间。这有意义吗?要使iLQR工作,不需要动力学的符号形式。您只需要雅可比矩阵的数值。直接计算数值中的雅可比矩阵(在这种情况下,可能是通过自动微分),几乎总是比先计算符号形式,然后计算符号形式快得多。非常感谢!我认为这对我来说是有效的。