Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tutorial for running multiple groups/arms. #621

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added doc/multi_group/arm1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/multi_group/arm2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/multi_group/arm_joint.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/multi_group/multi_arm_tutorial.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
65 changes: 65 additions & 0 deletions doc/multi_group/multi_group_tutorial.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
Run multiple robot arms
===============================
.. image:: multi_arm_tutorial.gif
:width: 500px


For running multiple robot arms in moveit, the following points need to be kept in mind -
davetcoleman marked this conversation as resolved.
Show resolved Hide resolved
1. All robot arms should be defined in the same URDF.
2. Each arm should have its own move_group.
3. If arms need to move in sync, they can be defined in a combined move_group.
davetcoleman marked this conversation as resolved.
Show resolved Hide resolved

Robot model used
----------------
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>`_.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

URDF


Configuring the robot through the setup assistant
---------------------------------------------------

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.

.. image:: arm1.png
:width: 700px

Subsequently add the joints of each arm into their respective groups.

.. image:: arm_joint.png
:width: 700px


Moving the two arms in sync
-----------------------------

For moving the two arms in sync we need to combine both the move groups into a common move group as shown below: ::

<group name="arm1">
<joint name="panda_1_joint_base" />
<joint name="panda_1_joint1" />
<joint name="panda_1_joint2" />
<joint name="panda_1_joint3" />
<joint name="panda_1_joint4" />
<joint name="panda_1_joint5" />
<joint name="panda_1_joint6" />
<joint name="panda_1_joint7" />
<joint name="panda_1_joint8" />
</group>
<group name="arm2">
<joint name="panda_2_joint_base" />
<joint name="panda_2_joint1" />
<joint name="panda_2_joint2" />
<joint name="panda_2_joint3" />
<joint name="panda_2_joint4" />
<joint name="panda_2_joint5" />
<joint name="panda_2_joint6" />
<joint name="panda_2_joint7" />
<joint name="panda_2_joint8" />
</group>
<group name="both_arm">
<group name="arm1"/>
<group name="arm2"/>
</group>

Moving multiple arms asynchronously
--------------------------------------

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>`_.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's not quite right. I described a workaround and the conditions under which it can be used here, and jrgnicho mentioned another one in the thread. "no accepted method" is also too vague.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe he refactored this well