You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drake中Digit模型驱动输入端口未连接RuntimeError问题求助

问题描述

我编写了如下Python代码,并截取了URDF文件中的驱动相关部分。将diagram传入Simulator后,仍出现错误:RuntimeError: Actuation input port for model instance digit must be connected.。我尝试了Tedrake博士提到的“传入plant而非diagram可能是问题根源”的解决方案,但我确实传入了正确的diagram,错误依然存在。

Python代码

def run_pid_control():
    builder = DiagramBuilder()
    plant, scene_graph = AddMultibodyPlantSceneGraph(builder, 1e-3)
    parser = Parser(plant)
    ConfigureParser(parser)
    parser.AddModelFromFile(
        # "/work/digit_fixed.urdf" 
        "/work/digit_for_drake.urdf"
        # "package://underactuated/models/atlas/atlas.urdf" 
    )
    parser.AddModelsFromUrl(
        "package://underactuated/models/littledog/ground.urdf"
    )
    plant.Finalize()
    print(plant.num_positions())
    print(plant.num_joints())
    print(plant.GetPositionNames())
    print(plant.GetStateNames())
    print(len(plant.GetStateNames()))
    print("act")
    print(plant.num_actuators())
    print(plant.num_frames())
   
    visualizer = MeshcatVisualizer.AddToBuilder(builder, scene_graph, meshcat)

    diagram = builder.Build()
    simulator = Simulator(diagram)
    context = simulator.get_mutable_context()
    plant_context = plant.GetMyContextFromRoot(context)
    set_home(plant, plant_context)
    # x0 = S @ plant.get_state_output_port().Eval(plant_context)
    # control.get_input_port_desired_state().FixValue(
    #     control.GetMyContextFromRoot(context), x0
    # )

    simulator.set_target_realtime_rate(1.0 if running_as_notebook else 0)
    visualizer.StartRecording()
    print(plant.GetPositionsAndVelocities(plant_context))
    print(len(plant.GetPositionsAndVelocities(plant_context)))
    simulator.AdvanceTo(0.5)
    visualizer.PublishRecording()


run_pid_control()

URDF驱动相关片段

<joint name="shoulder_yaw_joint_right" type="revolute">
    <origin rpy="-1.57079632679 0 0" xyz="0 0.165 -0.1"/>
    <axis xyz="0 0 1"/>
    <parent link="right_shoulder_pitch"/>
    <child link="right_shoulder_yaw"/>
    <limit effort="1.4" lower="-1.7453" upper="1.7453" velocity="10"/>
  </joint>
  <joint name="elbow_joint_right" type="revolute">
    <origin rpy="-1.57079632679 -0.3926991 0" xyz="0 0.0385 0.185"/>
    <axis xyz="0 0 1"/>
    <parent link="right_shoulder_yaw"/>
    <child link="right_elbow"/>
    <limit effort="1.4" lower="-1.3526" upper="1.3526" velocity="12.5"/>
  </joint>

  <transmission type="SimpleTransmission">
  <joint name="hip_abduction_left"/>
  <actuator name="hip_abduction_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="hip_rotation_left"/>
  <actuator name="hip_rotation_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="hip_flexion_left"/>
  <actuator name="hip_flexion_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="knee_joint_left"/>
  <actuator name="knee_joint_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="shin_to_tarsus_left"/>
  <actuator name="shin_to_tarsus_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="toe_pitch_joint_left"/>
  <actuator name="toe_pitch_joint_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="toe_roll_joint_left"/>
  <actuator name="toe_roll_joint_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="shoulder_roll_joint_left"/>
  <actuator name="shoulder_roll_joint_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="shoulder_pitch_joint_left"/>
  <actuator name="shoulder_pitch_joint_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="shoulder_yaw_joint_left"/>
  <actuator name="shoulder_yaw_joint_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="elbow_joint_left"/>
  <actuator name="elbow_joint_left"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="hip_abduction_right"/>
  <actuator name="hip_abduction_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="hip_rotation_right"/>
  <actuator name="hip_rotation_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="hip_flexion_right"/>
  <actuator name="hip_flexion_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="knee_joint_right"/>
  <actuator name="knee_joint_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="shin_to_tarsus_right"/>
  <actuator name="shin_to_tarsus_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="toe_pitch_joint_right"/>
  <actuator name="toe_pitch_joint_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="toe_roll_joint_right"/>
  <actuator name="toe_roll_joint_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="shoulder_roll_joint_right"/>
  <actuator name="shoulder_roll_joint_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="shoulder_pitch_joint_right"/>
  <actuator name="shoulder_pitch_joint_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="shoulder_yaw_joint_right"/>
  <actuator name="shoulder_yaw_joint_right"/>
</transmission>

<transmission type="SimpleTransmission">
  <joint name="elbow_joint_right"/>
  <actuator name="elbow_joint_right"/>
</transmission>


</robot>

内容的提问来源于stack exchange,提问作者Chaitanya Mehta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:47:08