拾放示例
让我们深入研究并仿真将石头从 A 运输到 B。运行以下命令以启动伴有 Panda 和示例 world 的 Gazebo。
roslaunch franka_gazebo panda.launch x:=-0.5 world:=$(rospack find franka_gazebo)/world/stone.sdf controller:=cartesian_impedance_example_controller rviz:=true
这将打开 Gazebo GUI,可以在其中看到带有石头和 RViz 的环境,可以用它来控制机器人的末端执行器位姿。

取放示例的 Gazebo GUI(左)和 RViz(右)
要打开夹爪,只需向 move action 发送一个目标,类似于真正的 franka_gripper 的工作方式。让我们将夹爪以
rostopic pub --once /franka_gripper/move/goal franka_gripper/MoveActionGoal "goal: { width: 0.08, speed: 0.1 }"由于我们使用 franka_example_controllers 的笛卡尔阻抗控制器启动了我们的机器人,因此可以使用 RViz 中的交互式标记 Gizmo 移动末端执行器,就像在现实中一样。移动机器人,使白色石头位于夹爪的手指之间,准备好被捡起。
备注
如果机器人的肘部移动很奇怪,这是因为笛卡尔阻抗示例控制器的默认零空间刚度设置为低。如有必要,启动 Dynamic Reconfigure 并调整 panda > cartesian_impedance_example_controller > nullspace_stiffness。
为了拾取物体,这次我们使用 grasp action,因为我们想在抓握后施加一个力,使物体不掉落。石头宽约
rostopic pub --once /franka_gripper/grasp/goal
franka_gripper/GraspActionGoal
"goal: { width: 0.03, epsilon:{ inner: 0.005, outer: 0.005 }, speed: 0.1, force: 5.0}"备注
在 Gazebo 的顶部菜单中,转到 View > Contacts 以可视化接触点和力
如果抓取成功,手指现在将把石头固定到位。如果不是,则可能是目标公差(内部和外部 epsilon)太小并且 action 失败。现在将物体轻轻地移到红色的落点区域。

把石头从蓝色运到红色区域
将其轻轻放在红色垫子上后,通过夹爪的 stop action 停止抓握:
rostopic pub --once /franka_gripper/stop/goal franka_gripper/StopActionGoal {}请注意,接触力现在消失了,因为不再施加力了。或者,也可以使用 move action。