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

欠驱动系统逆动力学控制器使用及Drake双plant配置问题咨询

报错原因说明
  • 直接原因是方法名拼写错误,你代码中写的RegsterAsSourceForSceneGraph漏了字母i,正确方法名为RegisterAsSourceForSceneGraph,该方法在Drake Python绑定中完全可用,修正拼写即可解决该属性不存在报错。
  • 额外隐藏问题:你定义的register_plant_with_scene_graph函数未将builder作为参数传入,内部直接调用全局builder会存在作用域风险,建议同步修正函数参数列表。
  • 修正后的代码参考:
def register_plant_with_scene_graph(builder, scene_graph, plant):
    plant.RegisterAsSourceForSceneGraph(scene_graph)
    builder.Connect(
        plant.get_geometry_poses_output_port(),
        scene_graph.get_source_pose_port(plant.get_source_id()),
    )
    builder.Connect(
        scene_graph.get_query_output_port(),
        plant.get_geometry_query_input_port(),
    )

builder = DiagramBuilder()
scene_graph = builder.AddSystem(SceneGraph())
plant_1 = builder.AddSystem(MultibodyPlant(time_step=0.0))
register_plant_with_scene_graph(builder, scene_graph, plant_1)
plant_2 = builder.AddSystem(MultibodyPlant(time_step=0.0))
register_plant_with_scene_graph(builder, scene_graph, plant_2)

# 两个plant完成模型加载后必须调用Finalize完成初始化
# plant_1.Finalize()
# plant_2.Finalize()
浮动基逆动力学方案合理性说明
  • 该方案是当前Drake下实现浮动基机械臂逆动力学控制的标准可行方案。
  • 实现逻辑为拆分两个MultibodyPlant的职责:
    • 第一个plant构建带浮动基的真实欠驱动机器人模型,用于状态采集、仿真/硬件交互
    • 第二个plant构建固定基座的同构型全驱动机器人模型,专门用于逆动力学解算,规避原生逆动力学控制器不支持欠驱动系统的限制
  • 实现注意事项:两个plant的运动学、动力学参数必须完全一致,逆动力学解算得到的扭矩仅需要作用于真实plant的主动关节即可,忽略浮动基虚拟自由度对应的输出扭矩。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:06:03