URDF文件与drake中MultibodyPlant状态的对应关系

问题描述 投票:0回答:1

罗盘步态极限循环的情况下,

system
是从
'models/compass_gait_limit_cycle.urdf'
获得的,
context
是从
CreateDefaultContext()
获得的。
在我的识别中,这些将配置向量 q 定义为 [x, y, θ_1, θ_2]^T。

在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。

谢谢您的回答。

drake
1个回答
1
投票

如果您使用

MultibodyPlant
(从 URDF 加载),则 MultibodyPlant 控制上下文状态向量中变量的顺序。正如您所说,您应该从联合访问器访问它们。在python中,我有一个简单的方法将它们打包成
namedview
,这对于使用它们非常方便:https://github.com/RussTedrake/underactuated/blob/ee7a2041047772f823d0dc0dd32e992196b2a670/underactuated/utils.py#L32 -L86

您可以在欠驱动注释中的许多示例中看到我如何使用它。也许littledog的例子最能说明这一点。

如果您想在不同的系统中以不同的顺序使用它们,那么我建议添加诸如

MatrixGain
系统之类的东西,该系统实现了排列矩阵来重新排列它们。

© www.soinside.com 2019 - 2024. All rights reserved.