小编Gui*_*ume的帖子

对 pydrake 中的对象施加外力

这个问题与以下问题密切相关这个问题与“adding-forces-to-body-post-finalize”

我希望能够对 pydrake 中的简单几何图元施加外力。这是为了对机构之间的相互作用进行评估。

我当前的实现:


builder = DiagramBuilder()
plant = builder.AddSystem(MultibodyPlant(0.001))
parser = Parser(plant)
cube_instance = parser.AddModelFromFile('cube.urdf', model_name='cube')

plant.Finalize()

force = builder.AddSystem(ConstantVectorSource(np.zeros(6)))
builder.Connect(force.get_output_port(0), plant.get_applied_spatial_force_input_port())

diagram = builder.Build()
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我收到以下错误:

builder.Connect(force.get_output_port(0), plant.get_applied_spatial_force_input_port())
RuntimeError: DiagramBuilder::Connect: Cannot mix vector-valued and abstract-valued ports while connecting output port y0 of System drake/systems/ConstantVectorSource@0000000002db5aa0 to input port applied_spatial_force of System drake/multibody/MultibodyPlant@0000000003118680
Run Code Online (Sandbox Code Playgroud)

我倾向于实现一个 LeafSystem,它在工厂上实现抽象值端口。

根据建议更新

使用:AbstractValue 和 ConstantValueSource

value = AbstractValue.Make([np.zeros(6)])
force = builder.AddSystem(ConstantValueSource(value))

ref_vector_externally_applied_spatial_force = plant.get_applied_spatial_force_input_port()
builder.Connect(force.get_output_port(0), ref_vector_externally_applied_spatial_force)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

RuntimeError: DiagramBuilder::Connect: Mismatched value types while connecting
output …
Run Code Online (Sandbox Code Playgroud)

drake

4
推荐指数
2
解决办法
707
查看次数

标签 统计

drake ×1