如何在 Drake 中移动 iiwa 机器人?
How to move iiwa robot in Drake?
在弄清楚如何添加第一个 iiwa 机器人之后,我正在尝试将第二个 iiwa 机器人添加到我的模拟中。我目前正在尝试使用
移动第一个
iiwa_robot = plant.GetBodyByName("iiwa_link_0")
X_B = plant.EvalBodyPoseInWorld(plant_context, iiwa_robot)
tf = RigidTransform(p=[15, 10, 5])
plant.SetFreeBodyPose(plant_context,iiwa_robot,X_B.multiply(tf))
但是我一直收到错误
Body 'iiwa_link_0' is not a free floating body
我也试过另一个 iiwa_links_ 产生了同样的错误。我应该更改 sdf 文件中的某些内容吗?有没有更好的方法来做到这一点,我只是没有想到?
添加第一个 IIWA 机械臂后,可以调用 WeldFrames 将机器人放在所需位置。
这是伪代码
iiwa1 = Parser(plant).AddModelFromFile(iiwa_file, "iiwa1")
# Weld the link0 of iiwa1 with the world at a given location.
plant.WeldFrames(plant.world_frame(), plant.GetBodyByName("iiwa_link_0", iiwa1).body_frame(), RigidTransform(p=[15, 10, 5]))
您可以类似地添加第二个 IIWA 手臂并将其 link_0 焊接到世界的不同位置。
iiwa2 = Parser(plant).AddModelFromFile(iiwa_file, "iiwa2")
# Weld the link0 of iiwa2 with the world at a given location.
plant.WeldFrames(plant.world_frame(), plant.GetBodyByName("iiwa_link_0", iiwa2).body_frame(), RigidTransform(p=[10, 10, 5]))
在弄清楚如何添加第一个 iiwa 机器人之后,我正在尝试将第二个 iiwa 机器人添加到我的模拟中。我目前正在尝试使用
移动第一个iiwa_robot = plant.GetBodyByName("iiwa_link_0")
X_B = plant.EvalBodyPoseInWorld(plant_context, iiwa_robot)
tf = RigidTransform(p=[15, 10, 5])
plant.SetFreeBodyPose(plant_context,iiwa_robot,X_B.multiply(tf))
但是我一直收到错误
Body 'iiwa_link_0' is not a free floating body
我也试过另一个 iiwa_links_ 产生了同样的错误。我应该更改 sdf 文件中的某些内容吗?有没有更好的方法来做到这一点,我只是没有想到?
添加第一个 IIWA 机械臂后,可以调用 WeldFrames 将机器人放在所需位置。
这是伪代码
iiwa1 = Parser(plant).AddModelFromFile(iiwa_file, "iiwa1")
# Weld the link0 of iiwa1 with the world at a given location.
plant.WeldFrames(plant.world_frame(), plant.GetBodyByName("iiwa_link_0", iiwa1).body_frame(), RigidTransform(p=[15, 10, 5]))
您可以类似地添加第二个 IIWA 手臂并将其 link_0 焊接到世界的不同位置。
iiwa2 = Parser(plant).AddModelFromFile(iiwa_file, "iiwa2")
# Weld the link0 of iiwa2 with the world at a given location.
plant.WeldFrames(plant.world_frame(), plant.GetBodyByName("iiwa_link_0", iiwa2).body_frame(), RigidTransform(p=[10, 10, 5]))