datetime:2025/03/27 15:41
author:nzb
带 MoveIt 功能的双臂
使用 MoveIt 控制两个或更多机械手需要很多配置步骤。幸运的是,随着时间的推移,这些步骤变得越来越简单。在此,我们提供了一个示例,并列出了从 1 个机械手到 X 个机械手所需的所有更改。
本示例中的启动和配置文件可在此处获取。
demo
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。(这仅在模拟时才需要-使用硬件机器人时不适用。)将left_或right_前缀传递给panda.ros2_control.xacro以选择此文件。 - 确保
panda.ros2_control.xacro中的所有关节都以前缀参数为前缀,这样它们对于左臂和右臂来说都是唯一的。 - 确保
ros2_control宏的名称也以前缀为前缀,这样它才是唯一的:
<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,尽管它需要额外的命名空间和额外的关节枚举。