BodyFrame Class 作为 DifferentialInverseKinematicsIntegrator 的构造函数参数不兼容
BodyFrame Class incompatible as argument of constructor for DifferentialInverseKinematicsIntegrator
我正在使用 pydrake 和丰田 HSR 的 urdf。
我想使用 DifferentialInverseKinematicsIntegrator class。
当我尝试初始化求解器时,我传递了一个 BodyFrame class 作为构造函数的框架参数。
出现以下不兼容错误
TypeError: __init__(): incompatible constructor arguments. The following argument types are supported:
1. pydrake.manipulation.planner.DifferentialInverseKinematicsIntegrator(robot: pydrake.multibody.plant.MultibodyPlant_[float], frame_E: pydrake.multibody.tree.Frame_[float], time_step: float, parameters: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, robot_context: pydrake.systems.framework.Context_[float] = None, log_only_when_result_state_changes: bool = True)
Invoked with: <pydrake.multibody.plant.MultibodyPlant_[float] object at 0x7f0633be88b0>, <BodyFrame_[float] name='hand_palm_link' index=31 model_instance=2>, <pydrake.manipulation.planner.DifferentialInverseKinematicsParameters object at 0x7f0633be8630>, 0.01, <pydrake.systems.framework.LeafContext_[float] object at 0x7f0633be84b0>, True
我是如何获得 BodyFrame 的:
gripper = plant.GetBodyByName('hand_palm_link')
gripper_frame = gripper.body_frame()
并且 gripper_frame
作为 python 文档中指定的 frame_E: drake::multibody::Frame<double>
参数传递给构造函数。
据我了解,BodyFrame 是 Frame class 的子 class,因为您可以从 Frame 对象中获取 BodyFrame。
注意:我用plant.GetFrameByName('hand_palm_link')
的结果是一样的
我搜索了文档,但未能找到将 BodyFrame class 扩展为 Frame class
的方法
也可能是 pydrake.systems.framework.LeafContext_[float]
与 pydrake.systems.framework.Context_[float]
不匹配,但我已经使用默认上下文进行了测试,错误仍然存在。
有没有人遇到过这个问题?我不太精通德雷克,不知道如何直接获取与特定 link 关联的 Frame 对象。任何帮助深表感谢。 :)
快速浏览一下(所以我可能会弄错),似乎 time_step
和 params
的传递顺序错误。试试交换它们?
我正在使用 pydrake 和丰田 HSR 的 urdf。
我想使用 DifferentialInverseKinematicsIntegrator class。
当我尝试初始化求解器时,我传递了一个 BodyFrame class 作为构造函数的框架参数。
出现以下不兼容错误
TypeError: __init__(): incompatible constructor arguments. The following argument types are supported:
1. pydrake.manipulation.planner.DifferentialInverseKinematicsIntegrator(robot: pydrake.multibody.plant.MultibodyPlant_[float], frame_E: pydrake.multibody.tree.Frame_[float], time_step: float, parameters: pydrake.manipulation.planner.DifferentialInverseKinematicsParameters, robot_context: pydrake.systems.framework.Context_[float] = None, log_only_when_result_state_changes: bool = True)
Invoked with: <pydrake.multibody.plant.MultibodyPlant_[float] object at 0x7f0633be88b0>, <BodyFrame_[float] name='hand_palm_link' index=31 model_instance=2>, <pydrake.manipulation.planner.DifferentialInverseKinematicsParameters object at 0x7f0633be8630>, 0.01, <pydrake.systems.framework.LeafContext_[float] object at 0x7f0633be84b0>, True
我是如何获得 BodyFrame 的:
gripper = plant.GetBodyByName('hand_palm_link')
gripper_frame = gripper.body_frame()
并且 gripper_frame
作为 python 文档中指定的 frame_E: drake::multibody::Frame<double>
参数传递给构造函数。
据我了解,BodyFrame 是 Frame class 的子 class,因为您可以从 Frame 对象中获取 BodyFrame。
注意:我用plant.GetFrameByName('hand_palm_link')
我搜索了文档,但未能找到将 BodyFrame class 扩展为 Frame class
的方法也可能是 pydrake.systems.framework.LeafContext_[float]
与 pydrake.systems.framework.Context_[float]
不匹配,但我已经使用默认上下文进行了测试,错误仍然存在。
有没有人遇到过这个问题?我不太精通德雷克,不知道如何直接获取与特定 link 关联的 Frame 对象。任何帮助深表感谢。 :)
快速浏览一下(所以我可能会弄错),似乎 time_step
和 params
的传递顺序错误。试试交换它们?