|
| 1 | +Run multiple robot arms |
| 2 | +=============================== |
| 3 | +.. image:: multi_arm_tutorial.gif |
| 4 | + :width: 500px |
| 5 | + |
| 6 | + |
| 7 | +For running multiple robot arms in moveit, the following points need to be kept in mind - |
| 8 | + 1. All robot arms should be defined in the same URDF. |
| 9 | + 2. Each arm should have its own move_group. |
| 10 | + 3. If arms need to move in sync, they can be defined in a combined move_group. |
| 11 | + |
| 12 | +Robot model used |
| 13 | +---------------- |
| 14 | +This tutorial will use the two panda arms for demonstration. The urdf of the two panda arms can be seen `here <https://github.com/frankaemika/franka_ros/blob/kinetic-devel/franka_description/robots/dual_panda_example.urdf.xacro>`_. |
| 15 | + |
| 16 | +Configuring the robot through the setup assistant |
| 17 | +--------------------------------------------------- |
| 18 | + |
| 19 | +For moving the robot arms individually, we simply need to create two different move groups for each arm and then plan for the two groups separately. For synchronous movement, refer further down in the tutorial. |
| 20 | + |
| 21 | +.. image:: arm1.png |
| 22 | + :width: 700px |
| 23 | + |
| 24 | +Subsequently add the joints of each arm into their respective groups. |
| 25 | + |
| 26 | +.. image:: arm_joint.png |
| 27 | + :width: 700px |
| 28 | + |
| 29 | + |
| 30 | +Moving the two arms in sync |
| 31 | +----------------------------- |
| 32 | + |
| 33 | +For moving the two arms in sync we need to combine both the move groups into a common move group as shown below: :: |
| 34 | + |
| 35 | + <group name="arm1"> |
| 36 | + <joint name="panda_1_joint_base" /> |
| 37 | + <joint name="panda_1_joint1" /> |
| 38 | + <joint name="panda_1_joint2" /> |
| 39 | + <joint name="panda_1_joint3" /> |
| 40 | + <joint name="panda_1_joint4" /> |
| 41 | + <joint name="panda_1_joint5" /> |
| 42 | + <joint name="panda_1_joint6" /> |
| 43 | + <joint name="panda_1_joint7" /> |
| 44 | + <joint name="panda_1_joint8" /> |
| 45 | + </group> |
| 46 | + <group name="arm2"> |
| 47 | + <joint name="panda_2_joint_base" /> |
| 48 | + <joint name="panda_2_joint1" /> |
| 49 | + <joint name="panda_2_joint2" /> |
| 50 | + <joint name="panda_2_joint3" /> |
| 51 | + <joint name="panda_2_joint4" /> |
| 52 | + <joint name="panda_2_joint5" /> |
| 53 | + <joint name="panda_2_joint6" /> |
| 54 | + <joint name="panda_2_joint7" /> |
| 55 | + <joint name="panda_2_joint8" /> |
| 56 | + </group> |
| 57 | + <group name="both_arm"> |
| 58 | + <group name="arm1"/> |
| 59 | + <group name="arm2"/> |
| 60 | + </group> |
| 61 | + |
| 62 | +Moving multiple arms asynchronously |
| 63 | +-------------------------------------- |
| 64 | + |
| 65 | +As of now, there is no accepted method provided by moveit to move multiple arms asynchronously. For more details kindly refer to this `issue <https://github.com/ros-planning/moveit/issues/2287>`_. |
0 commit comments