2

我正在尝试翻译make_acrobot_plant.cc成 Python。要添加elbow关节,我需要将X_PFandX_BM传入AddJoint(如此)。

这在 C++ 接口中受支持,如JointType. 但是目前的 Python 绑定只支持AddJoint不带X_PFandX_BM,有解决办法吗?

4

2 回答 2

1

您应该能够通过首先构建关节来添加它们。参见,例如: https ://github.com/RobotLocomotion/drake/blob/master/bindings/pydrake/multibody/test/plant_test.py#L401

于 2020-04-22T01:16:21.530 回答
1

我不是 Python 绑定方面的专家,但至少让我给你一个选择。C++ API 非常适合为您定义帧 F(附加到 P)和 M(附加到 B)。您可以使用 AddFrame 从 Python API 完成此操作。像这样:

# Parent body P in the API
arm = plant.GetBodyByName("arm")
# Child body B in the API
forearm = plant.GetBodyByName("forearm")
# Define frame F in the API.
arm_elbow_frame = plant.AddFrame(FixedOffsetFrame(name="F", P=arm.body_frame(), X_PF, model_instance=None))

# Say M = B. In that case you don't need a new frame.
elbow = plant.AddJoint(RevoluteJoint(name="elbow", frame_on_parent=arm_elbow_frame, frame_on_child=forearm.body_frame(), axis_F=[0, 0, 1], damping=0.))

于 2020-04-22T12:05:47.467 回答