双臂
使用 MoveIt 控制两个或更多机械臂需要相当多的配置步骤,幸运的是,如今这个过程已经简单多了。下面提供一个示例,并列出从单个机器人扩展为多个机器人所需的全部改动。
本示例中的启动文件和配置文件可在此处获取。
让我们直接开始。运行:
ros2 launch dual_arm_panda_moveit_config demo.launch.py你应该会看到 RViz 中出现一个双机械臂系统。在下拉菜单中,你可以选择 left_panda_arm 或 right_panda_arm,并使用其中任一机械臂进行规划和执行运动。

双机械臂系统需要哪些改动?
Section titled “双机械臂系统需要哪些改动?”-
在 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,不过它需要额外的命名空间配置,并且需要额外枚举关节。