Skip to content

双臂

使用 MoveIt 控制两个或更多机械臂需要相当多的配置步骤,幸运的是,如今这个过程已经简单多了。下面提供一个示例,并列出从单个机器人扩展为多个机器人所需的全部改动。

本示例中的启动文件和配置文件可在此处获取。

让我们直接开始。运行:

ros2 launch dual_arm_panda_moveit_config demo.launch.py

你应该会看到 RViz 中出现一个双机械臂系统。在下拉菜单中,你可以选择 left_panda_arm 或 right_panda_arm,并使用其中任一机械臂进行规划和执行运动。

  • 在 Panda 机械臂的 xacro panda_arm_macro.urdf.xacro 中添加了一个前缀参数。现在所有连杆和关节都以 left_ 或 right_ 作为前缀。

  • 添加了 left_initial_positions.yaml 和 right_initial_positions.yaml。(仅在仿真时需要——使用真实硬件时不适用。)向 panda.ros2_control.xacro 传入 left_ 或 right_ 前缀以选择对应的文件。

  • 确保 panda.ros2_control.xacro 中的所有关节都以 prefix 参数作为前缀,以保证左、右机械臂的唯一性。

  • 确保 ros2_control 宏的名称也以 prefix 作为前缀,以保证其唯一性:

    <ros2_control name="${prefix}${name}" type="system">
  • 在 ros2_control 配置文件 ros2_controllers.yaml 中列举两个机械臂所需的控制器。确保这些控制器从 demo.launch.py 中启动。

  • 在 panda.srdf 中为每个机械臂定义规划组。这告诉 MoveIt 哪些关节构成每个机械臂。规划组命名为 left_panda_arm 和 right_panda_arm。同时为每个机械臂定义末端执行器。

  • 在 kinematics.yaml 中为每个机械臂定义运动学求解器。

  • 在 moveit_controllers.yaml 中定义 MoveIt 可以用于执行轨迹的控制器。此处我们为每个机械臂配备一个轨迹控制器。

  • 同样在 moveit_controllers.yaml 中,定义 MoveIt 将使用的控制器管理策略。从配置角度来看,最简单的选项是 moveit_ros_control_interface/Ros2ControlManager。你也可以使用 moveit_simple_controller_manager/MoveItSimpleControllerManager,不过它需要额外的命名空间配置,并且需要额外枚举关节。