调用GetMyContextFromRoot遇TypeError,如何解决Drake机器人轨迹规划问题?
解决Drake中
GetMyContextFromRoot()的TypeError问题 错误原因
你遇到的TypeError是因为GetMyContextFromRoot()方法在Drake的Python绑定中不支持关键字参数,你传入的root_context=context是关键字传参方式,不符合方法的参数要求。
修正代码
将获取plant上下文的代码行修改为位置传参即可:
sim_time_step = 0.0 builder = DiagramBuilder() plant, scene_graph = AddMultibodyPlantSceneGraph( builder, time_step=sim_time_step) parser = Parser(plant) parser.AddModelFromFile("robot.urdf") plant.Finalize() diagram = builder.Build() context = diagram.CreateDefaultContext() # 去掉关键字参数,改用位置传参 plant_context = plant.GetMyContextFromRoot(context)
额外提示(针对DirectCollocation需求)
- 由于你使用的是连续时间(
time_step=0.0)的MultibodyPlant,后续配置DirectCollocation时,确保使用对应连续系统的DirectCollocation类。 - 若URDF包含接触标签,默认弹塑性接触模型会自动启用,若有特殊接触需求可在
plant.Finalize()前提前配置参数。 - 后续将
plant和plant_context传入求解器时,需确保上下文已完成初始状态设置(比如指定初始关节位置、速度)。
内容的提问来源于stack exchange,提问作者Grama Shourie
相关产品推荐
相关产品推荐

