ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

Multiple end effectors in MoveIt!

asked 2017-06-26 09:57:20 -0600

AndyZe gravatar image

updated 2017-06-26 12:08:07 -0600

With MoveIt!, I'm trying to switch between two end effectors for a single arm. The purpose is to have 1 camera end effector and 1 gripper end effector. Is this what the MoveGroup setEndEffector() method was designed to do? Has anybody tried this before?

I know that somebody else in our lab is doing .setEndEffector() when the URDF contains two arms and he wants to switch between arms. Maybe that's the intended functionality.

Would it be possible, as a workaround, to have a completely separate planning group for the second end-effector? Most of the joints would be duplicated.

edit retag flag offensive close merge delete

Comments

1

Would it be possible, as a workaround, to have a completely separate planning group for the second end-effector?

yes. You can have as many groups as you want. This is often used with IKFast plugins fi where special plugins are generated for specific robot+tool combos.

gvdhoorn gravatar image gvdhoorn  ( 2017-06-26 10:01:12 -0600 )edit

Do I need to destroy previous moveGroup instances before creating a new one?

Currently, if I create a second moveGroup and plan a motion, the terminal output from my executable is Aborted: Catastrophic Failure. The output from moveIt is Unable to construct goal representation.

AndyZe gravatar image AndyZe  ( 2017-06-26 16:02:16 -0600 )edit

OK, I found out that the Catastrophic Failure was caused by incorrectly using moveit_setup_assistant. I wasn't overwriting some of the files where manual editing was detected. Would still like to know if it's possible to use more than 1 EE per kinematic chain.

AndyZe gravatar image AndyZe  ( 2017-06-26 17:04:15 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted
2

answered 2017-06-27 09:11:10 -0600

v4hn gravatar image

Hey AndyZe,

the use-case you describe (camera, gripper) is how I would use getEndEffector too. Multiple end-effectors per group are clearly the intended idea of this part of the code. You filed https://github.com/ros-planning/movei... rather recently, and I don't think it's unlikely that there is a bug in the code for some use-cases.

For the use-case with two arms, this is only a reasonable way forward if you need to plan for both arms to move simultaneously. Otherwise it is computationally more easy to use two different planning groups and MoveGroup instances instead.

Maybe you miss a call to clearPoseTargets() in between your different planning requests?

edit flag offensive delete link more

Comments

clearPoseTargets() could be it. Thanks! I will certainly close the github issue if I find a solution. In a way, multiple EE's for one arm doesn't make sense because there can only be 1 kinematic chain.

AndyZe gravatar image AndyZe  ( 2017-06-27 09:27:27 -0600 )edit

if you find a solution, please explain your solution in the issue :) Maybe we can add code to point the issue out to the next user running into this.

there can only be 1 kinematic chain

wrong. you can model arbitrary joint sets as group. Also you can have a group of multiple subgroups.

v4hn gravatar image v4hn  ( 2017-06-27 09:39:37 -0600 )edit

Ok, thanks. I mean, you can probably do this:

Arm---EE1---EE2

But not:

Arm----- EE1
     |
     |--------------EE2
AndyZe gravatar image AndyZe  ( 2017-06-27 10:41:39 -0600 )edit
1

You can create this construct, the datastructures in MoveIt as well as the Planner should support it. At the moment inverse kinematics is usually the impasse for practical applications.

v4hn gravatar image v4hn  ( 2017-06-27 11:05:27 -0600 )edit
0

answered 2017-06-27 15:46:26 -0600

AndyZe gravatar image

My workaround was a separate planning group for each end effector. For UR robots, I would suggest the trac_ik plugin rather than the typical ur_kinematics plugin. Trac_ik is more forgiving with the joint names, whereas ur_kinematics requires a strict naming format that makes it difficult to duplicate the joints/links.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2017-06-26 09:57:20 -0600

Seen: 2,008 times

Last updated: Jun 27 '17