在罗盘步态极限循环的情况下,
system
是从'models/compass_gait_limit_cycle.urdf'
获得的,context
是从CreateDefaultContext()
获得的。在URDF模型比较复杂的情况下(例如有多个分支结构),我可以用同样的方法获得
system
和context
,但我无法理解q的哪个分量对应于joint
在 URDF 文件中。
有什么办法可以知道对应关系吗?
我需要的最好方法是从 URDF 文件中的
joint
的名称中获取 q 的索引。另外,我想知道如何重新排列q(以及qd和qdd)的分量顺序。
例如,在罗盘步态的情况下,默认顺序是 [x, y, θ_1, θ_2],新顺序是 [θ_1, θ_2, x, y] 或类似的值。
或许,自己创造
context
是最好的方式。context
,所以我需要一些指导来将它装箱。
我在 ubuntu 20.04 上使用 pydrake。
谢谢您的回答。
如果您使用
MultibodyPlant
(从 URDF 加载),则 MultibodyPlant 控制上下文状态向量中变量的顺序。正如您所说,您应该从联合访问器访问它们。在python中,我有一个简单的方法将它们打包成namedview
,这对于使用它们非常方便:https://github.com/RussTedrake/underactuated/blob/ee7a2041047772f823d0dc0dd32e992196b2a670/underactuated/utils.py#L32 -L86
您可以在欠驱动注释中的许多示例中看到我如何使用它。也许littledog的例子最能说明这一点。
如果您想在不同的系统中以不同的顺序使用它们,那么我建议添加诸如
MatrixGain
系统之类的东西,该系统实现了排列矩阵来重新排列它们。