ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

Moveit! For Moving An Object Attached to Multiple Arms Simultaneously

asked 2020-11-11 20:52:25 -0500

RicoJ gravatar image

updated 2020-11-22 18:30:23 -0500

I have a box attached to the end effectors of three delta robots. I have managed to get the delta robots working with Moveit! by "chaining " all links in a serial way.

Setup: The box frame is placed at the centroid of the three robots' end effectors (the platform at the top of each robot), but the box as a whole is attached to all three of them at the same time.

Challenge: I would like to have the robots plan together for moving the box to a desired goal pose.

At this moment, I am able to

  1. plan for all robots individually at the same time. (Done by putting all three robots as subgroups into a super group and planning through move_group_interface. Also I can see an interactive marker at each end-effector. )

I would like to have

  1. A box with an interactive marker attached to all three robots at the same. When I drag the interactive marker to a desired pose, all robots should move accordingly on Rviz. (This is what I'm not sure about)

Without adding the box (since I'm still not clear about the best way to add it), an illustration is below. Any idea how to achieve the above points?

image description

edit retag flag offensive close merge delete


What do you mean by "both arms" when there seem to be 3 delta robots with 3 arms each? I am confused about where the box is supposed to go and rotate, and what the actual question is. What of this have you tried implementing, and where are you now?

fvd gravatar image fvd  ( 2020-11-12 01:21:30 -0500 )edit

Hi, Thanks for your comment. I edited my question again to make it clear. I hope now it's clear in terms of the setup of the box and what the task is!

RicoJ gravatar image RicoJ  ( 2020-11-12 09:30:33 -0500 )edit
  1. It seems you call a delta robot (which has three arms) a "delta arm", which is very confusing. 2. How did you "chain" the links serially, and what keeps you from doing the same for this case?
fvd gravatar image fvd  ( 2020-11-12 23:16:49 -0500 )edit

Hi, thanks again for raising these points. I just made some edits to my questions accordingly. 1. Yes, it's more accurate to call them "delta robot". 2. It is not directly related to this problem, but I will explain as a side note. A Moveit! group has to be in a "chain" structure (i.e, no close loop). So for parallel platforms like Delta Robots, the URDF needs to be modified. By "chaining the links" in URDF, I meant "adding extra joints and links so that the parallel platform links can be connected in a serial way, like a chain". This is how I made each Delta Robot working with Moveit!

RicoJ gravatar image RicoJ  ( 2020-11-14 16:56:35 -0500 )edit

I am not personally affected, but I think a more detailed explanation might be helpful for someone somewhere. If you want to post something like a MoveIt tutorial, a personal blog post or a ROS Answers post you answer yourself, please feel free :)

fvd gravatar image fvd  ( 2020-11-27 00:15:58 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2020-11-14 17:10:18 -0500

RicoJ gravatar image

updated 2020-11-22 18:29:48 -0500

So I have figured out a way to accomplish this:

  1. In URDF, add a subgroup called object_arm with a kinematic chain of "dummy joints and links" to allow for 6 dof motion of the object: 3 prisimatic joints, 3 revolute joints and 6 links
  2. Attach a collision object to object_arm
  3. In Rviz, make sure each robot works with Moveit! like shown above, enable allow_external_comm in the planning section.
  4. In your move_group_interface, set up a subscriber to /rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/update to listen for marker position updates of object_arm end effector.
  5. In the subscriber callback, calculate the three robot's end-effector position given an update of object_arm end effector.
  6. In the same subscriber callback, update each robot's end-effector goal query pose by calling /rviz/moveit/move_marker/goal_* . This is the best way that I found to update goal queries in the Rviz plugin.

I hope this will be helpful to people who are looking to plan with multiple robots simultaneously using Moveit! Also, please let me know if there are other alternatives.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2020-11-11 20:52:25 -0500

Seen: 667 times

Last updated: Nov 22 '20